1
0
forked from pool/util-linux
util-linux/util-linux.spec

963 lines
27 KiB
RPMSpec
Raw Normal View History

#
# spec file for package util-linux
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%bcond_without sysvinit_tools
%bcond_without enable_su
%bcond_without enable_eject
%bcond_with enable_last
Name: util-linux
BuildRequires: audit-devel
BuildRequires: binutils-devel
BuildRequires: fdupes
BuildRequires: gettext-devel
# Use rpmbuild -D 'VERIFY_SIG 1' to verify signature during build or run
# one-shot check by
# xzcat util-linux-*.tar.xz | \
# sh -x gpg-offline --verify --package=util-linux *.tar.sign -
%if 0%{?VERIFY_SIG}
Accepting request 198586 from home:sbrabec:branches:Base:System VERIFY_SIG is not set, as it is expected to cause build loops. If you want to set it to 1, then it would depend on request 198583. - Update to version 2.23.2: nsenter(1): * this NEW COMMAND provides command line interface to setns() Linux syscall and allows to run program with namespaces of other processes unshare(1): * supports new PID and USER namespaces fdisk(8): * provides experimental support for GUID Partition Table (GPT), the implementation is still not complete and some (unimportant) features are missing. * ~50% of fdisk code has been refactored, this task is going to be complete in the next release. The goal is to have libfdisk shared between all fdisks. partx(8): * supports new "update" command (implemented by BLKPG_RESIZE_PARTITION ioctl) mount(8): * supports new userspace mount option x-mount.mkdir[=<mode>] to create mountpoints on demand * the support for propagation flags has been improved, now the flags could be specified in /etc/fstab and used together with regular mount options. It's also possible to specify more propagation flags together. This EXPERIMENTAL feature is implemented by additional mount(2) syscalls, because Linux does not allow to use propagation flags with another options or more flags together. umount(8): * supports new command line option --recursive to recursively unmount all sub-mounts for the specified mountpoint * supports new command line option --all-targets to unmount all mountpoints in the current namespace for the specified filesystem * the options --recursive and --all-targets could be used together dmesg(1): * supports new command line options --color, --human and --nopager, the --human option enables relative times, colors and pager support. su(1): * supports new command line options --group and --supp-group to specify primary and supplementary groups chfn(1) and chsh(1): * the commands could be linked with libuser to support non-local accounts modification (e.g. LDAP, etc). kill(1): * the command has been improved to be compatible with procps version, the procps version is deprecated now, the util-linux version is enabled by default. blkdiscard(8): * this NEW COMMAND discard sectors on a device (for example on SSD disks) sulogin(8): * provides multi-console feature from SysVinit findmnt(8): * provides new columns FREQ, PASSNO, ID, OPT-FIELDS, PROPAGATION lslocks(8): * provides new column BLOCKER and detects blocked locks lsblk(8): * supports new command line option --scsi and new columns HCTL, TRANsport VENDOR and REVision swapon(8) and losetup(8): * the commands prints basic overview by default if no option specified column(1): * supports new command line option --output-separator to specify table output delimiter rename(1): * supports new command line option --symlink to rename symlink target hwclock(8): * supports new command line option --compare to periodically compare the Hardware Clock to the System Time (based on adjtimex -c) ipcs(1): * supports new command line options --bytes and --human wipefs(1): * supports new command line option --force to force erase on used devices OBS-URL: https://build.opensuse.org/request/show/198586 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=178
2013-09-12 17:29:39 +02:00
BuildRequires: gpg-offline
%endif
BuildRequires: libselinux-devel
BuildRequires: libsepol-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: pam-devel
BuildRequires: pkg-config
BuildRequires: readline-devel
%if 0%{?suse_version} <= 1230
BuildRequires: pkgconfig(systemd)
%else
BuildRequires: systemd-rpm-macros
%endif
BuildRequires: utempter-devel
BuildRequires: zlib-devel
Version: 2.24.1
Release: 0
# util-linux is a base package and uuidd pre-requiring pwdutils pulls
# that into the core build cycle. pwdutils also pulls in the whole
# ldap stack into it. Avoid this whole mess which is done only to
# make the rpm install check of uuidd happy which has support to work without
# these tools as well
#!BuildIgnore: pwdutils
Url: https://www.kernel.org/pub/linux/utils/util-linux/
Supplements: filesystem(minix)
Provides: fsck-with-dev-lock = %{version}
# bnc#651598:
Provides: util-linux(fake+no-canonicalize)
PreReq: %install_info_prereq permissions
Recommends: %{name}-lang = %{version}
Summary: A collection of basic system utilities
License: GPL-2.0+
Group: System/Base
Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.24/%{name}-%{version}.tar.xz
Source1: util-linux-rpmlintrc
# XXX: make nologin part of util-linux upstream
Source2: nologin.c
Source3: nologin.8
Source4: raw.init
Source5: etc.raw
Source6: etc_filesystems
Source7: baselibs.conf
Source8: login.pamd
Source9: remote.pamd
Source10: su.pamd
Source11: su.default
Source12: ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.24/%{name}-%{version}.tar.sign
Accepting request 198586 from home:sbrabec:branches:Base:System VERIFY_SIG is not set, as it is expected to cause build loops. If you want to set it to 1, then it would depend on request 198583. - Update to version 2.23.2: nsenter(1): * this NEW COMMAND provides command line interface to setns() Linux syscall and allows to run program with namespaces of other processes unshare(1): * supports new PID and USER namespaces fdisk(8): * provides experimental support for GUID Partition Table (GPT), the implementation is still not complete and some (unimportant) features are missing. * ~50% of fdisk code has been refactored, this task is going to be complete in the next release. The goal is to have libfdisk shared between all fdisks. partx(8): * supports new "update" command (implemented by BLKPG_RESIZE_PARTITION ioctl) mount(8): * supports new userspace mount option x-mount.mkdir[=<mode>] to create mountpoints on demand * the support for propagation flags has been improved, now the flags could be specified in /etc/fstab and used together with regular mount options. It's also possible to specify more propagation flags together. This EXPERIMENTAL feature is implemented by additional mount(2) syscalls, because Linux does not allow to use propagation flags with another options or more flags together. umount(8): * supports new command line option --recursive to recursively unmount all sub-mounts for the specified mountpoint * supports new command line option --all-targets to unmount all mountpoints in the current namespace for the specified filesystem * the options --recursive and --all-targets could be used together dmesg(1): * supports new command line options --color, --human and --nopager, the --human option enables relative times, colors and pager support. su(1): * supports new command line options --group and --supp-group to specify primary and supplementary groups chfn(1) and chsh(1): * the commands could be linked with libuser to support non-local accounts modification (e.g. LDAP, etc). kill(1): * the command has been improved to be compatible with procps version, the procps version is deprecated now, the util-linux version is enabled by default. blkdiscard(8): * this NEW COMMAND discard sectors on a device (for example on SSD disks) sulogin(8): * provides multi-console feature from SysVinit findmnt(8): * provides new columns FREQ, PASSNO, ID, OPT-FIELDS, PROPAGATION lslocks(8): * provides new column BLOCKER and detects blocked locks lsblk(8): * supports new command line option --scsi and new columns HCTL, TRANsport VENDOR and REVision swapon(8) and losetup(8): * the commands prints basic overview by default if no option specified column(1): * supports new command line option --output-separator to specify table output delimiter rename(1): * supports new command line option --symlink to rename symlink target hwclock(8): * supports new command line option --compare to periodically compare the Hardware Clock to the System Time (based on adjtimex -c) ipcs(1): * supports new command line options --bytes and --human wipefs(1): * supports new command line option --force to force erase on used devices OBS-URL: https://build.opensuse.org/request/show/198586 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=178
2013-09-12 17:29:39 +02:00
Source13: %{name}.keyring
# TODO: split to separate package
Source40: klogconsole.tar.bz2
# XXX: Run a program in a new session and with controlling tty
Source22: setctsid.c
Source23: setctsid.8
# XXX: ppc specific, still needed?
Source28: mkzimage_cmdline.8
Source29: mkzimage_cmdline.c
Source31: addnote.c
#
Source26: README.raw
Source30: README.largedisk
Source50: uuidd.rc
Source51: blkid.conf
##
## util-linux patches
##
# 241372 - remove legacy warnings from fdisk
Patch1: util-linux-2.24-fdisk_remove_bogus_warnings.patch
Patch2: util-linux-2.23.1-eject-fpie.patch
# PATCH-EXTEND-UPSTREAM: Let `su' handle /sbin and /usr/sbin in path
Patch4: make-sure-sbin-resp-usr-sbin-are-in-PATH.diff
# disable encryption
Patch12: util-linux-2.23.1-noenc-suse.diff
# PATCH-FIX-SUSE -- better support of S390 in agetty
Patch14: tty3270-on-serial-line-of-s390.patch
# PATCH-FIX-SUSE -- Let agetty not be fooled by locked termios srtucture
Patch15: agetty-fooled-on-serial-line-due-plymouth.patch
# PATCH-FIX-SUSE -- Let agetty detect /dev/3270/tty1 as device not as baud rate
Patch16: agetty-on-s390-on-dev-3270-tty1-line.patch
# PATCH-FIX-SUSE -- Make sure that plymouth does not break sulogin
Patch17: sulogin-fooled-on-tty-line-due-plymouth.patch
# PATCH-FIX-SUSE -- sulogin: find suitable console device even if first is not usable
Patch18: sulogin-does-not-find-any-console.patch
# PATCH-FEATURE-SLES util-linux-setarch-uname26.patch fate313476 sbrabec@suse.cz -- Support for uname26 binary.
Patch19: util-linux-setarch-uname26.patch
# hack for boot.localfs
Patch20: util-linux-HACK-boot.localfs.diff
# PATCH-FEATURE-SLES util-linux-ng-2.16-squashfs3-detect.patch bnc666893 mszeredi@suse.cz -- Detect squashfs version <= 3 as squashfs3 and version >= 4 as squashfs.
Patch21: util-linux-ng-2.16-squashfs3-detect.patch
# PATCH-FEATURE-SLES util-linux-ng-2.19.1-barrier_documentation.patch bnc489740 jack@suse.cz -- Document barrier option in mount.8.
Patch23: util-linux-ng-2.19.1-barrier_documentation.patch
# PATCH-FEATURE-SLES util-linux-lscpu-improve-hypervisor-detection.patch fate310255 puzel@novell.com -- Improve hypervisor detection.
Patch24: util-linux-lscpu-improve-hypervisor-detection.patch
##
## klogconsole
##
Patch55: klogconsole-quiet.patch
Patch56: klogconsole.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: %insserv_prereq %fillup_prereq /bin/sed
#
%if %{with enable_eject}
Provides: eject = 2.1.0-166.8
%endif
Provides: login = 4.0-33.7
%if %{with enable_eject}
# File conflict of eject (up to 12.3 and SLE11).
Obsoletes: eject < 2.1.0-166.8
%endif
# File conflict of login (up to 12.1 and SLE11).
Obsoletes: login < 4.0-33.7
%if %{with enable_su}
# File conflict of su and kill (up to 12.3 and SLE11).
# It should be coreutils < 8.21-4, but coreutils provide Release-less symbol.
Conflicts: coreutils < 8.21
%endif
%if %{with sysvinit_tools}
# File conflict of sulogin and utmpdump (up to 12.3 and SLE11).
Conflicts: sysvinit-tools < 2.88+-87
%endif
# bnc#805684:
%ifarch s390x
Obsoletes: s390-32
Provides: s390-32
%endif
# uuid-runtime appeared in SLE11 SP1 to SLE11 SP3
Provides: uuid-runtime = %{version}-%{release}
Obsoletes: uuid-runtime < %{version}-%{release}
#
# Using "Requires" here would lend itself to help upgrading, but since
# util-linux is in the initial bootstrap, that is not a good thing to do:
#
Recommends: adjtimex
Recommends: time
Recommends: which
%description
This package contains a large variety of low-level system utilities
that are necessary for a Linux system to function. It contains the
mount program, the fdisk configuration tool, and more.
%package -n libblkid1
Summary: Filesystem detection library
Group: System/Filesystems
%description -n libblkid1
Library for filesystem detection.
%package -n libblkid-devel
Summary: Development files for the filesystem detection library
Group: Development/Libraries/C and C++
Requires: libblkid1 = %{version}
%description -n libblkid-devel
Files needed to develop applications using the library for filesystem
detection.
%package -n uuidd
Summary: Helper daemon to guarantee uniqueness of time-based UUIDs
Group: System/Filesystems
PreReq: %fillup_prereq
PreReq: %insserv_prereq
PreReq: permissions
PreReq: pwdutils
%description -n uuidd
The uuidd package contains a userspace daemon (uuidd) which guarantees
uniqueness of time-based UUID generation even at very high rates on
SMP systems.
%package -n libuuid1
Summary: Library to generate UUIDs
Group: System/Filesystems
%description -n libuuid1
A library to generate universally unique IDs (UUIDs).
%package -n libuuid-devel
Summary: Development files for libuuid1
Group: Development/Libraries/C and C++
Requires: libuuid1 = %{version}
%description -n libuuid-devel
Files to develop applications using the library to generate universally
unique IDs (UUIDs).
%package -n libmount1
Summary: Device mount library
Group: System/Filesystems
%description -n libmount1
Library designed to be used in low-level utils like
mount(8) and /usr/sbin/mount.<type> helpers.
%package -n libmount-devel
Summary: Development files for libmount1
Group: Development/Libraries/C and C++
Requires: libmount1 = %{version}
%description -n libmount-devel
Files to develop applications using the libmount library.
%lang_package
%prep
Accepting request 198586 from home:sbrabec:branches:Base:System VERIFY_SIG is not set, as it is expected to cause build loops. If you want to set it to 1, then it would depend on request 198583. - Update to version 2.23.2: nsenter(1): * this NEW COMMAND provides command line interface to setns() Linux syscall and allows to run program with namespaces of other processes unshare(1): * supports new PID and USER namespaces fdisk(8): * provides experimental support for GUID Partition Table (GPT), the implementation is still not complete and some (unimportant) features are missing. * ~50% of fdisk code has been refactored, this task is going to be complete in the next release. The goal is to have libfdisk shared between all fdisks. partx(8): * supports new "update" command (implemented by BLKPG_RESIZE_PARTITION ioctl) mount(8): * supports new userspace mount option x-mount.mkdir[=<mode>] to create mountpoints on demand * the support for propagation flags has been improved, now the flags could be specified in /etc/fstab and used together with regular mount options. It's also possible to specify more propagation flags together. This EXPERIMENTAL feature is implemented by additional mount(2) syscalls, because Linux does not allow to use propagation flags with another options or more flags together. umount(8): * supports new command line option --recursive to recursively unmount all sub-mounts for the specified mountpoint * supports new command line option --all-targets to unmount all mountpoints in the current namespace for the specified filesystem * the options --recursive and --all-targets could be used together dmesg(1): * supports new command line options --color, --human and --nopager, the --human option enables relative times, colors and pager support. su(1): * supports new command line options --group and --supp-group to specify primary and supplementary groups chfn(1) and chsh(1): * the commands could be linked with libuser to support non-local accounts modification (e.g. LDAP, etc). kill(1): * the command has been improved to be compatible with procps version, the procps version is deprecated now, the util-linux version is enabled by default. blkdiscard(8): * this NEW COMMAND discard sectors on a device (for example on SSD disks) sulogin(8): * provides multi-console feature from SysVinit findmnt(8): * provides new columns FREQ, PASSNO, ID, OPT-FIELDS, PROPAGATION lslocks(8): * provides new column BLOCKER and detects blocked locks lsblk(8): * supports new command line option --scsi and new columns HCTL, TRANsport VENDOR and REVision swapon(8) and losetup(8): * the commands prints basic overview by default if no option specified column(1): * supports new command line option --output-separator to specify table output delimiter rename(1): * supports new command line option --symlink to rename symlink target hwclock(8): * supports new command line option --compare to periodically compare the Hardware Clock to the System Time (based on adjtimex -c) ipcs(1): * supports new command line options --bytes and --human wipefs(1): * supports new command line option --force to force erase on used devices OBS-URL: https://build.opensuse.org/request/show/198586 OBS-URL: https://build.opensuse.org/package/show/Base:System/util-linux?expand=0&rev=178
2013-09-12 17:29:39 +02:00
%if 0%{?VERIFY_SIG}
xzcat %{S:0} | %gpg_verify %{S:12} -
%endif
%setup -q -n %{name}-%{version} -b 40
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch12 -p1
%patch14 -p1
%patch15 -p0
%patch16 -p0
%patch17 -p0
%patch18 -p0
%patch19 -p1
#
%patch20 -p1
#
%patch21 -p1
%patch23 -p1
%patch24 -p1
#
# setctsid
cp -p %{S:22} %{S:23} .
# nologin
cp -p %{S:2} %{S:3} %{S:26} %{S:30} .
pushd ../klogconsole
%patch55 -p1
%patch56 -p1
popd
%build
pushd ../klogconsole
# klogconsole build
make %{?_smp_mflags} CFLAGS="%{optflags}" CC="%{__cc}"
popd
# setctsid build
rm -f setctsid
make %{?_smp_mflags} setctsid CFLAGS="%{optflags}" CC="%{__cc}"
#
# Version check for libutempter
#
uhead=$(find %_includedir -name utempter.h 2>/dev/null)
if test -n "$uhead" && grep -q utempter_add_record "$uhead"
then
uhead=--with-utempter
else
uhead=--without-utempter
fi
#
# util-linux itself
#
autoreconf -fi
export SUID_CFLAGS="-fpie"
export SUID_LDFLAGS="-pie"
# override default localstatedir to /run
# only used for volatile data
%configure \
--localstatedir=/run \
--docdir=%{_docdir}/%{name} \
--with-audit \
--with-gnu-ld \
--with-ncurses \
--with-selinux \
$uhead \
--with-systemdsystemunitdir=%_unitdir \
--with-bashcompletiondir=%{_datadir}/bash-completion \
--enable-mesg \
--enable-partx \
--enable-raw \
--enable-write \
--enable-line \
--enable-new-mount \
--enable-login-utils \
--enable-tunelp \
%if %{with enable_last}
--enable-last \
%else
--disable-last \
%endif
--enable-logger \
%if %{with enable_eject}
--enable-eject \
%else
--disable-eject \
%endif
%if %{with sysvinit_tools}
--enable-sulogin \
--enable-sulogin-emergency-mount \
--enable-mountpoint \
%else
--disable-sulogin \
--disable-mountpoint \
%endif
%if %{with enable_su}
--enable-kill \
--enable-su \
%else
--disable-su \
--disable-kill \
%endif
--disable-use-tty-group \
--disable-static \
--disable-silent-rules \
--disable-rpath
#
make %{?_smp_mflags}
#
%{__cc} -fwhole-program %{optflags} -o nologin nologin.c
%{__cc} -fwhole-program %{optflags} -o mkzimage_cmdline %{S:29}
%{__cc} -fwhole-program %{optflags} -o chrp-addnote %{SOURCE31}
%check
if ! make check; then
echo "cat test diffs:"
find tests/diff -type f | xargs -r cat
#exit 1
fi
%install
mkdir -p %{buildroot}{%{_sysconfdir}/{init.d,pam.d,default},%{_mandir}/man{1,8},/bin,/sbin,%{_bindir},%{_sbindir},%{_infodir}}
mkdir -p %{buildroot}%{_localstatedir}/lib/libuuid/
mkdir -p %{buildroot}/run/uuidd/
install -m 744 %{SOURCE50} %{buildroot}%{_initddir}/uuidd
install -m 644 %{SOURCE51} %{buildroot}%{_sysconfdir}/blkid.conf
install -m 644 %{SOURCE8} %{buildroot}%{_sysconfdir}/pam.d/login
install -m 644 %{SOURCE9} %{buildroot}%{_sysconfdir}/pam.d/remote
%if %{with enable_su}
install -m 644 %{SOURCE10} %{buildroot}%{_sysconfdir}/pam.d/su
install -m 644 %{SOURCE10} %{buildroot}%{_sysconfdir}/pam.d/su-l
install -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/default/su
%endif
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
pushd ../klogconsole
# klogconsole install
make install DEST=%{buildroot}
popd
#
# util-linux install
#
%make_install
#UsrMerge
%if %{with enable_su}
ln -s %{_bindir}/kill %{buildroot}/bin
ln -s %{_bindir}/su %{buildroot}/bin
%endif
ln -s %{_bindir}/logger %{buildroot}/bin
ln -s %{_bindir}/dmesg %{buildroot}/bin
ln -s %{_bindir}/more %{buildroot}/bin
ln -s %{_bindir}/mount %{buildroot}/bin
ln -s %{_bindir}/umount %{buildroot}/bin
ln -s %{_bindir}/findmnt %{buildroot}/bin
ln -s %{_bindir}/lsblk %{buildroot}/bin
ln -s %{_sbindir}/agetty %{buildroot}/sbin
ln -s %{_sbindir}/blockdev %{buildroot}/sbin
ln -s %{_sbindir}/cfdisk %{buildroot}/sbin
ln -s %{_sbindir}/ctrlaltdel %{buildroot}/sbin
ln -s %{_sbindir}/fdisk %{buildroot}/sbin
ln -s %{_sbindir}/fsck.minix %{buildroot}/sbin
ln -s %{_sbindir}/fsck.cramfs %{buildroot}/sbin
ln -s %{_sbindir}/hwclock %{buildroot}/sbin
ln -s %{_sbindir}/losetup %{buildroot}/sbin
ln -s %{_sbindir}/mkfs %{buildroot}/sbin
ln -s %{_sbindir}/mkfs.bfs %{buildroot}/sbin
ln -s %{_sbindir}/mkfs.minix %{buildroot}/sbin
ln -s %{_sbindir}/mkfs.cramfs %{buildroot}/sbin
ln -s %{_sbindir}/mkswap %{buildroot}/sbin
ln -s %{_sbindir}/pivot_root %{buildroot}/sbin
ln -s %{_sbindir}/raw %{buildroot}/sbin
ln -s %{_sbindir}/sfdisk %{buildroot}/sbin
ln -s %{_sbindir}/swapoff %{buildroot}/sbin
ln -s %{_sbindir}/swapon %{buildroot}/sbin
ln -s %{_sbindir}/blkid %{buildroot}/sbin
ln -s %{_sbindir}/findfs %{buildroot}/sbin
ln -s %{_sbindir}/fsck %{buildroot}/sbin
ln -s %{_sbindir}/switch_root %{buildroot}/sbin
ln -s %{_sbindir}/wipefs %{buildroot}/sbin
ln -s %{_sbindir}/fsfreeze %{buildroot}/sbin
ln -s %{_sbindir}/swaplabel %{buildroot}/sbin
ln -s %{_sbindir}/fstrim %{buildroot}/sbin
ln -s %{_sbindir}/chcpu %{buildroot}/sbin
#EndUsrMerge
install -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/filesystems
install -m 755 nologin %{buildroot}/%{_sbindir}
#UsrMerge
ln -s %{_sbindir}/nologin %{buildroot}/sbin
#EndUsrMerge
rm -f %{buildroot}/%{_libdir}/libblkid.la
rm -f %{buildroot}/%{_libdir}/libuuid.la
rm -f %{buildroot}/%{_libdir}/libmount.la
%ifnarch ppc ppc64
install -m 755 mkzimage_cmdline %{buildroot}/%{_bindir}
install -m 644 %{S:28} %{buildroot}%{_mandir}/man8
install -m 755 chrp-addnote %{buildroot}/%{_bindir}
%endif
install -m 644 nologin.8 %{buildroot}%{_mandir}/man8
# setctsid install
install -m 755 setctsid %{buildroot}/%{_sbindir}
install -m 444 setctsid.8 %{buildroot}%{_mandir}/man8/
echo -e "#! /bin/bash\n/sbin/blockdev --flushbufs \$1" > %{buildroot}%{_sbindir}/flushb
chmod 755 %{buildroot}%{_sbindir}/flushb
# Install scripts to configure raw devices at boot time
install -m 644 $RPM_SOURCE_DIR%{_sysconfdir}.raw %{buildroot}%{_sysconfdir}/raw
install -m 755 $RPM_SOURCE_DIR/raw.init %{buildroot}%{_initddir}/raw
ln -sf ../..%{_sysconfdir}/init.d/raw %{buildroot}%{_sbindir}/rcraw
# upstream moved getopt examples from datadir to docdir but we keep
# the old location because we would need to fix the manpage first
mv %{buildroot}%{_docdir}/%{name}/getopt %{buildroot}%{_datadir}/
# Stupid hack so we don't have a tcsh dependency
chmod 644 %{buildroot}%{_datadir}/getopt/getopt*.tcsh
# Following files we don't want to package, so remove them
rm -f %{buildroot}%{_bindir}/pg
rm -f %{buildroot}%{_mandir}/man1/pg.1*
# Do not package these files to get rid of the perl dependency
rm -f %{buildroot}%{_bindir}/chkdupexe
rm -f %{buildroot}%{_mandir}/man1/chkdupexe.1
# we use this tools from pwdutils
rm -f %{buildroot}/%{_bindir}/{chfn,chsh,newgrp}
rm -f %{buildroot}/%{_sbindir}/{vigr,vipw}
rm -f %{buildroot}/%{_mandir}/man1/{chfn.1*,chsh.1*,newgrp.1*}
rm -f %{buildroot}/%{_mandir}/man8/{vigr.8*,vipw.8*}
# login is always and only in /bin
mv %{buildroot}/%{_bindir}/login %{buildroot}/bin/
# arch dependent
%ifarch s390 s390x
rm -f %{buildroot}%{_sysconfdir}/fdprm
rm -f %{buildroot}%{_bindir}/cytune
rm -f %{buildroot}%{_sbindir}/fdformat
rm -f %{buildroot}%{_sbindir}/hwclock
#UsrMerge
rm -f %{buildroot}/sbin/hwclock
#EndUsrMerge
rm -f %{buildroot}%{_sbindir}/klogconsole
rm -f %{buildroot}%{_bindir}/setterm
rm -f %{buildroot}%{_sbindir}/tunelp
rm -f %{buildroot}/%{_mandir}/man8/cytune.8*
rm -f %{buildroot}/%{_mandir}/man8/fdformat.8*
rm -f %{buildroot}/%{_mandir}/man8/hwclock.8*
rm -f %{buildroot}/%{_mandir}/man8/klogconsole.8*
rm -f %{buildroot}/%{_mandir}/man8/tunelp.8*
%endif
%ifarch ia64 %sparc m68k
rm -f %{buildroot}/%{_mandir}/man8/cfdisk.8*
rm -f %{buildroot}/%{_mandir}/man8/sfdisk.8*
rm -f %{buildroot}%{_sbindir}/cfdisk
#UsrMerge
rm -f %{buildroot}/sbin/cfdisk
#EndUsrMerge
rm -f %{buildroot}%{_sbindir}/sfdisk
#UsrMerge
rm -f %{buildroot}/sbin/sfdisk
#EndUsrMerge
%endif
%ifarch ia64 m68k
rm -f %{buildroot}%{_sbindir}/fdisk
#UsrMerge
rm -f %{buildroot}/sbin/fdisk
#EndUsrMerge
rm -f %{buildroot}%{_mandir}/man8/fdisk.8*
%endif
%find_lang %{name} %{name}.lang
# create list of setarch(8) symlinks
find %{buildroot}%{_bindir}/ -regextype posix-egrep -type l \
-regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)$" \
-printf "%{_bindir}/%f\n" >> %{name}.files
find %{buildroot}%{_mandir}/man8 -regextype posix-egrep \
-regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)\.8.*" \
-printf "%{_mandir}/man8/%f*\n" >> %{name}.files
# clock.txt from uuidd is a ghost file
touch %{buildroot}%{_localstatedir}/lib/libuuid/clock.txt
# rcuuidd helper
ln -sf ../..%{_sysconfdir}/init.d/uuidd %{buildroot}%{_sbindir}/rcuuidd
# remove duplicate manpages
%fdupes -s %{buildroot}/%{_mandir}
%post
%{fillup_and_insserv raw}
%set_permissions %{_bindir}/wall %{_bindir}/write %{_bindir}/mount %{_bindir}/umount
%if %{with enable_su}
%set_permissions %{_bindir}/su
# Safely migrate PAM files from coreutils to util-linux
# (openSUSE 12.3->13.1, SLE11->SLE12)
#
# coreutils with su were upgraded (and su removed) before util-linux
# with su was installed (see the Conflicts above). If the admin edited
# the PAM file, the seemingly no more used modified file was saved as
# .rpmsave and the new clean file was installed. As we want
# "noreplace" upgrade, and the contents of the clean file contents has
# no changes, we should restore admin modification, and rename the
# clean file to .rpmnew, as it would happen if the file was not moved
# from one package to another.
for PAM_FILE in default/su pam.d/su pam.d/su-l ; do
if test -f %{_sysconfdir}/$PAM_FILE.rpmsave ; then
mv %{_sysconfdir}/$PAM_FILE %{_sysconfdir}/$PAM_FILE.rpmnew
mv %{_sysconfdir}/$PAM_FILE.rpmsave %{_sysconfdir}/$PAM_FILE
fi
done
%endif
# mount option 'code=' is now called 'codepage=' so change fstab
if [ -f etc/fstab ]; then
sed -i 's:code=:codepage=:' etc/fstab
fi
%postun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/ipc.info.gz
%{insserv_cleanup}
%verifyscript
%verify_permissions -e %{_bindir}/wall -e %{_bindir}/write -e %{_bindir}/mount -e %{_bindir}/umount
%if %{with enable_su}
%verify_permissions -e %{_bindir}/su
%endif
%post -n libblkid1 -p /sbin/ldconfig
%postun -n libblkid1 -p /sbin/ldconfig
%post -n libmount1 -p /sbin/ldconfig
%postun -n libmount1 -p /sbin/ldconfig
%pre -n uuidd
%{_sbindir}/groupadd -r uuidd 2>/dev/null || :
%{_sbindir}/useradd -r -g uuidd -c "User for uuidd" \
-d /var/run/uuidd uuidd 2>/dev/null || :
%preun -n uuidd
%{stop_on_removal uuidd}
%post -n uuidd
%{fillup_and_insserv -n uuidd}
%set_permissions %{_sbindir}/uuidd
%postun -n uuidd
%{restart_on_update uuidd}
%{insserv_cleanup}
%post -n libuuid1 -p /sbin/ldconfig
%postun -n libuuid1 -p /sbin/ldconfig
%verifyscript -n uuidd
%verify_permissions -e %{_sbindir}/uuidd
%files lang -f %{name}.lang
%files -f %{name}.files
# Common files for all archs
%defattr(-,root,root)
# util-linux documentation files
%doc Documentation/blkid.txt
%doc Documentation/cal.txt
%doc Documentation/cfdisk.txt
%doc Documentation/col.txt
%doc Documentation/deprecated.txt
%doc Documentation/fdisk.txt
%doc Documentation/getopt.txt
%doc Documentation/howto-debug.txt
%doc Documentation/hwclock.txt
%doc Documentation/modems-with-agetty.txt
%doc Documentation/mount.txt
%doc Documentation/pg.txt
%doc Documentation/sfdisk.txt
%config %attr(744,root,root) %{_sysconfdir}/init.d/raw
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/raw
%config(noreplace) %{_sysconfdir}/filesystems
%config(noreplace) %{_sysconfdir}/blkid.conf
%config(noreplace) %{_sysconfdir}/pam.d/login
%config(noreplace) %{_sysconfdir}/pam.d/remote
%if %{with enable_su}
%config(noreplace) %{_sysconfdir}/pam.d/su
%config(noreplace) %{_sysconfdir}/pam.d/su-l
%config(noreplace) %{_sysconfdir}/default/su
%endif
#UsrMerge
%if %{with enable_su}
/bin/kill
/bin/su
%endif
/bin/dmesg
/bin/more
/bin/mount
/bin/umount
/bin/findmnt
/bin/logger
/bin/login
/bin/lsblk
/sbin/agetty
/sbin/blockdev
/sbin/ctrlaltdel
/sbin/fsck.minix
/sbin/fsck.cramfs
/sbin/losetup
/sbin/mkfs
/sbin/mkfs.bfs
/sbin/mkfs.minix
/sbin/mkfs.cramfs
/sbin/mkswap
/sbin/nologin
/sbin/pivot_root
/sbin/raw
/sbin/swapoff
/sbin/swapon
/sbin/blkid
/sbin/findfs
/sbin/fsck
/sbin/switch_root
/sbin/wipefs
/sbin/fsfreeze
/sbin/swaplabel
/sbin/fstrim
/sbin/chcpu
#EndUsrMerge
%if %{with enable_su}
%{_bindir}/kill
%{_bindir}/su
%endif
%if %{with enable_eject}
%if 0%{?suse_version} <= 1310
%verify(not mode) %attr(4750,root,audio) %{_bindir}/eject
%else
%{_bindir}/eject
%endif
%endif
%{_bindir}/cal
%{_bindir}/chrt
%{_bindir}/col
%{_bindir}/colcrt
%{_bindir}/colrm
%{_bindir}/column
%{_bindir}/dmesg
%{_bindir}/fallocate
%{_bindir}/findmnt
%{_bindir}/flock
%{_bindir}/getopt
%{_bindir}/hexdump
%{_bindir}/ionice
%{_bindir}/ipcmk
%{_bindir}/ipcrm
%{_bindir}/ipcs
%{_bindir}/isosize
%if %{with enable_last}
%{_bindir}/last
%{_bindir}/lastb
%endif
%{_bindir}/line
%{_bindir}/logger
%{_bindir}/look
%{_bindir}/lsblk
%{_bindir}/lscpu
%{_bindir}/lslocks
%{_bindir}/mcookie
%{_bindir}/mesg
%{_bindir}/more
%{_bindir}/mount
%{_bindir}/namei
%{_bindir}/nsenter
%{_bindir}/prlimit
%{_bindir}/rename
%{_bindir}/renice
%{_bindir}/rev
%{_bindir}/script
%{_bindir}/scriptreplay
%{_bindir}/setarch
%{_bindir}/setsid
%{_bindir}/tailf
%{_bindir}/taskset
%{_bindir}/ul
%{_bindir}/umount
%{_bindir}/unshare
%if %{with sysvinit_tools}
%{_bindir}/mountpoint
%{_bindir}/utmpdump
%endif
%{_bindir}/uuidgen
%{_bindir}/uname26
%ifnarch ppc ppc64
%{_bindir}/chrp-addnote
%{_bindir}/mkzimage_cmdline
%endif
%{_bindir}/wdctl
%{_sbindir}/addpart
%{_sbindir}/agetty
%{_sbindir}/blkid
%{_sbindir}/blkdiscard
%{_sbindir}/blockdev
%{_sbindir}/chcpu
%{_sbindir}/ctrlaltdel
%{_sbindir}/delpart
%{_sbindir}/findfs
%{_sbindir}/fsck
%{_sbindir}/fsck.minix
%{_sbindir}/fsck.cramfs
%{_sbindir}/fsfreeze
%{_sbindir}/fstrim
%{_sbindir}/ldattach
%{_sbindir}/losetup
%{_sbindir}/mkfs
%{_sbindir}/mkfs.bfs
%{_sbindir}/mkfs.minix
%{_sbindir}/mkfs.cramfs
%{_sbindir}/mkswap
%{_sbindir}/nologin
%{_sbindir}/partx
%{_sbindir}/pivot_root
%{_sbindir}/raw
%{_sbindir}/rcraw
%{_sbindir}/resizepart
%{_sbindir}/rtcwake
%{_sbindir}/runuser
%{_sbindir}/setctsid
%if %{with sysvinit_tools}
%{_sbindir}/sulogin
%endif
%{_sbindir}/swaplabel
%{_sbindir}/swapoff
%{_sbindir}/swapon
%{_sbindir}/switch_root
%{_sbindir}/wipefs
%verify(not mode) %attr(0755,root,tty) %{_bindir}/wall
%{_bindir}/whereis
%verify(not mode) %attr(0755,root,tty) %{_bindir}/write
%if %{with enable_su}
%{_mandir}/man1/kill.1.gz
%{_mandir}/man1/su.1.gz
%endif
%{_mandir}/man1/cal.1.gz
%{_mandir}/man1/chrt.1.gz
%{_mandir}/man1/col.1.gz
%{_mandir}/man1/colcrt.1.gz
%{_mandir}/man1/colrm.1.gz
%{_mandir}/man1/column.1.gz
%{_mandir}/man1/dmesg.1.gz
%if %{with enable_eject}
%{_mandir}/man1/eject.1.gz
%endif
%{_mandir}/man1/fallocate.1.gz
%{_mandir}/man1/flock.1.gz
%{_mandir}/man1/getopt.1.gz
%{_mandir}/man1/hexdump.1.gz
%{_mandir}/man1/ipcrm.1.gz
%{_mandir}/man1/ipcs.1.gz
%if %{with enable_last}
%{_mandir}/man1/last.1.gz
%{_mandir}/man1/lastb.1.gz
%endif
%{_mandir}/man1/line.1.gz
%{_mandir}/man1/logger.1.gz
%{_mandir}/man1/login.1.gz
%{_mandir}/man1/look.1.gz
%{_mandir}/man1/lscpu.1.gz
%{_mandir}/man1/mcookie.1.gz
%{_mandir}/man1/mesg.1.gz
%{_mandir}/man1/more.1.gz
%{_mandir}/man1/namei.1.gz
%{_mandir}/man1/nsenter.1.gz
%{_mandir}/man1/ionice.1.gz
%{_mandir}/man1/prlimit.1.gz
%{_mandir}/man1/rename.1.gz
%{_mandir}/man1/rev.1.gz
%{_mandir}/man1/renice.1.gz
%{_mandir}/man1/setsid.1.gz
%{_mandir}/man1/script.1.gz
%{_mandir}/man1/scriptreplay.1.gz
%{_mandir}/man1/setterm.1.gz
%{_mandir}/man1/tailf.1.gz
%{_mandir}/man1/taskset.1.gz
%{_mandir}/man1/ul.1.gz
%{_mandir}/man1/unshare.1.gz
%{_mandir}/man1/wall.1.gz
%{_mandir}/man1/whereis.1.gz
%{_mandir}/man1/write.1.gz
%{_mandir}/man1/ipcmk.1.gz
%if %{with sysvinit_tools}
%{_mandir}/man1/mountpoint.1.gz
%{_mandir}/man1/utmpdump.1.gz
%endif
%{_mandir}/man1/runuser.1.gz
%{_mandir}/man1/uuidgen.1.gz
%{_mandir}/man5/fstab.5.gz
%{_mandir}/man8/addpart.8.gz
%{_mandir}/man8/agetty.8.gz
%{_mandir}/man8/blockdev.8.gz
%{_mandir}/man8/delpart.8.gz
%{_mandir}/man8/ctrlaltdel.8.gz
%{_mandir}/man8/blkid.8.gz
%{_mandir}/man8/blkdiscard.8.gz
%{_mandir}/man8/switch_root.8.gz
%{_mandir}/man8/mkfs.bfs.8.gz
%{_mandir}/man8/mkfs.minix.8.gz
%{_mandir}/man8/findfs.8.gz
%{_mandir}/man8/fsck.8.gz
%{_mandir}/man8/fsck.cramfs.8.gz
%{_mandir}/man8/fsck.minix.8.gz
%{_mandir}/man8/isosize.8.gz
%{_mandir}/man8/ldattach.8.gz
%{_mandir}/man8/losetup.8.gz
%{_mandir}/man8/lslocks.8.gz
%{_mandir}/man8/mkfs.8.gz
%{_mandir}/man8/mkfs.cramfs.8.gz
%{_mandir}/man8/mkswap.8.gz
%{_mandir}/man8/mount.8.gz
%{_mandir}/man8/nologin.8.gz
%{_mandir}/man8/findmnt.8.gz
%{_mandir}/man8/fsfreeze.8.gz
%{_mandir}/man8/swaplabel.8.gz
%{_mandir}/man8/readprofile.8.gz
%{_mandir}/man8/chcpu.8.gz
%ifnarch ppc ppc64
%{_mandir}/man8/mkzimage_cmdline.8.gz
%endif
%{_mandir}/man8/partx.8.gz
%{_mandir}/man8/pivot_root.8.gz
%{_mandir}/man8/raw.8.gz
%{_mandir}/man8/rtcwake.8.gz
%{_mandir}/man8/setarch.8.gz
%{_mandir}/man8/swapoff.8.gz
%{_mandir}/man8/swapon.8.gz
%{_mandir}/man8/umount.8.gz
%{_mandir}/man8/uname26.8.gz
%{_mandir}/man8/setctsid.8.gz
%{_mandir}/man8/wipefs.8.gz
%{_mandir}/man8/fstrim.8.gz
%{_mandir}/man8/lsblk.8.gz
%{_mandir}/man8/resizepart.8.gz
%if %{with sysvinit_tools}
%{_mandir}/man8/sulogin.8.gz
%endif
%{_mandir}/man8/wdctl.8.gz
%{_sbindir}/flushb
%{_sbindir}/readprofile
%dir %{_datadir}/getopt
%attr (755,root,root) %{_datadir}/getopt/getopt-parse.bash
%attr (755,root,root) %{_datadir}/getopt/getopt-parse.tcsh
# FIXME: Fix directory ownership.
%{_datadir}/bash-completion
%ifnarch ia64 m68k
#XXX: post our patches upstream
#XXX: call fdupes on /usr/share/man
#UsrMerge
/sbin/fdisk
#EndUsrMerge
%{_sbindir}/fdisk
%{_mandir}/man8/fdisk.8.gz
%endif
%ifnarch %sparc ia64 m68k
%{_mandir}/man8/cfdisk.8.gz
%{_mandir}/man8/sfdisk.8.gz
#UsrMerge
/sbin/cfdisk
/sbin/sfdisk
#EndUsrMerge
%{_sbindir}/cfdisk
%{_sbindir}/sfdisk
%endif
%ifnarch s390 s390x
%{_bindir}/cytune
%{_sbindir}/fdformat
#UsrMerge
/sbin/hwclock
#EndUsrMerge
%{_sbindir}/hwclock
%{_sbindir}/klogconsole
%{_bindir}/setterm
%{_sbindir}/tunelp
%{_mandir}/man8/cytune.8.gz
%{_mandir}/man8/fdformat.8.gz
%{_mandir}/man8/hwclock.8.gz
%{_mandir}/man8/klogconsole.8.gz
%{_mandir}/man8/tunelp.8.gz
%endif
%files -n libblkid1
%defattr(-, root, root)
/%{_libdir}/libblkid.so.1
/%{_libdir}/libblkid.so.1.*
%files -n libblkid-devel
%defattr(-, root, root)
%{_libdir}/libblkid.so
%dir %{_includedir}/blkid
%{_includedir}/blkid/blkid.h
%{_libdir}/pkgconfig/blkid.pc
%{_mandir}/man3/libblkid.3.gz
%files -n libmount1
%defattr(-, root, root)
/%{_libdir}/libmount.so.1
/%{_libdir}/libmount.so.1.*
%files -n libmount-devel
%defattr(-, root, root)
%{_libdir}/libmount.so
%dir %{_includedir}/libmount
%{_includedir}/libmount/libmount.h
%{_libdir}/pkgconfig/mount.pc
%files -n uuidd
%defattr(-, root, root)
%verify(not mode) %attr(0755,root,root) %{_sbindir}/uuidd
%attr(-,uuidd,uuidd) %dir %{_localstatedir}/lib/libuuid
%ghost %{_localstatedir}/lib/libuuid/clock.txt
%attr(-,uuidd,uuidd) %ghost %dir /run/uuidd
%{_initddir}/uuidd
%{_mandir}/man8/uuidd.8.gz
%{_sbindir}/rcuuidd
%{_unitdir}/uuidd.service
%{_unitdir}/uuidd.socket
%files -n libuuid1
%defattr(-, root, root)
/%{_libdir}/libuuid.so.1
/%{_libdir}/libuuid.so.1.*
%files -n libuuid-devel
%defattr(-, root, root)
%{_libdir}/libuuid.so
%dir %{_includedir}/uuid
%{_includedir}/uuid/uuid.h
%{_libdir}/pkgconfig/uuid.pc
%{_mandir}/man3/uuid*
%changelog