Bug 168046 - sys-* ebuilds abusing ROOT
Bug#: 168046 Product:  Gentoo Linux Version: unspecified Platform: All
OS/Version: Linux Status: NEW Severity: normal Priority: P2
Resolution:  Assigned To: qa@gentoo.org Reported By: ciaran.mccreesh@googlemail.com
Component: Applications
URL: 
Summary: sys-* ebuilds abusing ROOT
Keywords:  
Status Whiteboard: 
Opened: 2007-02-22 21:57 0000
Description:   Opened: 2007-02-22 21:57 0000
Some notes on ROOT:

* The idea behind ROOT is that one can build a system with ROOT=/somewhere and
then chroot into it or tar up /somewhere as a system image. It is not designed
to allow the user to run /somewhere/usr/bin/foo.

* ROOT can't be used correctly in src_*, since ROOT might be different when
merging a binary package. For example, a binary package might be built with
ROOT=/ and then installed onto a system using ROOT=/somewhere.

* ROOT isn't used for library dependencies. When building, libraries, headers
etc. on / have to be used. Cross-compiling etc is done by configuring the
toolchain correctly, not by hacking ebuilds in a way that breaks binary
packages.

Summary of all mentioned herds:
  Java base-system bsd cluster cron embedded gentopia hppa no-herd toolchain

Summary of all mentioned maintainers:
  <cardoe@gentoo.org>
  <gmsoft@gentoo.org>
  <johnm@gentoo.org>
  <solar@gentoo.org>
  <tantive@gentoo.org>
  <vapier@gentoo.org>
  Saleem Abdulrasool <compnerd@gentoo.org>
  Stefan Briesenick <sbriesen@gentoo.org>
  Thilo Bangert <bangert@gentoo.org>

------- Comment #1 From Ciaran McCreesh 2007-02-22 21:58:02 0000 -------
QA checks for package directory /sys-apps/baselayout:
/sys-apps/baselayout/baselayout-1.13.0_alpha10-r2.ebuild: root:
  src_install 153: if has_multilib_profile && [[ -d ${ROOT}lib32 || -d
${ROOT}lib32 ]] && ! hasq lib32 ${libdirs}; then
  src_install 163: # Remove the installed runlevels, as we don't know about
$ROOT yet
/sys-apps/baselayout/baselayout-1.13.0_alpha11-r1.ebuild: root:
  src_install 148: if has_multilib_profile && [[ -d ${ROOT}lib32 || -d
${ROOT}lib32 ]] && ! hasq lib32 ${libdirs}; then
  src_install 158: # Remove the installed runlevels, as we don't know about
$ROOT yet
/sys-apps/baselayout/baselayout-1.13.0_alpha11-r2.ebuild: root:
  src_install 149: if has_multilib_profile && [[ -d ${ROOT}lib32 || -d
${ROOT}lib32 ]] && ! hasq lib32 ${libdirs}; then
  src_install 159: # Remove the installed runlevels, as we don't know about
$ROOT yet
/sys-apps/baselayout/baselayout-1.13.0_alpha12.ebuild: root:
  src_install 145: if has_multilib_profile && [[ -d ${ROOT}lib32 || -d
${ROOT}lib32 ]] && ! hasq lib32 ${libdirs}; then
  src_install 155: # Remove the installed runlevels, as we don't know about
$ROOT yet
herds: base-system

QA checks for package directory /sys-apps/baselayout-lite:
/sys-apps/baselayout-lite/baselayout-lite-1.0_pre1.ebuild: root:
  src_install 26: [ "${ROOT}" = "/" ] && rm -rf ${D}/proc
  src_install 27: [ "${ROOT}" = "" ] && rm -rf ${D}/proc
herds: embedded

QA checks for package directory /sys-apps/busybox:
/sys-apps/busybox/busybox-1.2.2.1.ebuild: root:
  src_unpack 117: for root in "${PORTAGE_CONFIGROOT}" "${ROOT}" / ; do
/sys-apps/busybox/busybox-1.3.1.ebuild: root:
  src_unpack 133: for root in "${PORTAGE_CONFIGROOT}" "${ROOT}" / ; do
