summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2020-10-03commit: rephrase the error messages more understandableTimo Teräs1-2/+2
fixes #10703
2020-10-01db: check cache only if some repositories are enabledTimo Teräs1-1/+1
2020-09-28Implement upgrade --prune to remove stale world dependenciesTimo Teräs1-6/+26
2020-08-29database: clarify the deprecation notice for checksum-less packagesAriadne Conill1-3/+7
Closes #10708.
2020-08-26fix --repository short option to be -X as beforeTimo Teräs1-1/+1
unintentional regression from commit edb45ae464 fixes #10707
2020-08-25build: make soname explicit and simplify and fix soname linkTimo Teräs1-18/+10
2020-08-24fix, simplify and document upgrade --ignoreTimo Teräs4-30/+17
2020-08-24solver: add more dbg_printfsOliver Smith1-19/+62
2020-08-24enforce options definitions to bind the enum and the descriptorTimo Teräs15-288/+175
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-07-30upgrade: allow for specified package upgradesAriadne Conill1-0/+22
Fixes #10667 and #10700
2020-05-27database: create additional device nodes when initializing root fsAriadne Conill1-0/+4
Some triggers and maintainer scripts depend on /dev/random, /dev/urandom, /dev/zero and /dev/console.
2020-05-19fix logic to not compile lua module when it was not askedFredrik Gustafsson1-1/+1
fixes 12fdf6fc "allow building without help..."
2020-05-19make the atom functions not use global stateTimo Teräs24-179/+185
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-19allow building without help when lua interpreter is not availableTimo Teräs2-6/+21
fixes #10696
2020-05-17define APK_DEFAULT_ARCH for riscv32 and riscv64 targetsAriadne Conill1-0/+4
2020-05-07fix apk_blob_pull_csum to always initialize apk_checksumTimo Teräs1-9/+6
Fixes #10686 to not use uninitialized value in the error paths.
2020-05-07use SPDX-License-Identifier in source filesTBK49-141/+65
2020-05-06index: add argument --no-warningsFredrik Gustafsson1-1/+11
When creating an index apk warns if a dependency is missing a provider. However when using a multi-arch repository, it's not an error that a certain architecture is missing a dependency because that dependency could be in an other architecture. Since apk index doesn't know about this, add an argument to disable that warning. Maintainer note: rebased for new option handling, and minor stylistic adjustments. Signed-off-by: Fredrik Gustafsson <fredrigu@axis.com>
2020-05-06rewrite option descriptors to be single stringTimo Teräs16-435/+563
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äs22-106/+379
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-04-28apk: do not manage file ownership as non-root or when asked soFredrik Gustafsson5-15/+34
If apk is run as a non-root user, it's not possible to chown files. Maintainers note: minor wording changes on commit log and man page. Signed-off-by: Fredrik Gustafsson <fredrigu@axis.com>
2020-04-01build: fix includedir in pkgconfig fileRasmus Thomsen2-3/+3
We want to include via <apk/$headerfile> and not via <$headerfile>, so we want to add an include statement for the dir the apk folder which contains the headers is contained in.
2020-04-01db: fix database reading without scripts or triggersTimo Teräs1-6/+10
Most notably this happens after blank database is initialized with --initdb, but can happen also in other conditions. The error checking changes modified behaviour if the file does not exist. Explicitly check for ENOENT and ignore it. But the behaviour is improved from earlier as now e.g. EPERM will be detected and reported correctly. Fixes #10679 Fixes: 6da3e8eb15 "istream, archive, db: convert db and tar function to use istream"
2020-03-23build: add apk.pc.inRasmus Thomsen1-0/+10
2020-03-21lower min-width to 25 columnsAntoine Fontaine1-1/+1
Some screen size are quite small. For example, the default phosh terminal is less than 50 character wide on Pinephone. This lowers the minimum loading bar size to 25 characters. For comparison, 25 character wide is just as wide as "apk add firefox linux-lts" without the quotes. Here's a bad picture to illustrate the result gitlab.alpine.org/uploads/48c20f746fbf685b62b6bd73585ecbf2/pinephone-phosh.png
2020-03-21fix glibc buildTBK1-0/+1
fixes #10677 src/apk_defines.h:152:15: error: unknown type name 'uint32_t' static inline uint32_t get_unaligned32(const void *ptr) ^~~~~~~~
2020-03-16build: enable building of development packageRasmus Thomsen1-39/+67
- always create .so and .a with the apk libary code - create .pc file - install headers and above mentioned files Maintainers edit: merged commits, cleaned up sed script logic, and few other minor fixes.
2020-02-21db: fix unaligned memory access in csum_hash()Timo Teräs3-11/+13
2020-02-17fix murmur3 hash unaligned memory accessTimo Teräs1-29/+39
- do not do unaligned accesses on non-x86 hardware - clean up the code a little bit
2020-02-14rename all iostream source to io_*.cTimo Teräs4-6/+7
2020-02-14rename all applets sources to app_*.cTimo Teräs19-21/+25
2020-02-14io: add stream copy helperTimo Teräs3-8/+37
2020-02-04defines: add typeof() as it's gcc built-inTimo Teräs1-0/+4
Related to MR !15
2020-02-04remove apk_time() as it is causing problems with shared objectsTimo Teräs6-17/+10
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 DeVault20-228/+107
Detailed docs have been removed from the apk binaries, in favor of git-style short summaries of each command.
2020-01-26add apk-manifest(8)Drew DeVault1-1/+2
2020-01-25don't use hardcoded checksum buffer sizesReid Rankin2-5/+8
2020-01-25document mysterious SHA-1 blob in database.cReid Rankin1-0/+2
2020-01-25don't ignore md parameter to apk_fileinfo_hash_xattr_array()Reid Rankin1-1/+1
2020-01-24db: additional clean up and hardening for apk extractionTimo Teräs1-15/+16
This enforces all scripts to be in the control block, and all data files to be in data block. Ignoring of dot files in root is added back: packages without any real files will ship one ".dummy" item in the data block to trigger processing and validation to work.
2020-01-24Harden signature verification processReid Rankin2-29/+32
This mostly boils down to making sure control_started and data_started are consistently used to gate actions, instead of relying whether on file names start with a '.'. None of the weaknesses this fixes are exploitable, but they might have become so after changes to seemingly-unrelated code, so it's good to clean them up.
2020-01-24Improve documentation of signature verification processReid Rankin1-7/+19
2020-01-24manifest: fix package file processingReid Rankin1-4/+7
This change ensures that apk_sign_ctx_process_file() and apk_sign_ctx_parse_pkginfo_line() are called during archive processing, allowing discovery of signatures and the data section checksum. Fixes a bug uncovered by commit f123d77e.
2020-01-11io: use min() instead of MIN()Timo Teräs1-5/+4
2020-01-11archive: make apk_tar_parse check and close input streamTimo Teräs5-54/+26
simplifies other code quite a bit
2020-01-11io: convert bstream mmap to istream, remove the now obsolete bstream machineryTimo Teräs2-244/+65
2020-01-11convert remaining locations to use istream instead of bstreamTimo Teräs8-156/+161
2020-01-11istream, archive, db: convert db and tar function to use istreamTimo Teräs8-156/+224
2020-01-11istream: add buffering capabilityTimo Teräs5-103/+109
Convert all implementations to do buffering. This is in preparation to remove bstream interface as redundant. istream_read() will return full reads unless end-of-file. The backends can return short reads to optimize buffering or due to other reasons like boundary change for gz.
2020-01-11archive: remove support for old packages without xattr checksumsTimo Teräs6-52/+14