Gentoo Archives: gentoo-commits

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/nix/files/, sys-apps/nix/
Date: Sat, 07 Sep 2019 08:04:03
Message-Id: 1567843434.7557065fb0a8b03218d6a67eca3771b1ca7382fd.slyfox@gentoo
1 commit: 7557065fb0a8b03218d6a67eca3771b1ca7382fd
2 Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
3 AuthorDate: Sat Sep 7 07:51:52 2019 +0000
4 Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
5 CommitDate: Sat Sep 7 08:03:54 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7557065f
7
8 sys-apps/nix: bump up to 2.3
9
10 Package-Manager: Portage-2.3.75, Repoman-2.3.17
11 Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
12
13 sys-apps/nix/Manifest | 1 +
14 sys-apps/nix/files/nix-2.3-libpaths.patch | 48 +++++++++++
15 sys-apps/nix/nix-2.3.ebuild | 137 ++++++++++++++++++++++++++++++
16 3 files changed, 186 insertions(+)
17
18 diff --git a/sys-apps/nix/Manifest b/sys-apps/nix/Manifest
19 index 0cfbb3a69a1..5f5d2661d76 100644
20 --- a/sys-apps/nix/Manifest
21 +++ b/sys-apps/nix/Manifest
22 @@ -1,3 +1,4 @@
23 DIST nix-2.0.4.tar.xz 798352 BLAKE2B 0eaf7e507c87e5398ab5967e1f2064a5827038bb84208768aa1c1deadc95e44aab922846b728467e3355d1f25e740590c3d1748ec05dfeae6a171952fd941b77 SHA512 bce3b3a14269d42648a4935770260c36dab25fde3ebcfed730063d1d139603468e1c30acf15eb0cffff617fa36a6b39d4ae31ccfd9cba762f631ecac213fd09a
24 DIST nix-2.1.3.tar.xz 816396 BLAKE2B 9627626075841e7f389f5010418fe17569ae69ea07de5ff9a0557df864052cc8b48f2a4dbfe16dffc5dca3fb180f527199f367810899ae9474d00e8fcc00b760 SHA512 d22718d23d8960dac7d07739835caa8183f573b303d77613e77314d873c1fe6da1cb0ed78337fe3219a94675307b23132a62ae7d9aa5354707e58400f403524b
25 DIST nix-2.2.2.tar.xz 818408 BLAKE2B f13bf79596d6292bea9897805421b388241d670f2b36bc13882f610901a9bb9aa1dc977d7a7d9314139791f20be38ca85becf5c4e863b22fc0b39503a7a4a079 SHA512 c8b1d5f246c53f13cfa25cba0d0721a2628329c10f67fcccbd9a55279cf475170a105156559d0a62638822a8e972f85e8a58769444d51f94ba15e2af7f90e220
26 +DIST nix-2.3.tar.xz 844640 BLAKE2B 09707ae6c50c118375cdf2469a3ca19fbd940454bb80b7bccd74824deb3e370107acca99d7bf69bc93a168521a8d4928e3ac73fcfe1eeb53801d8e5f18574096 SHA512 45cb0c195f220a57cef80ad79def5e65b85588a2fc390f9b5e2ac4309698cc3065a23ee4f836913b642348afb1ee625072538bfedb5b26f9626344bbe784b425
27
28 diff --git a/sys-apps/nix/files/nix-2.3-libpaths.patch b/sys-apps/nix/files/nix-2.3-libpaths.patch
29 new file mode 100644
30 index 00000000000..42931e7e8d5
31 --- /dev/null
32 +++ b/sys-apps/nix/files/nix-2.3-libpaths.patch
33 @@ -0,0 +1,48 @@
34 +Workaround -L path order by passing local library paths before
35 +systemwide paths to avoid pulling libnixstore.so from system
36 +instead of locally-built library.
37 +
38 +The patch is not perfect because it passes LDFLAGS after local
39 +libraries but it makes nix link correctly.
40 +
41 +Bug: https://github.com/NixOS/nix/issues/3087
42 +--- a/mk/libraries.mk
43 ++++ b/mk/libraries.mk
44 +@@ -91,7 +91,7 @@ define build-library
45 + $(1)_PATH := $$(_d)/$$($(1)_NAME).$(SO_EXT)
46 +
47 + $$($(1)_PATH): $$($(1)_OBJS) $$(_libs) | $$(_d)/
48 +- $$(trace-ld) $(CXX) -o $$(abspath $$@) -shared $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$($(1)_LDFLAGS_UNINSTALLED)
49 ++ $$(trace-ld) $(CXX) -o $$(abspath $$@) -shared $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$($(1)_LDFLAGS_UNINSTALLED) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED)
50 +
51 + ifneq ($(OS), Darwin)
52 + $(1)_LDFLAGS_USE += -Wl,-rpath,$$(abspath $$(_d))
53 +@@ -105,7 +105,7 @@ define build-library
54 + $$(eval $$(call create-dir, $$($(1)_INSTALL_DIR)))
55 +
56 + $$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $(DESTDIR)$$($(1)_INSTALL_DIR)/
57 +- $$(trace-ld) $(CXX) -o $$@ -shared $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
58 ++ $$(trace-ld) $(CXX) -o $$@ -shared $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED)
59 +
60 + $(1)_LDFLAGS_USE_INSTALLED += -L$$(DESTDIR)$$($(1)_INSTALL_DIR) -l$$(patsubst lib%,%,$$(strip $$($(1)_NAME)))
61 + ifneq ($(OS), Darwin)
62 +--- a/mk/programs.mk
63 ++++ b/mk/programs.mk
64 +@@ -32,7 +32,7 @@ define build-program
65 + $$(eval $$(call create-dir, $$(_d)))
66 +
67 + $$($(1)_PATH): $$($(1)_OBJS) $$(_libs) | $$(_d)/
68 +- $$(trace-ld) $(CXX) -o $$@ $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE))
69 ++ $$(trace-ld) $(CXX) -o $$@ $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS)
70 +
71 + $(1)_INSTALL_DIR ?= $$(bindir)
72 + $(1)_INSTALL_PATH := $$($(1)_INSTALL_DIR)/$(1)
73 +@@ -46,7 +46,7 @@ define build-program
74 + _libs_final := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_INSTALL_PATH))
75 +
76 + $(DESTDIR)$$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $(DESTDIR)$$($(1)_INSTALL_DIR)/
77 +- $$(trace-ld) $(CXX) -o $$@ $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
78 ++ $$(trace-ld) $(CXX) -o $$@ $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED)) $$(LDFLAGS) $$(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS)
79 +
80 + else
81 +
82
83 diff --git a/sys-apps/nix/nix-2.3.ebuild b/sys-apps/nix/nix-2.3.ebuild
84 new file mode 100644
85 index 00000000000..448e5bbc051
86 --- /dev/null
87 +++ b/sys-apps/nix/nix-2.3.ebuild
88 @@ -0,0 +1,137 @@
89 +# Copyright 1999-2019 Gentoo Authors
90 +# Distributed under the terms of the GNU General Public License v2
91 +
92 +EAPI=7
93 +
94 +inherit autotools flag-o-matic readme.gentoo-r1 user
95 +
96 +DESCRIPTION="A purely functional package manager"
97 +HOMEPAGE="https://nixos.org/nix"
98 +
99 +SRC_URI="http://nixos.org/releases/${PN}/${P}/${P}.tar.xz"
100 +LICENSE="LGPL-2.1"
101 +SLOT="0"
102 +KEYWORDS="~amd64 ~x86"
103 +IUSE="+etc_profile +gc doc s3 +sodium"
104 +
105 +# sys-apps/busybox is needed for sandbox mount of /bin/sh
106 +RDEPEND="
107 + app-arch/brotli
108 + app-arch/bzip2
109 + app-arch/xz-utils
110 + sys-apps/busybox[static]
111 + dev-db/sqlite
112 + dev-libs/editline:0=
113 + dev-libs/openssl:0=
114 + >=dev-libs/boost-1.66:0=[context]
115 + net-misc/curl
116 + sys-libs/libseccomp
117 + sys-libs/zlib
118 + gc? ( dev-libs/boehm-gc[cxx] )
119 + doc? ( dev-libs/libxml2
120 + dev-libs/libxslt
121 + app-text/docbook-xsl-stylesheets
122 + )
123 + s3? ( dev-libs/aws-sdk-cpp )
124 + sodium? ( dev-libs/libsodium:0= )
125 +"
126 +DEPEND="${RDEPEND}
127 + >=sys-devel/bison-2.6
128 + >=sys-devel/flex-2.5.35
129 +"
130 +
131 +PATCHES=(
132 + "${FILESDIR}"/${PN}-2.0-user-path.patch
133 + "${FILESDIR}"/${PN}-2.3-libpaths.patch
134 +)
135 +
136 +DISABLE_AUTOFORMATTING=yes
137 +DOC_CONTENTS=" Quick start user guide on Gentoo:
138 +
139 +[as root] enable nix-daemon service:
140 + [systemd] # systemctl enable nix-daemon
141 + [openrc] # rc-update add nix-daemon
142 +[as a user] relogin to get environment and profile update
143 +[as a user] fetch nixpkgs update:
144 + \$ nix-channel --update
145 +[as a user] install nix packages:
146 + \$ nix-env -i mc
147 +[as a user] configure environment:
148 + Somewhere in .bash_profile you might want to set
149 + LOCALE_ARCHIVE=\$HOME/.nix-profile/lib/locale/locale-archive
150 + but please read https://github.com/NixOS/nixpkgs/issues/21820
151 +
152 +Next steps:
153 + nix package manager user manual: http://nixos.org/nix/manual/
154 +"
155 +
156 +pkg_setup() {
157 + enewgroup nixbld
158 + for i in {1..10}; do
159 + # we list 'nixbld' twice to
160 + # both assign a primary group for user
161 + # and add a user to /etc/group
162 + enewuser nixbld${i} -1 -1 /var/empty nixbld,nixbld
163 + done
164 +}
165 +
166 +src_prepare() {
167 + default
168 +
169 + eautoreconf
170 +}
171 +
172 +src_configure() {
173 + if ! use s3; then
174 + # Disable automagic depend: bug #670256
175 + export ac_cv_header_aws_s3_S3Client_h=no
176 + fi
177 + econf \
178 + --localstatedir="${EPREFIX}"/nix/var \
179 + $(use_enable gc) \
180 + --with-sandbox-shell=/bin/busybox
181 +}
182 +
183 +src_compile() {
184 + emake V=1
185 +}
186 +
187 +src_install() {
188 + # TODO: emacs highlighter
189 + default
190 +
191 + readme.gentoo_create_doc
192 +
193 + # here we use an eager variant of something that
194 + # is lazily done by nix-daemon and root nix-env
195 +
196 + # TODO: will need a tweak for prefix
197 + keepdir /nix/store
198 + fowners root:nixbld /nix/store
199 + fperms 1775 /nix/store
200 +
201 + keepdir /nix/var/nix/channel-cache
202 + fperms 0777 /nix/var/nix/channel-cache
203 +
204 + keepdir /nix/var/nix/profiles/per-user
205 + fperms 1777 /nix/var/nix/profiles/per-user
206 +
207 + # setup directories nix-daemon: /etc/profile.d/nix-daemon.sh
208 + keepdir /nix/var/nix/gcroots/per-user
209 + fperms 1777 /nix/var/nix/gcroots/per-user
210 +
211 + newinitd "${FILESDIR}"/nix-daemon.initd nix-daemon
212 +
213 + if ! use etc_profile; then
214 + rm "${ED}"/etc/profile.d/nix.sh || die
215 + rm "${ED}"/etc/profile.d/nix-daemon.sh || die
216 + fi
217 +}
218 +
219 +pkg_postinst() {
220 + if ! use etc_profile; then
221 + ewarn "${EROOT}/etc/profile.d/nix.sh was removed (due to USE=-etc_profile)."
222 + fi
223 +
224 + readme.gentoo_print_elog
225 +}