sys-apps/systemd: rework symlinks for merged usr systems
authorMike Gilbert <floppym@gentoo.org>
Fri, 2 Jun 2017 20:16:11 +0000 (16:16 -0400)
committerMike Gilbert <floppym@gentoo.org>
Fri, 2 Jun 2017 20:17:49 +0000 (16:17 -0400)
Use absolute paths to avoid breaking symlinks across /usr.
Remove symlinks in pkg_preinst if they would cause a collision.

Package-Manager: Portage-2.3.6_p1, Repoman-2.3.2_p69

sys-apps/systemd/systemd-9999.ebuild

index beab35a74419ca5c09f97f28ac487f185476dbe7..098d5affbf172acb5cb0264dad5022866de4deb5 100644 (file)
@@ -301,9 +301,9 @@ multilib_src_install_all() {
 
        if use sysv-utils; then
                for app in halt poweroff reboot runlevel shutdown telinit; do
-                       dosym "..${ROOTPREFIX%/}/bin/systemctl" /sbin/${app}
+                       dosym "${EPREFIX}${ROOTPREFIX%/}/bin/systemctl" /sbin/${app}
                done
-               dosym "..${ROOTPREFIX%/}/lib/systemd/systemd" /sbin/init
+               dosym "${EPREFIX}${ROOTPREFIX%/}/lib/systemd/systemd" /sbin/init
        else
                # we just keep sysvinit tools, so no need for the mans
                rm "${ED%/}"/usr/share/man/man8/{halt,poweroff,reboot,runlevel,shutdown,telinit}.8 \
@@ -331,8 +331,8 @@ multilib_src_install_all() {
 
        if [[ ! -e "${ED%/}"/usr/lib/systemd/systemd ]]; then
                # Avoid breaking boot/reboot
-               dosym "../../..${ROOTPREFIX%/}/lib/systemd/systemd" /usr/lib/systemd/systemd
-               dosym "../../..${ROOTPREFIX%/}/lib/systemd/systemd-shutdown" /usr/lib/systemd/systemd-shutdown
+               dosym "${EPREFIX}${ROOTPREFIX%/}/lib/systemd/systemd" /usr/lib/systemd/systemd
+               dosym "${EPREFIX}${ROOTPREFIX%/}/lib/systemd/systemd-shutdown" /usr/lib/systemd/systemd-shutdown
        fi
 }
 
@@ -380,6 +380,19 @@ migrate_locale() {
        fi
 }
 
+pkg_preinst() {
+       # If /lib/systemd and /usr/lib/systemd are the same directory, remove the
+       # symlinks we created in src_install.
+       if [[ $(realpath "${EROOT%/}${ROOTPREFIX}/lib/systemd") == $(realpath "${EROOT%/}/usr/lib/systemd") ]]; then
+               if [[ -L ${ED%/}/usr/lib/systemd/systemd ]]; then
+                       rm "${ED%/}/usr/lib/systemd/systemd" || die
+               fi
+               if [[ -L ${ED%/}/usr/lib/systemd/systemd-shutdown ]]; then
+                       rm "${ED%/}/usr/lib/systemd/systemd-shutdown" || die
+               fi
+       fi
+}
+
 pkg_postinst() {
        newusergroup() {
                enewgroup "$1"