- PLD merge
[packages/filesystem.git] / filesystem.spec
1 # NOTE
2 # - do not use any other user/group than "root", as then we have to depend on "setup" package.
3 #   see the gid_xxx macros and post scriptlet
4 # FIXME: verify shows changed groups of dirs changed this way
5 Summary:        Common directories
6 Summary(pl.UTF-8):      Wspólne katalogi
7 Name:           filesystem
8 Version:        4.1
9 Release:        15
10 License:        GPL
11 Group:          Base
12 BuildRequires:  automake
13 BuildRequires:  mktemp
14 BuildRequires:  rpm >= 4.4.9-56
15 Requires:       FHS >= 3.0
16 Provides:       browser-plugins(%{_target_base_arch})
17 %ifarch %{x8664}
18 Provides:       browser-plugins(i386)
19 %endif
20 Provides:       filesystem-debuginfo = %{version}-%{release}
21 Obsoletes:      filesystem-debuginfo < 3.0-36
22 Conflicts:      X11-libs < 1:7.7
23 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
24
25 # Adapter: This file does not like to be adapterized!
26
27 # disable rpm generated debug package, we handle it differently here
28 %define         _enable_debug_packages  0
29
30 %if "%{_lib}" == "lib64"
31 %define         with_lib64      1
32 %endif
33
34 # avoid rpm 4.4.9 adding rm -rf buildroot
35 %define         __spec_clean_body       %{nil}
36
37 # directory for "privilege separation" chroot
38 %define         _privsepdir     /usr/share/empty
39 # directory for *.idl files (for CORBA implementations)
40 %define         _idldir         /usr/share/idl
41
42 # we have to use numeric uids/groups. see comment beginning of the spec
43 %define         gid_logs        124
44 %define         gid_crontab     117
45
46 %description
47 This package contains common directories for packages that extend some
48 programs functionality, but don't require them themselves.
49
50 %description -l pl.UTF-8
51 Ten pakiet zawiera wspólne katalogi dla pakietów rozszerzających
52 funkcjonalność programów, ale nie wymagających ich.
53
54 %prep
55 %setup -qcT
56
57 %install
58 rm -rf $RPM_BUILD_ROOT
59
60 install -d \
61         $RPM_BUILD_ROOT/{initrd,selinux} \
62         $RPM_BUILD_ROOT/etc/{NetworkManager/dispatcher.d,X11/xinit/{xinput,xinitrc}.d,certs,cron.d,default,logrotate.d,fonts/conf.d,modprobe.d,modules-load.d,pki/{CA,tls},security,skel,sysconfig,sysctl.d,tmpwatch,xdg/colors} \
63         $RPM_BUILD_ROOT/home/{users,services} \
64         $RPM_BUILD_ROOT/lib/{firmware,security,udev/{hwdb.d,rules.d}} \
65         $RPM_BUILD_ROOT/usr/include/{security,X11} \
66         $RPM_BUILD_ROOT/usr/lib/{ConsoleKit/run-session.d,browser-plugins,cgi-bin,cmake,mozilla/extensions,pkcs11,pkgconfig,initrd} \
67         $RPM_BUILD_ROOT/usr/share/{appdata,augeas/lenses/tests,backgrounds,cmake/Modules,defaults,factory/etc/pam.d,fontconfig/conf.avail,gnome/help,mate/help,man/man{n,l},man/pl/mann,metainfo,pkgconfig,soundfonts,sounds,themes/Default,thumbnailers,vala/vapi,wallpapers,wayland-sessions,xdg-desktop-portal/portals,xsessions,zsh/site-functions} \
68         $RPM_BUILD_ROOT/usr/src/examples \
69         $RPM_BUILD_ROOT/var/lock/subsys \
70         $RPM_BUILD_ROOT/var/log/archive \
71         $RPM_BUILD_ROOT%{_aclocaldir} \
72         $RPM_BUILD_ROOT%{_fontsdir}/{{100,75}dpi,OTF,Speedo,Type1/{afm,pfm},TTF,cyrillic,local,misc} \
73         $RPM_BUILD_ROOT{%{_idldir},%{_privsepdir}} \
74         $RPM_BUILD_ROOT/boot/efi/EFI \
75         $RPM_BUILD_ROOT/etc/OpenCL/vendors
76
77 # XDG Autostart specs: https://specifications.freedesktop.org/autostart-spec/autostart-spec-latest.html
78 install -d $RPM_BUILD_ROOT/etc/xdg/autostart
79
80 # XDG Desktop Menus specs: https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html
81 # (+custom AppDir hierarchy)
82 install -d $RPM_BUILD_ROOT{/etc/xdg/menus/applications-merged,/usr/share/desktop-directories,%{_desktopdir}/{docklets,screensavers}}
83
84 # XDG Icon Theme specs: https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
85 # (top level only)
86 install -d $RPM_BUILD_ROOT{%{_iconsdir},%{_pixmapsdir}}
87
88 # XDG Sound Theme specs: https://specifications.freedesktop.org/sound-theme-spec/sound-theme-spec-latest.html
89 # (top level only)
90 install -d $RPM_BUILD_ROOT/usr/share/sounds
91
92 > %{name}.lang
93 install -d $RPM_BUILD_ROOT/usr/share/help/C
94
95 for lang in aa aa@saaho af ak am an ang anp ar ar_TN as ast az az_IR \
96         be be@latin be@tarask bem bg bho bn bn_IN bo br brx bs byn \
97         ca ca@valencia ce chr ckb cmn crh cs csb cv cy \
98         da de de_AT de_CH doi dv dz \
99         el en en_AU en_CA en_GB en_NZ en@shaw en_US eo es \
100         es_AR es_CL es_CO es_CR es_DO es_EC es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_SV es_UY es_VE \
101         et eu fa ff fi fil fo fr fr_BE fr_CA fr_CH fur fy ga gd gez gl gu gv \
102         ha he hi hne hr hsb ht hu hy ia id ig ik is it it_CH iu ja \
103         ka kab kg kk kl km kn ko kok ks ks@devanagari ku kw ky la lb lg li ln lo lt lv \
104         mai mg mhr mi mk ml mn mni mr ms mt my nb nds ne nl nl_BE nn nr nso oc om or \
105         pa pap pl ps pt pt_BR quz rm ro ru rw \
106         sa sat sc sd sd@devanagari se shn si sid sk sl so sq \
107         sr sr@ijekavian sr@ijekavianlatin sr@latin ss st sv sw szl \
108         ta te tg th ti tig tk tl tlh tn tpi tr ts tt tt@iqtelif \
109         ug uk ur uz uz@cyrillic ve vi wa wal wo xh yi yo zh_CN zh_HK zh_TW zu; do
110         install -d $RPM_BUILD_ROOT/usr/share/help/${lang}
111         echo "%%lang($lang) %dir /usr/share/help/${lang}" >> %{name}.lang
112 done
113
114 %if %{with lib64}
115 install -d \
116         $RPM_BUILD_ROOT/lib64/security \
117         $RPM_BUILD_ROOT/usr/lib64/{browser-plugins,cmake,initrd,mozilla/extensions,pkcs11,pkgconfig} \
118         $RPM_BUILD_ROOT/usr/lib/debug/lib64/security
119 %endif
120
121 install -d \
122         $RPM_BUILD_ROOT/usr/lib/debug/%{_lib} \
123         $RPM_BUILD_ROOT/usr/lib/debug%{_libdir} \
124         $RPM_BUILD_ROOT/usr/lib/debug/{bin,sbin} \
125         $RPM_BUILD_ROOT/usr/lib/debug/usr/{bin,sbin} \
126         $RPM_BUILD_ROOT/usr/lib/debug/lib/security \
127         $RPM_BUILD_ROOT/usr/src/debug
128
129 %clean
130 cd $RPM_BUILD_ROOT
131
132 check_filesystem_dirs() {
133         RPMFILE=%{_rpmdir}/%{name}-%{version}-%{release}.%{_target_cpu}.rpm
134         TMPFILE=$(mktemp)
135         # note: we must exclude from check all existing dirs belonging to FHS
136         find | sed -e 's|^\.||g' -e '/^$/d' | LC_ALL=C sort | grep -v $TMPFILE | \
137         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
138
139         if rpm -qpl $RPMFILE | grep -v '^/$' | LC_ALL=C sort | diff -u $TMPFILE - ; then
140                 rm -rf $RPM_BUILD_ROOT
141         else
142                 echo -e "\nNot so good, some directories are not included in package\n"
143                 exit 1
144         fi
145         rm -f $TMPFILE
146 }
147
148 check_filesystem_dirs
149
150 %pretrans -p <lua>
151 -- this needs to be a dir
152 if posix.stat("/usr/include/X11", "type") == "link" then
153         posix.umask("0755");
154         os.rename("/usr/include/X11", "/usr/include/X11.rpmsave")
155         posix.mkdir("/usr")
156         posix.mkdir("/usr/include")
157         posix.mkdir("/usr/include/X11")
158         oldpwd = posix.getcwd()
159         posix.chdir("/usr/include/X11.rpmsave")
160         for i,j in pairs(posix.glob("*")) do
161                 os.rename(j, "/usr/include/X11/" .. j)
162         end
163         posix.chdir(oldpwd)
164 end
165
166 %post -p <lua>
167 posix.chown("/var/log/archive", 0, %{gid_logs})
168 posix.chown("/etc/cron.d", 0, %{gid_crontab})
169
170 %files -f %{name}.lang
171 %defattr(644,root,root,755)
172 %dir /boot/efi
173 %dir /boot/efi/EFI
174 %dir /etc/X11/xinit
175 %dir /etc/X11/xinit/xinitrc.d
176 %dir /etc/X11/xinit/xinput.d
177 %dir /etc/OpenCL
178 %dir /etc/OpenCL/vendors
179 %attr(751,root,root) %dir /etc/certs
180 %dir /etc/cron.d
181 %dir /etc/default
182 %dir /etc/fonts
183 %dir /etc/fonts/conf.d
184 %dir /etc/logrotate.d
185 %dir /etc/modprobe.d
186 %dir /etc/modules-load.d
187 %dir /etc/pki
188 %dir /etc/pki/CA
189 %dir /etc/pki/tls
190 %attr(751,root,root) %dir /etc/security
191 %dir /etc/skel
192 %dir /etc/sysconfig
193 %dir /etc/sysctl.d
194 %dir /etc/tmpwatch
195 %dir /etc/xdg
196 %dir /etc/xdg/autostart
197 %dir /etc/xdg/colors
198 %dir /etc/xdg/menus
199 %dir /etc/xdg/menus/applications-merged
200 %dir /etc/NetworkManager
201 %dir /etc/NetworkManager/dispatcher.d
202 %dir /home/users
203 %dir /home/services
204 %dir /initrd
205 %dir /lib/firmware
206 %dir /lib/security
207 # for library packages or other software with optional udev support not to pull udev
208 %dir /lib/udev
209 %dir /lib/udev/hwdb.d
210 %dir /lib/udev/rules.d
211 %dir /selinux
212 %dir /usr/include/X11
213 %dir /usr/include/security
214 %dir /usr/lib/ConsoleKit
215 %dir /usr/lib/ConsoleKit/run-session.d
216 %dir /usr/lib/browser-plugins
217 %dir /usr/lib/cgi-bin
218 %dir /usr/lib/cmake
219 %dir /usr/lib/initrd
220 %dir /usr/lib/mozilla
221 %dir /usr/lib/mozilla/extensions
222 %dir /usr/lib/pkcs11
223 %dir /usr/lib/pkgconfig
224 %dir /usr/share/appdata
225 %dir /usr/share/augeas
226 %dir /usr/share/augeas/lenses
227 %dir /usr/share/augeas/lenses/tests
228 %dir /usr/share/backgrounds
229 %dir /usr/share/cmake
230 %dir /usr/share/cmake/Modules
231 %dir /usr/share/defaults
232 %dir /usr/share/desktop-directories
233 %dir /usr/share/factory
234 %dir /usr/share/factory/etc
235 %dir /usr/share/factory/etc/pam.d
236 %dir /usr/share/fontconfig
237 %dir /usr/share/fontconfig/conf.avail
238 %dir /usr/share/gnome
239 %dir /usr/share/gnome/help
240 %dir /usr/share/mate
241 %dir /usr/share/mate/help
242 %dir /usr/share/metainfo
243 %dir /usr/share/help
244 %dir /usr/share/help/C
245 %dir /usr/share/man/man[nl]
246 %lang(pl) %dir /usr/share/man/pl/mann
247 %dir /usr/share/pkgconfig
248 %dir /usr/share/soundfonts
249 %dir /usr/share/sounds
250 %dir /usr/share/themes
251 %dir /usr/share/themes/Default
252 %dir /usr/share/thumbnailers
253 %dir /usr/share/vala
254 %dir /usr/share/vala/vapi
255 %dir /usr/share/wallpapers
256 %dir /usr/share/wayland-sessions
257 %dir /usr/share/xdg-desktop-portal
258 %dir /usr/share/xdg-desktop-portal/portals
259 %dir /usr/share/xsessions
260 %dir /usr/share/zsh
261 %dir /usr/share/zsh/site-functions
262 %dir /usr/src/examples
263 %attr(700,root,root) %dir /var/lock/subsys
264 %attr(751,root,root) %dir /var/log/archive
265 %dir %{_aclocaldir}
266 %dir %{_desktopdir}
267 %dir %{_desktopdir}/docklets
268 %dir %{_desktopdir}/screensavers
269 %dir %{_iconsdir}
270 %dir %{_pixmapsdir}
271 %{_fontsdir}
272 %dir %{_idldir}
273 %dir %{_privsepdir}
274 %if %{with lib64}
275 %dir /lib64/security
276 %dir /usr/lib64/browser-plugins
277 %dir /usr/lib64/cmake
278 %dir /usr/lib64/initrd
279 %dir /usr/lib64/mozilla
280 %dir /usr/lib64/mozilla/extensions
281 %dir /usr/lib64/pkcs11
282 %dir /usr/lib64/pkgconfig
283 %endif
284
285 # debuginfo
286 %dir /usr/lib/debug
287 /usr/lib/debug/*
288
289 %dir /usr/src/debug