X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=FHS.spec;h=2350ccc112cc6702d6c0b765f1790ffeacd63b76;hb=fa94c830d9948caff0fca09f49ed2a60c7189184;hp=f6e671fadda009aa1af1ab474afbccc42150253e;hpb=80d1ef5a6651627289d9b958d329f38370f2d2ae;p=packages%2FFHS.git diff --git a/FHS.spec b/FHS.spec index f6e671f..2350ccc 100644 --- a/FHS.spec +++ b/FHS.spec @@ -1,4 +1,11 @@ -# NOTE: don't use %{_*dir} macros for paths defined by FHS +# TODO +# - revise and update to 3.0: +# - https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard +# - http://www.linuxfoundation.org/collaborate/workgroups/lsb/fhs +# NOTE +# - don't use %{_*dir} macros for paths defined by FHS +# - do not add any dependencies to this pkg, FHS should be the first package being installed +# - do not use any other user/group than "root", as then we have to depend on "setup" package. Summary: Basic FHS 2.3 filesystem layout Summary(de.UTF-8): Grundlegende Dateisystemstruktur Summary(fr.UTF-8): Arborescence de base du système de fichiers @@ -6,16 +13,46 @@ Summary(pl.UTF-8): Podstawowy układ katalogów systemu Linux zgodny z FHS 2.3 Summary(tr.UTF-8): Temel dosya sistemi yapısı Name: FHS Version: 2.3 -Release: 19 +Release: 39 License: GPL Group: Base URL: http://www.pathname.com/fhs/ +Source0: locale-dirs +BuildRequires: mktemp BuildRequires: rpmbuild(macros) >= 1.213 -Requires: setup >= 2.4.6-4 +Conflicts: setup < 2.7 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) +# nothing to put there +%define _enable_debug_packages 0 + +%if "%{_lib}" == "lib64" +%define with_lib64 1 +%endif +%if "%{_lib}" == "libx32" +%define with_libx32 1 +%define with_lib64 1 +%else +%ifarch %{x8664} +# x32 as additional ABI +%define with_libx32 1 +%endif +%endif + +# avoid rpm 4.4.9 adding rm -rf buildroot, we need the dirs to check consistency +%define __spec_clean_body %{nil} + %define _locmandir /usr/local/man + +# doesn't contain any files, but we're not noarch package %define no_install_post_strip 1 +%define no_install_post_chrpath 1 +%define no_install_post_compress_modules 1 + +# we have to use numeric uids/groups. see comment above + +%define gid_uucp 14 +%define gid_mail 12 %description This package contains the basic directory layout for a Linux system, @@ -37,11 +74,9 @@ Pakiet ten zawiera informacje o podstawowej strukturze katalogów systemu i praw dostępu do nich. Struktura katalogów jest zgodna z FHS 2.3. -%description -l tr.UTF-8 -Bu paket GNU makro işleme dilini içerir. Mantıksal olarak -ayrıştırılabilen metin dosyaları yazımı için yararlıdır. - %prep +%setup -qcT +cp -a %{SOURCE0} . %install rm -rf $RPM_BUILD_ROOT @@ -50,47 +85,60 @@ install -d \ $RPM_BUILD_ROOT/{bin,boot,dev,etc,home,opt,srv} \ $RPM_BUILD_ROOT/etc/{X11,opt} \ $RPM_BUILD_ROOT/lib/modules \ - $RPM_BUILD_ROOT/{mnt,media/{cdrom,floppy},proc,root,sbin,tmp} \ + $RPM_BUILD_ROOT/{mnt,media,proc,root/tmp,sbin,tmp} \ $RPM_BUILD_ROOT/usr/{bin,games,include,lib,sbin,share,src} \ $RPM_BUILD_ROOT/usr/share/{dict,doc,games,info,misc,tmac,xml} \ $RPM_BUILD_ROOT/usr/lib/games \ $RPM_BUILD_ROOT/usr/local/{bin,etc,games,include,lib,sbin,share/{doc,info},src} \ $RPM_BUILD_ROOT/var/{cache,crash,db,games,lib/misc,local,lock,log,mail,opt,run,spool,tmp,yp} -%if "%{_lib}" == "lib64" +%if %{with lib64} install -d $RPM_BUILD_ROOT{/lib64,/usr/lib64/games,/usr/local/lib64} %endif +%if %{with libx32} +install -d $RPM_BUILD_ROOT{/libx32,/usr/libx32/games,/usr/local/libx32} +%endif -for manp in man{1,2,3,4,5,6,7,8} ; do - install -d $RPM_BUILD_ROOT/usr/share/man/${manp} - install -d $RPM_BUILD_ROOT%{_locmandir}/${manp} - for mloc in bg ca cs da de el eo es fi fr gl hr hu id it ja ko nl pl \ - pt pt_BR ro ru sk sl sr sv tr uk zh_CN zh_TW ; do - install -d $RPM_BUILD_ROOT/usr/share/man/${mloc}/${manp} - done -done +install -d $RPM_BUILD_ROOT/usr/share/man/man{1,2,3,4,5,6,7,8} +install -d $RPM_BUILD_ROOT%{_locmandir}/man{1,2,3,4,5,6,7,8} # "/usr/local/share/man and /usr/local/man must be synonomous" per FHS 2.3 ln -sf ../man $RPM_BUILD_ROOT/usr/local/share/man +> %{name}.lang +for mloc in $(cat locale-dirs); do + echo "%%lang($mloc) %dir /usr/share/man/${mloc}" >> %{name}.lang + for manp in man{1,2,3,4,5,6,7,8}; do + install -d $RPM_BUILD_ROOT/usr/share/man/${mloc}/${manp} + echo "%%lang($mloc) %dir /usr/share/man/${mloc}/${manp}" >> %{name}.lang + done +done + %clean cd $RPM_BUILD_ROOT -# %{_rpmfilename} is not expanded, so use -# %{name}-%{version}-%{release}.%{buildarch}.rpm -RPMFILE=%{name}-%{version}-%{release}.%{_target_cpu}.rpm -TMPFILE=%{name}-%{version}.tmp$$ -find . | sed -e 's|^\.||g' -e 's|^$||g' | sort | grep -v $TMPFILE > $TMPFILE - -# find finds also '.', so use option -B for diff -if rpm -qpl %{_rpmdir}/$RPMFILE | grep -v '^/$' | sort | diff -uB $TMPFILE - ; then - rm -rf $RPM_BUILD_ROOT -else - echo -e "\nNot so good, some directories are not included in package\n" - exit 1; -fi - -%files +check_filesystem_dirs() { + RPMFILE=%{name}-%{version}-%{release}.%{_target_cpu}.rpm + TMPFILE=$(mktemp) + find | sed -e 's|^\.||g' -e 's|^$||g' | LC_ALL=C sort > $TMPFILE + + # find finds also '.', so use option -B for diff + if rpm -qpl %{_rpmdir}/$RPMFILE | grep -v '^/$' | LC_ALL=C sort | diff -uB $TMPFILE - ; then + rm -rf $RPM_BUILD_ROOT + else + echo -e "\nNot so good, some directories are not included in package\n" + exit 1 + fi + rm -f $TMPFILE +} +check_filesystem_dirs + +# XXX: it is 2009, what uucp?! but we use /var/lock/subsys, so change it just to root? +%post -p +posix.chown("/var/mail", 0, %{gid_mail}) +posix.chown("/var/lock", 0, %{gid_uucp}) + +%files -f %{name}.lang %defattr(644,root,root,755) %dir / %dir /bin @@ -102,16 +150,15 @@ fi %dir /home %dir /lib %dir /lib/modules -%attr(775,root,disk) %dir /media -%attr(775,root,disk) /media/floppy -%attr(775,root,disk) /media/cdrom +%dir /media %dir /mnt %dir /opt -%attr(555,root,proc) %verify(not group) /proc -%attr(700,root,root) /root +%dir %attr(555,root,root) %verify(not group) /proc +%dir %attr(700,root,root) /root +%dir %attr(700,root,root) /root/tmp %dir /sbin -%attr(751,root,root) /srv -%attr(1777,root,root) /tmp +%dir %attr(755,root,root) /srv +%dir %attr(1777,root,root) /tmp %dir /usr %dir /usr/bin %dir /usr/games @@ -126,37 +173,6 @@ fi %dir /usr/share/info %dir /usr/share/man %dir /usr/share/man/man[1-8] -%lang(bg) /usr/share/man/bg -%lang(ca) /usr/share/man/ca -%lang(cs) /usr/share/man/cs -%lang(da) /usr/share/man/da -%lang(de) /usr/share/man/de -%lang(el) /usr/share/man/el -%lang(eo) /usr/share/man/eo -%lang(es) /usr/share/man/es -%lang(fi) /usr/share/man/fi -%lang(fr) /usr/share/man/fr -%lang(gl) /usr/share/man/gl -%lang(hr) /usr/share/man/hr -%lang(hu) /usr/share/man/hu -%lang(id) /usr/share/man/id -%lang(it) /usr/share/man/it -%lang(ja) /usr/share/man/ja -%lang(ko) /usr/share/man/ko -%lang(nl) /usr/share/man/nl -%lang(pl) /usr/share/man/pl -%lang(pt) /usr/share/man/pt -%lang(pt_BR) /usr/share/man/pt_BR -%lang(ro) /usr/share/man/ro -%lang(ru) /usr/share/man/ru -%lang(sl) /usr/share/man/sl -%lang(sk) /usr/share/man/sk -%lang(sr) /usr/share/man/sr -%lang(sv) /usr/share/man/sv -%lang(tr) /usr/share/man/tr -%lang(uk) /usr/share/man/uk -%lang(zh_CN) /usr/share/man/zh_CN -%lang(zh_TW) /usr/share/man/zh_TW %dir /usr/share/misc %dir /usr/share/tmac %dir /usr/share/xml @@ -182,17 +198,23 @@ fi %dir /var/lib %dir /var/lib/misc %dir /var/local -%attr(1771,root,uucp) %dir /var/lock -%attr(751,root,root) /var/log -%attr(2775,root,mail) /var/mail +%dir %attr(1771,root,root) /var/lock +%dir %attr(751,root,root) /var/log +%dir %attr(2775,root,root) /var/mail %dir /var/opt %dir /var/run %dir /var/spool %dir /var/yp -%attr(1777,root,root) %dir /var/tmp -%if "%{_lib}" == "lib64" +%dir %attr(1777,root,root) /var/tmp +%if %{with lib64} %dir /lib64 %dir /usr/lib64 %dir /usr/lib64/games %dir /usr/local/lib64 %endif +%if %{with libx32} +%dir /libx32 +%dir /usr/libx32 +%dir /usr/libx32/games +%dir /usr/local/libx32 +%endif