aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Export all variables when sourcing conda's profile scriptsJoseph Hunkeler2024-09-201-1/+1
| | | | * This results in a fully activated environment; shell functions and all
* Fix incorrect failure countJoseph Hunkeler2024-09-181-1/+2
| | | | * No longer adds the raw status value to the failure count. Just increment it instead.
* Comment get_task_durationJoseph Hunkeler2024-09-181-0/+2
|
* Move process status checks outside of the if-statementJoseph Hunkeler2024-09-181-10/+18
| | | | | * Reverse the order of checks so signals actually get reported when they occur * Changed "Task finished" to "Task ended". "Finished" sounds more like "success" and might get confusing when an error occurs
* mp_pool_kill marks PIDs as unusedJoseph Hunkeler2024-09-181-0/+2
|
* Rename mp_task to mp_pool_taskJoseph Hunkeler2024-09-182-3/+3
|
* Bugfix: log_show_contents() did not close FILE pointerJoseph Hunkeler2024-09-181-0/+1
|
* Remove short circuit test codeJoseph Hunkeler2024-09-182-35/+1
| | | | * Remove exmain() and dead comments from main()
* Fix test status expectationJoseph Hunkeler2024-09-181-2/+1
| | | | * Fix child not returning result of execvp(). task->status is for program status, not fork() status.
* Fix format spacingJoseph Hunkeler2024-09-181-1/+1
|
* Implement mp_pool_show_summaryJoseph Hunkeler2024-09-181-3/+10
|
* Add pool summary and elapsed time outputJoseph Hunkeler2024-09-181-0/+48
| | | | | | | * Add get_task_duration() * Add get_pool_show_summary() * Add signaled_by member to MultiProcessingTask * Add time_data member to MultiProcessingTask for duration tracking
* Wait for signaled processes to hang upJoseph Hunkeler2024-09-181-1/+5
| | | | * Only initiate a kill if we have more than one process. The current process is already failed out, no need to terminate it again.
* Set task status to -1 by defaultJoseph Hunkeler2024-09-181-0/+3
|
* Add comments, remove dead codeJoseph Hunkeler2024-09-181-2/+24
|
* Break parent/child calls into static functionsJoseph Hunkeler2024-09-181-71/+86
|
* Split mp_task into to functionsJoseph Hunkeler2024-09-181-63/+74
|
* Guard against overrunJoseph Hunkeler2024-09-181-2/+6
|
* Add multiprocessing.h to core.hJoseph Hunkeler2024-09-182-2/+1
| | | | * Remove multiprocessing.h from other files
* Fix opt_flags assignment.Joseph Hunkeler2024-09-181-1/+3
|
* Fix sem_open initial stateJoseph Hunkeler2024-09-181-27/+14
| | | | | | * Move slot->gate assignment to mp_pool_task() * Remove mmap() to slot->gate. * Change type of ident and log_root variables for the sake of easy (fewer maps)
* Darwin: Remove mmap MAP_POPULATE flagJoseph Hunkeler2024-09-181-3/+3
|
* Darwin portability: Use sem_open and sem_close instead of sem_init and ↵Joseph Hunkeler2024-09-181-4/+7
| | | | sem_destroy
* Fixing headersJoseph Hunkeler2024-09-181-2/+0
|
* Implement multiprocessing pool(s)Joseph Hunkeler2024-09-184-63/+216
| | | | | * Adds --cpu-limit and --parallel-fail-fast arguments * Adds disable, parallel, and setup_script keys to [test] blocks
* Move guard_ macros to core_mem.hJoseph Hunkeler2024-09-182-0/+374
| | | | * Move core_mem.h below config.h
* Fixes incorrect reference to conda environment variable (#45)Joseph Hunkeler2024-09-181-1/+1
| | | | * Change CONDA_ENV_DEFAULT to CONDA_DEFAULT_ENV * Thanks, @GeorgeJCleary!
* Fix errant change of "cmd" string (#42)Joseph Hunkeler2024-09-161-2/+2
| | | * Was supposed to be pandoc_versioned_args
* Bug fix: CONDA_ENV_DEFAULT should be CONDA_DEFAULT_ENV (#40)Joseph Hunkeler2024-08-291-1/+1
|
* Pandoc improvements (#37)Joseph Hunkeler2024-08-281-12/+122
| | | | | | | | | | | | | | | * Tweak pandoc command and add a style sheet * Only search for platform sub-string when valid * Add get_pandoc_version * Add version checking and set options accordingly * Add support for globals.sysconfdir * Add missing brace * Remove options that are created dynamically
* System calls fixup (#38)Joseph Hunkeler2024-08-282-47/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix up shell() behavior * Removes dead code after execl() * Return the return value of execl() immediately * Output redirection fix: if f_stderr and redirect_stderr were both set, stderr was not redirected * Move the file handles into the child process * Bash now executes with --norc to avoid clobbering environment variables. This mimics /bin/sh behavior. * Fix test script environment * shell() already provides a temporary script. Not jumping into another sub-shell should preserve help preserve the top-level environment. * Try a different approach using declare -f * Revert "Try a different approach using declare -f" This reverts commit ea8ec855c3c6870d29c55afe3787afb2c05026a1. * Revert "Fix test script environment" This reverts commit 0a4efe972a78378eba5c5fbc6819c39b3cc6c9cb. * Change script permissions: 0700 * Force conda reactivation in test script * Switch to the usual environment reactivation method
* CI add pandoc (and bug fixes) (#35)Joseph Hunkeler2024-08-201-0/+1
| | | | | | | | | * Fix pandoc command regression * Add space between destination and input * Add pandoc dependency * Dump output of indexed files
* Update mission configs (#34)Joseph Hunkeler2024-08-201-2/+2
| | | | | | | | | | | * Clean package caches (saves about 1GB of layer-space) * Update installation instructions * Update layout * Use template variables where appropriate * Instructions now provide release notes in one place * Pandoc now uses --standalone
* Pypi existence check (#30)Joseph Hunkeler2024-08-203-9/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add python_package_exists() function * Poll pypi.org or compatible index to see if a package exists * Returns non-zero on success * Implements python_package_exists() in delivery_defer_packages() * Implements python_package_exists() in delivery_defer_packages() * Bugfix: Avoid incorrect package selection * With large package lists that contain multiple packages starting with the same strstr() would pick the first match * This adds a temporary name variable that strcmp() can check against. * Message correction: * Change "release" to "testing" in testing environment failure message * Amend message to fit the flow of the output * Disable outdated conda notifications * The latest version isn't always the greatest. Don't give the end-user any ideas. Just use whatever the installer provides... quietly * Rename python_package_exists to pip_index_provides * Document the function prototype * Add missing comments in micromamba structure * Ensure the temporary output file does not linger
* Allow the user to disable uploading build info objects to artifactory (#33)Joseph Hunkeler2024-08-173-6/+19
| | | | | * Add enable_artifactory_build_info to globals structure * Add --no-artifactory-build-info command line argument to status main() * Useful for diag/test runs when a fully traceable delivery isn't desired
* Implement TODO item (#32)Joseph Hunkeler2024-08-171-11/+25
| | | | * The array of packages now used to check the runtime environment instead of two separate scanning methods * Renamed tools array to: conda_minimum_viable_tools
* Add template convience functions (and bug fixes) (#29)Joseph Hunkeler2024-08-154-1/+55
| | | | | | | | | | | | | | | | | | | | | | | | | * Die when render variable is NULL * This was caught when a call to {{ func:xyz() }} lacked opening/closing parenthesis * Scripts in tests should only render template strings right before execution * Remove conda version pin * This avoids updating conda in the base environment * This also avoids pitfalls associated with newly released (always broken) versions of conda * Add two template convenience functions * get_junitxml_result_auto() * get_basetemp_result_auto() * Handle rendering error for test script * Rename functions * get_junitxml_result_auto -> junitxml_file * get_basetemp_result_auto -> basetemp_dir * Thank you, @zacharyburnett
* Support git+schema style strings in package list (#24)Joseph Hunkeler2024-08-151-16/+41
|
* indexer: Handle destination directories more gracefully (#28)Joseph Hunkeler2024-08-152-34/+127
| | | | | | | | | | | | | | | | | | | | * Handle destination directories more gracefully * The storage.output_dir is now the storage.root to avoid generating a sub-directory beneath the temporary working directory * The destination directory is created, then resolved by realpath to avoid generating the destination directory within the temporary working directory when a relative path is used as input * Replace the original file instead of using rename() * rename() cannot operate across file system boundaries * Dynamically allocate rootdirs array * Use realpath on positional arguments * Convert all markdown files to HTML * README.html files are considered entry points and are linked as index.html * Assign retcode after indexing
* Remove unused copytree() function (#27)Joseph Hunkeler2024-08-131-84/+0
| | | * Functionality was replaced by rsync long ago
* Move mkdirs() into utils module (#26)Joseph Hunkeler2024-08-132-27/+28
|
* More unit tests (and fixing bugs) (#23)Joseph Hunkeler2024-08-123-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add test_artifactory.c to suite * Add test_ini_getval_wrapper to ini.c * basic ini_getval_TYPE() conversion checks * bugfix: use strtof in INIVAL_TYPE_FLOAT case * Include stdio.h to pull in FILE structure * bugfix: free data at index during strlist_set operation * Previous behavior of setting the pointer to NULL introduced a subtle memory leak * Set strlist error when index it out of range * Import private delivery functions required for mock context creation * Remove static declaration * populate_delivery_cfg() * Add test_junitxml.c * Fix duplicate define value for JUNIT_RESULT_STATE_ERROR * Add static junit test data * Copy test data to current test directory
* Render during bootstrap (#21)Joseph Hunkeler2024-08-081-2/+2
|
* Return of the INI refactor (#20)Joseph Hunkeler2024-08-085-170/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Continuation of #19 * Fixes always_update_base_environment override bug added by PR #19 * Finish type hinting implementation * ini_getval_* functions now able to affect rendering mode using INI_READ_RAW and INI_READ_RENDER * Created pointers to deeply nested structures to increase readability * Output from ini_write() is more consistent, with fewer errant spaces and line feeds * Fixes accidental regression in #19. INIVAL_TYPE_STR_ARRAY never produced an array of pointers to char. This needs to be corrected in the future. i.e. It has always generated a new-line delimited string, not a StrList, or array. * Fix strlist_append_tokenize * original pointer is no longer modified * token strings are stripped of leading space before appending to the list * Use defines instead of magic numbers * delivery_init: add render_mode argument * test_conda: Add render mode * test_ini: Add render mode * Only add conda packages and wheels to the image * docker images are saved to the packages directory and will be consumed by the image if present. * Render template variables after bootstrapping the delivery
* Fix leaks in tpl functions (#18)Joseph Hunkeler2024-08-072-0/+4
| | | | | | | | * Free the function key string in tplfunc_frame during tpl_free() * Fix leaks in get_github_release_notes_auto_tplfunc_entrypoint(): * Free repository name * Free list of release notes
* Refactor ini getter and setter usage (#19)Joseph Hunkeler2024-08-073-232/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add handler for space-delimited lists * This needs attention, however. The INI writer has no way to know a list with spaces is a list; this happens in the value conversion functions. * Add type_hint member to INIData structure. At some point support with be added for all INIVAL_TYPE_* defines. Right now it's only used with arrays. * Zero out line buffer in ini_open after each iteration * Do not strip raw INI data. Let the conversion functions handle it * Add spaces to key value pairs in rendered INI output. * Add ini_getvar_TYPE() functions * These replace the functionality of static conv_TYPE() functions in delivery.c * Add support for missing types: U/CHAR, U/SHORT, STRLIST * ini_getval: expand template variables immediately before processing the output * Strip leading space to avoid issues with string comparisons against the result * ini_getval: Return copies, not the original. * This forces one to use ini_setval to replace/append values to the data array(s). It's safer this way. * fix_tox_conf(): Use ini_getval and ini_setval instead of modifying the original pointers directly * Tests: Free resources * Replace ini_getval(), ini_getval_required() and conv_*() usage * Now using ini_getval_TYPE() functions and ini_setval() * Remove unused helper functions and variables * download() returns long, not int * actions: update apt cache
* Fixes readout of packages in delivery (#16)Joseph Hunkeler2024-07-311-6/+26
| | | | | | | | | | * Fixes readout of packages in delivery * Now that the overview is displayed after deferred packages are filtered out of the main list, filtered packages were no longer displayed * This combines the main list and deferred list for both conda, and pip packages. * Read the main and deferred lists no matter what * Use new style package definition in test config
* Version in package name (#15)Joseph Hunkeler2024-07-304-23/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Compile test installation with debug symbols enabled * Fix typo in environment variable name * STASIS_GITHUB_TOKEN is supposed to be STASIS_GH_TOKEN * Add pattern matching mode selector to get_wheel_file() * Adds modes WHEEL_MATCH_EXACT and WHEEL_MATCH_ANY * test block version key is now optional * Now that *_packages lists define the package version through detection, because the end-result version cannot be guaranteed to be identical to the tag. * Find the just-compiled package matching the name and version in the package list. * If compiling master/main this can also match against post-commits (x.y.z.devN+hash) * Versions are extracted from the package name in the list, only if a matching test block exists. Otherwise the string is passed through to pip directly. * Changes indentation level of output * Do not replace @PIP_ARGUMENTS@ with an artifactory URL unless artifactory is enabled * Sequence change * Build requested packages before executing tests. A necessary evil if test blocks are no longer responsible for setting the version data * Show the delivery summary just before test execution, instead of at the start of the program * Terminate package name at version operator when a package is filtered for testing
* Check release (#14)Joseph Hunkeler2024-07-223-36/+100
| | | | | | | | | * Add jfrog_cli_rt_search() and JFRT_Search structure * Ensure authentication arguments are written before a subsystem task's arguments * When artifactory is enabled check if the release is already present. * When artifactory is disabled the check will be made against the local filesystem.
* Regression tests, envctl, and bug fixes (#13)Joseph Hunkeler2024-07-205-46/+187
| | | | | | | | | | | * Found too many bugs * Implements a regression test * Moves and completely refactors the envctl code * Allows the user to keep @STR@ values in output files (if you want full control over where external packages comes from post-build) * Fixes wording in a few places * envctl redaction is not implemented yet. The original redaction code hasn't been modified. * Use generic.ini instead of bare_minimum.ini