[systemd] install everything in /usr

Kay Sievers kay at fedoraproject.org
Wed Jan 25 15:10:13 UTC 2012


commit 3b11fb6e1b8decc56eb453823fa61303c202784f
Author: Kay Sievers <kay.sievers at vrfy.org>
Date:   Wed Jan 25 15:56:17 2012 +0100

    install everything in /usr
    
    This patch is needed for the /usr-move feature
    https://fedoraproject.org/wiki/Features/UsrMove
    
    This package requires now 'filesystem' >= 3, which is only installable
    on a system which has /bin, /sbin, /lib, /lib64 as symlinks to /usr and
    not regular directories. The 'filesystem' package acts as a guard, to
    prevent *this* package to be installed on old unconverted systems.
    
    New installations will have the 'filesystem' >=3 layout right away, old
    installations need to be converted with anaconda or dracut first; only
    after that, the 'filesystem' package, and also *this* package can be
    installed.
    
    Packages *should* not install files in /bin, /sbin, /lib, /lib64, but
    only in the corresponding directories in /usr. Packages *must* not
    install conflicting files with the same names in the corresponding
    directories in / and /usr. Especially compatibilty symlinks must not be
    installed.
    
    Feel free to modify any of the changes to the spec file, but keep the
    above in mind.

 macros.systemd |    2 +-
 systemd.spec   |  128 +++++++++++++++++++++++++++++--------------------------
 2 files changed, 68 insertions(+), 62 deletions(-)
---
diff --git a/macros.systemd b/macros.systemd
index b24494e..b8661e6 100644
--- a/macros.systemd
+++ b/macros.systemd
@@ -1 +1 @@
-%_unitdir /lib/systemd/system
+%_unitdir /usr/lib/systemd/system
diff --git a/systemd.spec b/systemd.spec
index 87b3718..6bc3406 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -7,7 +7,8 @@ Release:        1%{?gitcommit:.git%{gitcommit}}%{?dist}
 License:        GPLv2+
 Group:          System Environment/Base
 Summary:        A System and Service Manager
-BuildRequires:  libudev-devel >= 160
+BuildRequires:  udev >= 179-2
+BuildRequires:  libudev-devel >= 179-2
 BuildRequires:  libcap-devel
 BuildRequires:  tcp_wrappers-devel
 BuildRequires:  pam-devel
@@ -20,7 +21,7 @@ BuildRequires:  vala >= 0.11
 BuildRequires:  pkgconfig
 BuildRequires:  gtk2-devel
 BuildRequires:  glib2-devel
-BuildRequires:  libgee06-devel
+BuildRequires:  libgee-devel
 BuildRequires:  libnotify-devel >= 0.7
 BuildRequires:  libacl-devel
 BuildRequires:  intltool >= 0.40.0
@@ -35,10 +36,10 @@ Requires(post): authconfig
 Requires(post): coreutils
 Requires(post): gawk
 Requires:       dbus >= 1.4.6-3.fc15
-Requires:       udev >= 167
-Requires:       libudev >= 160
+Requires:       udev >= 179-2
+Requires:       libudev >= 179-2
 Requires:       initscripts >= 9.28
-Requires:       filesystem >= 2.4.40
+Requires:       filesystem >= 3
 Conflicts:      selinux-policy < 3.9.16-12.fc15
 Conflicts:      kernel < 2.6.35.2-9.fc14
 Requires:       nss-myhostname
@@ -67,6 +68,7 @@ Obsoletes:      upstart-sysvinit < 1.2-3
 Conflicts:      upstart-sysvinit
 Obsoletes:      readahead < 1:1.5.7-3
 Provides:       readahead = 1:1.5.7-3
+Provides:       /bin/systemctl
 Obsoletes:      systemd-units < 38-5
 Provides:       systemd-units = %{version}-%{release}
 # for the systemd-analyze split:
@@ -127,7 +129,7 @@ at boot.
 
 %build
 %{?gitcommit: ./autogen.sh }
-%configure --with-rootprefix= --with-distro=fedora --with-rootlibdir=/%{_lib} --disable-static
+%configure --with-distro=fedora --disable-static
 make %{?_smp_mflags}
 
 %install
@@ -136,14 +138,14 @@ find %{buildroot} \( -name '*.a' -o -name '*.la' \) -exec rm {} \;
 
 # Create SysV compatibility symlinks. systemctl/systemd are smart
 # enough to detect in which way they are called.
