Gentoo Archives: gentoo-commits

From: William Hubbs <williamh@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/baselayout/
Date: Fri, 16 Apr 2021 16:26:31
Message-Id: 1618590351.b0ced97b588ac34ba5730ff812248e4e7f2af1cd.williamh@gentoo
1 commit: b0ced97b588ac34ba5730ff812248e4e7f2af1cd
2 Author: David Michael <fedora.dm0 <AT> gmail <DOT> com>
3 AuthorDate: Mon Mar 29 15:28:36 2021 +0000
4 Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
5 CommitDate: Fri Apr 16 16:25:51 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b0ced97b
7
8 sys-apps/baselayout: EAPI 7, fix RISC-V UsrMerge, sync live
9
10 This fixes the UsrMerge layout on RISC-V with its subdirectory
11 libdirs so that only lib and lib64 and links.
12
13 It also updates the test for bad shells to look in the target root.
14
15 Closes: https://bugs.gentoo.org/728674
16 Signed-off-by: David Michael <fedora.dm0 <AT> gmail.com>
17 Signed-off-by: William Hubbs <williamh <AT> gentoo.org>
18
19 ...layout-9999.ebuild => baselayout-2.7-r2.ebuild} | 74 ++++++++++++----------
20 sys-apps/baselayout/baselayout-9999.ebuild | 74 ++++++++++++----------
21 2 files changed, 82 insertions(+), 66 deletions(-)
22
23 diff --git a/sys-apps/baselayout/baselayout-9999.ebuild b/sys-apps/baselayout/baselayout-2.7-r2.ebuild
24 similarity index 82%
25 copy from sys-apps/baselayout/baselayout-9999.ebuild
26 copy to sys-apps/baselayout/baselayout-2.7-r2.ebuild
27 index ee4f298e840..a37d17f3b8d 100644
28 --- a/sys-apps/baselayout/baselayout-9999.ebuild
29 +++ b/sys-apps/baselayout/baselayout-2.7-r2.ebuild
30 @@ -1,9 +1,9 @@
31 -# Copyright 1999-2020 Gentoo Authors
32 +# Copyright 1999-2021 Gentoo Authors
33 # Distributed under the terms of the GNU General Public License v2
34
35 -EAPI=6
36 +EAPI=7
37
38 -inherit multilib versionator prefix
39 +inherit multilib prefix
40
41 DESCRIPTION="Filesystem baselayout and init scripts"
42 HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
43 @@ -29,10 +29,9 @@ multilib_layout() {
44 local prefix prefix_lst
45 def_libdir=$(get_abi_LIBDIR $DEFAULT_ABI)
46 libdirs=$(get_all_libdirs)
47 - : ${libdirs:=lib} # it isn't that we don't trust multilib.eclass...
48
49 if [[ -z "${SYMLINK_LIB}" || ${SYMLINK_LIB} = no ]] ; then
50 - prefix_lst=( "${EROOT}"{,usr/,usr/local/} )
51 + prefix_lst=( "${EROOT}"/{,usr/,usr/local/} )
52 for prefix in "${prefix_lst[@]}"; do
53 for libdir in ${libdirs}; do
54 dir="${prefix}${libdir}"
55 @@ -41,10 +40,12 @@ multilib_layout() {
56 die "${dir} exists but is not a directory"
57 continue
58 fi
59 - if ! use split-usr && [[ ${prefix} = ${EROOT} ]]; then
60 + if ! use split-usr && [[ ${prefix} = ${EROOT}/ ]]; then
61 + libdir="${libdir%%/*}"
62 + dir="${prefix}${libdir}"
63 einfo "symlinking ${dir} to usr/${libdir}"
64 ln -s usr/${libdir} ${dir} ||
65 - die " Unable to make ${dir} symlink"
66 + die "Unable to make ${dir} symlink"
67 else
68 einfo "creating directory ${dir}"
69 mkdir -p "${dir}" ||
70 @@ -88,9 +89,9 @@ multilib_layout() {
71 # setup symlinks and dirs where we expect them to be; do not migrate
72 # data ... just fall over in that case.
73 if use split-usr ; then
74 - prefix_lst=( "${EROOT}"{,usr/,usr/local/} )
75 + prefix_lst=( "${EROOT}"/{,usr/,usr/local/} )
76 else
77 - prefix_lst=( "${EROOT}"{usr/,usr/local/} )
78 + prefix_lst=( "${EROOT}"/{usr/,usr/local/} )
79 fi
80 for prefix in "${prefix_lst[@]}"; do
81 if [ "${SYMLINK_LIB}" = yes ] ; then
82 @@ -101,7 +102,7 @@ multilib_layout() {
83 elif [ -d "${prefix}lib" ] ; then
84 # "lib" is a dir, so need to convert to a symlink
85 ewarn "Converting ${prefix}lib from a dir to a symlink"
86 - rm -f "${prefix}lib"/.keep
87 + rm -f "${prefix}lib"/.keep || die
88 if rmdir "${prefix}lib" 2>/dev/null ; then
89 ln -s ${def_libdir} "${prefix}lib" || die
90 else
91 @@ -113,7 +114,7 @@ multilib_layout() {
92 mkdir -p "${prefix}" || die
93 rm -f "${prefix}lib" || die
94 ln -s ${def_libdir} "${prefix}lib" || die
95 - mkdir -p "${prefix}${def_libdir}" #423571
96 + mkdir -p "${prefix}${def_libdir}" || die #423571
97 fi
98 else
99 # we need to make sure "lib" is a dir
100 @@ -135,7 +136,7 @@ multilib_layout() {
101 *-gentoo-freebsd*) ;; # We want it the other way on fbsd.
102 i?86*|x86_64*|powerpc*|sparc*|s390*)
103 if [[ -d ${prefix}lib32 && ! -h ${prefix}lib32 ]] ; then
104 - rm -f "${prefix}lib32"/.keep
105 + rm -f "${prefix}lib32"/.keep || die
106 if ! rmdir "${prefix}lib32" 2>/dev/null ; then
107 ewarn "You need to merge ${prefix}lib32 into ${prefix}lib"
108 die "non-empty dir found where there should be none: ${prefix}lib32"
109 @@ -154,7 +155,7 @@ multilib_layout() {
110 for libdir in ${libdirs}; do
111 if [[ ! -e "${EROOT}${libdir}" ]]; then
112 ln -s usr/"${libdir}" "${EROOT}${libdir}" ||
113 - die " Unable to make ${EROOT}${libdir} symlink"
114 + die "Unable to make ${EROOT}${libdir} symlink"
115 fi
116 done
117 fi
118 @@ -164,7 +165,7 @@ pkg_preinst() {
119 # This is written in src_install (so it's in CONTENTS), but punt all
120 # pending updates to avoid user having to do etc-update (and make the
121 # pkg_postinst logic simpler).
122 - rm -f "${EROOT}"/etc/._cfg????_gentoo-release
123 + rm -f "${EROOT}"/etc/._cfg????_gentoo-release || die
124
125 # We need to install directories and maybe some dev nodes when building
126 # stages, but they cannot be in CONTENTS.
127 @@ -177,7 +178,7 @@ pkg_preinst() {
128 emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" layout-usrmerge
129 fi
130 fi
131 - rm -f "${ED}"/usr/share/${PN}/Makefile
132 + rm -f "${ED}"/usr/share/${PN}/Makefile || die
133 }
134
135 src_prepare() {
136 @@ -223,11 +224,16 @@ src_install() {
137 DESTDIR="${ED}" \
138 install
139 dodoc ChangeLog
140 - rm "${ED}"/etc/sysctl.d/README
141 + rm "${ED}"/etc/sysctl.d/README || die
142
143 # need the makefile in pkg_preinst
144 insinto /usr/share/${PN}
145 doins Makefile
146 +
147 + # This is needed for https://bugs.gentoo.org/732142
148 + dodir /usr/lib
149 + mv "${ED}"/etc/os-release "${ED}"/usr/lib || die
150 + dosym ../usr/lib/os-release /etc/os-release
151 }
152
153 pkg_postinst() {
154 @@ -239,23 +245,25 @@ pkg_postinst() {
155 # (3) accidentally packaging up personal files with quickpkg
156 # If they don't exist then we install them
157 for x in master.passwd passwd shadow group fstab ; do
158 - [ -e "${EROOT}etc/${x}" ] && continue
159 - [ -e "${EROOT}usr/share/baselayout/${x}" ] || continue
160 - cp -p "${EROOT}usr/share/baselayout/${x}" "${EROOT}"etc
161 + [ -e "${EROOT}/etc/${x}" ] && continue
162 + [ -e "${EROOT}/usr/share/baselayout/${x}" ] || continue
163 + cp -p "${EROOT}/usr/share/baselayout/${x}" "${EROOT}"/etc || die
164 done
165
166 # Force shadow permissions to not be world-readable #260993
167 for x in shadow ; do
168 - [ -e "${EROOT}etc/${x}" ] && chmod o-rwx "${EROOT}etc/${x}"
169 + if [ -e "${EROOT}/etc/${x}" ] ; then
170 + chmod o-rwx "${EROOT}/etc/${x}" || die
171 + fi
172 done
173
174 # Take care of the etc-update for the user
175 - if [ -e "${EROOT}"etc/._cfg0000_gentoo-release ] ; then
176 - mv "${EROOT}"etc/._cfg0000_gentoo-release "${EROOT}"etc/gentoo-release
177 + if [ -e "${EROOT}"/etc/._cfg0000_gentoo-release ] ; then
178 + mv "${EROOT}"/etc/._cfg0000_gentoo-release "${EROOT}"/etc/gentoo-release || die
179 fi
180
181 # whine about users that lack passwords #193541
182 - if [[ -e "${EROOT}"etc/shadow ]] ; then
183 + if [[ -e "${EROOT}"/etc/shadow ]] ; then
184 local bad_users=$(sed -n '/^[^:]*::/s|^\([^:]*\)::.*|\1|p' "${EROOT}"/etc/shadow)
185 if [[ -n ${bad_users} ]] ; then
186 echo
187 @@ -265,8 +273,8 @@ pkg_postinst() {
188 fi
189
190 # whine about users with invalid shells #215698
191 - if [[ -e "${EROOT}"etc/passwd ]] ; then
192 - local bad_shells=$(awk -F: 'system("test -e " $7) { print $1 " - " $7}' "${EROOT}"etc/passwd | sort)
193 + if [[ -e "${EROOT}"/etc/passwd ]] ; then
194 + local bad_shells=$(awk -F: 'system("test -e ${ROOT}" $7) { print $1 " - " $7}' "${EROOT}"/etc/passwd | sort)
195 if [[ -n ${bad_shells} ]] ; then
196 echo
197 ewarn "The following users have non-existent shells!"
198 @@ -276,35 +284,35 @@ pkg_postinst() {
199
200 # https://bugs.gentoo.org/361349
201 if use kernel_linux; then
202 - mkdir -p "${EROOT}"run
203 + mkdir -p "${EROOT}"/run || die
204
205 local found fstype mountpoint
206 while read -r _ mountpoint fstype _; do
207 [[ ${mountpoint} = /run ]] && [[ ${fstype} = tmpfs ]] && found=1
208 - done < "${ROOT}"proc/mounts
209 + done < "${ROOT}"/proc/mounts
210 [[ -z ${found} ]] &&
211 ewarn "You should reboot now to get /run mounted with tmpfs!"
212 fi
213
214 for x in ${REPLACING_VERSIONS}; do
215 - if ! version_is_at_least 2.4 ${x}; then
216 - ewarn "After updating ${EROOT}etc/profile, please run"
217 + if ver_test 2.4 -lt ${x}; then
218 + ewarn "After updating ${EROOT}/etc/profile, please run"
219 ewarn "env-update && . /etc/profile"
220 fi
221
222 - if ! version_is_at_least 2.6 ${x}; then
223 + if ver_test 2.6 -lt ${x}; then
224 ewarn "Please run env-update then log out and back in to"
225 ewarn "update your path."
226 fi
227 # clean up after 2.5 typos
228 # https://bugs.gentoo.org/show_bug.cgi?id=656380
229 if [[ ${x} == 2.5 ]]; then
230 - rm -fr "${EROOT}{,usr"
231 + rm -fr "${EROOT}/{,usr" || die
232 fi
233 done
234
235 - if [[ -e "${EROOT}"etc/env.d/00basic ]]; then
236 - ewarn "${EROOT}etc/env.d/00basic is now ${EROOT}etc/env.d/50baselayout"
237 + if [[ -e "${EROOT}"/etc/env.d/00basic ]]; then
238 + ewarn "${EROOT}/etc/env.d/00basic is now ${EROOT}/etc/env.d/50baselayout"
239 ewarn "Please migrate your changes."
240 fi
241 }
242
243 diff --git a/sys-apps/baselayout/baselayout-9999.ebuild b/sys-apps/baselayout/baselayout-9999.ebuild
244 index ee4f298e840..a37d17f3b8d 100644
245 --- a/sys-apps/baselayout/baselayout-9999.ebuild
246 +++ b/sys-apps/baselayout/baselayout-9999.ebuild
247 @@ -1,9 +1,9 @@
248 -# Copyright 1999-2020 Gentoo Authors
249 +# Copyright 1999-2021 Gentoo Authors
250 # Distributed under the terms of the GNU General Public License v2
251
252 -EAPI=6
253 +EAPI=7
254
255 -inherit multilib versionator prefix
256 +inherit multilib prefix
257
258 DESCRIPTION="Filesystem baselayout and init scripts"
259 HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
260 @@ -29,10 +29,9 @@ multilib_layout() {
261 local prefix prefix_lst
262 def_libdir=$(get_abi_LIBDIR $DEFAULT_ABI)
263 libdirs=$(get_all_libdirs)
264 - : ${libdirs:=lib} # it isn't that we don't trust multilib.eclass...
265
266 if [[ -z "${SYMLINK_LIB}" || ${SYMLINK_LIB} = no ]] ; then
267 - prefix_lst=( "${EROOT}"{,usr/,usr/local/} )
268 + prefix_lst=( "${EROOT}"/{,usr/,usr/local/} )
269 for prefix in "${prefix_lst[@]}"; do
270 for libdir in ${libdirs}; do
271 dir="${prefix}${libdir}"
272 @@ -41,10 +40,12 @@ multilib_layout() {
273 die "${dir} exists but is not a directory"
274 continue
275 fi
276 - if ! use split-usr && [[ ${prefix} = ${EROOT} ]]; then
277 + if ! use split-usr && [[ ${prefix} = ${EROOT}/ ]]; then
278 + libdir="${libdir%%/*}"
279 + dir="${prefix}${libdir}"
280 einfo "symlinking ${dir} to usr/${libdir}"
281 ln -s usr/${libdir} ${dir} ||
282 - die " Unable to make ${dir} symlink"
283 + die "Unable to make ${dir} symlink"
284 else
285 einfo "creating directory ${dir}"
286 mkdir -p "${dir}" ||
287 @@ -88,9 +89,9 @@ multilib_layout() {
288 # setup symlinks and dirs where we expect them to be; do not migrate
289 # data ... just fall over in that case.
290 if use split-usr ; then
291 - prefix_lst=( "${EROOT}"{,usr/,usr/local/} )
292 + prefix_lst=( "${EROOT}"/{,usr/,usr/local/} )
293 else
294 - prefix_lst=( "${EROOT}"{usr/,usr/local/} )
295 + prefix_lst=( "${EROOT}"/{usr/,usr/local/} )
296 fi
297 for prefix in "${prefix_lst[@]}"; do
298 if [ "${SYMLINK_LIB}" = yes ] ; then
299 @@ -101,7 +102,7 @@ multilib_layout() {
300 elif [ -d "${prefix}lib" ] ; then
301 # "lib" is a dir, so need to convert to a symlink
302 ewarn "Converting ${prefix}lib from a dir to a symlink"
303 - rm -f "${prefix}lib"/.keep
304 + rm -f "${prefix}lib"/.keep || die
305 if rmdir "${prefix}lib" 2>/dev/null ; then
306 ln -s ${def_libdir} "${prefix}lib" || die
307 else
308 @@ -113,7 +114,7 @@ multilib_layout() {
309 mkdir -p "${prefix}" || die
310 rm -f "${prefix}lib" || die
311 ln -s ${def_libdir} "${prefix}lib" || die
312 - mkdir -p "${prefix}${def_libdir}" #423571
313 + mkdir -p "${prefix}${def_libdir}" || die #423571
314 fi
315 else
316 # we need to make sure "lib" is a dir
317 @@ -135,7 +136,7 @@ multilib_layout() {
318 *-gentoo-freebsd*) ;; # We want it the other way on fbsd.
319 i?86*|x86_64*|powerpc*|sparc*|s390*)
320 if [[ -d ${prefix}lib32 && ! -h ${prefix}lib32 ]] ; then
321 - rm -f "${prefix}lib32"/.keep
322 + rm -f "${prefix}lib32"/.keep || die
323 if ! rmdir "${prefix}lib32" 2>/dev/null ; then
324 ewarn "You need to merge ${prefix}lib32 into ${prefix}lib"
325 die "non-empty dir found where there should be none: ${prefix}lib32"
326 @@ -154,7 +155,7 @@ multilib_layout() {
327 for libdir in ${libdirs}; do
328 if [[ ! -e "${EROOT}${libdir}" ]]; then
329 ln -s usr/"${libdir}" "${EROOT}${libdir}" ||
330 - die " Unable to make ${EROOT}${libdir} symlink"
331 + die "Unable to make ${EROOT}${libdir} symlink"
332 fi
333 done
334 fi
335 @@ -164,7 +165,7 @@ pkg_preinst() {
336 # This is written in src_install (so it's in CONTENTS), but punt all
337 # pending updates to avoid user having to do etc-update (and make the
338 # pkg_postinst logic simpler).
339 - rm -f "${EROOT}"/etc/._cfg????_gentoo-release
340 + rm -f "${EROOT}"/etc/._cfg????_gentoo-release || die
341
342 # We need to install directories and maybe some dev nodes when building
343 # stages, but they cannot be in CONTENTS.
344 @@ -177,7 +178,7 @@ pkg_preinst() {
345 emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" layout-usrmerge
346 fi
347 fi
348 - rm -f "${ED}"/usr/share/${PN}/Makefile
349 + rm -f "${ED}"/usr/share/${PN}/Makefile || die
350 }
351
352 src_prepare() {
353 @@ -223,11 +224,16 @@ src_install() {
354 DESTDIR="${ED}" \
355 install
356 dodoc ChangeLog
357 - rm "${ED}"/etc/sysctl.d/README
358 + rm "${ED}"/etc/sysctl.d/README || die
359
360 # need the makefile in pkg_preinst
361 insinto /usr/share/${PN}
362 doins Makefile
363 +
364 + # This is needed for https://bugs.gentoo.org/732142
365 + dodir /usr/lib
366 + mv "${ED}"/etc/os-release "${ED}"/usr/lib || die
367 + dosym ../usr/lib/os-release /etc/os-release
368 }
369
370 pkg_postinst() {
371 @@ -239,23 +245,25 @@ pkg_postinst() {
372 # (3) accidentally packaging up personal files with quickpkg
373 # If they don't exist then we install them
374 for x in master.passwd passwd shadow group fstab ; do
375 - [ -e "${EROOT}etc/${x}" ] && continue
376 - [ -e "${EROOT}usr/share/baselayout/${x}" ] || continue
377 - cp -p "${EROOT}usr/share/baselayout/${x}" "${EROOT}"etc
378 + [ -e "${EROOT}/etc/${x}" ] && continue
379 + [ -e "${EROOT}/usr/share/baselayout/${x}" ] || continue
380 + cp -p "${EROOT}/usr/share/baselayout/${x}" "${EROOT}"/etc || die
381 done
382
383 # Force shadow permissions to not be world-readable #260993
384 for x in shadow ; do
385 - [ -e "${EROOT}etc/${x}" ] && chmod o-rwx "${EROOT}etc/${x}"
386 + if [ -e "${EROOT}/etc/${x}" ] ; then
387 + chmod o-rwx "${EROOT}/etc/${x}" || die
388 + fi
389 done
390
391 # Take care of the etc-update for the user
392 - if [ -e "${EROOT}"etc/._cfg0000_gentoo-release ] ; then
393 - mv "${EROOT}"etc/._cfg0000_gentoo-release "${EROOT}"etc/gentoo-release
394 + if [ -e "${EROOT}"/etc/._cfg0000_gentoo-release ] ; then
395 + mv "${EROOT}"/etc/._cfg0000_gentoo-release "${EROOT}"/etc/gentoo-release || die
396 fi
397
398 # whine about users that lack passwords #193541
399 - if [[ -e "${EROOT}"etc/shadow ]] ; then
400 + if [[ -e "${EROOT}"/etc/shadow ]] ; then
401 local bad_users=$(sed -n '/^[^:]*::/s|^\([^:]*\)::.*|\1|p' "${EROOT}"/etc/shadow)
402 if [[ -n ${bad_users} ]] ; then
403 echo
404 @@ -265,8 +273,8 @@ pkg_postinst() {
405 fi
406
407 # whine about users with invalid shells #215698
408 - if [[ -e "${EROOT}"etc/passwd ]] ; then
409 - local bad_shells=$(awk -F: 'system("test -e " $7) { print $1 " - " $7}' "${EROOT}"etc/passwd | sort)
410 + if [[ -e "${EROOT}"/etc/passwd ]] ; then
411 + local bad_shells=$(awk -F: 'system("test -e ${ROOT}" $7) { print $1 " - " $7}' "${EROOT}"/etc/passwd | sort)
412 if [[ -n ${bad_shells} ]] ; then
413 echo
414 ewarn "The following users have non-existent shells!"
415 @@ -276,35 +284,35 @@ pkg_postinst() {
416
417 # https://bugs.gentoo.org/361349
418 if use kernel_linux; then
419 - mkdir -p "${EROOT}"run
420 + mkdir -p "${EROOT}"/run || die
421
422 local found fstype mountpoint
423 while read -r _ mountpoint fstype _; do
424 [[ ${mountpoint} = /run ]] && [[ ${fstype} = tmpfs ]] && found=1
425 - done < "${ROOT}"proc/mounts
426 + done < "${ROOT}"/proc/mounts
427 [[ -z ${found} ]] &&
428 ewarn "You should reboot now to get /run mounted with tmpfs!"
429 fi
430
431 for x in ${REPLACING_VERSIONS}; do
432 - if ! version_is_at_least 2.4 ${x}; then
433 - ewarn "After updating ${EROOT}etc/profile, please run"
434 + if ver_test 2.4 -lt ${x}; then
435 + ewarn "After updating ${EROOT}/etc/profile, please run"
436 ewarn "env-update && . /etc/profile"
437 fi
438
439 - if ! version_is_at_least 2.6 ${x}; then
440 + if ver_test 2.6 -lt ${x}; then
441 ewarn "Please run env-update then log out and back in to"
442 ewarn "update your path."
443 fi
444 # clean up after 2.5 typos
445 # https://bugs.gentoo.org/show_bug.cgi?id=656380
446 if [[ ${x} == 2.5 ]]; then
447 - rm -fr "${EROOT}{,usr"
448 + rm -fr "${EROOT}/{,usr" || die
449 fi
450 done
451
452 - if [[ -e "${EROOT}"etc/env.d/00basic ]]; then
453 - ewarn "${EROOT}etc/env.d/00basic is now ${EROOT}etc/env.d/50baselayout"
454 + if [[ -e "${EROOT}"/etc/env.d/00basic ]]; then
455 + ewarn "${EROOT}/etc/env.d/00basic is now ${EROOT}/etc/env.d/50baselayout"
456 ewarn "Please migrate your changes."
457 fi
458 }