Accepting request 873391 from home:Andreas_Schwab:Factory

- Prepare for usrmerge (bsc#1029961)

OBS-URL: https://build.opensuse.org/request/show/873391
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=580
This commit is contained in:
Andreas Schwab 2021-02-18 13:40:31 +00:00 committed by Git OBS Bridge
parent 473f2a92cd
commit 63fb16c6c1
2 changed files with 238 additions and 111 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Thu Feb 18 11:29:12 UTC 2021 - Andreas Schwab <schwab@suse.de>
- Prepare for usrmerge (bsc#1029961)
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 16 13:52:50 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org> Tue Feb 16 13:52:50 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>

View File

@ -25,6 +25,12 @@
%define flavor @BUILD_FLAVOR@%{nil} %define flavor @BUILD_FLAVOR@%{nil}
%if 0%{?usrmerged}
%bcond_without usrmerged
%else
%bcond_with usrmerged
%endif
%bcond_with build_all %bcond_with build_all
%define build_main 1 %define build_main 1
%define build_utils %{with build_all} %define build_utils %{with build_all}
@ -84,6 +90,9 @@ BuildRequires: zlib-devel
ExclusiveArch: i586 i686 ExclusiveArch: i586 i686
BuildArch: i686 BuildArch: i686
%endif %endif
%if %{with usrmerged} && %{build_main}
Provides: /sbin/ldconfig
%endif
%define __filter_GLIBC_PRIVATE 1 %define __filter_GLIBC_PRIVATE 1
%ifarch i686 %ifarch i686
@ -407,8 +416,16 @@ for -static linking. You don't need these, unless you link statically,
which is highly discouraged. which is highly discouraged.
# makedb requires libselinux. We add this program in a separate # makedb requires libselinux. We add this program in a separate
# package so that glibc does not require libselinux. # package so that glibc does not require libselinux.
%package extra %package extra
Summary: Extra binaries from GNU C Library Summary: Extra binaries from GNU C Library
License: LGPL-2.1-or-later License: LGPL-2.1-or-later
@ -421,6 +438,15 @@ are not essential but recommend to use.
makedb: A program to create a database for nss makedb: A program to create a database for nss
%package usrmerge-bootstrap-helper
Summary: Internal usrmerge bootstrap helper
License: LGPL-2.1-or-later
Requires: glibc = %{version}
Requires: this-is-only-for-build-envs
%description usrmerge-bootstrap-helper
Internal usrmerge bootstrap helper
%lang_package %lang_package
%endif %endif
@ -643,13 +669,78 @@ make %{?_smp_mflags} -C cc-base -k check || {
make %{?_smp_mflags} -C cc-base check-abi make %{?_smp_mflags} -C cc-base check-abi
%endif %endif
%define rtldlib %{_lib}
# Each architecture has a different name for the dynamic linker:
%ifarch %arm
%ifarch armv6hl armv7hl
%define rtld_name ld-linux-armhf.so.3
# Keep compatibility link
%define rtld_oldname ld-linux.so.3
%else
%define rtld_name ld-linux.so.3
%endif
%endif
%ifarch ia64
%define rtld_name ld-linux-ia64.so.2
%endif
%ifarch ppc s390 mips hppa m68k
%define rtld_name ld.so.1
%endif
%ifarch ppc64
%define rtld_name ld64.so.1
%endif
%ifarch ppc64le
%define rtld_name ld64.so.2
%endif
%ifarch s390x
%define rtldlib lib
%define rtld_name ld64.so.1
%endif
%ifarch x86_64
%define rtld_name ld-linux-x86-64.so.2
%endif
%ifarch %ix86 %sparc
%define rtld_name ld-linux.so.2
%endif
%ifarch aarch64
%define rtldlib lib
%define rtld_name ld-linux-aarch64.so.1
%endif
%ifarch riscv64
%define rtldlib lib
%define rtld_name ld-linux-riscv64-lp64d.so.1
%endif
%if %{with usrmerged}
%define rootsbindir %{_sbindir}
%define slibdir %{_libdir}
%define rtlddir %{_prefix}/%{rtldlib}
%else
%define rootsbindir /sbin
%define slibdir /%{_lib}
%define rtlddir /%{rtldlib}
%endif
%install %install
%if !%{build_testsuite} %if !%{build_testsuite}
%if %{with usrmerged}
mkdir -p %{buildroot}%{_libdir}
ln -s %{buildroot}%{_libdir} %{buildroot}/%{_lib}
%if "%{rtldlib}" != "%{_lib}"
mkdir -p %{buildroot}%{rtlddir}
ln -s %{buildroot}%{rtlddir} %{buildroot}/%{rtldlib}
%endif
mkdir -p %{buildroot}%{_sbindir}
ln -s %{buildroot}%{_sbindir} %{buildroot}/sbin
%endif
%ifarch riscv64 %ifarch riscv64
mkdir -p %{buildroot}%{_libdir} mkdir -p %{buildroot}%{_libdir}
ln -s . %{buildroot}%{_libdir}/lp64d ln -s . %{buildroot}%{_libdir}/lp64d
mkdir -p %{buildroot}/%{_lib} %if "%{slibdir}" != "%{_libdir}"
ln -s . %{buildroot}/%{_lib}/lp64d mkdir -p %{buildroot}%{slibdir}
ln -s . %{buildroot}%{slibdir}/lp64d
%endif %endif
%endif %endif
@ -718,7 +809,7 @@ cd manpages; make install_root=%{buildroot} install; cd ..
%ifnarch i686 %ifnarch i686
cp nscd/nscd.conf %{buildroot}/etc cp nscd/nscd.conf %{buildroot}/etc
mkdir -p %{buildroot}/etc/init.d mkdir -p %{buildroot}/etc/init.d
ln -sf /sbin/service %{buildroot}/usr/sbin/rcnscd ln -sf %{rootsbindir}/service %{buildroot}%{_sbindir}/rcnscd
mkdir -p %{buildroot}/run/nscd mkdir -p %{buildroot}/run/nscd
mkdir -p %{buildroot}/var/lib/nscd mkdir -p %{buildroot}/var/lib/nscd
%endif %endif
@ -748,7 +839,7 @@ touch %{buildroot}/etc/ld.so.cache
# Don't look at ldd! We don't wish a /bin/sh requires # Don't look at ldd! We don't wish a /bin/sh requires
chmod 644 %{buildroot}%{_bindir}/ldd chmod 644 %{buildroot}%{_bindir}/ldd
rm -f %{buildroot}/sbin/sln rm -f %{buildroot}%{rootsbindir}/sln
# Remove the buildflags tracking section and the build-id # Remove the buildflags tracking section and the build-id
for o in %{buildroot}/%{_libdir}/crt[1in].o %{buildroot}/%{_libdir}/lib*_nonshared.a; do for o in %{buildroot}/%{_libdir}/crt[1in].o %{buildroot}/%{_libdir}/lib*_nonshared.a; do
@ -762,9 +853,9 @@ mkdir -p %{buildroot}/usr/lib/systemd/system
install -m 644 %{SOURCE21} %{buildroot}/usr/lib/systemd/system install -m 644 %{SOURCE21} %{buildroot}/usr/lib/systemd/system
%endif %endif
%ifarch armv6hl armv7hl %if 0%{?rtld_oldname:1}
# Provide compatibility link # Provide compatibility link
ln -s ld-%{libversion}.so %{buildroot}/lib/ld-linux.so.3 ln -s %{slibdir}/ld-%{libversion}.so %{buildroot}%{rtlddir}/%{rtld_oldname}
%endif %endif
# Move getconf to %{_libexecdir}/getconf/ to avoid cross device link # Move getconf to %{_libexecdir}/getconf/ to avoid cross device link
@ -773,8 +864,8 @@ ln -s %{_libexecdir}/getconf/getconf %{buildroot}%{_bindir}/getconf
%if !%{build_utils} %if !%{build_utils}
# Remove unwanted files (packaged in glibc-utils) # Remove unwanted files (packaged in glibc-utils)
rm -f %{buildroot}/%{_lib}/libmemusage* rm -f %{buildroot}%{slibdir}/libmemusage*
rm -f %{buildroot}/%{_lib}/libpcprofile* rm -f %{buildroot}%{slibdir}/libpcprofile*
rm -f %{buildroot}%{_bindir}/memusage* rm -f %{buildroot}%{_bindir}/memusage*
rm -f %{buildroot}%{_bindir}/mtrace rm -f %{buildroot}%{_bindir}/mtrace
rm -f %{buildroot}%{_bindir}/pcprofiledump rm -f %{buildroot}%{_bindir}/pcprofiledump
@ -801,22 +892,22 @@ ln -s %{_prefix}/share/misc/Makefile.makedb %{buildroot}/var/lib/misc/Makefile
# LSB # LSB
%ifarch %ix86 %ifarch %ix86
ln -sf /%{_lib}/ld-linux.so.2 $RPM_BUILD_ROOT/%{_lib}/ld-lsb.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb.so.3
%endif %endif
%ifarch x86_64 %ifarch x86_64
ln -sf /%{_lib}/ld-linux-x86-64.so.2 $RPM_BUILD_ROOT/%{_lib}/ld-lsb-x86-64.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb-x86-64.so.3
%endif %endif
%ifarch ppc %ifarch ppc
ln -sf /%{_lib}/ld.so.1 $RPM_BUILD_ROOT/%{_lib}/ld-lsb-ppc32.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb-ppc32.so.3
%endif %endif
%ifarch ppc64 %ifarch ppc64
ln -sf /%{_lib}/ld64.so.1 $RPM_BUILD_ROOT/%{_lib}/ld-lsb-ppc64.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb-ppc64.so.3
%endif %endif
%ifarch s390 %ifarch s390
ln -sf /%{_lib}/ld.so.1 $RPM_BUILD_ROOT/%{_lib}/ld-lsb-s390.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb-s390.so.3
%endif %endif
%ifarch s390x %ifarch s390x
ln -sf /%{_lib}/ld64.so.1 $RPM_BUILD_ROOT/%{_lib}/ld-lsb-s390x.so.3 ln -sf %{slibdir}/%{rtld_name} $RPM_BUILD_ROOT%{slibdir}/ld-lsb-s390x.so.3
%endif %endif
%else %else
@ -827,14 +918,45 @@ make %{?_smp_mflags} install_root=%{buildroot} install -C cc-base \
subdirs='malloc debug elf' subdirs='malloc debug elf'
cd manpages; make install_root=%{buildroot} install; cd .. cd manpages; make install_root=%{buildroot} install; cd ..
# Remove unwanted files # Remove unwanted files
rm -f %{buildroot}/%{_lib}/ld*.so* %{buildroot}/%{_lib}/lib[!mp]* rm -f %{buildroot}%{slibdir}/ld*.so* %{buildroot}%{slibdir}/lib[!mp]*
rm -f %{buildroot}/lib/ld*.so* %if "%{rtlddir}" != "%{slibdir}"
rm -f %{buildroot}%{rtlddir}/ld*.so*
%endif
rm -f %{buildroot}%{_libdir}/lib* rm -f %{buildroot}%{_libdir}/lib*
rm -f %{buildroot}%{_bindir}/{catchsegv,ldd*,sprof} rm -f %{buildroot}%{_bindir}/{catchsegv,ldd*,sprof}
rm -rf %{buildroot}%{_mandir}/man* rm -rf %{buildroot}%{_mandir}/man*
rm -rf %{buildroot}/sbin %{buildroot}%{_includedir} rm -rf %{buildroot}%{rootsbindir} %{buildroot}%{_includedir}
%ifarch riscv64 %ifarch riscv64
rm %{buildroot}/%{_lib}/lp64d %{buildroot}%{_libdir}/lp64d rm %{buildroot}%{_libdir}/lp64d
%if "%{slibdir}" != "%{_libdir}"
rm %{buildroot}%{slibdir}/lp64d
%endif
%endif
%endif
%endif
%if %{with usrmerged}
rm %{buildroot}/%{_lib}
%if "%{rtldlib}" != "%{_lib}"
rm %{buildroot}/%{rtldlib}
%endif
rm %{buildroot}/sbin
%if %{build_main}
mkdir -p %{buildroot}/%{_lib}
cp %{buildroot}%{slibdir}/libc.so.6 %{buildroot}/%{_lib}
mkdir -p %{buildroot}/%{rtldlib}
cp %{buildroot}%{rtlddir}/%{rtld_name} %{buildroot}/%{rtldlib}
mkdir -p %{buildroot}/sbin
cp %{buildroot}%{rootsbindir}/ldconfig %{buildroot}/sbin
strip %{buildroot}/%{_lib}/libc.so.6 %{buildroot}/%{rtldlib}/%{rtld_name}
strip %{buildroot}/sbin/ldconfig
%ifarch riscv64
ln -s . %{buildroot}/%{_lib}/lp64d
%endif
%endif %endif
%endif %endif
@ -864,16 +986,16 @@ libraries = { "libc.so.6", "libc.so.6.1", "libm.so.6", "libm.so.6.1",
"librt.so.1", "libpthread.so.0", "libthread_db.so.1" } "librt.so.1", "libpthread.so.0", "libthread_db.so.1" }
remove_dirs = { remove_dirs = {
%ifarch i586 %ifarch i586
"/%{_lib}/i686/", "%{slibdir}/i686/",
%endif %endif
%ifarch ppc ppc64 %ifarch ppc ppc64
"/%{_lib}/power4/", "/%{_lib}/ppc970/", "%{slibdir}/power4/", "%{slibdir}/ppc970/",
"/%{_lib}/power5/", "/%{_lib}/power5+/", "%{slibdir}/power5/", "%{slibdir}/power5+/",
"/%{_lib}/power6/", "/%{_lib}/power6x/", "%{slibdir}/power6/", "%{slibdir}/power6x/",
"/%{_lib}/power7/", "%{slibdir}/power7/",
"/%{_lib}/ppc-cell-be/", "%{slibdir}/ppc-cell-be/",
%endif %endif
"/%{_lib}/tls/" "%{slibdir}/tls/"
} }
for i, remove_dir in ipairs(remove_dirs) do for i, remove_dir in ipairs(remove_dirs) do
for j, library in ipairs(libraries) do for j, library in ipairs(libraries) do
@ -888,15 +1010,15 @@ for i, remove_dir in ipairs(remove_dirs) do
os.remove(file) os.remove(file)
end end
end end
if posix.access("/sbin/ldconfig", "x") then if posix.access("%{rootsbindir}/ldconfig", "x") then
exec("/sbin/ldconfig", "-X") exec("%{rootsbindir}/ldconfig", "-X")
end end
if posix.utime("%{_libdir}/gconv/gconv-modules.cache") then if posix.utime("%{_libdir}/gconv/gconv-modules.cache") then
exec("/usr/sbin/iconvconfig", "-o", "%{_libdir}/gconv/gconv-modules.cache", exec("/usr/sbin/iconvconfig", "-o", "%{_libdir}/gconv/gconv-modules.cache",
"--nostdlib", "%{_libdir}/gconv") "--nostdlib", "%{_libdir}/gconv")
end end
%postun -p /sbin/ldconfig %postun -p %{rootsbindir}/ldconfig
%post locale-base %post locale-base
/usr/sbin/iconvconfig /usr/sbin/iconvconfig
@ -909,7 +1031,7 @@ end
%pre -n nscd %pre -n nscd
getent group nscd >/dev/null || %{_sbindir}/groupadd -r nscd getent group nscd >/dev/null || %{_sbindir}/groupadd -r nscd
getent passwd nscd >/dev/null || %{_sbindir}/useradd -r -g nscd -c "User for nscd" -s /sbin/nologin -d /run/nscd nscd getent passwd nscd >/dev/null || %{_sbindir}/useradd -r -g nscd -c "User for nscd" -s %{rootsbindir}/nologin -d /run/nscd nscd
%service_add_pre nscd.service %service_add_pre nscd.service
%preun -n nscd %preun -n nscd
@ -948,94 +1070,66 @@ exit 0
%doc %{_mandir}/man1/gencat.1.gz %doc %{_mandir}/man1/gencat.1.gz
%doc %{_mandir}/man1/getconf.1.gz %doc %{_mandir}/man1/getconf.1.gz
%doc %{_mandir}/man5/* %doc %{_mandir}/man5/*
/%{_lib}/ld-%{libversion}.so
# Each architecture has a different name for the dynamic linker: %{slibdir}/ld-%{libversion}.so
%ifarch %arm %{slibdir}/%{rtld_name}
%ifarch armv6hl armv7hl %if "%{rtlddir}" != "%{slibdir}"
/%{_lib}/ld-linux-armhf.so.3 %{rtlddir}/%{rtld_name}
# Keep compatibility link
/%{_lib}/ld-linux.so.3
%else
/%{_lib}/ld-linux.so.3
%endif %endif
%endif %if 0%{?rtld_oldname:1}
%ifarch ia64 %{rtlddir}/%{rtld_oldname}
/%{_lib}/ld-linux-ia64.so.2
%endif
%ifarch ppc s390 mips hppa m68k
/%{_lib}/ld.so.1
%endif
%ifarch ppc64
/%{_lib}/ld64.so.1
%endif
%ifarch ppc64le
/%{_lib}/ld64.so.2
%endif
%ifarch s390x
/lib/ld64.so.1
/%{_lib}/ld64.so.1
%endif
%ifarch x86_64
/%{_lib}/ld-linux-x86-64.so.2
%endif
%ifarch %ix86 %sparc
/%{_lib}/ld-linux.so.2
%endif
%ifarch aarch64
/lib/ld-linux-aarch64.so.1
/%{_lib}/ld-linux-aarch64.so.1
%endif
%ifarch riscv64
/lib/ld-linux-riscv64-lp64d.so.1
/%{_lib}/ld-linux-riscv64-lp64d.so.1
/%{_lib}/lp64d
%{_libdir}/lp64d
%endif %endif
%ifarch %ix86 x86_64 ppc ppc64 s390 s390x %ifarch %ix86 x86_64 ppc ppc64 s390 s390x
# LSB # LSB
/%{_lib}/*-lsb*.so.3 %{slibdir}/*-lsb*.so.3
%endif %endif
/%{_lib}/libBrokenLocale-%{libversion}.so %ifarch riscv64
/%{_lib}/libBrokenLocale.so.1 %{_libdir}/lp64d
/%{_lib}/libSegFault.so %if "%{slibdir}" != "%{_libdir}"
/%{_lib}/libanl-%{libversion}.so %{slibdir}/lp64d
/%{_lib}/libanl.so.1
/%{_lib}/libc-%{libversion}.so
/%{_lib}/libc.so.6*
/%{_lib}/libdl-%{libversion}.so
/%{_lib}/libdl.so.2*
/%{_lib}/libm-%{libversion}.so
/%{_lib}/libm.so.6*
%ifarch x86_64
/%{_lib}/libmvec-%{libversion}.so
/%{_lib}/libmvec.so.1
%endif %endif
/%{_lib}/libnsl-%{libversion}.so %endif
/%{_lib}/libnsl.so.1
/%{_lib}/libnss_compat-%{libversion}.so %{slibdir}/libBrokenLocale-%{libversion}.so
/%{_lib}/libnss_compat.so.2 %{slibdir}/libBrokenLocale.so.1
/%{_lib}/libnss_db-%{libversion}.so %{slibdir}/libSegFault.so
/%{_lib}/libnss_db.so.2 %{slibdir}/libanl-%{libversion}.so
/%{_lib}/libnss_dns-%{libversion}.so %{slibdir}/libanl.so.1
/%{_lib}/libnss_dns.so.2 %{slibdir}/libc-%{libversion}.so
/%{_lib}/libnss_files-%{libversion}.so %{slibdir}/libc.so.6*
/%{_lib}/libnss_files.so.2 %{slibdir}/libdl-%{libversion}.so
/%{_lib}/libnss_hesiod-%{libversion}.so %{slibdir}/libdl.so.2*
/%{_lib}/libnss_hesiod.so.2 %{slibdir}/libm-%{libversion}.so
/%{_lib}/libpthread-%{libversion}.so %{slibdir}/libm.so.6*
/%{_lib}/libpthread.so.0 %ifarch x86_64
/%{_lib}/libresolv-%{libversion}.so %{slibdir}/libmvec-%{libversion}.so
/%{_lib}/libresolv.so.2 %{slibdir}/libmvec.so.1
/%{_lib}/librt-%{libversion}.so %endif
/%{_lib}/librt.so.1 %{slibdir}/libnsl-%{libversion}.so
/%{_lib}/libthread_db-1.0.so %{slibdir}/libnsl.so.1
/%{_lib}/libthread_db.so.1 %{slibdir}/libnss_compat-%{libversion}.so
/%{_lib}/libutil-%{libversion}.so %{slibdir}/libnss_compat.so.2
/%{_lib}/libutil.so.1 %{slibdir}/libnss_db-%{libversion}.so
%{slibdir}/libnss_db.so.2
%{slibdir}/libnss_dns-%{libversion}.so
%{slibdir}/libnss_dns.so.2
%{slibdir}/libnss_files-%{libversion}.so
%{slibdir}/libnss_files.so.2
%{slibdir}/libnss_hesiod-%{libversion}.so
%{slibdir}/libnss_hesiod.so.2
%{slibdir}/libpthread-%{libversion}.so
%{slibdir}/libpthread.so.0
%{slibdir}/libresolv-%{libversion}.so
%{slibdir}/libresolv.so.2
%{slibdir}/librt-%{libversion}.so
%{slibdir}/librt.so.1
%{slibdir}/libthread_db-1.0.so
%{slibdir}/libthread_db.so.1
%{slibdir}/libutil-%{libversion}.so
%{slibdir}/libutil.so.1
%dir %attr(0700,root,root) /var/cache/ldconfig %dir %attr(0700,root,root) /var/cache/ldconfig
/sbin/ldconfig %{rootsbindir}/ldconfig
%{_bindir}/gencat %{_bindir}/gencat
%{_bindir}/getconf %{_bindir}/getconf
%{_bindir}/getent %{_bindir}/getent
@ -1081,7 +1175,24 @@ exit 0
%{_bindir}/sprof %{_bindir}/sprof
%{_includedir}/* %{_includedir}/*
%{_libdir}/*.o %{_libdir}/*.o
%{_libdir}/*.so %{_libdir}/libBrokenLocale.so
%{_libdir}/libanl.so
%{_libdir}/libc.so
%{_libdir}/libdl.so
%{_libdir}/libm.so
%ifarch x86_64
%{_libdir}/libmvec.so
%endif
%{_libdir}/libnss_compat.so
%{_libdir}/libnss_db.so
%{_libdir}/libnss_dns.so
%{_libdir}/libnss_files.so
%{_libdir}/libnss_hesiod.so
%{_libdir}/libpthread.so
%{_libdir}/libresolv.so
%{_libdir}/librt.so
%{_libdir}/libthread_db.so
%{_libdir}/libutil.so
# These static libraries are needed even for shared builds # These static libraries are needed even for shared builds
%{_libdir}/libc_nonshared.a %{_libdir}/libc_nonshared.a
%{_libdir}/libg.a %{_libdir}/libg.a
@ -1170,13 +1281,24 @@ exit 0
%files lang -f libc.lang %files lang -f libc.lang
%endif %endif
%if %{with usrmerged}
%files usrmerge-bootstrap-helper
%defattr(-,root,root)
/sbin/ldconfig
/%{_lib}/libc.so.6
/%{rtldlib}/%{rtld_name}
%ifarch riscv64
/%{_lib}/lp64d
%endif
%endif
%endif %endif
%if %{build_utils} %if %{build_utils}
%files -n glibc-utils %files -n glibc-utils
%defattr(-,root,root) %defattr(-,root,root)
/%{_lib}/libmemusage.so %{slibdir}/libmemusage.so
/%{_lib}/libpcprofile.so %{slibdir}/libpcprofile.so
%dir %{_libdir}/audit %dir %{_libdir}/audit
%{_libdir}/audit/sotruss-lib.so %{_libdir}/audit/sotruss-lib.so
%{_bindir}/memusage %{_bindir}/memusage