Project

General

Profile

Activity

From 06/03/2013 to 07/02/2013

07/02/2013

05:42 PM Revision 10144: bugfix: lib/sh/sync.sh: upload(): paths: don't dereference the path itself if it's a symlink; instead canonicalize just its parent dir. this allows syncing a specific file which is a symlink, rather than syncing the symlink's target.
Aaron Marcuse-Kubitza
05:40 PM Revision 10143: lib/sh/util.sh: added canon_dir_rel_path(), which canonicalizes just the parent dir if the path is a symlink, to leave the symlink itself untouched
Aaron Marcuse-Kubitza
05:08 PM Revision 10142: planning/workflow/validation/: archived BIEN2 validations documents which have been superseded by planning/goals/BIEN3_derived_data_products.docx, to avoid confusion
Aaron Marcuse-Kubitza
04:45 PM Revision 10141: planning/workflow/bien3_architecture.pptx: updated with clarifications made in today's conference call
Aaron Marcuse-Kubitza
02:31 PM Revision 10140: bugfix: bin/map: in_is_db: inline metadata value columns (used by new-style import) so that they can be compared by value in XML simplifying functions (lib/xml_func.py)
Aaron Marcuse-Kubitza
02:29 PM Revision 10139: lib/sql.py: added col_default_value(), col_is_constant(), which interface with corresponding util-schema functions
Aaron Marcuse-Kubitza
02:28 PM Revision 10138: lib/sql_gen.py: added col2col_ref() for interfacing with for SQL functions that take a util.col_ref
Aaron Marcuse-Kubitza
12:57 PM Revision 10137: schemas/util.sql: added is_constant(col_ref), for checking if a column has been marked "constant"
Aaron Marcuse-Kubitza
12:54 PM Revision 10136: schemas/util.sql: added col_comment()
Aaron Marcuse-Kubitza
12:53 PM Revision 10135: schemas/util.sql: mk_const_col(): add column comment "constant" to mark column as inlinable (needed by some mappings to have a literal value to compare)
Aaron Marcuse-Kubitza
12:03 PM Revision 10134: schemas/util.sql: added col_default_value(), which evaluates the col_default_sql() expression
Aaron Marcuse-Kubitza
11:51 AM Revision 10133: schemas/util.sql: added eval_expr_passthru() (passes NULL SQL through)
Aaron Marcuse-Kubitza
11:45 AM Revision 10132: bugfix: schemas/util.sql: eval_expr(): need to pass ret_type_null to eval2val()
Aaron Marcuse-Kubitza
11:42 AM Revision 10131: schemas/util.sql: added eval_expr() (does not require `SELECT ` before expr)
Aaron Marcuse-Kubitza
11:33 AM Revision 10130: schemas/util.sql: added col_default_sql()
Aaron Marcuse-Kubitza
11:26 AM Revision 10129: schemas/util.sql: eval(text, anyelement): added default polymorphic type text (can't be unknown because this would cause a "could not determine polymorphic type because input has type "unknown"" error). renamed to eval2val() to avoid overloading conflicts with eval(text) when no polymorphic type param is specified.
Aaron Marcuse-Kubitza
11:15 AM Revision 10128: schemas/util.sql: added value-returning eval()
Aaron Marcuse-Kubitza
11:02 AM Revision 10127: bugfix: lib/common.Makefile: $(asAdmin): need to use _postgres instead on Mac for OS X 10.8 Mountain Lion
Aaron Marcuse-Kubitza
11:01 AM Revision 10126: bugfix: *Makefile: $(asAdmin) invocations of Postgres commands: need to set DB user to postgres so that it won't default to the system user _postgres
Aaron Marcuse-Kubitza
10:57 AM Revision 10125: *Makefile: removed $(psqlOpts), $(psqlAsAdmin), which are now set by lib/common.Makefile
Aaron Marcuse-Kubitza
10:57 AM Revision 10124: lib/common.Makefile: added $(psqlOpts), $(psqlAsAdmin)
Aaron Marcuse-Kubitza
10:54 AM Revision 10123: bugfix: schemas/pg_hba.Mac.conf: use new postgres ident map instead of changing user to _postgres, because the DB user is still named postgres
Aaron Marcuse-Kubitza
10:53 AM Revision 10122: schemas/pg_ident.Mac.conf: added postgres map mapping the _postgres system user to the postgres DB user for ident authentication
Aaron Marcuse-Kubitza
10:45 AM Revision 10121: /Makefile: $(postgresReload-Darwin): also install pg_ident.Mac.conf
Aaron Marcuse-Kubitza
10:44 AM Revision 10120: placed pg_ident.conf under version control as schemas/pg_ident.Mac.conf
Aaron Marcuse-Kubitza
10:29 AM Revision 10119: *Makefile: removed $(asAdmin), which is now set by lib/common.Makefile
Aaron Marcuse-Kubitza
10:28 AM Revision 10118: lib/common.Makefile: added $(asAdmin)
Aaron Marcuse-Kubitza
10:26 AM Revision 10117: bugfix: schemas/pg_hba.Mac.conf: changed postgres to _postgres for OS X 10.8 Mountain Lion
Aaron Marcuse-Kubitza
09:48 AM Revision 10116: schemas/util.sql: added raise_undefined_column() for use in translating other exceptions to undefined_column
Aaron Marcuse-Kubitza
03:50 AM Revision 10115: bin/map: map_table(): Resolve prefixes: combined db_xml.ColRef() constructor call with creation of args (as tuple) for clarity
Aaron Marcuse-Kubitza
03:35 AM Revision 10114: bin/map: update_in_label(): use in_schema instead of the map spreadsheet column name when available, to allow using one spreadsheet for all datasources (which would not have a datasource-specific spreadsheet column name)
Aaron Marcuse-Kubitza
02:59 AM Revision 10113: schemas/util.sql: added mk_source_col(), which uses the schema name instead of the map spreadsheet header to get the datasource name
Aaron Marcuse-Kubitza
02:44 AM Revision 10112: schemas/util.sql: added table_schema()
Aaron Marcuse-Kubitza
01:15 AM Revision 10111: added planning/goals/iPlant_BIEN_Proposal_Final.pdf with Mark's e-mail notes in iPlant_BIEN_Proposal_Final.pdf.notes.txt
Aaron Marcuse-Kubitza

07/01/2013

11:52 PM Revision 10110: bugfix: schemas/util.sql: mk_map_table(): add trigger to remove metadata value entries from the map spreadsheet as it's being imported, since these do not correspond to actual columns in the staging table and will produce an error when trying to rename nonexistent columns to them. note that these entries will still need to be included properly in VegBIEN.csv, which will require changes to the VegBIEN.csv make target.
Aaron Marcuse-Kubitza

06/28/2013

04:54 PM Revision 10109: empty inputs/*/import_order.txt: added subdirs in the order they are used by inputs/input.Makefile, by running make on the inputs to auto-populate import_order.txt. import_order.txt is needed by the runscripts to run the right set of subdirs in the right order.
Aaron Marcuse-Kubitza
04:48 PM Revision 10108: added inputs/.TNRS/grants.sql, with statements to provide SELECT access to bien_read. these statements must be in grants.sql to avoid them being filtered out by pg_dump_limit.
Aaron Marcuse-Kubitza
04:47 PM Revision 10107: inputs/input.Makefile: added support for separate grants.sql file, which may contain GRANT statements that would normally be filtered out by pg_dump_limit
Aaron Marcuse-Kubitza
04:44 PM Revision 10106: inputs/input.Makefile: sql/install: added $debug option to run the *.sql import verbosely, to display which statements are being run. this should only be used for SQL files that use COPY FROM to import data, to avoid echoing pages of insert statements.
Aaron Marcuse-Kubitza
01:53 PM Revision 10105: inputs/input.Makefile: keep $(sortFile) up-to-date: use sort_file_updated=1 flag to indicate that import_order.txt has already been checked, so that recursive invocations of make don't need to recheck it. also use this flag instead of an explicit $(MAKECMDGOALS) list to prevent the $(sortFile) check from being infinite-recursively reinvoked when input.Makefile is read as part of the $(sortFile) check itself.
Aaron Marcuse-Kubitza
01:38 PM Revision 10104: inputs/input.Makefile: keep import_order.txt up-to-date by running `make $(sortFile)` each time make is run. this ensures that new datasources always have import_order.txt populated when make is first run. eventually, $(tables) can be always set to $(allTables) so that this auto-updating can also be used to ensure that new subdirs added by the user always make it into import_order.txt (so that they will be included in the subdirs that get remade, etc.). import_order.txt is primarily for specifying the order of the subdirs, but some datasources also use it to filter *out* subdirs, so it can't yet be always updated to include the full list of subdirs. however, the filter-out usage should no longer be necessary after the switch to new-style import.
Aaron Marcuse-Kubitza
12:58 PM Revision 10103: inputs/input.Makefile: added $(filter_make), used to filter the output of embedded $(shell make ...) invocations
Aaron Marcuse-Kubitza
11:39 AM Revision 10102: inputs/input.Makefile: $(sortFile): use $(filter-out)->then instead of $(filter)->else for clarity
Aaron Marcuse-Kubitza
11:21 AM Revision 10101: inputs/input.Makefile: added $(sortFile) (import_order.txt) target which adds any missing tables to import_order.txt
Aaron Marcuse-Kubitza
11:03 AM Revision 10100: inputs/input.Makefile: added list_tables to print $(tables) for use in populating import_order.txt
Aaron Marcuse-Kubitza
02:50 AM Revision 10099: web/links/index.htm: updated to Firefox bookmarks. grouped version control systems into new version control folder.
Aaron Marcuse-Kubitza

06/27/2013

09:54 PM Revision 10098: inputs/.NCBI/: added new-style import runscripts, which renamed the staging table columns to VegCore
Aaron Marcuse-Kubitza
04:48 PM Revision 10097: bugfix: lib/runscripts/datasrc_dir.run, subdir.run: need to remove leading . from dir name to get installed schema name, using new dir2schema()
Aaron Marcuse-Kubitza
04:47 PM Revision 10096: lib/runscripts/datasrc_dir.run, subdir.run: use new lib/sh/datasrc.sh, which contains code in common to both datasrc-related dir runscripts
Aaron Marcuse-Kubitza
04:46 PM Revision 10095: added lib/sh/datasrc.sh
Aaron Marcuse-Kubitza
03:47 PM Revision 10094: inputs/.TNRS/schema.sql: AcceptedTaxon: removed Annotations entry because the accepted name only contains name elements, not additional text (vegpath.org/cf_aff)
Aaron Marcuse-Kubitza
01:02 PM Revision 10093: bugfix: /README.TXT: Maintenance: syncing ~/bien to ~/Dropbox/svn: added overwrite=1 so that perms transfer from the authoritative ~/bien regardless of relative mtimes
Aaron Marcuse-Kubitza
12:45 PM Revision 10092: removed no longer used lib/import.sh. use lib/runscripts/table.run instead.
Aaron Marcuse-Kubitza
12:28 PM Revision 10091: added inputs/*/*/header.csv for CSV inputs, which are now generated by inputs/input.Makefile %/install
Aaron Marcuse-Kubitza
12:23 PM Revision 10090: added inputs/FIA/*/{VegBIEN.csv,test.xml.ref}, which are now generated by the mapping process for the joined-together tables (even though they are not used by the import, because only occurrence_all is imported)
Aaron Marcuse-Kubitza
12:20 PM Revision 10089: added inputs/GBIF/_archive/
Aaron Marcuse-Kubitza
12:18 PM Revision 10088: removed inputs/GBIF/Specimen/, which has been replaced by the refresh in raw_occurrence_record_plants/
Aaron Marcuse-Kubitza
12:17 PM Revision 10087: added inputs/GBIF/map.csv, used to regenerate inputs/GBIF/raw_occurrence_record_plants/map.csv when raw_occurrence_record_plants is resubset
Aaron Marcuse-Kubitza
12:12 PM Revision 10086: inputs/FIA/*/postprocess.sql: removed svn:executable attribute using `svn pdel svn:executable ...` now that these are not shell scripts
Aaron Marcuse-Kubitza
12:11 PM Revision 10085: removed no longer needed inputs/FIA/import. use inputs/FIA/run instead.
Aaron Marcuse-Kubitza
12:10 PM Revision 10084: inputs/FIA/*/import: changed to postprocess.sql for use by the runscripts
Aaron Marcuse-Kubitza
04:27 AM Revision 10083: added inputs/FIA/run
Aaron Marcuse-Kubitza
04:26 AM Revision 10082: added inputs/FIA/*/run. these do not yet use the postprocessing operations in */import.
Aaron Marcuse-Kubitza
04:24 AM Revision 10081: added inputs/FIA/table.run (for use by table subdirs) and helper Makefile
Aaron Marcuse-Kubitza
04:17 AM Revision 10080: added lib/runscripts/view.run, for use with table subdirs for views, such as inputs/FIA/occurrence_all/
Aaron Marcuse-Kubitza
02:14 AM Revision 10079: planning/timeline/timeline.2013.xls: added Reload analytical database checkmark for every Rebuild core database checkmark, because these are always done together as part of the import process
Aaron Marcuse-Kubitza
01:41 AM Revision 10078: bugfix: inputs/FIA/occurrence_all/import: don't re-prepend * to terms because this is a view, and the underlying columns have already been mapped
Aaron Marcuse-Kubitza
01:40 AM Revision 10077: bin/src_map: support custom (or no) new_term_prefix. no new_term_prefix is useful for views whose columns have already been renamed in the underlying tables and should not have * re-prepended.
Aaron Marcuse-Kubitza
01:03 AM Revision 10076: planning/timeline/timeline.2013.xls: moved longer-term goals to new August column, leaving near-term goals in July
Aaron Marcuse-Kubitza
01:00 AM Revision 10075: planning/timeline/timeline.2013.xls: erased cells where a task was planned but not worked on, so that all shaded cells in the past have check marks to indicate completion of a portion of the task, and empty shaded cells in the future indicate work left to do
Aaron Marcuse-Kubitza
12:50 AM Revision 10074: planning/timeline/timeline.2013.xls: updated for current progress. renamed "Rerun species range models" to "Prepare to rerun species range models" because the range modeling itself is not part of the BIEN DB development. added a column for July with the tasks that are not yet complete.
Aaron Marcuse-Kubitza

06/26/2013

06:57 PM Revision 10073: bugfix: inputs/FIA/REF_SPECIES/import: PLANT_SYMBOL_TYPE: prepended * since it's a datasource column, and needs to match up with *PLANT_SYMBOL_TYPE in other table for joins
Aaron Marcuse-Kubitza
06:57 PM Revision 10072: bugfix: inputs/FIA/REF_SPECIES/import: PLANT_SYMBOL_TYPE: prepended * since it's a datasource column, and needs to match up with *PLANT_SYMBOL_TYPE in other table for joins
Aaron Marcuse-Kubitza
06:23 PM Revision 10071: schemas/util.sql: try_create(): also ignore wrong_object_type exceptions thrown when trying to alter a view's columns
Aaron Marcuse-Kubitza
03:36 PM Revision 10070: added inputs/FIA/_src/run, which runs ./download
Aaron Marcuse-Kubitza
03:00 PM Revision 10069: lib/sh/make.sh: make(): run sys_cmd_path at a higher log_level since the make() steps should not be displayed by default
Aaron Marcuse-Kubitza
02:58 PM Revision 10068: /README.TXT: to synchronize vegbiendev, jupiter, and your local machine: added step to update mtimes/perms on ~/Dropbox/svn/ so that copying files back to ~/bien does not overwrite the permissions from what is on vegbiendev
Aaron Marcuse-Kubitza
02:44 PM Revision 10067: inputs/: don't upload test*.xml to jupiter on vegbiendev, because these files are also generated by the full database import but should only be backed up from one source machine, starscream (the Mac)
Aaron Marcuse-Kubitza
02:26 PM Revision 10066: bin/make: moved $make_filter_active test to lib/sh/make.sh make() so that it's also used when make() is run directly (e.g. in a runscript) rather than via the bin/make wrapper in the PATH
Aaron Marcuse-Kubitza
02:22 PM Revision 10065: bugfix: lib/sh/make.sh: make(): need to match absolute `make` paths such as /usr/bin/make
Aaron Marcuse-Kubitza
02:19 PM Revision 10064: lib/sh/util.sh: added self_name alias and use it in self/self_sys
Aaron Marcuse-Kubitza
02:18 PM Revision 10063: lib/sh/util.sh: added sys_cmd_path() and use it in cmd2sys
Aaron Marcuse-Kubitza
01:05 PM Revision 10062: bugfix: bin/make: use separate $make_filter_active flag instead of $is_outermost for avoiding duplicate output filtering, so that an outer runscript, which sets $is_outermost but does not activate the make filter, will not prevent the make filter from being activated when make is invoked
Aaron Marcuse-Kubitza
01:00 PM Revision 10061: bugfix: bin/make: need to use sys_cmd instead of command so that the system make command is invoked instead of the wrapper (which would cause infinite mutual recursion for the ~/bien working copy, although not for the ~/Dropbox/svn working copy because nonrecursive=1 was able to remove the single recursion)
Aaron Marcuse-Kubitza
12:19 PM Revision 10060: bin/make: use .rel to do relative includes
Aaron Marcuse-Kubitza
12:19 PM Revision 10059: bugfix: lib/sh/util.sh: .rel(): first use realpath() on BASH_SOURCE[1] in case it's a symlink (as it is for bin/make)
Aaron Marcuse-Kubitza
12:00 PM Revision 10058: inputs/FIA/_src/Makefile: Extraction: $(zips): use $(allZips) containing a zip for each state so that states that have not yet been downloaded and extracted (or had an empty dir created for them) will be downloaded. previously, the extract target only expanded existing zips but did not download new zips unless no zips had yet been downloaded. (this had been necessary because some states do not have a download, and the download of them would be continuously retried every time the Makefile was run.)
Aaron Marcuse-Kubitza
11:51 AM Revision 10057: bugfix: inputs/FIA/_src/Makefile: `%: %.zip`: if unzip fails because the download does not exist, create an empty dir for the state instead of aborting make
Aaron Marcuse-Kubitza
11:33 AM Revision 10056: inputs/FIA/_src/Makefile: use curl instead of wget because that is also available on Mac
Aaron Marcuse-Kubitza
11:32 AM Revision 10055: bugfix: lib/sh/web.sh: curl(): use --fail so that curl returns a nonzero exit status on error (e.g. file not found) instead of appearing to exit successfully but outputting an error HTML document instead of the file
Aaron Marcuse-Kubitza
11:05 AM Revision 10054: inputs/FIA/SUBPLOT/map.csv, import: prepended * to all FIA terms to clearly distinguish them from the VegCore terms. this is the standard convention for all datasources, to indicate which terms have not yet been mapped, but was not yet implemented at the beginning of new-style import (the FIA refresh was the first new-style datasource).
the following replacements were performed to make this change:
in all map.csv: replace regexp (?<=,)(?=[A-Z_]{2,}) wi...
Aaron Marcuse-Kubitza
08:59 AM Revision 10053: inputs/FIA/import_order.txt: added remaining src tables, whose runscripts will be invoked in the order listed by lib/runscripts/datasrc_dir.run
Aaron Marcuse-Kubitza
08:58 AM Revision 10052: added inputs/FIA/*/_no_import to src tables that are joined together in occurrence_all and should not also be imported separately once they are in import_order.txt
Aaron Marcuse-Kubitza
07:55 AM Revision 10051: inputs/GBIF/run: inherit from lib/runscripts/datasrc_dir.run, which uses import_order.txt to forward calls to the subdirs
Aaron Marcuse-Kubitza
07:54 AM Revision 10050: added blank runscripts inputs/GBIF/Source/run, Specimen/run because they are in import_order.txt (used by lib/runscripts/datasrc_dir.run)
Aaron Marcuse-Kubitza
12:34 AM Revision 10049: bugfix: bin/make: do not alter the PATH passed to the invoked make command, since this is a general-purpose wrapper and is not linked to a specific working copy (it could be used to wrap any make invocation, not just for commands in the svn dir). this uses lib/sh/local.sh's new PATH_add= flag.
Aaron Marcuse-Kubitza
12:30 AM Revision 10048: lib/sh/local.sh: added PATH_add= flag to allow turning off the addition of $bin_dir_abs to the PATH. this is useful for wrapper scripts that should not alter the PATH passed to their invoked command.
Aaron Marcuse-Kubitza
12:28 AM Revision 10047: bugfix: lib/sh/make.sh: make(): invoke only the system make command instead of any wrapper for it in the PATH (by using self_sys instead of self), to prevent infinite recursion. single recursion is resolved by nonrecursive=1, but there are cases where mutual recursion occurs due to the presence of two, different bin/makes in the PATH (e.g. if you have two working copies with bin/make, and one is symlinked in your ~/bin/ folder), and these cases can only be resolved by clearing out the PATH completely (since the bin/makes do not know of each other's existence, in order to remove their parent dirs from the PATH).
Aaron Marcuse-Kubitza
12:23 AM Revision 10046: lib/sh/util.sh: self_sys alias: use new sys_cmd() instead of `command -p` so that only the command path resolution is performed with a limited PATH, and the invoked command itself inherits the full PATH
Aaron Marcuse-Kubitza
12:22 AM Revision 10045: lib/sh/util.sh: added sys_cmd(), which runs a system command and allows running a system command of the same name as the script
Aaron Marcuse-Kubitza
12:20 AM Revision 10044: lib/sh/util.sh: added echo_builtin()
Aaron Marcuse-Kubitza

06/25/2013

06:37 PM Revision 10043: inputs/.rsync_ignore: test*.xml: turn on syncing again, but always treat the local side of the sync (starscream or vegbiendev) as the authoritative copy since they are the machines the tests can be run on
Aaron Marcuse-Kubitza
05:18 PM Revision 10042: /.rsync_ignore: temp files: hide them on upload so that they are never synced to jupiter. hiding is different than unidirectionally exclude'ing them, because it also causes them to be deleted on the destination if they were uploaded in previous syncs.
Aaron Marcuse-Kubitza
04:57 PM Revision 10041: inputs/VegBIEN/TWiki/.rsync_ignore: /**: turn syncing back on, but only allow it unidirectionally from vegbiendev->jupiter->starscream to avoid clobbering the live site or the jupiter backup. this is probably the only dir whose authoritative copy is *always* on vegbiendev. for all other dirs, edits can be made wherever convenient, so no copy is authoritative and no sync directions need to be restricted.
Aaron Marcuse-Kubitza
04:27 PM Revision 10040: /README.TXT: Maintenance: synchronization: fixed whitespace
Aaron Marcuse-Kubitza
04:07 PM Revision 10039: inputs/.rsync_ignore: install.log.sql: only exclude this on starscream (the local machine), using new machine-specific .rsync_filters, so that vegbiendev's copies of this will be backed up
Aaron Marcuse-Kubitza
03:46 PM Revision 10038: lib/sh/sync.sh: upload(): .rsync_filter: also support machine-specific filters, for cases when different machines produce the same file (e.g. a log file) but only one machine's copy should be backed up
Aaron Marcuse-Kubitza
03:43 PM Revision 10037: /README.TXT: Maintenance: to synchronize a Mac's settings with my testing machine's: removed filters that are now handled by .rsync_ignores
Aaron Marcuse-Kubitza
03:31 PM Revision 10036: added inputs/GBIF/_src/.rsync_filter.upload,download to prevent old versions of GBIFPortalDB-*.dump.gz from being downloaded to the local machine, while keeping them on jupiter. this avoids the need to store these files in ~/Documents/BIEN/large_files/ with symlinks from inputs/GBIF/_src/ to exclude them from the sync.
Aaron Marcuse-Kubitza
03:17 PM Revision 10035: bugfix: /README.TXT: Maintenance: to synchronize a Mac's settings with my testing machine's: sync ~/Dropbox/svn/ (the no-unversioned-files working copy) separately from the rest of the files, because .svn/ is now excluded by /.rsync_ignore, so that `svn up` needs to be used to keep the .svn/ dirs in sync. note that .svn/ should generally not be synced between machines, because they may use incompatible versions of the svn working copy format.
Aaron Marcuse-Kubitza
03:02 PM Revision 10034: /README.TXT: Maintenance: to synchronize a Mac's settings with my testing machine's: use new bin/sync_upload (with $sync_remote_subdir) so that per-dir .rsync_ignores are processed, and to use the default $sync_remote_url
Aaron Marcuse-Kubitza
02:57 PM Revision 10033: lib/sh/local.sh: $sync_remote_url: allow user to override just the sync subdir (not the whole URL) in $sync_remote_subdir. this is useful e.g. for backing up the Mac's files to jupiter.
Aaron Marcuse-Kubitza
02:28 PM Revision 10032: /README.TXT: Maintenance: to synchronize vegbiendev, jupiter, and your local machine: use new bin/sync_upload instead of specifying all the filter patterns manually. this replaces several `put` commands with various filters with just a bin/sync_upload each on vegbiendev and your machine (in overwrite=1 mode to force a complete sync).
Aaron Marcuse-Kubitza
02:21 PM Revision 10031: bugfix: backups/.rsync_filter.download: need to prevent existing backups from being deleted on the local side, too, by changing hide patterns to exclude
Aaron Marcuse-Kubitza
02:11 PM Revision 10030: lib/sh/sync.sh: upload(): make put's $subpath option relative to the currdir instead, like the --include paths. note that $subpath unfortunately can't be used in subdirs at this point because it will cause rsync to ignore the .rsync_ignores and .rsync_filters in parent dirs, including the essential .rsync_ignore in the sync root dir.
Aaron Marcuse-Kubitza
01:42 PM Revision 10029: /README.TXT: removed unnecessary `env` before kw params, which are treated as such whenever they appear before a command name
Aaron Marcuse-Kubitza
01:22 PM Revision 10028: bugfix: /README.TXT: updated `make backups/download` to `make backups/<file>/download`
Aaron Marcuse-Kubitza
01:21 PM Revision 10027: backups/Makefile: upload: use bin/sync_upload
Aaron Marcuse-Kubitza
01:12 PM Revision 10026: inputs/Makefile: download-logs: use bin/sync_upload like upload/download
Aaron Marcuse-Kubitza
01:07 PM Revision 10025: bugfix: /README.TXT: `make inputs/upload`, `make inputs/download`: added live=1 so that the sync operation runs rather than previewing what will be synced. removed test=1 because this flag is not used by put.
Aaron Marcuse-Kubitza
01:00 PM Revision 10024: bugfix: inputs/Makefile: upload, download: need to exclude files in .rsync_ignore, so that large local-only files, such as inputs/GBIF/raw_occurrence_record_plants/table*.tsv, do not have to be synced before `make inputs/upload` can complete (the corresponding .gz gets extracted instead); and deleted temp files in inputs/VegBIEN/TWiki/, such as active sessions, are not added back to the live copy on vegbiendev. previously, fixing this required extracting the rsync command run by `make inputs/upload`, etc. and manually editing it to exclude the applicable .rsync_ignore files, each time `make inputs/upload`, etc. was run (including before every column-based import).
Aaron Marcuse-Kubitza
12:23 PM Revision 10023: bugfix: bin/make: need to leave bin/, ~/bin/ in the PATH when running make nonrecursively, so that commands invoked by it which are located in these dirs (e.g. put, which will be used by `make inputs/upload`) can still be found. this requires using command()'s new nonrecursive=1 flag instead of running no_PATH_recursion, so that no_PATH_recursion() only affects the resolution of the command path, but does not propagate the filtered PATH to the invoked command itself.
Aaron Marcuse-Kubitza
12:18 PM Revision 10022: lib/sh/util.sh: command(): added nonrecursive=1 flag, which uses cmd2abs_path to run an external command nonrecursively
Aaron Marcuse-Kubitza
12:16 PM Revision 10021: lib/sh/util.sh: added cmd2abs_path, which makes the command in $1 nonrecursive
Aaron Marcuse-Kubitza
11:37 AM Revision 10020: bugfix: lib/sh/util.sh: PATH_rm(): also need to remove adjacent occurrences of the same path (or occurrences which become adjacent when other paths are removed), which :...: matching wasn't doing because the trailing : is consumed, preventing it from being matched at the beginning of the next path. since unlike filesystem paths with /, it is not necessary for a match to span multiple :-separated sections, we can just use new split() to split apart the PATH into an array of paths, filter each path, and join() them back together.
Aaron Marcuse-Kubitza
11:33 AM Revision 10019: lib/sh/util.sh: added split()
Aaron Marcuse-Kubitza
10:32 AM Revision 10018: lib/sh/util.sh: auto-echo common external commands: added `which`
Aaron Marcuse-Kubitza
10:32 AM Revision 10017: lib/sh/util.sh: auto-echo common external commands: use simpler echo_run instead of command since logging handling is not needed
Aaron Marcuse-Kubitza
08:50 AM Revision 10016: added backups/vegbien.r9897.backup.md5
Aaron Marcuse-Kubitza

06/23/2013

09:30 PM Revision 10015: lib/sh/sync.sh: upload(): documented that each --include path is relative to the *currdir*, not the root dir of the upload ($local_dir). this feature, although previously unintended, is actually better because the user can change to a subdir of the root dir and specify upload paths relative to the dir they are in. however, when invoking upload() from a script with --include paths specified, this means you need to use an absolute path (e.g. "$(dirname "${BASH_SOURCE[0]}")"/...; or the value that will become $local_dir, which for sync_upload() is $root_dir).
Aaron Marcuse-Kubitza
08:56 PM Revision 10014: backups/.rsync_ignore: replaced with .rsync_filter.upload to allow uploading new backups but not deleting existing backups if they don't exist on the local (rsync-invoking) side; and .rsync_filter.download to avoid downloading backups to the local side. this allows storing older backups just on jupiter, where there is much more disk space. note that this change must be made on the *remote* side (jupiter) for it to be effective, because these are remote-side rules and are only processed by the remote-side rsync instance.
Aaron Marcuse-Kubitza
08:55 PM Revision 10013: lib/sh/sync.sh: upload(): use directional .rsync_filter to supplement .rsync_ignore with all kinds of --filter rules. separate .rsync_filters are needed for the upload (swap=) and download (swap=1) directions because the sender and the receiver are reversed, causing asymmetric rules like protect/hide to change meaning.
Aaron Marcuse-Kubitza
07:48 PM Revision 10012: updated backups/TNRS.backup.md5
Aaron Marcuse-Kubitza
07:48 PM Revision 10011: added backups/TNRS.2013-6-17.backup.md5, TNRS.2013-6-22.backup.md5
Aaron Marcuse-Kubitza
03:58 PM Revision 10010: /README.TXT: Backups: TNRS cache: Back up/Restore: added runtimes (3 min/5.5 min)
Aaron Marcuse-Kubitza
03:52 PM Revision 10009: lib/sh/sync.sh: upload(): usage: documented put's swap=1 flag, which downloads instead of uploads
Aaron Marcuse-Kubitza
03:47 PM Revision 10008: added inputs/GBIF/raw_occurrence_record_plants/.rsync_ignore with filters that have previously needed to be manually added whenever `make inputs/upload` was run
Aaron Marcuse-Kubitza
03:46 PM Revision 10007: added inputs/GBIF/_MySQL/.rsync_ignore with filters from /README.TXT > Maintenance > to synchronize vegbiendev, jupiter, and your local machine. these filters will now be used with bin/sync_upload in addition to the periodic backup commands.
Aaron Marcuse-Kubitza
03:45 PM Revision 10006: added inputs/VegBIEN/TWiki/.rsync_ignore with filters from /README.TXT > Maintenance > to synchronize vegbiendev, jupiter, and your local machine. these filters will now be used with bin/sync_upload in addition to the periodic backup commands.
Aaron Marcuse-Kubitza
03:44 PM Revision 10005: added inputs/.rsync_ignore with filters from inputs/Makefile $(rsyncSrcs). these filters will now be used with bin/sync_upload in addition to `make inputs/upload`.
Aaron Marcuse-Kubitza
03:43 PM Revision 10004: added bin/.rsync_ignore with filters from /README.TXT > Maintenance > to synchronize vegbiendev, jupiter, and your local machine. these filters will now be used with bin/sync_upload in addition to the periodic backup commands.
Aaron Marcuse-Kubitza
03:40 PM Revision 10003: added backups/.rsync_ignore with filters from /README.TXT > Maintenance > to synchronize vegbiendev, jupiter, and your local machine. these filters will now be used with bin/sync_upload in addition to the periodic backup commands.
Aaron Marcuse-Kubitza
03:36 PM Revision 10002: /.rsync_ignore: added *.pyc
Aaron Marcuse-Kubitza
03:36 PM Revision 10001: added /.rsync_ignore with filters from lib/common.Makefile $(rsync). these filters will now be used with bin/sync_upload in addition to `make inputs/upload`.
Aaron Marcuse-Kubitza
03:34 PM Revision 10000: lib/sh/sync.sh: upload(): use --exclude filters from per-dir .rsync_ignore. note that --exclude-from can't be used for this, because it is relative to the currdir, not the rsync root, and therefore also requires the .rsync_ignore to exist rather than using it only if it exists.
Aaron Marcuse-Kubitza

06/22/2013

12:23 AM Revision 9999: bin/tnrs_db: documented total runtime (10 days)
Aaron Marcuse-Kubitza

06/21/2013

11:58 PM Revision 9998: bin/tnrs_db: documented current runtime (162 ms/name)
Aaron Marcuse-Kubitza

06/20/2013

10:58 PM Revision 9997: web/links/index.htm: updated to Firefox bookmarks. sorted NCEAS bookmarks to put homepage and support pages first.
Aaron Marcuse-Kubitza
06:21 PM Revision 9996: /README.TXT: Full database import: To run TNRS, etc. after the main import: clarified that you should only run `export version=<version>` if the import is named something *other than* public (i.e. it has not yet replaced the previous public schema)
Aaron Marcuse-Kubitza
06:14 PM Revision 9995: /README.TXT: Full database import: To run TNRS: removed `by_col=1` because by-column mode is not applicable to running TNRS. it is, however, needed when running import_scrub (i.e. `make inputs/<datasrc>/reimport_scrub by_col=1`).
Aaron Marcuse-Kubitza
06:10 PM Revision 9994: inputs/.TNRS/schema.sql: tnrs: vegbiendev update steps: added `make backups/TNRS.backup-remake` to back up TNRS before making changes to it. this provides a more recent restore point than the last import in case the changes mess things up. (however, the last import's backup is usually sufficient unless TNRS has been run since then.)
Aaron Marcuse-Kubitza
05:53 PM Revision 9993: inputs/.TNRS/schema.sql: tnrs_populate_fields(): added VACUUM ANALYZE and runtime (50 s)
Aaron Marcuse-Kubitza
05:42 PM Revision 9992: inputs/.TNRS/schema.sql: tnrs_populate_fields(): updated runtime (16 min)
Aaron Marcuse-Kubitza
05:09 PM Revision 9991: schemas/VegBIEN/taxonomy/higherPlantGroup.xlsx.src.txt: added Brad's comment that there are some holes in the Embryophyte subclasses list, and we need to validate it
Aaron Marcuse-Kubitza
04:49 PM Revision 9990: inputs/.TNRS/schema.sql: tnrs: documented that when changing this table's schema, you must also make the same changes on vegbiendev. included sample util.set_col_types() call with runtime (4 min).
Aaron Marcuse-Kubitza
03:58 PM Revision 9989: inputs/.TNRS/schema.sql: tnrs_populate_fields(): updated runtime (16 min)
Aaron Marcuse-Kubitza
03:32 PM Revision 9988: bugfix: inputs/.TNRS/schema.sql: tnrs_populate_fields(): need to schema-qualify invoked functions
Aaron Marcuse-Kubitza
03:29 PM Revision 9987: bugfix: inputs/.TNRS/schema.sql: tnrs_populate_fields(): Is_homonym: use the *_is_homonym flag for whichever of genus or family (in that order) is NOT NULL, rather than horizontal-ORing potentially NULL values together
Aaron Marcuse-Kubitza
03:22 PM Revision 9986: bugfix: inputs/.TNRS/schema.sql: family_is_homonym(), genus_is_homonym(): need to return NULL instead of false when input family/genus is NULL. EXISTS() does not support this, so STRICT is used to provide this functionality automatically.
Aaron Marcuse-Kubitza
03:19 PM Revision 9985: inputs/.TNRS/schema.sql: added family_is_homonym(), genus_is_homonym() and use them in tnrs_populate_fields()
Aaron Marcuse-Kubitza
03:15 PM Revision 9984: inputs/.TNRS/schema.sql: score_ok(): changed to IMMUTABLE and STRICT
Aaron Marcuse-Kubitza
03:14 PM Revision 9983: inputs/.TNRS/schema.sql: tnrs_populate_fields(): updated runtime (16 min)
Aaron Marcuse-Kubitza
02:41 PM Revision 9982: inputs/.TNRS/schema.sql: tnrs_populate_fields(): never_homonym: use Author_score threshold to exclude matches that are too fuzzy to confirm the presence of a plant name author
Aaron Marcuse-Kubitza
02:38 PM Revision 9981: bugfix: inputs/.TNRS/schema.sql: tnrs_populate_fields(): *_is_homonym: also need to check that there was no Author_matched (i.e. that it could be a homonym). Is_homonym: use new never_homonym var.
Aaron Marcuse-Kubitza
02:18 PM Revision 9980: inputs/.TNRS/schema.sql: tnrs_populate_fields(): updated runtime (18 min)
Aaron Marcuse-Kubitza
02:17 PM Revision 9979: inputs/import.stats.xls: Updated import times
Aaron Marcuse-Kubitza
02:07 PM Revision 9978: planning/workflow/bien3_architecture.pptx: stage II: removed Step prefix before stage #, which the other slides don't have
Aaron Marcuse-Kubitza
01:57 PM Revision 9977: added planning/workflow/bien3_architecture/stages.png
Aaron Marcuse-Kubitza
01:36 PM Revision 9976: added planning/workflow/bien3_architecture/stage_*.png
Aaron Marcuse-Kubitza
12:54 PM Revision 9975: added planning/workflow/bien3_architecture.pptx
Aaron Marcuse-Kubitza
08:20 AM Revision 9974: inputs/.TNRS/schema.sql: tnrs_populate_fields(): when changing this function: UPDATE statement: include TNRS schema since it may not be in the search_path
Aaron Marcuse-Kubitza
08:14 AM Revision 9973: inputs/.TNRS/schema.sql: tnrs_populate_fields(): Is_plant: also consider homonyms using new family_is_homonym, genus_is_homonym (see wiki.vegpath.org/Result_filtering#taxon_is_plant)
Aaron Marcuse-Kubitza
08:03 AM Revision 9972: inputs/.TNRS/schema.sql: tnrs: added Is_homonym derived col (uses IRMNG.family_homonym_epithet, genus_homonym_epithet)
Aaron Marcuse-Kubitza
07:54 AM Revision 9971: schemas/vegbien.sql: re-ran `make schemas/public/reinstall; make schemas/remake` cycle, which apparently changed sort order of statements
Aaron Marcuse-Kubitza
07:11 AM Revision 9970: /README.TXT: Full database import: disk space check: updated minimum (to 300GB) for new import schema size. note that most of the space (166GB) is indexes, and even of the 87GB of data, only 20GB is from GBIF and 15GB from FIA (so most of it is duplication).
Aaron Marcuse-Kubitza
07:07 AM Revision 9969: added inputs/IRMNG/*_homonym_epithet/map.csv, etc. (created by */run)
Aaron Marcuse-Kubitza
07:01 AM Revision 9968: bugfix: inputs/input.Makefile: `%/install %/header.csv: %/create.sql`: in noclobber mode, mark %/header.csv as .PRECIOUS so the existing file won't be deleted if the table already exists (causing an error exit)
Aaron Marcuse-Kubitza
06:54 AM Revision 9967: bugfix: lib/runscripts/table.run: remake_VegBIEN_mappings(): run yes using piped_cmd() so the SIGPIPE doesn't cause an errexit
Aaron Marcuse-Kubitza
06:45 AM Revision 9966: added inputs/IRMNG/{genus_homonym_epithet,family_homonym_epithet}/run, which inherit from ../table.run so that load_data() (which runs create.sql) is invoked
Aaron Marcuse-Kubitza
06:44 AM Revision 9965: added inputs/IRMNG/species_homonyms/new_terms.csv
Aaron Marcuse-Kubitza
06:43 AM Revision 9964: bugfix: added no-op inputs/IRMNG/Source/run so inputs/IRMNG/run would have something to invoke for it
Aaron Marcuse-Kubitza
06:35 AM Revision 9963: inputs/IRMNG/run: use lib/runscripts/datasrc_dir.run, which now provides import() and $subdirs
Aaron Marcuse-Kubitza
06:34 AM Revision 9962: lib/runscripts/datasrc_dir.run: extend import.run and provide an import() implementation that runs all the runscripts for import_order.txt subdirs
Aaron Marcuse-Kubitza
06:20 AM Revision 9961: lib/csvs.py: sniff(): support single-column spreadsheets by defaulting to the Excel dialect when the delimiter can't be determined
Aaron Marcuse-Kubitza
06:09 AM Revision 9960: inputs/IRMNG/: added family_homonym_epithet, genus_homonym_epithet lookup tables, which use util.all_same() to filter out internal Plantae homonyms
Aaron Marcuse-Kubitza
05:44 AM Revision 9959: schemas/util.sql: added all_same() aggregate
Aaron Marcuse-Kubitza
05:31 AM Revision 9958: schemas/util.sql: added not_empty(anyarray)
Aaron Marcuse-Kubitza
12:14 AM Revision 9957: schemas/util.sql: added not_null() (usable as an aggregate's FINALFUNC)
Aaron Marcuse-Kubitza
12:13 AM Revision 9956: schemas/util.sql: added not_null() (usable as an aggregate's FINALFUNC)
Aaron Marcuse-Kubitza

06/19/2013

10:18 PM Revision 9955: bugfix: inputs/IRMNG/import_order.txt: need to specify order so that Source is first
Aaron Marcuse-Kubitza
10:16 PM Revision 9954: bugfix: inputs/IRMNG/*/map.csv: remapped Authority to scientificNameAuthorship instead of authors (now data_authors <VegCore.vegpath.org?data_authors> for clarity)
Aaron Marcuse-Kubitza
09:59 PM Revision 9953: inputs/IRMNG/map.csv: updated to scrubbed output names from */map.csv (/map.csv does not currently get scrubbed)
Aaron Marcuse-Kubitza
09:51 PM Revision 9952: bugfix: inputs/IRMNG/species_homonyms/header.csv, map.csv: reset input columns to DSV (delim-separated values) header. they had gotten changed to the output names in running map.csv with remake=1, causing it to be remade from the (renamed) staging tables.
Aaron Marcuse-Kubitza
08:54 PM Revision 9951: inputs/input.Makefile: $(_svnFilesGlob): added *Makefile
Aaron Marcuse-Kubitza
08:51 PM Revision 9950: /README.TXT: `make inputs/{upload,download}`: first run with test=1 to see what the diffs will be
Aaron Marcuse-Kubitza
08:47 PM Revision 9949: added inputs/IRMNG/, including runscripts to download the names. this is now the 2nd datasource after GBIF to use runscripts, and the 3rd after FIA/GBIF to use new-style import.
Aaron Marcuse-Kubitza
08:45 PM Revision 9948: inputs/input.Makefile: $(_svnFilesGlob): added *run (runscripts)
Aaron Marcuse-Kubitza
08:24 PM Revision 9947: lib/runscripts/table.run: import(): also run remake_VegBIEN_mappings() to accept the test output. this function was previously unused, but was left in for future use when lib/import.sh was translated to lib/runscripts/table.run (it was used in its import.sh form in inputs/FIA/occurrence_all/import).
Aaron Marcuse-Kubitza
08:21 PM Revision 9946: bugfix: lib/runscripts/table.run: remake_VegBIEN_mappings(): need to change to $top_dir before running `rm header.csv map.csv`
Aaron Marcuse-Kubitza
08:18 PM Revision 9945: lib/sh/util.sh: added in_top_dir()
Aaron Marcuse-Kubitza
08:00 PM Revision 9944: lib/runscripts/table.run: remake_VegBIEN_mappings(): only remake header.csv, map.csv if this target is being run directly, to avoid needing to remake them every time. for tables that are views, this instead requires them to be explicitly remade when the view columns change.
Aaron Marcuse-Kubitza
07:07 PM Revision 9943: bugfix: lib/runscripts/subdir.run: subdir_make(): only remake if $remake has been explicitly propagated to subdir_make() by using self_make
Aaron Marcuse-Kubitza
06:51 PM Revision 9942: lib/sh/make.sh: added deferred_check_target_exists alias and use it in check_fake_target_exists
Aaron Marcuse-Kubitza
06:41 PM Revision 9941: added lib/sh/web.sh with curl wrapper
Aaron Marcuse-Kubitza
06:41 PM Revision 9940: lib/sh/make.sh: added check_wildcard_target_exists alias
Aaron Marcuse-Kubitza
06:37 PM Revision 9939: lib/sh/util.sh: added wildcard1 alias
Aaron Marcuse-Kubitza
06:37 PM Revision 9938: lib/sh/util.sh: added echo1()
Aaron Marcuse-Kubitza
06:32 PM Revision 9937: lib/runscripts/table.run: load_data(): first make sure schema is installed
Aaron Marcuse-Kubitza
06:31 PM Revision 9936: lib/runscripts/table.run: added datasrc_make_install()
Aaron Marcuse-Kubitza
06:31 PM Revision 9935: table_make_install(): take $install_log as an overridable kw param to support install logs in different locations
Aaron Marcuse-Kubitza
05:55 PM Revision 9934: lib/runscripts/table.run: load_data(): split noclobber functionality into separate table_make_install() function, which can be used by other install-related targets
Aaron Marcuse-Kubitza
03:27 PM Revision 9933: added schemas/VegBIEN/taxonomy/higherPlantGroup.xlsx.src.txt with Brad's description of how the names were chosen
Aaron Marcuse-Kubitza
02:37 PM Revision 9932: added schemas/VegBIEN/taxonomy/higherPlantGroup.xlsx
Aaron Marcuse-Kubitza
01:50 PM Revision 9931: schemas/VegBIEN/planning/taxonomy/: moved non-VegBIEN-specific resources to planning/resources/taxonomy/. this includes Brad's all-important Nomenclature_excerpt.ppt with the Latin taxonomic hierarchy suffixes on slide 5.
Aaron Marcuse-Kubitza
11:02 AM Revision 9930: bugfix: schemas/vegbien.sql: taxon_trait_view: use the TNRS-scrubbed name from ScrubbedTaxon when available
Aaron Marcuse-Kubitza
10:36 AM Revision 9929: schemas/vegbien.sql: split geoscrub_input_view's new-row-only filtering into separate view geoscrub_input_new, so that the full geoscrub_input rows are still available. the reduction in geoscrub_input from eliminating the already-scrubbed rows was only 280,000 (5076500 - 4799173) out of a possible 1.7 million (1707970), so it makes sense to just run geoscrubbing on the full input. (the lower-than-expected reduction is most likely due to rows from pre-refresh data being present in the original geoscrub_output table, which have been replaced by different, post-refresh input rows.)
Aaron Marcuse-Kubitza
10:18 AM Revision 9928: added exports/_archive/
Aaron Marcuse-Kubitza
10:17 AM Revision 9927: mappings/VegCore-VegBIEN.csv: genus->taxonlabel.taxonomicname: use new _filter_genus() (see r9882)
Aaron Marcuse-Kubitza
10:15 AM Revision 9926: backups/TNRS.backup.md5: updated
Aaron Marcuse-Kubitza
09:43 AM Revision 9925: bin/make_analytical_db: use new mk_table() instead of TRUNCATE/INSERT
Aaron Marcuse-Kubitza
09:41 AM Revision 9924: bin/make_analytical_db: added mk_table() and use it in mk_analytical_table()
Aaron Marcuse-Kubitza
09:30 AM Revision 9923: schemas/vegbien.sql: higher_plant_group_nodes: ferns and allies: added Lycopodiophyta node, as requested by Brad in the conference call (wiki.vegpath.org/2013-06-13_conference_call)
Aaron Marcuse-Kubitza
09:30 AM Revision 9922: schemas/vegbien.sql: geoscrub_input_view: exclude rows that have already been geoscrubbed, by anti-joining on geoscrub_output
Aaron Marcuse-Kubitza
09:11 AM Revision 9921: inputs/.geoscrub/geoscrub_output/postprocess.sql: set decimallatitude, decimallongitude types to double precision to facilitate joining with other double precision values
Aaron Marcuse-Kubitza
09:02 AM Revision 9920: inputs/.geoscrub/geoscrub_output/postprocess.sql: coords index: added rest of input columns so this can be used to check the existence of a result by input. added runtime (55 s). use idempotent create_if_not_exists().
Aaron Marcuse-Kubitza
08:17 AM Revision 9919: schemas/vegbien.sql: higher_plant_group_nodes: ferns and allies: added Lycopodiophyta node, as requested by Brad in the conference call (wiki.vegpath.org/2013-06-13_conference_call)
Aaron Marcuse-Kubitza
08:08 AM Revision 9918: bugfix: schemas/vegbien.sql: higher_plant_group_nodes: removed ferns and allies nodes Anthocerotophyta, Marchantiophyta, Bryophyta, which were incorrectly said to be part of this clade in the BIEN2 analytical DB overview (/planning/workflow/validation/BIEN2_Analytical_DB_overview.docx > p. 13 bottom > last ¶). see http://wiki.vegpath.org/2013-06-13_conference_call#fix-higher_plant_group_nodes-mapping .
Aaron Marcuse-Kubitza
07:58 AM Revision 9917: bugfix: /Makefile: postgres-Linux: phpPgAdmin: added steps to configure it for Apache 2.4
Aaron Marcuse-Kubitza

06/18/2013

07:49 PM Revision 9916: /run: geoscrub_input/make(): documented runtime (40 s)
Aaron Marcuse-Kubitza
06:22 PM Revision 9915: bin/make_analytical_db: added `/run export_` to make the geoscrub_input CSV export
Aaron Marcuse-Kubitza
06:21 PM Revision 9914: inputs/.TNRS/schema.sql: tnrs_populate_fields(): removed no longer needed casts of *_score to double precision
Aaron Marcuse-Kubitza
06:06 PM Revision 9913: inputs/.TNRS/schema.sql: tnrs: *_score: changed type to double precision because these fields are always floats. this also avoids the need to manually cast them to double precision each time they are used.
Aaron Marcuse-Kubitza
05:55 PM Revision 9912: lib/tnrs.py: HTTP requests: rewrapped lines
Aaron Marcuse-Kubitza
05:53 PM Revision 9911: lib/tnrs.py: updated HTTP requests to match current web app
Aaron Marcuse-Kubitza
05:51 PM Revision 9910: bugfix: lib/tnrs.py: download_request_template: changed dirty to true (to match the current web app), which is apparently needed to apply the source_sorting setting to the downloaded TSV in addition to the GUI results
Aaron Marcuse-Kubitza
05:29 PM Revision 9909: lib/tnrs.py: retrieval_request_template: turned source_sorting back off, because it causes any match from the first source to always be used, even if it has a lower match score than the match from the other source. (Brad confirms that this should be off.) I think we had this on originally to ensure that only Tropicos results were used when available, rather than USDA when it was a better match. *** note that due to a bug in the web app, this change will not actually be effective, because the source_sorting option is only applied to the GUI results, not the downloaded TSV. ***
Aaron Marcuse-Kubitza
04:27 PM Revision 9908: inputs/.TNRS/schema.sql: tnrs: Name_number: changed type to integer so it would sort numerically
Aaron Marcuse-Kubitza
04:24 PM Revision 9907: inputs/.TNRS/schema.sql: added pkey on Time_submitted, Name_number
Aaron Marcuse-Kubitza
04:21 PM Revision 9906: inputs/.TNRS/schema.sql: changed Name_submitted pkey to a unique constraint to allow adding a pkey on Time_submitted, Name_number instead
Aaron Marcuse-Kubitza
04:14 PM Revision 9905: inputs/.TNRS/schema.sql: Time_submitted, Name_number: added NOT NULL constraints so that they can be used in a unique constraint
Aaron Marcuse-Kubitza
02:21 PM Revision 9904: lib/tnrs.py: submission_request_template: include GCC in addition to Tropicos, because it provides more synonyms than Tropicos for Asteraceae, and the accepted names still match the Tropicos backbone (https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/2013-06-13_conference_call#include-GCC-when-running-TNRS)
Aaron Marcuse-Kubitza

06/17/2013

08:18 PM Revision 9903: inputs/.TNRS/tnrs/tnrs.make: removed no longer needed end time, now that the total runtime is printed
Aaron Marcuse-Kubitza
08:17 PM Revision 9902: inputs/.TNRS/tnrs/tnrs.make: print the total runtime using `time`
Aaron Marcuse-Kubitza
08:14 PM Revision 9901: inputs/.TNRS/tnrs/tnrs.make: include the end time in addition to the start time so that the total runtime can be calculated
Aaron Marcuse-Kubitza
07:59 PM Revision 9900: lib/sh/util.sh: command-specific alternate stdin/stdout/stderr: choice of 40/41/42: added mnemonic that 4 looks like A for Alternate
Aaron Marcuse-Kubitza

06/14/2013

09:26 AM Task #636 (New): support TNRS-matching names in "", insted of encoding them and letting TNRS return no match
* names like @"Acer rubrum"@ (_with_ quotes) currently get encoded as @ !quo Acer rubrum !quo @, which TNRS can't par... Aaron Marcuse-Kubitza
07:42 AM Revision 9899: bugfix: /README.TXT: Full database import: added step to remove any leftover TNRS lockfile. usually, the PID in it would not exist, but sometimes it now refers to a different, active process which blocks tnrs.make.
Aaron Marcuse-Kubitza

06/13/2013

01:00 PM Revision 9898: schemas/vegbien.sql: allow public_ to view lookup tables (cultivated_family_locations, higher_plant_group_nodes)
Aaron Marcuse-Kubitza
08:13 AM Revision 9897: added backups/TNRS.backup.md5, vegbien.r9459.backup.md5
Aaron Marcuse-Kubitza

06/12/2013

02:45 PM Revision 9896: bugfix: lib/sh/local.sh: sync_upload(): need to use --no-group to prevent the group from being reset to aaronmk upon download from jupiter (which uses group aaronmk instead of bien). use ./fix_perms to set the group of all files to bien. also use --no-owner in case running as root.
Aaron Marcuse-Kubitza
02:12 PM Revision 9895: lib/sh/sync.sh: removed sync_download(). use swap=1 sync_upload() instead.
Aaron Marcuse-Kubitza
02:11 PM Revision 9894: lib/sh/sync.sh: removed download(). use swap=1 upload, or swap=1 upload_caller, instead. this avoids having separate upload()/download() pairs for every caller of upload(), because you can instead just set swap=1.
Aaron Marcuse-Kubitza
01:50 PM Revision 9893: bugfix: lib/sh/sync.sh: upload(): don't kw_params $swap because this unexports it, preventing put from seeing it. instead, use echo_vars to print it.
Aaron Marcuse-Kubitza
01:35 PM Revision 9892: added bin/sync_upload, a wrapper around sync_upload()
Aaron Marcuse-Kubitza
01:23 PM Revision 9891: added bin/sync_upload, a wrapper around sync_upload()
Aaron Marcuse-Kubitza
01:00 PM Revision 9890: bugfix: lib/sh/sync.sh: upload(): only add `--exclude="**"` if there are --includes. this enables running upload() without paths to upload all files.
Aaron Marcuse-Kubitza
12:56 PM Revision 9889: lib/sh/sync.sh: upload(): support passing -- options to put, which will not be run through the path->--include processing
Aaron Marcuse-Kubitza
12:55 PM Revision 9888: bugfix: lib/sh/sync.sh: upload(): added missing `local args=()` initializer
Aaron Marcuse-Kubitza
12:18 PM Revision 9887: /README.TXT: Full database import: On local machine: added step to do steps under Maintenance > "to synchronize vegbiendev, jupiter, and your local machine", which is needed in addition to `make inputs/upload` since that doesn't handle overwrites or deletions
Aaron Marcuse-Kubitza
12:10 PM Revision 9886: /README.TXT: Maintenance: to synchronize vegbiendev, jupiter, and your local machine: added warning that you should pay careful attention to all files that will be deleted or overwritten (as the three machines are often out of sync)
Aaron Marcuse-Kubitza
11:26 AM Revision 9885: added inputs/GBIF/_MySQL/GBIFPortalDB-2013-02-20.data.0.preamble.sql
Aaron Marcuse-Kubitza
11:17 AM Revision 9884: /README.TXT: Full database import: make inputs/{upload,download}: run them first with `test=1` to see what the changes will be
Aaron Marcuse-Kubitza
11:12 AM Revision 9883: /README.TXT: Full database import: `svn up`: use --force to avoid errors about existing files
Aaron Marcuse-Kubitza
10:49 AM Revision 9882: mappings/VegCore-VegBIEN.csv: genus->taxonlabel.taxonomicname: filter out genera that contain numbers (using new _filter_genus()), which break TNRS and prevent it from matching any other parts of the name. later, these genera can instead be moved to the end of the name, where TNRS will correctly match them as Unmatched_terms.
Aaron Marcuse-Kubitza
10:48 AM Revision 9881: bugfix: inputs/VegBIEN/: added _no_import to disable import for this folder, since this is actually just an entry in web/datasources/ with VegPath redirection links, rather than an input to the import process. this fixes "schema "VegBIEN" does not exist" errors generated in `make test`.
Aaron Marcuse-Kubitza
10:45 AM Revision 9880: inputs/input.Makefile: $(dontImport): also support putting a _no_import file at the top level in the datasource to exclude the entire datasource
Aaron Marcuse-Kubitza
10:30 AM Revision 9879: bugfix: lib/sh/local.sh: removed make() override, which is no longer needed now that its operations are performed by verbosity_compat(), and which caused errors by setting $verbosity to the invalid value ""
Aaron Marcuse-Kubitza
10:28 AM Revision 9878: bugfix: lib/sh/util.sh: verbosity_compat(): always use default verbosity (`unset verbosity`) when verbosity == 1, regardless of whether the caller has set $verbosity to the special value "", because $verbosity is supposed to be an integer field and "" is not supported by most functions that use $verbosity. in cases where a util.sh script is invoked, it will set $verbosity back to the default value 1, so this will function as before for util.sh scripts and fix $verbosity for scripts that use a different verbosity system.
Aaron Marcuse-Kubitza
10:05 AM Revision 9877: added inputs/GBIF/raw_occurrence_record_plants/table.tsv.md5
Aaron Marcuse-Kubitza
09:51 AM Revision 9876: inputs/GBIF/raw_occurrence_record_plants/test.xml.ref: regenerated. updated for new staging table input columns, which are now the same as the output columns.
Aaron Marcuse-Kubitza
09:41 AM Revision 9875: bugfix: inputs/input.Makefile: %/VegBIEN.csv: use header from map.csv instead of the new columns, so that source.shortname is set to GBIF instead of VegCore
Aaron Marcuse-Kubitza
09:24 AM Revision 9874: inputs/input.Makefile: %/VegBIEN.csv: when a runscript is available, instead map the *output* columns of map.csv to VegBIEN, because the columns have been renamed in the staging table
Aaron Marcuse-Kubitza
08:32 AM Revision 9873: inputs/GBIF/raw_occurrence_record_plants/VegBIEN.csv: regenerated, which adds row_num input col
Aaron Marcuse-Kubitza
08:16 AM Revision 9872: lib/sh/util.sh: echo_func(): check can_log at beginning of function, so that the resource-intensive func_loc (which calls `readlink -f`) does not need to be called if echo_cmd would not log anything at the current verbosity
Aaron Marcuse-Kubitza
08:02 AM Revision 9871: lib/sh/util.sh: echo_func(): removed no longer used $minor flag. use `clog++... echo_func` instead.
Aaron Marcuse-Kubitza
07:25 AM Revision 9870: lib/sh/util.sh: verbosity_compat(): don't make $verbosity a local var of this function, because then the changes will not be visible to the caller
Aaron Marcuse-Kubitza
07:12 AM Revision 9869: bugfix: bin/make: use verbosity_compat because some make-invoked commands (e.g. bin/map) don't support verbosity=""
Aaron Marcuse-Kubitza
07:10 AM Revision 9868: lib/sh/util.sh: command(): command__exec(): use verbosity_compat to support commands that don't support verbosity=""
Aaron Marcuse-Kubitza
07:09 AM Revision 9867: lib/sh/util.sh: added verbosity_compat(), for use with commands that don't support verbosity=""
Aaron Marcuse-Kubitza
06:47 AM Revision 9866: bugfix: lib/sh/local.sh: make(): when invoking overridden func, need make__make_sh
Aaron Marcuse-Kubitza
06:46 AM Revision 9865: bugfix: lib/sh/util.sh: self, self_sys aliases: need to remove any func_override suffix __* from the FUNCNAME
Aaron Marcuse-Kubitza
06:35 AM Revision 9864: bugfix: inputs/GBIF/import_order.txt, run: updated raw_occurrence_record/ to raw_occurrence_record_plants/
Aaron Marcuse-Kubitza
06:32 AM Revision 9863: inputs/FIA/occurrence_all/test.xml.ref: update inserted row count
Aaron Marcuse-Kubitza
06:27 AM Revision 9862: bugfix: bin/make: include local.sh so that its default verbosity-setting make() override will be used
Aaron Marcuse-Kubitza
06:26 AM Revision 9861: lib/sh/local.sh: added make() override, which uses the default verbosity (i.e. verbosity="") when verbosity == 1. scripts that use lib/sql.py (which uses $verbosity) have different default verbosities, and this default should not be overriden by an env var, unless a higher verbosity has been set.
Aaron Marcuse-Kubitza
06:24 AM Revision 9860: lib/sh/local.sh: added missing include of make.sh, used by root_make()
Aaron Marcuse-Kubitza
05:57 AM Revision 9859: schemas/vegbien.sql: added _filter_genus()
Aaron Marcuse-Kubitza
04:47 AM Revision 9858: inputs/GBIF/raw_occurrence_record_plants/run: import() runtime: specified that this does not include table.tsv.gz/make()
Aaron Marcuse-Kubitza
04:07 AM Revision 9857: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: Remove institutions that we have direct data for: # duplicates: added revision #
Aaron Marcuse-Kubitza
04:07 AM Revision 9856: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: Remove institutions that we have direct data for: documented that there are 4.5 million duplicates (59,998,354 rows before - 55,417,646 rows after = 4,580,708)
Aaron Marcuse-Kubitza
03:49 AM Revision 9855: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: Remove institutions that we have direct data for: added rerun time (~0 thanks to index, so no problem doing the DELETE each time postprocess.sql is run)
Aaron Marcuse-Kubitza
03:25 AM Revision 9854: *{.sh,run}: use simpler .rel() instead of `. "$(dirname "${BASH_SOURCE[0]}")"/...` for relative includes
Aaron Marcuse-Kubitza
03:24 AM Revision 9853: lib/sh/util.sh: added .rel()
Aaron Marcuse-Kubitza
02:52 AM Revision 9852: schemas/VegCore/VegCore.pg.sql: regenerated from installed schema. a Linux bug that caused constraints to be output in reverse order has now been fixed, as of 12.04.2 (broken in 12.04.1).
Aaron Marcuse-Kubitza
02:48 AM Revision 9851: bugfix: inputs/GBIF/_MySQL/MySQL_schema, MySQL_data: sed: put {} commands on their own line to work on Mac
Aaron Marcuse-Kubitza
02:11 AM Revision 9850: lib/sh/util.sh: .(): put echo_func on its own line for clarity
Aaron Marcuse-Kubitza
02:10 AM Revision 9849: lib/sh/util.sh: .(): added echo_func (2 log_levels up because it's internal)
Aaron Marcuse-Kubitza
02:06 AM Revision 9848: schemas/VegCore/mk_derived: use new lib/sh/local.sh instead of lib/import.sh (a precursor to util.sh, etc. still used by inputs/FIA/)
Aaron Marcuse-Kubitza

06/11/2013

07:50 PM Revision 9847: bugfix: load_data(): verbosity_min: use verbosity_min='' so that csv2db's default verbosity (3) is used, instead of setting the verbosity directly to 3, which caused the log++ logging output from bin/make to be echoed at verbosity 3, creating cluttered output
Aaron Marcuse-Kubitza
07:43 PM Revision 9846: lib/sh/util.sh: verbosity_min(): support value '', which sets verbosity=''
Aaron Marcuse-Kubitza
06:40 PM Revision 9845: bugfix: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: updated column names to match the renamings in map.csv, which are now performed on the staging table itself
Aaron Marcuse-Kubitza
06:38 PM Revision 9844: lib/sh/util.sh: run_args_cmd(): time the command so that the runtime of the outer runscript target (i.e. the command run from the shell) is printed at the end of the output, like in bin/make
Aaron Marcuse-Kubitza
05:56 PM Revision 9843: bugfix: inputs/input.Makefile: %/install: don't run $(cleanup) if it has already been run by $(import_install_), so that it doesn't run twice
Aaron Marcuse-Kubitza
05:54 PM Revision 9842: inputs/input.Makefile: %/postprocess: don't run postprocess.sql if it is supposed to be run by a runscript, because postprocess.sql may then depend on additional steps the runscript runs before it
Aaron Marcuse-Kubitza
05:25 PM Revision 9841: lib/runscripts/table.run: import(): use self_make on load_data so that the remake status determines whether the table is reinstalled
Aaron Marcuse-Kubitza
05:23 PM Revision 9840: bugfix: lib/runscripts/mysql.table.run: import(): added missing set_make_vars, needed by self_make
Aaron Marcuse-Kubitza
05:21 PM Revision 9839: bugfix: lib/runscripts/table.run: load_data(): need to use $_remake instead of $remake when using set_make_vars
Aaron Marcuse-Kubitza
05:20 PM Revision 9838: lib/runscripts/table.run: added set_make_vars to all make targets so $remake would be propagated appropriately
Aaron Marcuse-Kubitza
05:18 PM Revision 9837: lib/runscripts/table.run: load_data(): also clobber install log if remaking, because the table will be reinstalled
Aaron Marcuse-Kubitza
05:12 PM Revision 9836: lib/runscripts/table.run: load_data(): automatically select noclobber mode depending on whether the install log already exists. this removes the need for a separate load_data_first_run() function.
Aaron Marcuse-Kubitza
04:59 PM Revision 9835: bugfix: lib/runscripts/table.run: load_data(): ignore errors if table already exists
Aaron Marcuse-Kubitza
04:52 PM Revision 9834: lib/runscripts/table.run: load_data(): use noclobber=1 to avoid overwriting the install log when re-running the install target idempotently. load_data_first_run() is now available to preserve the output in the log on the first run.
Aaron Marcuse-Kubitza
04:51 PM Revision 9833: inputs/input.Makefile: Staging tables installation: $(logInstall): don't output to the install log if $noclobber flag is set, to prevent overwriting the log when re-running the install target idempotently
Aaron Marcuse-Kubitza
04:18 PM Revision 9832: bugfix: lib/runscripts/mysql.table.run: import(): move previous versions of table.tsv out of the main dir before loading staging tables, to prevent them from being considered a TSV segment file and prepended to table.tsv
Aaron Marcuse-Kubitza
04:15 PM Revision 9831: lib/sh/util.sh: added mv2dir(), mv_glob which wrap mv
Aaron Marcuse-Kubitza
04:14 PM Revision 9830: lib/sh/util.sh: added mkdir alias which adds -p to prevent errors if the dir already exists
Aaron Marcuse-Kubitza
03:45 PM Revision 9829: lib/sh/util.sh: added wildcard alias, similar to make's $(wildcard) function
Aaron Marcuse-Kubitza
03:29 PM Revision 9828: bugfix: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: institution_code index: create it idempotently using create_if_not_exists() and an explicit index name, so that a duplicate index doesn't get added each time postprocess.sql is run
Aaron Marcuse-Kubitza
03:27 PM Revision 9827: lib/sh/local.sh: psql(): don't put util in the search_path because psql scripts now add it themselves if they need it, using `SELECT util.search_path_append(util);`
Aaron Marcuse-Kubitza
03:22 PM Revision 9826: inputs/GBIF/raw_occurrence_record_plants/postprocess.sql: add util to the search_path so that postprocess.sql will also work when run by inputs/input.Makefile, which only puts the datasource (GBIF) in the search_path
Aaron Marcuse-Kubitza
03:18 PM Revision 9825: schemas/util.sql: added search_path_append()
Aaron Marcuse-Kubitza
03:12 PM Revision 9824: schemas/util.sql: added eval() to allow running EXECUTE outside of a function (and to echo the command that is run)
Aaron Marcuse-Kubitza
09:04 AM Revision 9823: inputs/GBIF/raw_occurrence_record_plants/run: added import() runtime (5 h)
Aaron Marcuse-Kubitza

06/10/2013

11:58 PM Revision 9822: inputs/GBIF/raw_occurrence_record_plants/run: table.tsv.gz/make() runtime: noted that this excludes the upload time
Aaron Marcuse-Kubitza
11:58 PM Revision 9821: inputs/GBIF/raw_occurrence_record_plants/run: added table.tsv.gz/upload() runtime (15 min)
Aaron Marcuse-Kubitza
11:48 PM Revision 9820: added lib/runscripts/mysql.table.run (general to all MySQL datasources) and use it in inputs/GBIF/table.run
Aaron Marcuse-Kubitza
11:13 PM Revision 9819: inputs/GBIF/raw_occurrence_record_plants/run: table.tsv/make(): to view runtime when using `screen`: keys used to scroll: added Ctrl-B/Ctrl-F for page-at-a-time scrolling (there are a lot of pages of output for the import() target!)
Aaron Marcuse-Kubitza

06/09/2013

09:21 PM Revision 9818: bugfix: inputs/GBIF/table.run: table.tsv.gz/make(): don't run table.tsv.gz/upload in test mode, to avoid clobbering the backup of a full table.tsv with a partial, testing table.tsv
Aaron Marcuse-Kubitza
09:18 PM Revision 9817: lib/sh/db.sh: set test mode when using limited # rows
Aaron Marcuse-Kubitza
09:08 PM Revision 9816: bugfix: inputs/GBIF/table.run: table.tsv.gz/upload(): don't use inplace mode because it leaves a newer mtime when aborted, causing rsync to think that the partial upload is actually newer than the source. note that rsync's --partial-dir mode is just as capable of resuming an aborted upload (it will just use a file in .rsync-tmp instead). inplace mode is primarily designed for fixed-offset files which don't change much between edits, but this is not true for exports (or the gzips of them), which will change the file offsets of most data if even one row or column is added or removed.
Aaron Marcuse-Kubitza
09:01 PM Revision 9815: bugfix: inputs/GBIF/table.run: table.tsv.gz/make(): run table.tsv.gz/upload here instead of in table.tsv/make() because it should not run until table.tsv.gz is finished being made, which is not the case in table.tsv/make() because table.tsv.gz/make is run in the background
Aaron Marcuse-Kubitza
08:59 PM Revision 9814: inputs/GBIF/table.run: table.tsv.gz/upload(): moved before table.tsv.gz/make() so it can be used by it
Aaron Marcuse-Kubitza
08:39 PM Revision 9813: bugfix: inputs/GBIF/table.run: table.tsv.gz/upload(): need overwrite=1 because the mtime of an aborted inplace upload is newer
Aaron Marcuse-Kubitza
08:32 PM Revision 9812: inputs/GBIF/table.run: table.tsv*/upload(): renamed to table.tsv.gz/upload() to upload only table.tsv.gz, not table.tsv, in order to save bandwidth
Aaron Marcuse-Kubitza
08:28 PM Revision 9811: bugfix: lib/sh/sync.sh: also need to --include parent dirs for each --include path
Aaron Marcuse-Kubitza
08:27 PM Revision 9810: lib/sh/util.sh: added path_parents()
Aaron Marcuse-Kubitza
08:01 PM Revision 9809: *{.sh,run}: in comments, use ${array[@]} instead of @array for clarity
Aaron Marcuse-Kubitza
07:54 PM Revision 9808: lib/sh/util.sh: foreach_arg(): moved `local a` to same line as for loop that uses it
Aaron Marcuse-Kubitza
07:00 PM Revision 9807: bugfix: inputs/GBIF/table.run: table.tsv*/upload(): need to run put in live mode (live=1)
Aaron Marcuse-Kubitza
06:53 PM Revision 9806: lib/sh/util.sh: foreach_arg(): echo_run the cmd at a log_level up so it isn't printed as if it were an external command (log_level 1)
Aaron Marcuse-Kubitza
06:33 PM Revision 9805: lib/sh/sync.sh: removed `pf upload` debug statement
Aaron Marcuse-Kubitza
06:32 PM Revision 9804: bugfix: lib/sh/util.sh: set_fds(): localize $i so it doesn't overwrite any previous value
Aaron Marcuse-Kubitza
06:30 PM Revision 9803: inputs/GBIF/table.run: table.tsv/make(): run table.tsv*/upload when the file make is done so that the file is backed up to jupiter
Aaron Marcuse-Kubitza
06:29 PM Revision 9802: inputs/GBIF/table.run: added table.tsv*/upload()
Aaron Marcuse-Kubitza
06:27 PM Revision 9801: lib/sh/local.sh: added sync_upload(), sync_download() with $sync_local_dir, $sync_remote_url config vars
Aaron Marcuse-Kubitza
06:26 PM Revision 9800: added lib/sh/sync.sh with upload(), download()
Aaron Marcuse-Kubitza
06:25 PM Revision 9799: lib/sh/util.sh: added foreach_arg()
Aaron Marcuse-Kubitza
06:06 PM Revision 9798: bugfix: lib/sh/util.sh: need to use `declare -p` instead of ${var+isset} because ${var+isset} returns not set for empty arrays
Aaron Marcuse-Kubitza
06:05 PM Revision 9797: lib/sh/util.sh: added echo_vars() stub
Aaron Marcuse-Kubitza
05:43 PM Revision 9796: lib/sh/util.sh: added echo_run() stub
Aaron Marcuse-Kubitza
05:39 PM Revision 9795: lib/sh/util.sh: set_fds(): don't run (or echo) exec if no redirections are being made
Aaron Marcuse-Kubitza
05:37 PM Revision 9794: bugfix: lib/sh/util.sh: added missing stub for indent alias (used by echo_func alias, which is a stub). without the stub, /usr/bin/indent would be used instead on Mac.
Aaron Marcuse-Kubitza
04:01 PM Revision 9793: bugfix: lib/sh/local.sh: root_rel_path(): added echo_func
Aaron Marcuse-Kubitza
04:01 PM Revision 9792: bugfix: lib/sh/local.sh: root_rel_path(): use canon_rel_path instead of rel_path because $1 may be absolute rather than relative to the current dir, so $root_dir needs to be absoluted (which requires $1 to be absoluted as well)
Aaron Marcuse-Kubitza
03:56 PM Revision 9791: lib/sh/util.sh: support custom $base_dir, which will be run through realpath() to match $path ($PWD, which was used before, did not need to be realpath'd because it was already absolute)
Aaron Marcuse-Kubitza
03:34 PM Revision 9790: lib/sh/util.sh: moved echo_func alias to stub because it must be embedded in its expanded alias form to work properly
Aaron Marcuse-Kubitza
03:29 PM Revision 9789: lib/sh/util.sh: declare echo_func as a stub before it's defined, so that functions can use it even if they are defined before it (and its logging functionality will be enabled as soon as it's defined)
Aaron Marcuse-Kubitza
03:26 PM Revision 9788: lib/sh/util.sh: rel_path(): don't log++ it, and instead only log++ applicable calls of it or its callers. this allows non-internal calls of rel_path() to be logged at the usual log_level.
Aaron Marcuse-Kubitza
01:00 PM Revision 9787: lib/sh/local.sh: added root_rel_path()
Aaron Marcuse-Kubitza
12:39 PM Revision 9786: lib/Firefox_bookmarks.reformat.csv: unescape HTML in page's description, such as links to more info. this is necessary to properly render the persistent shells link in the screen > scrollback folder description.
Aaron Marcuse-Kubitza
12:37 PM Revision 9785: bin/repl: added unescape_html() filter function, which can be specified as the replacement string
Aaron Marcuse-Kubitza
12:35 PM Revision 9784: bin/repl: support Unicode characters in the matched portion of the string
Aaron Marcuse-Kubitza
11:52 AM Revision 9783: web/links/index.htm: updated to Firefox bookmarks. `screen`: scrollback: added link to our wiki page on persistent shells, which are a better way to support reconnecting.
Aaron Marcuse-Kubitza
11:36 AM Revision 9782: web/links/index.htm: updated to Firefox bookmarks. added bookmarks about the `screen` command, especially how to access the scrollback. resorted several folders alphabetically.
Aaron Marcuse-Kubitza
11:13 AM Revision 9781: inputs/GBIF/raw_occurrence_record_plants/run: table.tsv/make(): documented how to view the runtime when using `screen` (press Ctrl-A [ , use up-arrow, and then press Esc to leave copy mode)
Aaron Marcuse-Kubitza
11:12 AM Revision 9780: inputs/GBIF/raw_occurrence_record_plants/run: herbaria_filter/make(): use new ih_herbarium table instead of the herbaria_filter.ih.csv_ file directly
Aaron Marcuse-Kubitza

06/08/2013

12:23 PM Revision 9779: inputs/GBIF/raw_occurrence_record_plants/run: added ih_herbarium/make(), which stores the IH herbaria
Aaron Marcuse-Kubitza
11:50 AM Revision 9778: bugfix: inputs/GBIF/raw_occurrence_record_plants/run: table/make(): also filter out rows with a non-plant family (as described at http://vegpath.org/wiki/2013-06-06_conference_call#GBIF-subsetting-fix-raw_occurrence_record-filter-formula), since some institutions have both animal and plant rows, even though they are in IH or in the 80% list. (note that NULL families are OK.)
Aaron Marcuse-Kubitza
04:12 AM Revision 9777: *{.sh,run}: use mysql instead of mysql_ANSI because mysql is now an alias to mysql_ANSI (since ANSI mode still supports key MySQL features, like `` quotes)
Aaron Marcuse-Kubitza
04:09 AM Revision 9776: inputs/GBIF/raw_occurrence_record_plants/run: table.tsv/make(): documented that incremental output is provided right away with --quick (unbuffered), but takes awhile to become visible in Macfusion sshfs. this can be tested with `while true; do stat inputs/GBIF/raw_occurrence_record_plants/table.tsv; sleep 2; done` running concurrently with `./inputs/GBIF/raw_occurrence_record_plants/run table.tsv/make` on vegbiendev:/home/bien/svn .
Aaron Marcuse-Kubitza
04:00 AM Revision 9775: inputs/GBIF/raw_occurrence_record_plants/run: table.tsv/make(): use new raw_occurrence_record_plants view from table/make()
Aaron Marcuse-Kubitza
03:15 AM Revision 9774: bugfix: inputs/GBIF/raw_occurrence_record_plants/run: table/make(): added make of prerequisites
Aaron Marcuse-Kubitza
03:14 AM Revision 9773: bugfix: inputs/GBIF/raw_occurrence_record_plants/run: table/make(): don't reset $table to plant_fraction_for_herbaria_filter for commands that use $table
Aaron Marcuse-Kubitza
03:10 AM Revision 9772: inputs/GBIF/raw_occurrence_record_plants/run: added table/make(), which makes the filter view
Aaron Marcuse-Kubitza
02:14 AM Revision 9771: inputs/GBIF/raw_occurrence_record/: renamed to raw_occurrence_record_plants because it's actually only the plants in raw_occurrence_record, not all of raw_occurrence_record. also, this will allow us to create a separate raw_occurrence_record_plants view whose name matches the folder and does not collide with the raw_occurrence_record table.
Aaron Marcuse-Kubitza
12:44 AM Revision 9770: inputs/GBIF/raw_occurrence_record/run: herbaria_filter/make(): added runtime, which is ~0 since it just needs to do CSV import and index scans
Aaron Marcuse-Kubitza
12:43 AM Revision 9769: inputs/GBIF/raw_occurrence_record/run: herbaria_filter/make(): time the population of herbaria_filter
Aaron Marcuse-Kubitza

06/07/2013

11:47 PM Revision 9768: inputs/GBIF/raw_occurrence_record/run: plant_fraction/make(): updated runtime. added rows affected count to runtime so if the number of rows it's related to (in this case, institution_code) changes, the runtime can be expected to change accordingly.
Aaron Marcuse-Kubitza

06/06/2013

04:54 PM Revision 9767: inputs/.TNRS/schema.sql: tnrs_populate_fields(): documented runtime (17 min)
Aaron Marcuse-Kubitza
04:49 PM Revision 9766: bugfix: inputs/GBIF/raw_occurrence_record/run: plant_fraction/make(): plant_fraction column: COUNT(boolean) counts *non-NULL* rather than true values (which counter-intuitively includes false, because it's non-NULL), so need to add NULLIF(..., false) around the boolean expression to turn it into a NULL-or-not expression. see http://vegpath.org/wiki/2013-06-06_conference_call#GBIF-subsetting-fix-plant_fraction-SQL-bug .
Aaron Marcuse-Kubitza
04:29 PM Revision 9765: inputs/.TNRS/schema.sql: tnrs_populate_fields(): documented that when changing this function, you must regenerate the derived cols using `UPDATE tnrs SET "Name_submitted" = "Name_submitted"`
Aaron Marcuse-Kubitza
04:21 PM Revision 9764: inputs/.TNRS/schema.sql: tnrs_populate_fields(): Is_plant: must match family as Family_score = 1 (as discussed during conference call vegpath.org/wiki/2013-05-30_conference_call#postprocess-TNRS-results-to-exclude-animals-with-genus-homonyms) instead of as Family_matched IS NOT NULL (as listed in Brad's formula at vegpath.org/wiki/Result_filtering#TNRS-results) because TNRS transforms animal to plant families via fuzzy matching, necessitating a Family_score check to ensure an exact match to a plant family that was not transformed from an animal family
Aaron Marcuse-Kubitza
03:29 PM Revision 9763: inputs/.TNRS/schema.sql: added Is_plant derived field, which is populated using the formula at vegpath.org/wiki/Result_filtering#TNRS-results . note that the homonym filtering is currently excluded until we determine whether we can get direct access to the IRMNG homonyms database (http://www.cmar.csiro.au/datacentre/irmng/homonyms.htm). note also that changes to the TNRS schema cannot be fully tested until any TNRS client bugs are fixed, because the data.sql updater requires a working TNRS client to regenerate the sample data.
Aaron Marcuse-Kubitza
02:42 PM Revision 9762: inputs/.TNRS/schema.sql: updated for current TSV schema: renamed Accepted_species->Accepted_name_species, Accepted_family->Accepted_name_family
Aaron Marcuse-Kubitza
02:27 PM Revision 9761: bugfix: schemas/vegbien.sql: tnrs_input_name: must anti-join against MatchedTaxon rather than ValidMatchedTaxon to ensure that *all* of TNRS.tnrs is excluded from the input names. this prevents duplicates from appearing in the TNRS results, which would break the TSV import into TNRS.tnrs. it also prevents no-match names from being scrubbed repeatedly because they were not properly filtered out of the input names.
Aaron Marcuse-Kubitza
02:17 PM Revision 9760: inputs/.TNRS/schema.sql: fixed whitespace
Aaron Marcuse-Kubitza
02:15 PM Revision 9759: inputs/.TNRS/schema.sql: added MatchedTaxon view, which now just renames the columns but does not filter the results, and use it in ValidMatchedTaxon
Aaron Marcuse-Kubitza
02:11 PM Revision 9758: inputs/.TNRS/schema.sql: MatchedTaxon: renamed to ValidMatchedTaxon since this view actually contains only the names with a valid match
Aaron Marcuse-Kubitza
12:59 PM Revision 9757: bugfix: lib/sql.py: parse_exception(): make_DuplicateKeyException(): handle nested exceptions (which should never be generated, but may be in case of sql.py bugs such as wiki.vegpath.org/To_Do#Fixes > #1) by printing the nested exception and then rethrowing the original exception, so that the original exception does not get lost and still ends up at the end of the program's output, to enable debugging
Aaron Marcuse-Kubitza
11:08 AM Revision 9756: inputs/.TNRS/schema.sql: tnrs: documented that when changing this table's schema, you must regenerate data.sql using `inputs/test_taxonomic_names/test_scrub`
Aaron Marcuse-Kubitza
08:09 AM Revision 9755: inputs/GBIF/raw_occurrence_record/run: table.tsv.gz/make(): documented runtime (35 min)
Aaron Marcuse-Kubitza
07:52 AM Revision 9754: bugfix: schemas/vegbien.sql: analytical_stem_view: speciesBinomialWithMorphospecies: if accepted name not specified, use matched name (matched*) or Name_submitted (concatenatedScientificName), as described at http://wiki.vegpath.org/2013-05-30_conference_call#fix-TNRS-speciesBinomialWithMorphospecies-to-include-alternatives-when-no-accepted-name
Aaron Marcuse-Kubitza
07:24 AM Revision 9753: lib/sh/make.sh: make(): time all invocations of make
Aaron Marcuse-Kubitza
07:14 AM Revision 9752: lib/sh/make.sh: make() at verbosity < 4, hide messages about making included Makefiles: use sed with a range expression (/.../,/.../) to also exclude all log messages between an opening "make ...Makefile" and a closing "make[#]: ...Makefile"
Aaron Marcuse-Kubitza
06:35 AM Revision 9751: lib/sh/util.sh: log+ aliases: added clog++/-- aliases for cmds, which don't include log_local. these are useful when you can't just use "log++" because you need the command following it to be alias-expanded.
Aaron Marcuse-Kubitza
05:52 AM Revision 9750: bugfix: lib/sh/make.sh: make(): use [:char_class:] exprs instead of \X char class abbrs because the \ abbrs are not supported on Linux
Aaron Marcuse-Kubitza
05:33 AM Revision 9749: inputs/GBIF/table.run: table.tsv/make(): remake table.tsv.gz/make() after table.tsv is made
Aaron Marcuse-Kubitza
05:27 AM Revision 9748: inputs/GBIF/table.run: added table.tsv.gz/make()
Aaron Marcuse-Kubitza
05:26 AM Revision 9747: lib/sh/util.sh: added bg_cmd() and helpers log_bg(), log_last_bg()
Aaron Marcuse-Kubitza
05:04 AM Revision 9746: lib/runscripts/subdir.run: auto-append -remake to all targets in remake mode
Aaron Marcuse-Kubitza
04:15 AM Revision 9745: lib/runscripts/subdir.run: subdir_make(): put prepending of "$subdir/" on its own line for clarity
Aaron Marcuse-Kubitza
04:00 AM Revision 9744: bugfix: lib/common.Makefile: gzip/gunzip: in `touch -r`, *$<* needs to be the reference file
Aaron Marcuse-Kubitza
02:36 AM Revision 9743: *{.sh,run}: make() calls: removed no longer applicable silent=1, which is now handled automatically by the log_level mechanism
Aaron Marcuse-Kubitza
02:35 AM Revision 9742: /Makefile: new config target (part of install): install our bin/make in the user's ~/bin dir so that bin/make (with filtering of verbose messages) will always be used instead of standard make (without us needing to change every occurrence of make to bin/make!)
Aaron Marcuse-Kubitza
02:25 AM Revision 9741: bugfix: bin/make: use standard make logging port (1) instead of $log_fd (30) so that the output of bin/make can in turn be filtered by util.sh using the standard cmd_log_fd=1
Aaron Marcuse-Kubitza
02:23 AM Revision 9740: lib/sh/util.sh: command(): print the log_fd in effect in case the user changes it
Aaron Marcuse-Kubitza
02:23 AM Revision 9739: lib/sh/make.sh: make(): log the messages about making included Makefiles at log_level 4 instead of 3, so that verbosity 3 can be used to see the vars being used by the filtering process (i.e. the filtering process must still be enabled at verbosity 3)
Aaron Marcuse-Kubitza
02:00 AM Revision 9738: bin/make: use `readlink -f` on BASH_SOURCE[0] so that this script can also be run via a symlink
Aaron Marcuse-Kubitza
01:57 AM Revision 9737: lib/sh/util.sh: no_PATH_recursion(): also remove $top_symlink_dir_abs
Aaron Marcuse-Kubitza
01:56 AM Revision 9736: lib/sh/util.sh: added $top_symlink_dir_abs
Aaron Marcuse-Kubitza
01:53 AM Revision 9735: lib/sh/util.sh: $top_dir_orig: renamed to $top_symlink_dir since this reflects better what the dir actually represents, and when it differs from $top_dir
Aaron Marcuse-Kubitza
01:33 AM Revision 9734: lib/sh/make.sh: make(): fixed func name in usage
Aaron Marcuse-Kubitza
01:32 AM Revision 9733: bin/make: don't print make cmd by default, so that only `make` output is printed at verbosity 1
Aaron Marcuse-Kubitza
01:31 AM Revision 9732: bin/make: don't reinvoke make() if the make filter has already been set up, as indicated by $is_outermost (instead, invoke make directly using exec)
Aaron Marcuse-Kubitza
01:30 AM Revision 9731: lib/sh/util.sh: added $is_outermost, which stores whether the util.sh env has not yet set up
Aaron Marcuse-Kubitza
01:28 AM Revision 9730: lib/sh/util.sh: echo_redirs_cmd(): added $cmd_name_log_inc kw param to allow echoing the command name at a different log_level than the command output
Aaron Marcuse-Kubitza
12:22 AM Revision 9729: lib/sh/make.sh: make(): log the filter setup operations at log_level 2 so they do not clutter up normal output
Aaron Marcuse-Kubitza
12:13 AM Revision 9728: lib/sh/util.sh: filter_fd: alias-expand filter_cmd
Aaron Marcuse-Kubitza
12:08 AM Revision 9727: added bin/make, which runs make, hiding verbose messages about making included Makefiles. this should be used in preference to plain make, to avoid excessive log messages that prevent the user from seeing the core commands that are being run.
Aaron Marcuse-Kubitza
12:05 AM Revision 9726: lib/sh/util.sh: added no_PATH_recursion(), which allows running a system command of the same name as the script
Aaron Marcuse-Kubitza
12:04 AM Revision 9725: lib/sh/util.sh: added PATH_rm(), which removes components from the PATH
Aaron Marcuse-Kubitza
12:03 AM Revision 9724: lib/sh/util.sh: added $top_dir_abs, $top_dir_orig
Aaron Marcuse-Kubitza

06/05/2013

11:44 PM Revision 9723: bugfix: lib/sh/util.sh: command(): use `builtin command` instead of `exec` so that options like -p (reset PATH) work properly. also, the command builtin it overrides is designed to be used with more than just external commands, and command() should not impose additional limitations.
Aaron Marcuse-Kubitza
10:54 PM Revision 9722: lib/sh/util.sh: added self_sys alias, which uses only system utilities (`command -p`) instead of the current PATH
Aaron Marcuse-Kubitza
10:37 PM Revision 9721: lib/sh/make.sh: make(): at verbosity < 3, hide messages about making included Makefiles. this makes the make output **much** more readable when a Makefile contains an include statement, because there won't be a ton of log messages every time a Makefile is included. this filtering is so useful that it probably makes sense to run make for any of our Makefiles using `lib/runscripts/util.run make ...` instead of plain make. compare e.g. `make inputs/ACAD/Specimen/map.csv` (53 lines of output) and `lib/runscripts/util.run make inputs/ACAD/Specimen/map.csv` (17 lines of output, 1/3 as much).
Aaron Marcuse-Kubitza
10:15 PM Revision 9720: lib/sh/util.sh: log++: before cmd: documented that you need to use "log++" instad of log++ to avoid using the log++ alias, which prepends a log_local call. omitting the quotes is generally not a problem, but when there is another command wrapping the log++, you need the "" to avoid the wrapper applying to log_local's declare call instead.
Aaron Marcuse-Kubitza
10:09 PM Revision 9719: lib/sh/util.sh: log++: before cmd: documented how to use it as `log+ #` when incrementing multiple log_levels at once (this is a better method than `"log++" "log++" ...`)
Aaron Marcuse-Kubitza
10:04 PM Revision 9718: lib/sh/util.sh: log++: before cmd: documented that you need to use it as `"log++" "log++"` when repeating it multiple times
Aaron Marcuse-Kubitza
10:02 PM Revision 9717: lib/sh/util.sh: added filter_fd(), which encapsulates the use of >() process substitution for filtering an fd other than stdout (yes, this is possible without lots of 3>&1 1>&2 2>&3 redirections!). this can be useful e.g. to filter logging output or highlight errors.
Aaron Marcuse-Kubitza
09:49 PM Revision 9716: lib/sh/util.sh: log+(): documented that with a cmd, assignments are applied just to the cmd, so log_local is not needed
Aaron Marcuse-Kubitza
08:59 PM Revision 9715: lib/sh/util.sh: moved pipe_delay() before fd-related functions so it can be used by them
Aaron Marcuse-Kubitza
08:56 PM Revision 9714: lib/sh/util.sh: removed no longer needed load new aliases before echo_stdin(), since pipe_delay() is now a function
Aaron Marcuse-Kubitza
08:48 PM Revision 9713: bugfix: lib/sh/util.sh: set_fds(): add #<>&- before every #<>&# reopen: need to use loop var $i instead of $1 (which would have been used with a while/shift method of iterating over $@)
Aaron Marcuse-Kubitza
12:57 PM Revision 9712: bugfix: lib/sh/util.sh: set_fds(): added workaround for strange bash bug where reopening an fd sometimes first requires explicitly closing it, by adding an <>&- entry for every redirection
Aaron Marcuse-Kubitza
12:53 PM Revision 9711: lib/sh/util.sh: added match_prefix()
Aaron Marcuse-Kubitza
03:28 AM Revision 9710: lib/sh/make.sh: make(): determine --silent status based on the verbosity (<=0) instead of a kw param
Aaron Marcuse-Kubitza
03:11 AM Revision 9709: inputs/GBIF/table.run: table.tsv.md5/make(): only use %-remake if remaking
Aaron Marcuse-Kubitza
03:10 AM Revision 9708: lib/sh/make.sh: make(): removed extra space after --silent
Aaron Marcuse-Kubitza

06/04/2013

11:17 PM Revision 9707: lib/sh/db.sh: moved mysql_root() after the mysql->mysql_ANSI alias (and load new aliases) so that it will also use ANSI mode and support "" identifiers
Aaron Marcuse-Kubitza
11:15 PM Revision 9706: lib/sh/db.sh: mysql: always use ANSI mode, to support "" identifiers. note that `` are *still* supported in this mode, so it also works with SHOW CREATE TABLE output and dumpfiles.
Aaron Marcuse-Kubitza
11:05 PM Revision 9705: bugfix: inputs/GBIF/raw_occurrence_record/run: plant_fraction_for_herbaria_filter/make(): need to make prerequisites first (plant_fraction/make)
Aaron Marcuse-Kubitza
06:35 PM Revision 9704: bugfix: inputs/GBIF/table.run: table.tsv.md5/make(): use %-remake to ensure that the .md5 file is remade, regardless of the .md5 file's mtime relative to table.tsv. you would generally expect table.tsv's new mtime to be newer than the .md5 file's (thus triggering make to run), but if you e.g. ran svn up after making the table.tsv, this might not be the case.
Aaron Marcuse-Kubitza
06:31 PM Revision 9703: /Makefile: moved %/remake, %-remake to lib/common.Makefile because they are generally useful
Aaron Marcuse-Kubitza
06:26 PM Revision 9702: /Makefile: moved %/reinstall to lib/common.Makefile because it is generally useful
Aaron Marcuse-Kubitza
06:07 PM Revision 9701: lib/sh/db.sh: mysql_cmd(): run the command with `time` because in mysql()'s output_data mode, no queries, and therefore no runtimes, are echoed, so the total runtime needs to be echoed separately instead. the total runtime is also useful in general, when many long-running queries are run and you would also like to know the total time (e.g. in make_analytical_db).
Aaron Marcuse-Kubitza
05:54 PM Revision 9700: lib/sh/db.sh: limit(): usage: surrounded query in "" to clarify that it's a string, not a command
Aaron Marcuse-Kubitza
 

Also available in: Atom