aboutsummaryrefslogtreecommitdiff
path: root/src/stasis_main.c
Commit message (Collapse)AuthorAgeFilesLines
* Refactor directory structureJoseph Hunkeler2024-10-141-794/+0
| | | | | * Move core library sources into src/lib/core * Move command-line programs into src/cli
* Note purpose behind removing the temporary environment fileJoseph Hunkeler2024-10-081-0/+1
|
* Do not free mission_base after installationJoseph Hunkeler2024-10-081-1/+0
| | | | * Because ctx.meta.based_on is replaced by a pointer to mission_base
* Not every base environment is a releaseJoseph Hunkeler2024-10-081-1/+1
|
* First pass at implementing dedicated default mission environment(s)Joseph Hunkeler2024-10-081-0/+48
|
* Use isempty to see if we're using based_onJoseph Hunkeler2024-10-041-2/+2
|
* Implement delivery_overylay_packages_from_env()Joseph Hunkeler2024-10-041-0/+7
|
* Fix release environment removal messageJoseph Hunkeler2024-10-041-4/+6
| | | | | * Fix testing environment removal message * Fix tool installation error message
* Rename argument --parallel-fail-fast to --fail-fastsplit-delivery-codeJoseph Hunkeler2024-10-021-3/+3
| | | | * All tasks are executed by the same machinery under the hood. So have them all react the same way.
* "Task started" is more accurate than "queued" when this is printedJoseph Hunkeler2024-10-021-1/+1
|
* Allow user to disable parallel mode (shortcut for --cpu-limit=1)Joseph Hunkeler2024-10-021-2/+10
|
* Allow user to define the time interval for "task is running" messageJoseph Hunkeler2024-10-021-0/+13
|
* Refactor structureJoseph Hunkeler2024-09-201-2/+2
| | | | * Break delivery.c into smaller components
* Remove short circuit test codeJoseph Hunkeler2024-09-181-7/+0
| | | | * Remove exmain() and dead comments from main()
* Implement multiprocessing pool(s)Joseph Hunkeler2024-09-181-1/+26
| | | | | * Adds --cpu-limit and --parallel-fail-fast arguments * Adds disable, parallel, and setup_script keys to [test] blocks
* Pypi existence check (#30)Joseph Hunkeler2024-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-171-3/+9
| | | | | * 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
* Add template convience functions (and bug fixes) (#29)Joseph Hunkeler2024-08-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Return of the INI refactor (#20)Joseph Hunkeler2024-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Version in package name (#15)Joseph Hunkeler2024-07-301-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-221-2/+3
| | | | | | | | | * 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-201-26/+49
| | | | | | | | | | | * 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
* 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-061-1/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Rebrand OhMyCal (OMC) as STASIS (#7)Joseph Hunkeler2024-06-211-0/+612