/sys-apps/busybox/busybox-1.4.1-r1.ebuild: root:
  src_unpack 132: for root in "${PORTAGE_CONFIGROOT}" "${ROOT}" / ; do
/sys-apps/busybox/busybox-1.4.1-r2.ebuild: root:
  src_unpack 133: for root in "${PORTAGE_CONFIGROOT}" "${ROOT}" / ; do
herds: embedded

QA checks for package directory /sys-apps/hal:
/sys-apps/hal/hal-0.5.7.1-r3.ebuild: root:
  src_compile 132: if [ -r "${ROOT}/usr/share/misc/pci.ids.gz" ] ; then
  src_compile 133: hwdata="${ROOT}/usr/share/misc/pci.ids.gz"
  src_compile 134: elif [ -r "${ROOT}/usr/share/misc/pci.ids" ] ; then
  src_compile 135: hwdata="${ROOT}/usr/share/misc/pci.ids"
/sys-apps/hal/hal-0.5.7.1-r4.ebuild: root:
  src_compile 139: if [ -r "${ROOT}/usr/share/misc/pci.ids.gz" ] ; then
  src_compile 140: hwdata="${ROOT}/usr/share/misc/pci.ids.gz"
  src_compile 141: elif [ -r "${ROOT}/usr/share/misc/pci.ids" ] ; then
  src_compile 142: hwdata="${ROOT}/usr/share/misc/pci.ids"
herds: gentopia
maintainer: <cardoe@gentoo.org>

QA checks for package directory /sys-apps/netboot-base:
/sys-apps/netboot-base/netboot-base-20041007.ebuild: root:
  src_install 31: [[ ${ROOT} = "/" ]] && die "refusing to install to /"
herds: base-system
maintainer: <gmsoft@gentoo.org>
maintainer: <vapier@gentoo.org>

QA checks for package directory /sys-apps/pcfclock:
/sys-apps/pcfclock/pcfclock-0.44-r2.ebuild: root:
  src_install 48: if [ -e ${ROOT}dev/.udev ]; then
/sys-apps/pcfclock/pcfclock-0.44-r3.ebuild: root:
  src_install 49: if [ -e ${ROOT}dev/.udev ]; then
herds: no-herd
maintainer: Stefan Briesenick <sbriesen@gentoo.org>

QA checks for package directory /sys-apps/ucspi-proxy:
/sys-apps/ucspi-proxy/ucspi-proxy-0.96.ebuild: root:
  src_compile 22: echo "${ROOT}/usr/include/bglibs/" > conf-bgincs
  src_compile 23: echo "${ROOT}/usr/lib/bglibs/" > conf-bglibs
herds: base-system
maintainer: Thilo Bangert <bangert@gentoo.org>

QA checks for package directory /sys-apps/ucspi-unix:
/sys-apps/ucspi-unix/ucspi-unix-0.36-r1.ebuild: root:
  src_compile 25: echo "$(tc-getCC) ${CFLAGS} -I${ROOT}/usr/lib/bglibs/include"
> conf-cc
  src_compile 26: echo "$(tc-getCC) -s -L${ROOT}/usr/lib/bglibs/lib" > conf-ld
/sys-apps/ucspi-unix/ucspi-unix-0.36-r2.ebuild: root:
  src_compile 26: echo "$(tc-getCC) ${CFLAGS} -I${ROOT}/usr/lib/bglibs/include
${PEERCRED}" > conf-cc
  src_compile 27: echo "$(tc-getCC) ${LDFLAGS} -L${ROOT}/usr/lib/bglibs/lib" >
conf-ld
herds: base-system
maintainer: Thilo Bangert <bangert@gentoo.org>

QA checks for package directory /sys-cluster/torque:
/sys-cluster/torque/torque-2.1.6.ebuild: root:
  src_install 120: if [[ -f "${ROOT}etc/pbs_environment" ]]; then
  src_install 121: cp "${ROOT}etc/pbs_environment" "${D}"/etc/pbs_environment
  src_install 126: if [ -f "${ROOT}var/spool/PBS/server_name" ]; then
  src_install 127: cp "${ROOT}var/spool/PBS/server_name"
"${D}/var/spool/PBS/server_name"
herds: cluster

