1. 29 Jul, 2022 2 commits
    • solo turn's avatar
      makepkg: Add GITFLAGS environmental variable to customise checkout · e017a597
      solo turn authored and Allan McRae's avatar Allan McRae committed
      The default flag used to clone a git repository when using makepkg
      is "--mirror". However, when working with huge repositories, the use
      of different flags during cloning can allow an faster checkout. For
      example, using "--filter=blob:none" allows for small checkouts, at
      the expense of requiring downloads during the build stage if anything
      but the HEAD commit is used for the build. In addition, this example
      would serve as a replacement for the often requested (but broken)
      addition of --depth=1.
      Add support for the environment variable GITFLAG to pass flags for
      the git clone command. Note that this overrides the default rather
      than adding to it in order to prevent incompatibilities.
    • Daan De Meyer's avatar
      Add --keyringdir meson option to configure the keyring directory · 79bd5121
      Daan De Meyer authored and Allan McRae's avatar Allan McRae committed
      On Debian, keyrings are stored in /usr/share/keyrings. To support
      this, let's add a new --keyringdir option that allows configuring
      the directory under datarootdir where the keyrings should be
      imported from. We default to 'pacman/keyrings' for backwards
  2. 28 Jul, 2022 3 commits
  3. 22 Jul, 2022 1 commit
    • Chris Down's avatar
      util: Flush cursor state to stdout before removing signal handler · ff7c6c8e
      Chris Down authored and Allan McRae's avatar Allan McRae committed
      It's possible that the cursor does not reappear after pressing ^C during
      shutdown. In my case, I noticed this when pressing ^C after getting
      results from `pacman -F` -- this can reasonably reliably be triggered by
      issuing a file query and pressing ^C shortly after results are shown.
      There are two reasons for this issue:
      1. The graceful SIGINT handler is removed at the start of cleanup(), but
         the window from entering cleanup() to reaching exit() is non trivial.
         The main offender is FREELIST(pm_targets), which on my T14s takes
         >0.1s to execute. This means that if you are unlucky enough to press
         ^C while there, the cursor isn't coming back, because we haven't
         issued any command to show the cursor again yet, and the userspace
         signal handler is already blown away.
      2. Moving console_cursor_show() to earlier in cleanup() only half solves
         the issue. While it's fine not to flush after _hiding_ the cursor,
         since it will at least make itself apparent before any other text
         reaches the screen, _showing_ the cursor must be followed by flushing
         stdout, because once the graceful SIGINT handler is gone, if you
         press ^C, no flush will be triggered (and thus there will be no
      This fixes the issue by always starting out by showing the cursor again
      at cleanup() time. This means that no matter where we get caught at ^C,
      we will not end up leaving the terminal without its beloved ensign.
      Signed-off-by: default avatarChris Down <chris@chrisdown.name>
      Signed-off-by: Allan McRae's avatarAllan McRae <allan@archlinux.org>
  4. 21 Jul, 2022 8 commits
  5. 25 Jun, 2022 4 commits
  6. 15 Jun, 2022 1 commit
    • Allan McRae's avatar
      Gitlab CI: Install glibc-debug valgrind test · d1e95c4e
      Allan McRae authored
      Currently our gitlab CI is failing due to valgrind breakage. With
      Arch stripping glibc, valgrind now requires debuginfod to be active.
      However the gitlab CI system combined without our testsuite does not
      retrieve these symbols, even when the appropriate environmental
      variable is set.
      Work around this by installing the glibc-debug package directly
      using a slight kludge...  All blame for this approach is assigned
      to foutrelis!
      Signed-off-by: Allan McRae's avatarAllan McRae <allan@archlinux.org>
  7. 31 May, 2022 1 commit
  8. 18 May, 2022 1 commit
  9. 11 May, 2022 1 commit
  10. 10 Mar, 2022 1 commit
    • Jonas Witschel's avatar
      makepkg: use bsdtar --no-read-sparse for archive creation if available · f5f9e0f4
      Jonas Witschel authored and Allan McRae's avatar Allan McRae committed
      bsdtar uses the "pax" TAR archive format by default, which has support for
      storing sparse file information in the archive. Unfortunately this is a source
      of unreproducibility because the sparse encoding is taken from the file system
      and different file systems handle sparse files differently: some file systems
      have no support for sparsely encoded files at all, and even file systems with
      sparse file support can report different file information for identical files
      due to differing implementations.
      As a real world example where this happens, consider the Arch Linux package
      "brotli-testdata 1.0.9-7", which contains a sparsely encoded all-zeros file
      "usr/share/brotli/testdata/zeros". Building this package on a btrfs file system
      yields a different package than building it on tmpfs or ext4 solely due to
      different sparse file information that gets recorded in the package tarball.
      To improve the reproducibility of archives containing sparsely encoded files,
      libarchive version 3.6.0 introduces a new --no-read-sparse option. This skips
      reading sparse file information from disk entirely and therefore stores files
      "expanded" in the archive, which is the only way to make them reliably
      reproducible across file systems.
      makepkg will use this option if libarchive is recent enough to support it,
      which is detected at build time.
      Signed-off-by: Allan McRae's avatarAllan McRae <allan@archlinux.org>
  11. 07 Mar, 2022 3 commits
  12. 06 Mar, 2022 14 commits