aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Switch to the usual environment reactivation methodsystem-calls-fixupJoseph Hunkeler2024-08-271-3/+2
|
* Force conda reactivation in test scriptJoseph Hunkeler2024-08-271-17/+6
|
* Change script permissions: 0700Joseph Hunkeler2024-08-271-2/+6
|
* Revert "Fix test script environment"Joseph Hunkeler2024-08-271-2/+16
| | | | This reverts commit 0a4efe972a78378eba5c5fbc6819c39b3cc6c9cb.
* Revert "Try a different approach using declare -f"Joseph Hunkeler2024-08-273-26/+22
| | | | This reverts commit ea8ec855c3c6870d29c55afe3787afb2c05026a1.
* Try a different approach using declare -fJoseph Hunkeler2024-08-273-22/+26
|
* Fix test script environmentJoseph Hunkeler2024-08-271-16/+2
| | | | * shell() already provides a temporary script. Not jumping into another sub-shell should preserve help preserve the top-level environment.
* Fix up shell() behaviorJoseph Hunkeler2024-08-271-26/+7
| | | | | | | | * 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.
* More tests (#36)Joseph Hunkeler2024-08-262-0/+133
| | | | | * Add test_copy.c * Add test_wheel.c
* CI add pandoc (and bug fixes) (#35)Joseph Hunkeler2024-08-203-1/+19
| | | | | | | | | * 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-209-103/+211
| | | | | | | | | | | * 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-204-11/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-174-6/+20
| | | | | * 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
* Undo changes made to Dockerfile.in (#31)Joseph Hunkeler2024-08-174-8/+4
| | | | * The packages directory is copied to the build/docker directory. * There is no need to separate these ADD calls.
* Add template convience functions (and bug fixes) (#29)Joseph Hunkeler2024-08-156-2/+57
| | | | | | | | | | | | | | | | | | | | | | | | | * 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-153-35/+128
| | | | | | | | | | | | | | | | | | | | * 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-132-102/+0
| | | * Functionality was replaced by rsync long ago
* Move mkdirs() into utils module (#26)Joseph Hunkeler2024-08-134-35/+36
|
* Add test_recipe.c (#25)Joseph Hunkeler2024-08-131-0/+100
| | | | | | | | | * Add test_recipe.c * Unit test for recipe functions * Add error cases * Add missing explicit members in testcase array definition
* More unit tests (and fixing bugs) (#23)Joseph Hunkeler2024-08-1211-5/+352
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Fix Dockerfile ADD (#22)Joseph Hunkeler2024-08-094-4/+8
| | | | * Destination directories were not created properly * This ensures $HOME/packages/{conda,wheels} are created in the docker developer home directory
* Render during bootstrap (#21)Joseph Hunkeler2024-08-081-2/+2
|
* Return of the INI refactor (#20)Joseph Hunkeler2024-08-0814-200/+228
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-076-244/+324
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 deprecated call to ENV in Dockerfile templates (#17)Joseph Hunkeler2024-07-314-4/+4
| | | * LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line XY)
* Fixes readout of packages in delivery (#16)Joseph Hunkeler2024-07-312-8/+27
| | | | | | | | | | * 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-306-25/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-224-38/+140
| | | | | | | | | * 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-2011-126/+500
| | | | | | | | | | | * 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
* Unit tests (#12)Joseph Hunkeler2024-07-159-8/+300
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Change return value of conda_setup_headless() from void to int * Replace exit() with return; * Return early if unpacking the micromamba binary fails * Exit program when pointer to INIFILE is NULL. * Validation function cannot otherwise proceed * The way the logic is set up I've decided to duplicate the installation code for now until I find time to revise it * The only meaningful difference between a "fresh start" and reusing the conda installation is a rmtree(). * Exposes STASIS_DOWNLOAD_TIMEOUT environment variable * Sets the connection timeout for libcurl to 30, instead of 300. * Export ini_section_create() function * Add download() tests * Add conda_*() tests * Add boilerplate source file for test framework * Fixes segfault reported by @GeorgeJCleary (#10) * The key is now an array index. When key is -1, the env variable is not defined. * Free resources only when continue on error is disabled (#11) * Fix segfault due to premature shutdown/cleanup * If conda_setup_headless cannot succeed, die * Set STASIS_SYSCONFDIR for tests
* Free resources only when continue on error is disabled (#11)Joseph Hunkeler2024-07-131-3/+5
| | | * Fix segfault due to premature shutdown/cleanup
* Fixes segfault reported by @GeorgeJCleary (#10)Joseph Hunkeler2024-07-101-12/+17
| | | * The key is now an array index. When key is -1, the env variable is not defined.
* Add github.c and github.h (#9)Joseph Hunkeler2024-07-0624-81/+593
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add github.c and github.h * Implements get_github_release_notes() * Remove unused variables * Fix circular dependency on tplfunc_frame * Remove predeclaration of tplfunc_frame * tpl_register_func accepts pointer to void instead * tpl_register_func sets maximum number of arguments * Frame is generated within tpl_register_func * Improve template function error handling and return/output management * Remove redundant extern statement * Include github.h and template_func_proto.h in core.h * Expose get_github_release_notes_tplfunc_entrypoint function to template engine * Add template_func_proto.c and template_func_proto.h * Replace free() with guard variant * Fix test_template::test_tpl_register_func * Fix tests * Fix tests * cmd should be at least PATH_MAX in size. * Magic number caused failure to install conda with a long installation path * Implement get_github_release_notes_auto function that bases release note data off test contexts * Disable overwriting releases by default * Add automatic release note generation function call to release_notes.md.in * Fix test_tpl_register_func() * Add enough space for tar command plus a path * Fix circular include * Github functions do not require access to core.h anyway * Add comments to union * Update README to mention template function availability * Add EnvCtl structure * Add runtime checks to avoid running all the way to the end only to be met with a configuration error. * Rename GITHUB to GH * Development docs pre-rough-draft
* Pass .ci_support/plat_arch_.yaml to conda-build (#8)Joseph Hunkeler2024-06-2410-112/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Pass .ci_support/plat_arch_.yaml to conda-build * Fixes a few outstanding leaks in delivery context * Move micromamba function out of stasis_indexer.c * Adjust code in the indexer to accommodate the move. The function now expects a MicromambaInfo structure as its first argument. * Add missing warning message * User is informed when pandoc is not available for HTML page generation * Initialize workdir_template string to zero * Add micromamba program to runtime PATH * Expose storage.tools_dir to template engine * Remove dead code * Fix wording in comment * Fix conda-forge builds * Pass their .ci_support configurations to conda-build in order to fully set up their build runtime environment * Add get_cpu_count() * Exposes STASIS_CPU_COUNT and CPU_COUNT to the runtime environment * Implements conda reactivation template string * {{ workaround.conda_reactivate }} * This is useful to call after installing any conda packages within a test.script * Fix conda runtime inside of test.script * This ensures conda and mamba are fully initialized. * Previous behavior only placed the commands on the PATH but didn't provide any shell macros (i.e. undefined behavior) * Document CPU_COUNT and workaround.conda_reactivate
* Replace missed reference to OhmycalJoseph Hunkeler2024-06-211-7/+7
|
* Rebrand OhMyCal (OMC) as STASIS (#7)Joseph Hunkeler2024-06-2157-833/+831
|
* Unit tests (#6)Joseph Hunkeler2024-06-2026-236/+2560
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Initial commit of unit tests [WIP] * Address shortcomings and bugs flushed out by unit tests * Enable unit testing in CI workflow * Enable verbose ctests * Handle lack of __FILE_NAME__ define * Only podman support `run --arch` argument * Skip docker build testing if CI system cannot pull an image * Remove errant call to puts() * Identify local repo user * Fix missing xmllint * NULL terminate arrays * Fix filename assignment in is_url mode * Break loop when expected lines are exhausted * strcmp_array expects NULL terminated array. Iterating by size in this case passes NULL to strcmp leading to an invalid read * Remove debug printf statements * Disable a few warnings for tests * Workaround for ctest junit xml truncation * Update checkout@v4 * Prevent false-positive result * Return zero on error * Fix strlist_remove function * Value argument can be constant * Fix test to match changes to startswith and endswith * Add test_ini.c * Fix redaction code to accept NULL pointers in array * And let the caller specify the length of the array of strings to redact. * Redactions now occur directly on authentication strings rather than their command line arguments * Fix BUILD_TESTING_DEBUG * Adds missing -D argument
* Remove newlineJoseph Hunkeler2024-05-211-1/+0
|
* Disable ASCII art banner when OMC_DUMB_TERMINAL is definedJoseph Hunkeler2024-05-211-13/+18
|
* Consolidate OMC_COLOR_ definesJoseph Hunkeler2024-05-212-7/+40
|
* Documentation updateJoseph Hunkeler2024-05-204-180/+300
|
* DocumentationJoseph Hunkeler2024-05-171-0/+30
|
* junitxml: add missing "error" typeJoseph Hunkeler2024-05-172-18/+72
|
* DocumentationJoseph Hunkeler2024-05-162-2/+59
|
* cmake: Use expected package name for libxml2 (LibXml2)Joseph Hunkeler2024-05-162-2/+2
|
* First pass at test result creation, and optional markdown->html conversionJoseph Hunkeler2024-05-166-10/+445
|
* Print directory structure as an ascii tree in verbose modeJoseph Hunkeler2024-05-161-0/+6
|