QA checks for package directory /sys-devel/binutils-hppa64:
/sys-devel/binutils-hppa64/binutils-hppa64-2.16.1.ebuild: root:
  src_compile 87: emake tooldir="${ROOT}/usr/bin" \
herds: hppa

QA checks for package directory /sys-devel/gcc:
/sys-devel/gcc/gcc-3.3.2-r7.ebuild: root:
  src_install 495: [ -f "${ROOT}/etc/env.d/99glibc_ssp" ]
/sys-devel/gcc/gcc-3.4.1-r3.ebuild: root:
  src_install 734: [ -f "${ROOT}/etc/env.d/99glibc_ssp" ]
herds: toolchain

QA checks for package directory /sys-devel/gcc-compat:
/sys-devel/gcc-compat/gcc-compat-1.4.ebuild: root:
  src_install 27: cd $ROOT || die "Failed to chdir to root: $ROOT"
herds: base-system

------- Comment #2 From Ciaran McCreesh 2007-02-22 21:58:18 0000 -------
QA checks for package directory /sys-devel/gettext:
/sys-devel/gettext/gettext-0.14.1-r1.ebuild: root:
  src_install 66: if [ -e "${ROOT}"/usr/$(get_libdir)/libintl.so.2 ] ; then
  src_install 67: cp -pPR ${ROOT}/usr/$(get_libdir)/libintl.so.2*
${D}/usr/$(get_libdir)/
/sys-devel/gettext/gettext-0.14.2.ebuild: root:
  src_install 78: if [ -e "${ROOT}"/usr/$(get_libdir)/libintl.so.2 ] ; then
  src_install 79: cp -pPR ${ROOT}/usr/$(get_libdir)/libintl.so.2*
${D}/usr/$(get_libdir)/
/sys-devel/gettext/gettext-0.14.4.ebuild: root:
  src_install 79: if [ -e "${ROOT}"/usr/$(get_libdir)/libintl.so.2 ] ; then
  src_install 80: cp -pPR ${ROOT}/usr/$(get_libdir)/libintl.so.2*
${D}/usr/$(get_libdir)/
/sys-devel/gettext/gettext-0.14.5.ebuild: root:
  src_install 86: if [ -e "${ROOT}"/usr/$(get_libdir)/libintl.so.2 ] ; then
  src_install 87: cp -pPR ${ROOT}/usr/$(get_libdir)/libintl.so.2*
${D}/usr/$(get_libdir)/
/sys-devel/gettext/gettext-0.14.6.ebuild: root:
  src_install 86: if [ -e "${ROOT}"/usr/$(get_libdir)/libintl.so.2 ] ; then
  src_install 87: cp -pPR ${ROOT}/usr/$(get_libdir)/libintl.so.2*
${D}/usr/$(get_libdir)/
/sys-devel/gettext/gettext-0.15-r1.ebuild: root:
  src_install 78: if [[ -e ${ROOT}/usr/$(get_libdir)/${libname} ]] ; then
  src_install 79: cp -pPR ${ROOT}/usr/$(get_libdir)/${libname}*
"${D}"/usr/$(get_libdir)/
  src_install 82: if [[ -e ${ROOT}/$(get_libdir)/${libname} ]] ; then
  src_install 84: cp -pPR ${ROOT}/$(get_libdir)/${libname}*
"${D}"/$(get_libdir)/
/sys-devel/gettext/gettext-0.15.ebuild: root:
  src_install 83: if [[ -e ${ROOT}/usr/$(get_libdir)/${libname} ]] ; then
  src_install 84: cp -pPR ${ROOT}/usr/$(get_libdir)/${libname}*
"${D}"/usr/$(get_libdir)/
  src_install 87: if [[ -e ${ROOT}/$(get_libdir)/${libname} ]] ; then
  src_install 89: cp -pPR ${ROOT}/$(get_libdir)/${libname}*
"${D}"/$(get_libdir)/
/sys-devel/gettext/gettext-0.16.1.ebuild: root:
  src_install 78: if [[ -e ${ROOT}/usr/$(get_libdir)/${libname} ]] ; then
  src_install 79: cp -pPR ${ROOT}/usr/$(get_libdir)/${libname}*
"${D}"/usr/$(get_libdir)/
  src_install 82: if [[ -e ${ROOT}/$(get_libdir)/${libname} ]] ; then
  src_install 84: cp -pPR ${ROOT}/$(get_libdir)/${libname}*