-mkdir -p %{buildroot}/sbin
-ln -s ../bin/systemd %{buildroot}/sbin/init
-ln -s ../bin/systemctl %{buildroot}/sbin/reboot
-ln -s ../bin/systemctl %{buildroot}/sbin/halt
-ln -s ../bin/systemctl %{buildroot}/sbin/poweroff
-ln -s ../bin/systemctl %{buildroot}/sbin/shutdown
-ln -s ../bin/systemctl %{buildroot}/sbin/telinit
-ln -s ../bin/systemctl %{buildroot}/sbin/runlevel
+mkdir -p %{buildroot}/%{_sbindir}
+ln -s ../bin/systemd %{buildroot}%{_sbindir}/init
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/reboot
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/halt
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/poweroff
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/shutdown
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/telinit
+ln -s ../bin/systemctl %{buildroot}%{_sbindir}/runlevel
 
 # We create all wants links manually at installation time to make sure
 # they are not owned and hence overriden by rpm after the used deleted
@@ -157,10 +159,10 @@ touch %{buildroot}%{_sysconfdir}/systemd/system/runlevel4.target
 touch %{buildroot}%{_sysconfdir}/systemd/system/runlevel5.target
 
 # Make sure these directories are properly owned
-mkdir -p %{buildroot}/lib/systemd/system/basic.target.wants
-mkdir -p %{buildroot}/lib/systemd/system/default.target.wants
-mkdir -p %{buildroot}/lib/systemd/system/dbus.target.wants
-mkdir -p %{buildroot}/lib/systemd/system/syslog.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/basic.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/syslog.target.wants
 
 # Create new-style configuration files so that we can ghost-own them
 touch %{buildroot}%{_sysconfdir}/hostname
@@ -192,7 +194,7 @@ install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rsyslog.d/
 # kernel.core_pattern setting until systemd-coredump is a part of an actual
 # systemd release and it's made clear how to get the core dumps out of the
 # journal.
-rm -f %{buildroot}%{_libdir}/../lib/sysctl.d/coredump.conf
+rm -f %{buildroot}%{_prefix}/lib/sysctl.d/coredump.conf
 
 %post
 /sbin/ldconfig
@@ -209,15 +211,15 @@ fi
 
 # Stop-gap until rsyslog.rpm does this on its own. (This is supposed
 # to fail when the link already exists)
