summaryrefslogtreecommitdiff
path: root/src/apk.c
AgeCommit message (Collapse)AuthorFilesLines
2022-12-22apk: ignore SIGINT after applet is executedTimo Teräs1-0/+1
apk_db_close is not re-entrant, and would be executed by the signal handler. It makes sense to just ignore the signal after applet is complete as the clean up work has been started already. fixes #10840
2022-12-22apk: remove empty argumentsTimo Teräs1-0/+11
fixes #10848
2022-12-21apk, fetch: implement --no-check-certificateTimo Teräs1-0/+4
fixes #10650
2022-12-20apk: improve interactive mode handlingTimo Teräs1-0/+4
- implement and document --no-interactive - improve --interactive documentation - treat EOF as Y fixes #10860
2021-12-14applet: rework APK_DEFINE_APPLET to use constructor attributeAriadne Conill1-35/+3
this allows the applet registration to work in a portable way, without having to weird things with the linker. ref #10794 [TT: rebased for 2.12]
2021-07-23Disable progress bar on dumb terminals by defaultSören Tempel1-1/+6
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". [TT: backported to 2.12]
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-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
2016-04-19apk: don't exit with error code for -V and --print-archTimo Teräs1-0/+2
2016-02-16fetch: allow enabling --simulateTimo Teräs1-0/+3
2015-12-07db: add support for --no-cacheNatanael Copa1-0/+4
Implement --no-cache. The index is read directly from network and not cached. This is useful for docker, where you install a set of packages and directly after purge the cache. (see https://github.com/gliderlabs/docker-alpine/blob/1fc9e59d1689fc4eaf930ec66389fe58062fccec/builder/scripts/apk-install) fixes #4905
2015-03-10rework error handling for read streamsTimo Teräs1-2/+2
2014-12-08fix test modeTimo Teräs1-5/+7
2014-11-01move --simulate to commit options group and alias -s for itTimo Teräs1-5/+4
2014-10-08rework option parsing to have a group structureTimo Teräs1-156/+174
Add also a new 'commit' group that is the common options for all applets that can commit package changes.
2014-10-08url: use libfetch to retrieve http/https/ftp filesTimo Teräs1-0/+5
2014-10-06cache: delete more aggressively unneeded cached filesTimo Teräs1-2/+2
Also if --purge is specified delete all uninstalled packages. Fixes #2889