"${D}"/$(get_libdir)/
herds: base-system

QA checks for package directory /sys-fs/e2fsprogs:
/sys-fs/e2fsprogs/e2fsprogs-1.39-r1.ebuild: root:
  src_unpack 66: ln -s "${ROOT}"/usr/$(get_libdir)/libcom_err.a
lib/libcom_err.a
  src_unpack 67: ln -s "${ROOT}"/$(get_libdir)/libcom_err.so lib/libcom_err.so
  src_unpack 69: ln -s "${ROOT}"/usr/include/ss/ss_err.h lib/ss/
  src_unpack 70: ln -s "${ROOT}"/$(get_libdir)/libss.so lib/libss.so
/sys-fs/e2fsprogs/e2fsprogs-1.39.ebuild: root:
  src_unpack 62: ln -s "${ROOT}"/usr/$(get_libdir)/libcom_err.a
lib/libcom_err.a
  src_unpack 63: ln -s "${ROOT}"/$(get_libdir)/libcom_err.so lib/libcom_err.so
  src_unpack 65: ln -s "${ROOT}"/usr/include/ss/ss_err.h lib/ss/
  src_unpack 66: ln -s "${ROOT}"/$(get_libdir)/libss.so lib/libss.so
herds: base-system

QA checks for package directory /sys-fs/fuse4bsd:
/sys-fs/fuse4bsd/fuse4bsd-0.3.0.ebuild: root:
  src_unpack 26: cp "${ROOT}/usr/include/fuse/fuse_kernel.h" fuse_module/
herds: bsd

QA checks for package directory /sys-fs/jdiskreport-bin:
/sys-fs/jdiskreport-bin/jdiskreport-bin-1.2.2.ebuild: root:
  src_install 30: local INSTROOT=${ROOT}opt/${MY_PN}
/sys-fs/jdiskreport-bin/jdiskreport-bin-1.2.3.ebuild: root:
  src_install 30: local INSTROOT=${ROOT}opt/${MY_PN}
/sys-fs/jdiskreport-bin/jdiskreport-bin-1.2.5.ebuild: root:
  src_install 30: local INSTROOT=${ROOT}opt/${MY_PN}
herds: Java
maintainer: Saleem Abdulrasool <compnerd@gentoo.org>

QA checks for package directory /sys-fs/mtd:
/sys-fs/mtd/mtd-20040825.ebuild: root:
  src_compile 25: emake LINUXDIR=${ROOT}/usr/src/linux/ || die
/sys-fs/mtd/mtd-20050519.ebuild: root:
  src_compile 25: emake LINUXDIR=${ROOT}/usr/src/linux/ || die
herds: base-system
maintainer: <solar@gentoo.org>

QA checks for package directory /sys-fs/ocfs2-tools:
/sys-fs/ocfs2-tools/ocfs2-tools-1.2.1.ebuild: root:
  src_compile 28: econf --prefix=${ROOT} \
herds: cluster

QA checks for package directory /sys-fs/static-dev:
/sys-fs/static-dev/static-dev-0.1.ebuild: root:
  src_install 58: export PATH=${ROOT}/dev:/dev:${PATH}
herds: no-herd
maintainer: <johnm@gentoo.org>

QA checks for package directory /sys-fs/trustees:
/sys-fs/trustees/trustees-2.10.ebuild: root:
  src_compile 22: if [ ! -e
"${ROOT}/usr/src/linux/include/linux/trustee_struct.h" ] ; then
  src_compile 30: append-flags -I${ROOT}/usr/src/linux/include -include errno.h
herds: no-herd

QA checks for package directory /sys-libs/detect:
/sys-libs/detect/detect-0.9.72.ebuild: root:
  src_compile 30: econf --with-kernel-source="${ROOT}/usr" || die
herds: base-system

QA checks for package directory /sys-libs/glibc:
/sys-libs/glibc/glibc-2.3.2-r12.ebuild: root:
  src_compile 548: #                    && myconf="${myconf}
--with-headers=${ROOT}usr/include"
  src_compile 549: myconf="${myconf} --with-headers=${ROOT}usr/include"
  src_compile 551: # If kernel version and headers in ${ROOT}/usr/include are
