summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2021-05-09libalpm: check for duplicate filenamesmorganamilo3-0/+23
This partially fixes FS#67850 It fixes the case for -S'ing packages but not -U'ing urls. pacman -S a/a b/b resolving dependencies... error: packages a and b have the same filename: a-1-1-any.pkg.tar.zst error: failed to prepare transaction (duplicate filename) Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-09fix formatting mistakemorganamilo1-1/+1
Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-09libalpm: fix download rates becoming negativemorganamilo3-8/+62
When a download fails on one mirror a new download is started on the next mirror. This causes the ammount downloaded to reset, confusing the rate math and making it display a negative rate. This is further complicated by the fact that a download may be resumed from where it is or started over. To account for this we alert the frontend that the download was restarted. Pacman then starts the progress bar over. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-09libalpm: clone data on alpm_db_set_serversmorganamilo2-5/+10
Every alpm_option_set function clones the input so lets be more consistent. Also this fixes servers not being sanatized. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-09remove unused variable in meson.buildmorganamilo1-1/+0
Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-09Match initial download message with progress messagemorganamilo1-2/+2
When initially downloading a package, pacman will display a message like: wine-6.6-1-x86_64.pkg.tar.zst downloading... Then when the download progresses the message will change to: wine-6.6-1-x86_64.pkg.tar.zst So instead lets match the progress message so there's no sudden change. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-03libalpm: fix error when installing cached packages without signaturesmorganamilo1-1/+1
With a repo using "SigLevel = Optional" and a package already downloaded into the cache, download_files() returns 1 (via _alpm_download) to indicate no files were downloaded. This causes installation of the package to fail. Explicitly check that download_files() returns -1 (error) rather than non-zero. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-05-01call download progress callback for signaturesAndrew Gregory2-11/+19
pacman may not care about them, but other front-ends do. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01alpm_db_update: indicate if dbs were up to dateAndrew Gregory3-16/+24
Restore the prior indicator whether or not databases were up to date. 0 is used to indicate if *any* db was actually updated as callers are more likely to care about that than if *all* dbs were updated. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01fix downloading multiple urls with XferCommandAndrew Gregory3-1/+28
An extra break causes _alpm_download to break out of the payload loop as soon as it sees a successful url download with XferCommand. Fixes: FS#70608 - -U fails to download all files with XferCommand Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01pmserve: allow serving byte objects directlyAndrew Gregory1-0/+2
Useful for serving in-memory package files. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01pmpkg: add makepkg_bytesAndrew Gregory1-4/+10
Builds the package file in memory. Useful with the built-in server. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01add front-end provided context to callbacksAndrew Gregory9-52/+157
Our callbacks require front-ends to maintain state in order to provide reasonable output. The new download callback in particular requires much more complex state information to be saved. Without the ability to provide context, state must be saved globally, which may not be possible for all front-ends. Scripting language bindings in particular have no way to register per-handle callbacks without some form of context. Implements: FS#12721 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2021-05-01makepkg: document BUILDTOOL and BUILDTOOLVER environmental variablesEli Schwartz1-0/+8
These were added without documentation in commit a33cdac10bf1a68279ea1b9baa26aa09126f1ca4 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-23Prepare translations for next releaseAllan McRae130-29866/+37408
Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-23update NEWS for 5.2.2Andrew Gregory1-0/+30
Signed-off-by: Andrew Gregory <andrew@archlinux.org>
2021-04-23meson: make our symlinking script more portableEli Schwartz1-5/+3
We do not need the --relative case as it is dead code (we only ever link a filename without directory components). For the rest, GNU-specific ln -T does two things: - if the link name is an existing directory, ln fails instead of creating a surprising link inside the directory - if the link name is a symlink to a directory, ln treats it as a file, and due to -f, unlinks it The second case can be portably solved by ln -n, and both cases can be solved by doing what the original autotools Makefile did: rm -f && ln -s If the file exists, it will be removed. If it cannot be removed, it must be an ordinary directory, and the script aborts with an error. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-23Only enable total progress when downloads > 1morganamilo1-1/+1
Otherwise the total progress will just match the one package and be pretty useless.
2021-04-23Always enable TotalDownloadmorganamilo8-19/+4
Previously TotalDownload would switch the % download from per package to overall. Meaning you had a choice of which information to dispplay. Now with parallel downloads TotalDownload adds an extra progress bar. There's no reason to have this an off by default feature. Let's just make it always on. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-23pacman: fix total bar leakingmorganamilo1-2/+3
Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-23makepkg: add tool details to buildinfo to aid determining flagsLevente Polyak1-0/+2
If a makepkg consumer uses a build wrapper to override compiler flags this may lead to unreproducible packages as there is no way to know which exact files were used for tooling that tries to reproduce said package. Instead of vendoring the whole used makepkg.conf file into buildinfo, this patch adds two new properties to the .BUILDINFO file named BUILDTOOL and BUILDTOOLVER which by default are simply makepkg's own values. Downstream consumers may override those values: For example in Arch Linux the devtools package can set those values and allow reproducible builds tooling to fetch the appropriate makepkg.conf. Signed-off-by: Levente Polyak <anthraxx@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-21Add support for multiple 'Architecture' valuesDan McGee12-41/+127
This allows architecture to be multivalued. On x86-64 machines, this could be something like: Architecture = x86-64-v3 x86-64 We use the first specified Architecture value in mirrorlist $arch variable replacement, as this is backwards-compatible and sane. Original-patch-by: Dan McGee <dan@archlinux.org> Patch-updated-by: Allan McRae <allan@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-19pacman: stop eta timer breaking allignmentmorganamilo1-8/+4
When the download estimate is over an hour the format displayed changes from mm:ss to hh:mm:ss. This causes everything to be out of alignment due to the extra characters. So instead lets just go back to --:-- when the download => 100 minutes. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-19meson: make -uninstalled.pc correctEli Schwartz1-0/+1
This pkg-config file is automatically created in the meson-uninstalled/ directory of the build tree, and points to the built artifacts there. If this directory is added to PKG_CONFIG_PATH, it will be preferred over an installed copy. Making this work properly means it becomes trivially possible to build a private copy of libalpm, and then compile other projects using it rather than the system copy. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-19Fix build error when SIGPOLL is not availableMark Weiman1-2/+6
On Linux, SIGPOLL is a valid signal, but on systems like FreeBSD, it is not. This patch does a preprocessor check to see if SIGPOLL is available or not. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-19Add an include for signal.h when neededMark Weiman2-0/+2
On Linux, signal.h is not required to have access to the signal constants. On FreeBSD, this is not the case and requires signal.h to be explicitly included. This patch adds an include for signal.h in any source file that uses it. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-19meson.build: Fix detection of symbolsMark Weiman1-1/+3
This patch changes the behavior of meson to define configuration options *only* when the symbol checked is present. Currently, it defines all of them in config.h whether the symbol exists or not and the code that looks for it doesn't check the macro's value, but whether it's defined. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-08Update urls to not use www. for archlinux.orgJelle van der Waa5-5/+5
www.archlinux.org now redirects to archlinux.org. Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-08test: update mailing list urlJelle van der Waa1-1/+1
The Arch Linux mailing lists are these days served from the lists subdomain. Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-07makepkg: add PACMAN_AUTH configurable setting for sudo elevationEli Schwartz4-4/+26
If specified, this will be used no matter what. If not, then we check if sudo exists and use that, or else fall back on su. Implements FS#32621 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-07ensure tests are parsed as TAP since they are, in fact, TAPEli Schwartz2-0/+2
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-07makepkg: fix the use of spaces in the localname:: component of sourcesEli Schwartz1-1/+1
Broken via refactoring in commit aa6fe1160b39cd364a6595b7c9f56acb1cea3432 but for obvious reasons only one person in the last 9 years has ever actually tried to do this. Still, it's technically correct to allow it. Fixes FS#70254 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-07include retries and signatures in download countAndrew Gregory1-10/+8
Fixes: FS#69881 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-04-07skip servers with too many errorsAndrew Gregory3-4/+87
Keep track of errors from servers so that bad ones can be skipped once a threshold is reached. Key the error tracking off the hostname because hosts may serve multiple repos under different url's and errors are likely to be host-wide. Implements: FS#29293. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-27libmakepkg: fix detection of source file names for debug packagesAllan McRae1-1/+1
The current gcc build from git master give different output from readelf: gcc-10.2.0 $ readelf "hello" --debug-dump | grep hello <11> DW_AT_name : (indirect string, offset: 0xbfc): hello.cpp gcc-git $ readelf "hello" --debug-dump | grep hello <12> DW_AT_name : (indirect line string, offset: 0x0): hello.cpp This causes the awk statement extracting the file name to fail as it relied on the information being in the 8th field. Instead, extract the information from the final field. Fixes FS#70168 Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-25Remove "total download" callback in favor of generic event callbackAnatol Pomozov9-65/+25
Total download callback called right before packages start downloaded. But we already have an event for such event (ALPM_EVENT_PKG_RETRIEVE_START) and it is naturally to use the event to pass information about expected download size. Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-25remove sed command lookup and hardcoding in edit-script.shEli Schwartz2-3/+1
We should not need to hardcode the path to sed as we simply don't care. We don't check what kind of sed we found, and we're using the same one we initially found on the PATH, which is surely still on the PATH. At one point we did care to find the system copy of sed and hardcode it in makepkg, because we also passed non-portable -i options to it and makepkg needed to continue working on macOS even if some incompatible GNU sed got installed afterward, elsewhere on the PATH. But this was never relevant to the in-tree buildsystem script running sed. In commit 3a814ee6bca9ee24a868c0dc032b321048a53e08 we removed even that, so we don't need to look it up at all. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-06fix syntax error when running pacman-key --helpEli Schwartz1-1/+1
In commit 0f75ab3224141a5e8a4fe72b48b4639c83c6316b some unbalanced quotes were added by the committer while editing an error message. Fixes FS#69865 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-03Strip LTO symbols from distributed .a/.o filesAllan McRae1-0/+13
GCC's LTO implementation emits bytecodes into .o files it generates. These bytecodes are _not_ considered stable from one release of GCC to the next. There we need to strip the LTO bytecode out of any .o (and .a) file that gets installed into the package. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-03Add link time optimization support to makepkgAllan McRae5-2/+49
Add the 'lto' option to enable building with link time optimization by adding '-flto' to both CFLAGS and CXXFLAGS. The 'lto' option can be specificed both in the PKGBUILD or by setting the default in makepkg.conf. Signed-off-by: Allan McRae <allan@archlinux.org>
2021-03-01Update copyright yearAllan McRae181-187/+187
Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-24pacman-key: --refresh-keys queries WKD before keyserverMorten Linderud1-4/+29
With the recent outages of the keyservers there is a possibility of `--refresh-keys` failing to fetch new keys. A lot of current key distribution is done over WKD these days, and `pacman-key` has the ability to use it for `--recv-key`. There was a hope `gpg` would end up supporting WKD for the refresh functionality, but this seems to be limited to expired keys fetched through WKD. Since this functionality isn't yet available it makes sense to stuff it into `pacman-key`. The current implementation looks over all available keyids in the keyring, attempts to fetch over WKD and then fall backs to keyservers if no email has a valid WKD available. The downside of this approach is that it takes a bit longer to refresh the keys, but it should be more robust as the distribution should be providing their own WKDs. Co-authored-by: Jonas Witschel <diabonas@archlinux.org> Signed-off-by: Morten Linderud <morten@linderud.pw> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-24libmakepkg: Support zstd decompression for sourcesMorten Linderud2-1/+7
This enables us to extract files in the source array and ensures that we can decompress files if the uncompressed signature is served. Signed-off-by: Morten Linderud <morten@linderud.pw> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08Revert "ci: cache packages"Emil Velikov1-13/+3
This reverts commit e348ba38814c9cc7c1c9892d0451096234dc39ab. With the above commit we started caching the downloaded packages. Based on some testing and, it saves ~30s in the "step_script" stage while adding 18s for "Restoring/Saving cache". A net saving of ~10s. With earlier commit, we no longer use an ancient image which also pulls base-devel - thus the packages we have to download is minimal. Now comparing the uncached "step_script", vs the cached one - it is slowed by 2-3 seconds (1:01 -> 1:03), while we eliminate the 18s (and growing) caching. Tl:Dr: With up-to date image, package caching in not worth it - be that time, disk or network wise. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08ci: use official imageEmil Velikov1-2/+2
The archlinux/base have been deprecated. Since we depend on base-devel simply use archlinux:base-devel Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08makepkg: Don't double-layer distcc on ccacheMatti Niemenmaa1-1/+3
buildenv is set once for build() and a second time for package(). When using both distcc and ccache, this lead to CCACHE_PREFIX="distcc distcc" in package(), which breaks PKGBUILDs that execute the compiler in package() because distcc complains: distcc[383041] (main) CRITICAL! distcc seems to have invoked itself recursively! Avoid causing this error by only adding "distcc" to CCACHE_PREFIX if it's not yet there. Signed-off-by: Matti Niemenmaa <matti.niemenmaa+git@iki.fi> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08doxygen: fix missing parameter nameEli Schwartz1-1/+1
This was raising a warning during the build. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08support xattr when extracting packagesEli Schwartz1-0/+1
This permits storing the result of setcap during package() and applying the resulting capabilities to the installed program. Formerly, it was necessary to edit the binary after the fact (and thus dirty the file according to -Qkk) by using an install scriptlet. One problem that needs to be solved before this is useful, is preventing the strip routine from destroying xattrs. This is taken care of in the previous patch. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-02-08makepkg: don't let the strip routine mess up file attributesEli Schwartz1-2/+9
It updates the stripped/objcopied file by creating a temp file, chown/chmodding it, and replacing the original file. But upstream binutils has CVE-worthy issues with this if running strip as root, and some recent versions of strip don't play nicely with fakeroot. Also, this has always destroyed xattrs. :/ Sidestep the issue by telling strip/objcopy to write to a temporary file, and manually dump the contents of that back into the original binary. Since the original binary is intact, albeit with different contents, it retains its correct attributes in fakeroot. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
2021-01-21libalpm: fix total download reporting wrong totalmorganamilo1-9/+7
When a package does not need to be downloaded but a signature does, total download didn't count that towards the total. Signed-off-by: Allan McRae <allan@archlinux.org>