# NOTE # - do not use any other user/group than "root", as then we have to depend on "setup" package. # see the gid_xxx macros and post scriptlet # FIXME: verify shows changed groups of dirs changed this way # disable rpm generated debug package, we handle it differently here %define _enable_debug_packages 0 # avoid rpm 4.4.9 adding rm -rf buildroot %define __spec_clean_body %{nil} Summary: Common directories Summary(pl.UTF-8): Wspólne katalogi Name: filesystem Version: 4.0 Release: 42 License: GPL Group: Base BuildRequires: automake BuildRequires: mktemp BuildRequires: rpm >= 4.4.9-56 Requires: FHS >= 2.3-15 Provides: browser-plugins(%{_target_base_arch}) %ifarch %{x8664} Provides: browser-plugins(i386) %endif Provides: filesystem-debuginfo = %{version}-%{release} Obsoletes: filesystem-debuginfo < 3.0-36 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) # Adapter: This file does not like to be adapterized! %if "%{_lib}" == "lib64" %define with_lib64 1 %endif # directory for "privilege separation" chroot %define _privsepdir /usr/share/empty # directory for *.idl files (for CORBA implementations) %define _idldir /usr/share/idl # we have to use numeric uids/groups. see comment beginning of the spec %define gid_logs 124 %define gid_crontab 117 %description This package contains common directories for packages that extend some programs functionality, but don't require them themselves. %description -l pl.UTF-8 Ten pakiet zawiera wspólne katalogi dla pakietów rozszerzających funkcjonalność programów, ale nie wymagających ich. %prep %setup -qcT %install rm -rf $RPM_BUILD_ROOT install -d \ $RPM_BUILD_ROOT/{initrd,selinux,run,sys} \ $RPM_BUILD_ROOT/etc/{NetworkManager/dispatcher.d,X11/xinit/{xinput,xinitrc}.d,certs,cron.d,default,init,logrotate.d,fonts/conf.d,modprobe.d,pki/{CA,tls},security,skel,sysconfig,tmpwatch,xdg/{autostart,menus}} \ $RPM_BUILD_ROOT/home/{users,services} \ $RPM_BUILD_ROOT/lib/{firmware,security,udev/{hwdb.d,rules.d}} \ $RPM_BUILD_ROOT/usr/include/{security,X11} \ $RPM_BUILD_ROOT/usr/lib/{ConsoleKit/run-session.d,browser-plugins,cgi-bin,cmake,mozilla/extensions,pkcs11,pkgconfig,initrd,tmpfiles.d} \ $RPM_BUILD_ROOT/usr/share/{appdata,augeas/lenses/tests,backgrounds,cmake/Modules,color/icc,fontconfig/conf.avail,gnome/help,mate/help,man/man{n,l},man/pl/mann,ppd,pkgconfig,soundfonts,sounds,themes/Default,thumbnailers,vala/vapi,wallpapers,wayland-sessions,xsessions} \ $RPM_BUILD_ROOT/usr/src/examples \ $RPM_BUILD_ROOT/var/lib/color/icc \ $RPM_BUILD_ROOT/var/lock/subsys \ $RPM_BUILD_ROOT/var/log/archive \ $RPM_BUILD_ROOT{%{_aclocaldir},%{_desktopdir}/{docklets,screensavers},%{_iconsdir},%{_pixmapsdir}} \ $RPM_BUILD_ROOT%{_fontsdir}/{{100,75}dpi,OTF,Speedo,Type1/{afm,pfm},TTF,cyrillic,local,misc} \ $RPM_BUILD_ROOT{%{_idldir},%{_privsepdir}} \ $RPM_BUILD_ROOT/boot/efi/EFI \ $RPM_BUILD_ROOT/etc/OpenCL/vendors > %{name}.lang install -d $RPM_BUILD_ROOT/usr/share/help/C for lang in ar as ast bg bn_IN ca cs da de el en_GB es eu fa fi fr gl gu he hi hr hu id it ja ko kn lt lv mk ml mr nb nds nl oc pa pl ps pt pt_BR ro ru sk sl sr sr@latin sv ta te th tr uk vi zh_CN zh_HK zh_TW; do install -d $RPM_BUILD_ROOT/usr/share/help/${lang} echo "%%lang($lang) %dir /usr/share/help/${lang}" >> %{name}.lang done %if %{with lib64} install -d \ $RPM_BUILD_ROOT/lib64/security \ $RPM_BUILD_ROOT/usr/lib64/{browser-plugins,cmake,initrd,mozilla/extensions,pkcs11,pkgconfig} \ $RPM_BUILD_ROOT/usr/lib/debug/lib64/security %endif install -d \ $RPM_BUILD_ROOT/usr/lib/debug/%{_lib} \ $RPM_BUILD_ROOT/usr/lib/debug%{_libdir} \ $RPM_BUILD_ROOT/usr/lib/debug/{bin,sbin} \ $RPM_BUILD_ROOT/usr/lib/debug/usr/{bin,sbin} \ $RPM_BUILD_ROOT/usr/lib/debug/lib/security \ $RPM_BUILD_ROOT/usr/src/debug # create this for %clean tar -cf checkfiles.tar -C $RPM_BUILD_ROOT . %clean mkdir -p $RPM_BUILD_ROOT tar -xf checkfiles.tar -C $RPM_BUILD_ROOT cd $RPM_BUILD_ROOT check_filesystem_dirs() { RPMFILE=%{_rpmdir}/%{name}-%{version}-%{release}.%{_target_cpu}.rpm RPMFILE2=%{?with_debuginfo:%{_rpmdir}/%{name}-debuginfo-%{version}-%{release}.%{_target_cpu}.rpm} TMPFILE=$(mktemp) # note: we must exclude from check all existing dirs belonging to FHS find | sed -e 's|^\.||g' -e 's|^$||g' | LC_ALL=C sort | grep -v $TMPFILE | \ grep -E -v '^/(boot|etc|etc/X11|home|lib|lib64|libx32|usr|usr/include|usr/lib|usr/lib64|usr/libx32|usr/share|usr/share/man|usr/share/man/pl|usr/src|var|var/lib|var/lock|var/log)$' > $TMPFILE # find finds also '.', so use option -B for diff rpm -qpl $RPMFILE $RPMFILE2 | grep -v '^/$' | LC_ALL=C sort | diff -uB - $TMPFILE || : rm -f $TMPFILE } check_filesystem_dirs %pretrans -p -- this needs to be a dir if posix.stat("/usr/include/X11", "type") == "link" then posix.umask("0755"); os.rename("/usr/include/X11", "/usr/include/X11.rpmsave") posix.mkdir("/usr") posix.mkdir("/usr/include") posix.mkdir("/usr/include/X11") oldpwd = posix.getcwd() posix.chdir("/usr/include/X11.rpmsave") for i,j in pairs(posix.glob("*")) do os.rename(j, "/usr/include/X11/" .. j) end posix.chdir(oldpwd) end %post -p posix.chown("/var/log/archive", 0, %{gid_logs}) posix.chown("/etc/cron.d", 0, %{gid_crontab}) %files -f %{name}.lang %defattr(644,root,root,755) %dir /boot/efi %dir /boot/efi/EFI %dir /etc/X11/xinit %dir /etc/X11/xinit/xinitrc.d %dir /etc/X11/xinit/xinput.d %dir /etc/OpenCL %dir /etc/OpenCL/vendors %attr(751,root,root) %dir /etc/certs %dir /etc/cron.d %dir /etc/default %dir /etc/init %dir /etc/fonts %dir /etc/fonts/conf.d %dir /etc/logrotate.d %dir /etc/modprobe.d %dir /etc/modules-load.d %dir /etc/pki %dir /etc/pki/CA %dir /etc/pki/tls %attr(751,root,root) %dir /etc/security %dir /etc/skel %dir /etc/sysconfig %dir /etc/tmpwatch %dir /etc/xdg %dir /etc/xdg/autostart %dir /etc/xdg/menus %dir /etc/NetworkManager %dir /etc/NetworkManager/dispatcher.d %dir /home/users %dir /home/services %dir /initrd %dir /lib/firmware %dir /lib/security # for library packages or other software with optional udev support not to pull udev %dir /lib/udev %dir /lib/udev/hwdb.d %dir /lib/udev/rules.d # tmpfs mounted by rc-scripts %attr(1777,root,root) %dir /run %dir /selinux %dir /sys %dir /usr/include/X11 %dir /usr/include/security %dir /usr/lib/ConsoleKit %dir /usr/lib/ConsoleKit/run-session.d %dir /usr/lib/browser-plugins %dir /usr/lib/cgi-bin %dir /usr/lib/cmake %dir /usr/lib/initrd %dir /usr/lib/mozilla %dir /usr/lib/mozilla/extensions %dir /usr/lib/pkcs11 %dir /usr/lib/pkgconfig %dir /usr/lib/tmpfiles.d %dir /usr/share/appdata %dir /usr/share/augeas %dir /usr/share/augeas/lenses %dir /usr/share/augeas/lenses/tests %dir /usr/share/backgrounds %dir /usr/share/cmake %dir /usr/share/cmake/Modules %dir /usr/share/color %dir /usr/share/color/icc %dir /usr/share/fontconfig %dir /usr/share/fontconfig/conf.avail %dir /usr/share/gnome %dir /usr/share/gnome/help %dir /usr/share/mate %dir /usr/share/mate/help %dir /usr/share/help %dir /usr/share/help/C %dir /usr/share/man/man[nl] %lang(pl) %dir /usr/share/man/pl/mann %dir /usr/share/pkgconfig %dir /usr/share/ppd %dir /usr/share/soundfonts %dir /usr/share/sounds %dir /usr/share/themes %dir /usr/share/themes/Default %dir /usr/share/thumbnailers %dir /usr/share/vala %dir /usr/share/vala/vapi %dir /usr/share/wallpapers %dir /usr/share/wayland-sessions %dir /usr/share/xsessions %dir /usr/src/examples %dir /var/lib/color %dir /var/lib/color/icc %attr(700,root,root) %dir /var/lock/subsys %attr(751,root,root) %dir /var/log/archive %dir %{_aclocaldir} %dir %{_desktopdir} %dir %{_desktopdir}/docklets %dir %{_desktopdir}/screensavers %dir %{_iconsdir} %dir %{_pixmapsdir} %{_fontsdir} %dir %{_idldir} %dir %{_privsepdir} %if %{with lib64} %dir /lib64/security %dir /usr/lib64/browser-plugins %dir /usr/lib64/cmake %dir /usr/lib64/initrd %dir /usr/lib64/mozilla %dir /usr/lib64/mozilla/extensions %dir /usr/lib64/pkcs11 %dir /usr/lib64/pkgconfig %endif %if %{with libx32} %dir /libx32/security %dir /usr/libx32/browser-plugins %dir /usr/libx32/cmake %dir /usr/libx32/initrd %dir /usr/libx32/mozilla %dir /usr/libx32/mozilla/extensions %dir /usr/libx32/pkcs11 %dir /usr/libx32/pkgconfig %endif # debuginfo %dir /usr/lib/debug /usr/lib/debug/* %dir /usr/src/debug