ok,
  src_compile 554: -n "$(get_KHV "`KV_to_int ${MIN_KV}`"
"${ROOT}/usr/include")" ]
herds: toolchain

QA checks for package directory /sys-libs/uclibc:
/sys-libs/uclibc/uclibc-0.9.28-r1.ebuild: root:
  src_unpack 320: configfile=${ROOT}/etc/${PN}/${CTARGET}/${conf}.config
/sys-libs/uclibc/uclibc-0.9.28-r2.ebuild: root:
  src_unpack 320: configfile=${ROOT}/etc/${PN}/${CTARGET}/${conf}.config
/sys-libs/uclibc/uclibc-0.9.28.1.ebuild: root:
  src_unpack 321: configfile=${ROOT}/etc/${PN}/${CTARGET}/${conf}.config
/sys-libs/uclibc/uclibc-0.9.28.ebuild: root:
  src_unpack 320: configfile=${ROOT}/etc/${PN}/${CTARGET}/${conf}.config
herds: embedded
maintainer: <solar@gentoo.org>
maintainer: <vapier@gentoo.org>

QA checks for package directory /sys-power/apcupsd:
/sys-power/apcupsd/apcupsd-3.10.18-r2.ebuild: root:
  src_install 85: einfo "The configuration file
${ROOT}/etc/lighttpd/apcupsd.conf should"
/sys-power/apcupsd/apcupsd-3.12.2-r1.ebuild: root:
  src_install 88: einfo "The configuration file
${ROOT}/etc/lighttpd/apcupsd.conf should"
/sys-power/apcupsd/apcupsd-3.12.2.ebuild: root:
  src_install 88: einfo "The configuration file
${ROOT}/etc/lighttpd/apcupsd.conf should"
herds: base-system
maintainer: <tantive@gentoo.org>

QA checks for package directory /sys-process/bcron:
/sys-process/bcron/bcron-0.09.ebuild: root:
  src_compile 28: echo "${ROOT}/usr/include/bglibs" > conf-bgincs
  src_compile 29: echo "${ROOT}/usr/lib/bglibs" > conf-bglibs
herds: cron
maintainer: Thilo Bangert <bangert@gentoo.org>

(that's them all)

------- Comment #3 From SpanKY 2007-02-26 01:37:52 0000 -------
i'm really not worried about the old versions as they'll get trimmed in due
time:
 - gcc glibc gettext etc...

netboot is fixed in stable version already
gcc-compat is punted
stable gettext is fixed
busybox/uclibc will be fixed when moved to savedconfig.eclass

------- Comment #4 From Thilo Bangert 2007-02-26 21:22:02 0000 -------
sys-process/bcron
sys-apps/ucspi-proxy
sys-apps/ucspi-unix
fixed!

thanks.

------- Comment #5 From Petteri Räty 2007-02-26 21:22:30 0000 -------
I don't see anything java listed in this bug. Please add us bug if there is
something for us to fix.

------- Comment #6 From Vlastimil Babka (Caster) 2007-02-27 15:50:46 0000 -------
(In reply to comment #5)
> I don't see anything java listed in this bug. Please add us bug if there is
> something for us to fix.

sys-fs/jdiskreport-bin is in java herd

------- Comment #7 From Guy Martin 2007-02-27 19:41:44 0000 -------
Removed binutils-hppa64-2.16.1.

------- Comment #8 From Petteri Räty 2007-02-27 20:26:55 0000 -------
(In reply to comment #6)
> (In reply to comment #5)
> > I don't see anything java listed in this bug. Please add us bug if there is
> > something for us to fix.
> 
> sys-fs/jdiskreport-bin is in java herd
> 

Which is now fixed by switching to use your eclasses. I did not catch that one
before because the herd was written as Java not java as usual.

------- Comment #9 From Timothy Redaelli 2007-03-02 12:43:48 0000 -------
bsd fixed

------- Comment #10 From Thilo Bangert 2009-02-08 13:36:07 0000 -------
individual reports for:
pcfclock (bug #258119), static-dev (bug #258121), ocfs2-tools (bug #258122)

the ones still left to check:
baselayout, busybox, gcc, gettext, glibc and uclibc