summaryrefslogtreecommitdiff
path: root/src/apk.c
AgeCommit message (Collapse)AuthorFilesLines
2021-12-29apk: add --preserve-env optionPaul Spooren1-0/+4
This options is useful for (post)install scripts to run with the same environment variables as apk is executed. [TT: minor stylistic changes] Signed-off-by: Paul Spooren <mail@aparcar.org>
2021-12-29apk: add --force-no-chroot optionPaul Spooren1-0/+4
[TT: reoder changes to alphabetically sorted locations] Signed-off-by: Paul Spooren <mail@aparcar.org>
2021-12-27make stderr line bufferedTimo Teräs1-0/+2
2021-12-23add option --no-logfileDaniel Golle1-0/+4
2021-12-14applet: rework APK_DEFINE_APPLET to use constructor attributeAriadne Conill1-1/+0
this allows the applet registration to work in a portable way, without having to weird things with the linker. ref #10794
2021-06-11add basic abstraction for cryptographic operationsTimo Teräs1-1/+1
- basic digesting and signing apis (subject still to fine tuning) - update digest code, and adb signing for the thin wrapping layer - old v1 package and database handling not updated - default mkpkg file hash to sha256 ref #10744
2021-05-31Disable progress bar on dumb terminals by defaultSören Tempel1-1/+4
The progress bar requires the terminal emulator to support ANSI escape sequences. Normally, TERM is set to dumb to indicate that the terminal emulator doesn't support any ANSI escape sequences. Attempting to use ANSI escape sequences on dumb terminals will lead to weird output. In order to make apk work by default, even on dumb terminals, this commit introduces an additional check which consults $TERM and disables the progress bar if it is set to "dumb".
2021-03-19Log to /var/log/apk.logDrew DeVault1-5/+8
This adds a log file at /var/log/apk.log. On each run, apk's version information and the current date & time are written to this file, followed by any normal apk output.
2021-01-27fix compilation without deprecated OpenSSL APIsRosen Penev1-25/+1
(De)initialization is deprecated under OpenSSL 1.0 and above. [TT: Some simplifications, and additional edits.] Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-01-11database: Propagate errors when loading an APKINDEXthibault.ferrante1-2/+3
In case of failure when loading an APKINDEX, no errors are propagated to the user which may uncorrectly interpret the current problem.
2020-10-09make apk_database optional for applets that don't need itTimo Teräs1-5/+11
The new v3 applets don't use it, and eventually all applets will use the new formats only. This prepares the code for this, and moves trust, id_cache, and root_fd to apk_ctx which is enough for v3 applets at this time. The generic code is made to not initialize apk_database if it's not needed.
2020-10-09rename apk_db_options to apk_ctx, rework loggingTimo Teräs1-121/+89
makes apk_verbosity non-global fixes #10682
2020-10-09make apk_flags non-global, make progress printing state non-globalTimo Teräs1-23/+31
ref #10682
2020-10-09make apk_force non-global, remove left-over apk_archTimo Teräs1-12/+12
ref #10682
2020-10-09db: convert repository list to a string arrayTimo Teräs1-15/+2
2020-10-09adb: introduce apk-tools database format, and few appletsTimo Teräs1-0/+2
This is a flat buffers inspired format that allows fast mmaped access to the data with low overhead, signature support and relatively good forward support.
2020-10-07various changes to make clang not give warningsTimo Teräs1-9/+11
2020-08-26fix --repository short option to be -X as beforeTimo Teräs1-1/+1
unintentional regression from commit edb45ae464 fixes #10707
2020-08-24enforce options definitions to bind the enum and the descriptorTimo Teräs1-88/+48
This uses some macro trickery to make sure that there's one-to-one mapping with the option index enum and the descriptor. The down side is that enum's are generated via #define's and editors might not pick them up for auto completion, but the benefits are more: it's no longer possible have mismatching enum value and descriptor index, and the amount of source code lines is less.
2020-05-19make the atom functions not use global stateTimo Teräs1-1/+0
This greatly helps with memory management on applications that may want to daemonize and open/close database several times. Also the lifetime and "owner" of memory for all data is now explicitly bound to owning struct apk_database, which might be helpful when writing language bindings. As side effect, the interned "atoms" are unique only within what apk_database, so comparing packages from different apk_database may not work as expected. Fixes #10697
2020-05-07use SPDX-License-Identifier in source filesTBK1-3/+1
2020-05-06rewrite option descriptors to be single stringTimo Teräs1-162/+212
This reduces the number of relocations on PIE binaries, and also reduces the executable size. Parsing of the options is slightly sped up as only the exact matching option group parser is called.
2020-05-06add script to autogenerate help from man pagesTimo Teräs1-62/+13
This creates main help like: -- usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...] Package installation and removal: add Add packages to WORLD and commit changes del Remove packages from WORLD and commit changes System maintenance: fix Check WORLD against the system and ensure consistency update Update repository indexes upgrade Install upgrades available from repositories cache Commands related to the management of an offline package cache Querying package information: info Give detailed information about packages or repositories list List packages matching a pattern or other criteria dot Generate graphviz graphs policy Show repository policy for packages Repository maintenance: index Create repository index file from packages fetch Download packages from global repositories to a local directory manifest Show checksums of package contents verify Verify package integrity and signature Miscellaneous: audit Audit directories for changes stats Show statistics about repositories and installations version Compare package versions or perform tests on version strings This apk has coffee making abilities. -- And applet specific help like: -- usage: apk add [<OPTIONS>...] PACKAGES... Description: apk add adds the requested packages to WORLD and installs (or upgrades) them if not already present, ensuring all dependencies are met. Options: --initdb Initialize a new package database -l, --latest Disables normal heuristics for choosing which repository to install a -u, --upgrade When adding packages which are already installed, upgrade them rather -t, --virtual NAME Instead of adding the specified packages to WORLD, create a new --no-chown Do not change file owner or group --
2020-02-04remove apk_time() as it is causing problems with shared objectsTimo Teräs1-6/+6
Instead, to make sure test mode produces same output, redefine time() for the test mode binary. Reverts parts of 0b82bcc53e60.
2020-01-26Update apk to make man pages sole source of truthDrew DeVault1-109/+40
Detailed docs have been removed from the apk binaries, in favor of git-style short summaries of each command.
2020-01-11istream, archive, db: convert db and tar function to use istreamTimo Teräs1-10/+2
2020-01-06io: remove unused size parameter from bstream closeTimo Teräs1-2/+2
2019-06-05print usage and exit with error on invalid argumentsTimo Teräs1-6/+3
Add also some testing to make sure help, long help and handling of invalid arguments works as expected. Based on pull request #19 originally by Laurent Arnoud (@spk).
2019-06-03use fixed system time in test mode to have fixed test outputTimo Teräs1-0/+9
fixes test suite regression from previous commit
2018-11-15Revert "move --simulate to global options"Timo Teräs1-2/+5
This reverts commit 358f703b76ece639e5d3634f677e0b345b1b9f89. The short option -s conflicts info --size and fetch --stdout. Revert this for now.
2018-11-02fix short option string to be nil terminatedTimo Teräs1-0/+1
2018-10-05apk: fix all_options array size off-by-oneTimo Teräs1-1/+1
merge_options() will write one more entry to the options table which is the end-of-table indicator. Allocate memory for it too. valgrind did not pick it up due to being in stack; changing alloca to malloc would make valgrind notice the issue too. Reported-by: Mobile Stream <info@mobile-stream.com>
2018-09-25move --simulate to global optionsTimo Teräs1-5/+2
there are several applets that support simulation but are not committing changes to database
2018-09-05apk: sanitize return valueTimo Teräs1-0/+2
Most applets return whatever apk_solver_commit() returns. It is the number of errors found (or negative for hard error). Sanitize the error value to not give false success exit code in the unlikely case of errors % 256 == 0. Reported-by: Max Justicz <max@justi.cz>
2018-02-20apk: in test mode, always exit 0 (so the test harness doesn't stop running ↵William Pitcock1-0/+5
tests)
2018-01-09apk: make --help --verbose actually work.William Pitcock1-1/+10
2018-01-09apk: properly error out if an unknown command is requestedWilliam Pitcock1-1/+5
2018-01-09apk: commit options help text: fix typo concerning diskless bootWilliam Pitcock1-1/+1
2018-01-09apk: usage: cleanup help text when no applet is selectedWilliam Pitcock1-12/+32
2018-01-09fix --update-cache help to reflect realityTimo Teräs1-1/+1
Internally the value is in seconds, but on command line it's in minutes.
2018-01-04increase libfetch connection pool limits slightlyTimo Teräs1-1/+1
2018-01-04enable automatic update of indexes controlled by --cache-max-ageTimo Teräs1-4/+12
This modifies apk cache for indexes to be automatically refreshed periodically without explicit 'update' or '--update-cache' usage. The default is to do if-modified-since request if the local copy is older than 4 hours. This age can be changed with --cache-max-age. Using --update-cache will change this age to 60 seconds to make sure the cached copy is relatively new. The small age is in order to try to avoid downloading indexes second time when apk-tools is upgraded and apk re-execs after self-upgrade. Accordingly using explicitly 'apk update' will now enforce --force-refresh and request the very latest index by requesting any potential http proxy to do refresh too.
2018-01-03split --force to several --force-[type] optionsTimo Teräs1-4/+32
This unloads --force as several of the things are really not wanted together. E.g. --force-refresh is a lot different from --force-broken-world and doing --force to get the other might introduce unwanted behaviour. --force is still kept for backwards compatibility and it enables most things --force was used for.
2018-01-03add new umbrella flag --initramfs-diskless-bootHenrik Riomar1-0/+6
This flag enables a group of options used during initramfs tmpfs initial install.
2018-01-03add new flag --no-commit-hooksHenrik Riomar1-0/+4
This flag skips running hook scripts This flag *must* be used during initramfs tmpfs initial install. The reason that this new flag is needed is that the hooks will currently always fail as musl and /bin/sh is missing at this stage on diskless.
2018-01-03apk, del: fix few memory leaksTimo Teräs1-1/+4
This fixes couple of valgrind reported leaks - though they are non-important since the leak happens on "exit" only and kernel frees it anyway.
2017-06-23io: make io vtables const struct, and add accessors for themTimo Teräs1-2/+2
This reduces function pointers in heap, and unifies how the io functions are called.
2017-04-28close database on SIGINTKaarle Ritvanen1-1/+9
cleans up procfs mount
2017-04-28db: separate init from openKaarle Ritvanen1-0/+2
2017-02-27db: allow overriding cache locationTimo Teräs1-0/+5