-ln -s /lib/systemd/system/rsyslog.service /etc/systemd/system/syslog.service >/dev/null 2>&1 || :
+ln -s /usr/lib/systemd/system/rsyslog.service /etc/systemd/system/syslog.service >/dev/null 2>&1 || :
 
 if [ $1 -eq 1 ] ; then
         # Try to read default runlevel from the old inittab if it exists
         runlevel=$(/bin/awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
         if [ -z "$runlevel" ] ; then
-                target="/lib/systemd/system/graphical.target"
+                target="/usr/lib/systemd/system/graphical.target"
         else
-                target="/lib/systemd/system/runlevel$runlevel.target"
+                target="/usr/lib/systemd/system/runlevel$runlevel.target"
         fi
 
         # And symlink what we found to the new-style default.target
@@ -263,13 +265,13 @@ fi
 %dir %{_sysconfdir}/modules-load.d
 %dir %{_sysconfdir}/binfmt.d
 %dir %{_sysconfdir}/bash_completion.d
-%dir /lib/systemd
-%dir /lib/systemd/system-generators
-%dir /lib/systemd/system-shutdown
-%dir %{_libdir}/../lib/tmpfiles.d
-%dir %{_libdir}/../lib/sysctl.d
-%dir %{_libdir}/../lib/modules-load.d
-%dir %{_libdir}/../lib/binfmt.d
+%dir %{_prefix}/lib/systemd
+%dir %{_prefix}/lib/systemd/system-generators
+%dir %{_prefix}/lib/systemd/system-shutdown
+%dir %{_prefix}/lib/tmpfiles.d
+%dir %{_prefix}/lib/sysctl.d
+%dir %{_prefix}/lib/modules-load.d
+%dir %{_prefix}/lib/binfmt.d
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
@@ -282,10 +284,10 @@ fi
 %{_sysconfdir}/bash_completion.d/systemd-bash-completion.sh
 %{_sysconfdir}/rpm/macros.systemd
 %{_sysconfdir}/xdg/systemd
-%{_libdir}/../lib/tmpfiles.d/systemd.conf
-%{_libdir}/../lib/tmpfiles.d/x11.conf
-%{_libdir}/../lib/tmpfiles.d/legacy.conf
-%{_libdir}/../lib/tmpfiles.d/tmp.conf
+%{_prefix}/lib/tmpfiles.d/systemd.conf
+%{_prefix}/lib/tmpfiles.d/x11.conf
+%{_prefix}/lib/tmpfiles.d/legacy.conf
+%{_prefix}/lib/tmpfiles.d/tmp.conf
 %ghost %config(noreplace) %{_sysconfdir}/hostname
 %ghost %config(noreplace) %{_sysconfdir}/vconsole.conf
 %ghost %config(noreplace) %{_sysconfdir}/locale.conf
@@ -295,44 +297,44 @@ fi
 %ghost %config(noreplace) %{_sysconfdir}/timezone
 %ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf
 %config(noreplace) %{_sysconfdir}/rsyslog.d/listen.conf
-/bin/systemd
-/bin/systemd-notify
-/bin/systemd-ask-password
-/bin/systemd-tty-ask-password-agent
-/bin/systemd-machine-id-setup
-/bin/systemd-loginctl
-/bin/systemd-journalctl
-/bin/systemd-tmpfiles
-/bin/systemctl
-/lib/systemd/system
-/lib/systemd/systemd-*
-/lib/udev/rules.d/*.rules
-/lib/systemd/system-generators/systemd-cryptsetup-generator
-/lib/systemd/system-generators/systemd-getty-generator
-/lib/systemd/system-generators/systemd-rc-local-generator
-/%{_lib}/security/pam_systemd.so
-/%{_lib}/libsystemd-daemon.so.*
-/%{_lib}/libsystemd-login.so.*
-/%{_lib}/libsystemd-journal.so.*
-/%{_lib}/libsystemd-id128.so.*
-/sbin/init
-/sbin/reboot
-/sbin/halt
-/sbin/poweroff
-/sbin/shutdown
-/sbin/telinit
-/sbin/runlevel
+%{_bindir}/systemd
+%{_bindir}/systemd-notify
+%{_bindir}/systemd-ask-password
+%{_bindir}/systemd-tty-ask-password-agent
+%{_bindir}/systemd-machine-id-setup
+%{_bindir}/systemd-loginctl
+%{_bindir}/systemd-journalctl
+%{_bindir}/systemd-tmpfiles
+%{_bindir}/systemctl
+%{_prefix}/lib/systemd/system
+%{_prefix}/lib/systemd/systemd-*
+%{_prefix}/lib/udev/rules.d/*.rules
+%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
+%{_prefix}/lib/systemd/system-generators/systemd-getty-generator
+%{_prefix}/lib/systemd/system-generators/systemd-rc-local-generator
+%{_prefix}/lib/systemd
+%{_libdir}/security/pam_systemd.so
+%{_libdir}/libsystemd-daemon.so.*
+%{_libdir}/libsystemd-login.so.*
+%{_libdir}/libsystemd-journal.so.*
+%{_libdir}/libsystemd-id128.so.*
 %{_bindir}/systemd-nspawn
 %{_bindir}/systemd-stdio-bridge
 %{_bindir}/systemd-cat
 %{_bindir}/systemd-cgls
 %{_bindir}/systemd-cgtop
+%{_sbindir}/init
+%{_sbindir}/reboot
+%{_sbindir}/halt
+%{_sbindir}/poweroff
+%{_sbindir}/shutdown
+%{_sbindir}/telinit
+%{_sbindir}/runlevel
 %{_mandir}/man1/*
 %exclude %{_mandir}/man1/systemadm.*
 %{_mandir}/man5/*
 %{_mandir}/man7/*
 %{_mandir}/man8/*
-%{_libdir}/../lib/systemd
 %{_datadir}/systemd
 %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
 %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
@@ -387,6 +389,10 @@ fi
 %{_bindir}/systemd-analyze
 
 %changelog
+* Wed Jan 25 2012 Kay Sievers <kay at redhat.com> - 39-2
+- install everything in /usr
+  https://fedoraproject.org/wiki/Features/UsrMove
+
 * Wed Jan 25 2012 Lennart Poettering <lpoetter at redhat.com> - 39-1
 - New upstream release
 


More information about the scm-commits mailing list