blob: cf004247aa5ed64ddd42c699ce9b1f9a58503911 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# 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")'
}
|