# Maintainer (AUR): lantw44 (at) gmail (dot) com # Modified from guix-git 20130119 PKGBUILD # parabola changes and rationale: # - Kept sysvinit service files as Parabola also supports OpenRC # - Disabled tests. We have: # FAIL: tests/build-utils.scm # FAIL: tests/challenge.scm # FAIL: tests/containers.scm # # The build also fails if you don't have enough RAM. Using -j2 with 4 GiB of # RAM made it fail the following error: # [ 69%] GUILEC gnu/packages/crates-io.go # mmap(PROT_NONE) failed # /bin/sh: line 7: 3174 Aborted (core dumped) \ # XDG_CACHE_HOME=/nowhere host=i686-pc-linux-gnu srcdir="." \ # ./pre-inst-env /usr/bin/guile -L "." -L "." --no-auto-compile -s \ # "."/build-aux/compile-all.scm [lot of .scm] # So to workaround that you can disable the -j by using: # MAKEFLAGS="" ./build_x86_64.sh pcr/guix # In order to verify the PGP signature of the source archive, you may need to # use this command to download the needed public key: # gpg --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 pkgname=guix pkgver=1.1.0 pkgrel=2 pkgdesc="A purely functional package manager for the GNU system" arch=('x86_64' 'i686' 'armv7h') url="https://www.gnu.org/software/guix/" license=('GPL3') options=('!strip') makedepends=( 'bash-completion' 'fish' 'guile-json3' 'guile-ssh>=0.10.2' 'help2man' 'po4a') depends=( 'guile>=2.2.4' 'guile-gcrypt' 'guile-git-lib' 'guile-sqlite3' 'sqlite>=3.6.19' 'bzip2' 'gnutls' 'libgcrypt' 'lzlib' 'zlib') optdepends=( 'bash-completion: to enable bash programmable completion' 'guile-json3: to import packages from cpan, gem, pypi' 'guile-ssh: to offload builds to other machines') source=( "https://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.sig}) install="${pkgname}.install" sha256sums=( '5c59106ff4ac497c6097686834b0c914109cf5e44eb6b94ebce818923043640f' '0416a733ba9b4410897d744a24388a43ba11bd8c427c7d08e649c8875119333d') validpgpkeys=('3CE464558A84FDC69DB40CFB090B11993D9AEBB5') build() { local bash_completion_dir="$(pkg-config --variable=completionsdir bash-completion)" local fish_completion_dir="$(pkg-config --variable=completionsdir fish)" cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --sbindir=/usr/bin --sysconfdir=/etc \ --libexecdir=/usr/lib --localstatedir=/var \ --with-bash-completion-dir="${bash_completion_dir}" \ --with-fish-completion-dir="${fish_completion_dir}" \ --disable-rpath \ ac_cv_guix_test_root="$(pwd)/t" make } # check() { # cd "${srcdir}/${pkgname}-${pkgver}" # # Check whether the current working directory is too long # local cwd_str="$(pwd)" # local cwd_len="${#cwd_str}" # # The test tests/gexp.scm fails when the path is longer than 29 bytes # # because of the length limit on the shebang line. Since we have increased # # the limit by 7 by renaming test-tmp to t with ac_cv_guix_test_root cache # # variable, the limit we use here is 36 bytes. # if [ "${cwd_len}" -gt 36 ]; then # error "${cwd_str} is too long." # error "The working directory cannot be longer than 36 bytes." # false # fi # # Make sure we have a valid shell accepting -c option # SHELL=/bin/sh make check # } package() { cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install # Remove unused upstart service files rm -r "${pkgdir}/usr/lib/upstart" # Rename systemd service files provided by upstream because they are not # usable without previous guix installation local system_unit_dir="${pkgdir}/usr/lib/systemd/system" local guix_daemon_default="${system_unit_dir}/guix-daemon.service" local guix_daemon_upstream="${system_unit_dir}/guix-daemon-latest.service" local guix_publish_default="${system_unit_dir}/guix-publish.service" local guix_publish_upstream="${system_unit_dir}/guix-publish-latest.service" mv "${guix_daemon_default}" "${guix_daemon_upstream}" mv "${guix_publish_default}" "${guix_publish_upstream}" # Generate default systemd service files from upstream ones by fixing paths local guix_profile_root="/var/guix/profiles/per-user/root/current-guix" sed -e "s|^ExecStart=${guix_profile_root}/bin|ExecStart=/usr/bin|" \ -e "s|^Description=\(.*\)|Description=\1 (default)|" \ -e "/^Environment=/d" "${guix_daemon_upstream}" \ > "${guix_daemon_default}" sed -e "s|^ExecStart=${guix_profile_root}/bin|ExecStart=/usr/bin|" \ -e "s|^Description=\(.*\)|Description=\1 (default)|" \ -e "/^Environment=/d" "${guix_publish_upstream}" \ > "${guix_publish_default}" # Make sure the above sed commands really work ! cmp "${guix_daemon_default}" "${guix_daemon_upstream}" ! cmp "${guix_publish_default}" "${guix_publish_upstream}" # Edit the description of upstream systemd service files sed -i "s|^Description=\(.*\)|Description=\1 (upstream)|" \ "${guix_daemon_upstream}" "${guix_publish_upstream}" # The default makepkg strip option cannot be used here because binaries # installed in /usr/share must not be stripped. # To keep user-defined 'strip' and 'debug' options useful, we still # depend on 'tidy_strip' function provided by makepkg to do the stripping # work. To make the function useful, we have to temporarily remove the # '!strip' option from 'options' array. However, assignments to 'options' # cause mksrcinfo to insert wrong lines to .SRCINFO, so they have to be # put in eval. eval 'options=()' cd "${pkgdir}/usr/bin" tidy_strip eval 'options=("!strip")' }