3 # - bittorrent complete doesn't actually handle our prognames
4 # - use mkinitrd and update for geninitrd
5 # - can we have duplicate trigger on pwdutils pkg? merge files?
6 # - fix vim not to mark this file as bash
7 Summary: bash-completion offers programmable completion for bash
8 Summary(pl.UTF-8): Programowalne uzupełnianie nazw dla basha
14 Group: Applications/Shells
15 Source0: http://bash-completion.alioth.debian.org/files/%{name}-%{version}.tar.gz
16 # Source0-md5: 593d3edcf287b9e9d735049bd4d3f229
17 Source1: %{name}-poldek.sh
19 # https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.0/+bug/106975
20 Source3: http://launchpadlibrarian.net/19164189/mysqldump
21 # Source3-md5: 09e4885be92e032400ed702f39925d85
22 Patch0: %{name}-rpm-cache.patch
23 Patch1: %{name}-service.patch
24 URL: http://bash-completion.alioth.debian.org/
25 Requires(triggerpostun): sed >= 4.0
26 Requires: bash >= 2.05a-3
27 Obsoletes: bash-completion-rpm-cache
28 Conflicts: rpm < 4.4.9-44
30 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
33 bash-completion is a collection of shell functions that take advantage
34 of the programmable completion feature of bash 2.04 and later.
36 %description -l pl.UTF-8
37 bash-completion jest kolekcją funkcji shella, które opierają się na
38 wbudowanych rozszerzeniach basha 2.04 lub późniejszego umożliwiającego
39 kompletowanie parametrów linii poleceń.
45 cp -a %{SOURCE1} contrib/poldek
46 cp -a %{SOURCE3} contrib/mysqldump
48 # cleanup backups after patching
49 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
51 # packaged by subversion.spec
52 rm contrib/_subversion
53 # soon packaged by yum, but not yet
56 # No package matches '*/apache2ctl'
59 # No PLD package or no such binary to complete on
60 rm contrib/{larch,lisp,modules,monodevelop,p4,cowsay,cpan2dist}
61 rm contrib/{cfengine,mkinitrd,repomanage,rpmcheck}
62 rm contrib/{kldload,pkg_install,portupgrade,pkgtools} # FreeBSD Stuff
63 rm contrib/{apt-build,dselect,mock,reportbug,sysv-rc,update-alternatives}
65 # no package to hook to
68 # split freeciv-client,freeciv-server as we have these in separate packages
70 %{__sed} -ne '/civserver completion/,/complete -F _civserver civserver/p;/# Local/,/# ex:/p' freeciv > contrib/freeciv-server
71 %{__sed} -ne '/civclient completion/,/complete -F _civclient civclient/p;/# Local/,/# ex:/p' freeciv > contrib/freeciv-client
72 if [ $(md5sum freeciv | awk '{print $1}') != "aaaba09338c01cf3c14bbd1bdcb0897f" ]; then
73 : check that split out contrib/freeciv-{client,server} are ok and update md5sum
77 # split munin as we have subpackage for node
78 mv contrib/munin-node .
79 %{__sed} -ne '1,2p;/have munin-update /,/complete -F _munin-update/p;/have munin-run /,/complete -F _munin-run/p;/# Local/,/# ex:/p' munin-node > contrib/munin
80 %{__sed} -ne '1,2p;/have munin-node-configure /,/complete -F _munin-node-configure/p;/# Local/,/# ex:/p' munin-node > contrib/munin-node
81 if [ $(md5sum munin-node | awk '{print $1}') != "78a95bb707452778355af992e8fe30fa" ]; then
82 : check that split out contrib/munin{,-node} are ok and update md5sum
86 # we have lastlog in sysvinit package
88 %{__sed} -ne '1,/complete -F _faillog faillog/p' shadow > contrib/shadow
89 %{__sed} -ne '1,2p;/have lastlog/,$p' shadow > contrib/sysvinit
90 if [ $(md5sum shadow | awk '{print $1}') != "c62642a786329aa07702b0c09965a9e8" ]; then
91 : check that split out contrib/{shadow,sysvinit} are ok and update md5sum
96 rm -rf $RPM_BUILD_ROOT
97 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/bash_completion.d,/etc/shrc.d,%{_datadir}/%{name}}
101 for comp in $(awk '/^%%bashcomp_trigger/{print $3 ? $3 : $2}' %{_specdir}/%{name}.spec | tr ',' ' '); do
102 l=$(awk -vcomp=$comp '$0 == "%%{_datadir}/%%{name}/" comp {print}' %{_specdir}/%{name}.spec)
104 echo >&2 "!! $comp not listed in %%files"
108 for comp in $(awk -F/ '$0 ~ "^%%{_datadir}/%%{name}/"{print $NF}' %{_specdir}/%{name}.spec); do
109 l=$(awk -vcomp=$comp '/^%%bashcomp_trigger/ && ($3 ? $3 : $2) ~ "(^|,)"comp"(,|$)"' %{_specdir}/%{name}.spec)
111 echo >&2 "!! $comp has no trigger"
117 [ "$err" != 0 ] && exit $err
119 cp -a bash_completion $RPM_BUILD_ROOT%{_sysconfdir}
120 cp -a contrib/* $RPM_BUILD_ROOT%{_datadir}/%{name}
121 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/shrc.d
123 # Take care of contrib files
124 for a in contrib/*; do
126 ln -s ../..%{_datadir}/%{name}/$f $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d
127 echo "%ghost %{_sysconfdir}/bash_completion.d/$f"
128 done > %{name}-ghost.list
131 rm -rf $RPM_BUILD_ROOT
133 %triggerpostun -- %{name} < 20050721-3.9
134 sed -i -e '/^# START bash completion/,/^# END bash completion/d' /etc/bashrc
136 %triggerpostun -- %{name} < 20081219-0.1
137 # don't do anything on --downgrade
138 if [ $1 -le 1 ]; then
142 if [ ! -x /bin/rpm ]; then
146 # This ugly trigger is here because we package same pathnames as ghost
147 # meaning the files will lay around from previous package version.
149 # get files which are ghost for us
150 files=$(rpm -ql %{name}-%{version}-%{release} | grep %{_sysconfdir}/bash_completion.d/)
152 # this is to get old pkg NVR, actually gives list of files that are
153 # packaged by other versions than this installed one, which is ok even for
154 # multiple bash-completion pkgs being installed.
155 oldpkg=$(rpm -qf $(echo "$files") 2>/dev/null | grep -v 'is not' | sort -u | grep -v %{name}-%{version}-%{release})
156 for a in $(rpm -ql $oldpkg | grep %{_sysconfdir}/bash_completion.d/); do
157 # remove files from old package (which are ghost in new pkg),
158 # if not already converted to symlink
159 [ -L $a ] || rm -f $a
162 # Usage: bashcomp_trigger PACKAGENAME[,PACKAGENAME] [SCRIPTNAME][,SCRIPTNAME]
163 %define bashcomp_trigger() \
165 for comp in {%{?2}%{!?2:%1},}; do\
166 [ "$comp" ] || continue\
167 if [ -L %{_sysconfdir}/bash_completion.d/$comp ] ; then\
168 ln -sf ../..%{_datadir}/%{name}/$comp %{_sysconfdir}/bash_completion.d\
173 for comp in {%{?2}%{!?2:%1},}; do\
174 [ "$comp" ] || continue\
175 rm -f %{_sysconfdir}/bash_completion.d/$comp\
180 %bashcomp_trigger ant
181 %bashcomp_trigger apt
182 %bashcomp_trigger aptitude
183 %bashcomp_trigger aspell
184 %bashcomp_trigger autorpm
185 %bashcomp_trigger bash bash-builtins
186 %bashcomp_trigger bind-utils
187 %bashcomp_trigger bitkeeper
188 %bashcomp_trigger BitTorrent bittorrent
189 %bashcomp_trigger bluez bluez-utils
190 %bashcomp_trigger bridge-utils brctl
191 %bashcomp_trigger bzip2
192 %bashcomp_trigger cdrkit,cdrtools wodim
193 %bashcomp_trigger cdrtools-mkisofs,dvdrtools-mkisofs genisoimage
194 %bashcomp_trigger chkconfig
195 %bashcomp_trigger cksfv
196 %bashcomp_trigger clisp
197 %bashcomp_trigger coreutils dd
198 %bashcomp_trigger cpio
199 %bashcomp_trigger cups-clients cups
200 %bashcomp_trigger cvsnt,cvs cvs
201 %bashcomp_trigger dhcp-client dhclient
202 %bashcomp_trigger dict
203 %bashcomp_trigger dpkg
204 %bashcomp_trigger dsniff
205 %bashcomp_trigger expat xmlwf
206 %bashcomp_trigger findutils
207 %bashcomp_trigger freeciv-client
208 %bashcomp_trigger freeciv-server
209 %bashcomp_trigger gcc-ada gnatmake
210 %bashcomp_trigger gcc,gcc-java,fortran,gcc-c++ gcc
211 %bashcomp_trigger gcl
212 %bashcomp_trigger gdb
213 %bashcomp_trigger gkrellm
214 %bashcomp_trigger glibc iconv
215 %bashcomp_trigger glibc-misc getent
216 %bashcomp_trigger gnupg2 gpg2
217 %bashcomp_trigger gnupg gpg
218 %bashcomp_trigger gzip
219 %bashcomp_trigger heimdal
220 %bashcomp_trigger ImageMagick imagemagick
221 %bashcomp_trigger info,pinfo info
222 %bashcomp_trigger ipmitool
223 %bashcomp_trigger iptables
224 %bashcomp_trigger jar
225 %bashcomp_trigger java-sun-jre,java-gcj-compat java
226 %bashcomp_trigger kdelibs dcop
227 %bashcomp_trigger ldapvi
228 %bashcomp_trigger lftp
229 %bashcomp_trigger libxml2-progs xmllint
230 %bashcomp_trigger lilo
231 %bashcomp_trigger links
232 %bashcomp_trigger lvm2 lvm
233 %bashcomp_trigger lzma,xz lzma
234 %bashcomp_trigger lzop
235 %bashcomp_trigger mailman
236 %bashcomp_trigger make
237 %bashcomp_trigger man
239 %bashcomp_trigger mcrypt
240 %bashcomp_trigger mdadm
241 %bashcomp_trigger minicom
242 %bashcomp_trigger mplayer
243 %bashcomp_trigger mtx
244 %bashcomp_trigger multisync-msynctool,msynctool msynctool
245 %bashcomp_trigger munin
246 %bashcomp_trigger munin-node
247 %bashcomp_trigger mutt
248 %bashcomp_trigger mysql-client mysqladmin,mysqldump
249 %bashcomp_trigger ncftp
250 %bashcomp_trigger net-tools
251 %bashcomp_trigger nfs-utils rpcdebug
252 %bashcomp_trigger ntp-client ntpdate
253 %bashcomp_trigger openldap
254 %bashcomp_trigger openssh-clients ssh
255 %bashcomp_trigger openssl-tools openssl
256 %bashcomp_trigger pcmciautils cardctl
257 %bashcomp_trigger perl-base perl
258 %bashcomp_trigger pine
259 %bashcomp_trigger pkgconfig pkg-config
260 %bashcomp_trigger poldek
261 %bashcomp_trigger postfix
262 %bashcomp_trigger postgresql-clients postgresql
263 %bashcomp_trigger povray
264 %bashcomp_trigger procps sysctl
265 %bashcomp_trigger pwdutils shadow
266 %bashcomp_trigger pwdutils,shadow-extras chsh
267 %bashcomp_trigger python
268 %bashcomp_trigger qemu
269 %bashcomp_trigger QtDBus qdbus
270 %bashcomp_trigger quota-tools
271 %bashcomp_trigger rcs
272 %bashcomp_trigger rdesktop
273 %bashcomp_trigger resolvconf
274 %bashcomp_trigger rfkill
275 %bashcomp_trigger rpm
276 %bashcomp_trigger rrdtool
277 %bashcomp_trigger rsync
278 %bashcomp_trigger ruby-modules ri
279 %bashcomp_trigger samba-client samba
280 %bashcomp_trigger sbcl
281 %bashcomp_trigger screen
282 %bashcomp_trigger sitecopy
283 %bashcomp_trigger smartmontools,smartsuite smartctl
284 %bashcomp_trigger snownews
285 %bashcomp_trigger strace
286 %bashcomp_trigger svk
287 %bashcomp_trigger tar
288 %bashcomp_trigger tcpdump
289 %bashcomp_trigger tightvnc vncviewer
290 %bashcomp_trigger unace
291 %bashcomp_trigger unixODBC isql
292 %bashcomp_trigger unrar
293 %bashcomp_trigger upstart-SysVinit,SysVinit sysvinit
294 %bashcomp_trigger vpnc
295 %bashcomp_trigger wireless-tools
296 %bashcomp_trigger wvdial
297 %bashcomp_trigger X11,xorg-app-xhost xhost
298 %bashcomp_trigger X11,xorg-app-xrandr xrandr
299 %bashcomp_trigger xen xm
300 %bashcomp_trigger xmms
302 %bashcomp_trigger yp-tools
303 %bashcomp_trigger yum
304 %bashcomp_trigger yum-arch
306 %files -f %{name}-ghost.list
307 %defattr(644,root,root,755)
309 /etc/shrc.d/%{name}.sh
310 %{_sysconfdir}/bash_completion
311 %dir %{_sysconfdir}/bash_completion.d
312 %dir %{_datadir}/%{name}
313 # we list all files to be sure we have all of them handled by triggers
314 %{_datadir}/%{name}/ant
315 %{_datadir}/%{name}/apt
316 %{_datadir}/%{name}/aptitude
317 %{_datadir}/%{name}/aspell
318 %{_datadir}/%{name}/autorpm
319 %{_datadir}/%{name}/bash-builtins
320 %{_datadir}/%{name}/bind-utils
321 %{_datadir}/%{name}/bitkeeper
322 %{_datadir}/%{name}/bittorrent
323 %{_datadir}/%{name}/bluez-utils
324 %{_datadir}/%{name}/brctl
325 %{_datadir}/%{name}/bzip2
326 %{_datadir}/%{name}/cardctl
327 %{_datadir}/%{name}/chkconfig
328 %{_datadir}/%{name}/chsh
329 %{_datadir}/%{name}/cksfv
330 %{_datadir}/%{name}/clisp
331 %{_datadir}/%{name}/cpio
332 %{_datadir}/%{name}/cups
333 %{_datadir}/%{name}/cvs
334 %{_datadir}/%{name}/dcop
335 %{_datadir}/%{name}/dd
336 %{_datadir}/%{name}/dhclient
337 %{_datadir}/%{name}/dict
338 %{_datadir}/%{name}/dpkg
339 %{_datadir}/%{name}/dsniff
340 %{_datadir}/%{name}/findutils
341 %{_datadir}/%{name}/freeciv-client
342 %{_datadir}/%{name}/freeciv-server
343 %{_datadir}/%{name}/gcc
344 %{_datadir}/%{name}/gcl
345 %{_datadir}/%{name}/gdb
346 %{_datadir}/%{name}/genisoimage
347 %{_datadir}/%{name}/getent
348 %{_datadir}/%{name}/gkrellm
349 %{_datadir}/%{name}/gnatmake
350 %{_datadir}/%{name}/gpg
351 %{_datadir}/%{name}/gpg2
352 %{_datadir}/%{name}/gzip
353 %{_datadir}/%{name}/heimdal
354 %{_datadir}/%{name}/iconv
355 %{_datadir}/%{name}/imagemagick
356 %{_datadir}/%{name}/info
357 %{_datadir}/%{name}/ipmitool
358 %{_datadir}/%{name}/iptables
359 %{_datadir}/%{name}/isql
360 %{_datadir}/%{name}/jar
361 %{_datadir}/%{name}/java
362 %{_datadir}/%{name}/ldapvi
363 %{_datadir}/%{name}/lftp
364 %{_datadir}/%{name}/lilo
365 %{_datadir}/%{name}/links
366 %{_datadir}/%{name}/lvm
367 %{_datadir}/%{name}/lzma
368 %{_datadir}/%{name}/lzop
369 %{_datadir}/%{name}/mailman
370 %{_datadir}/%{name}/make
371 %{_datadir}/%{name}/man
372 %{_datadir}/%{name}/mc
373 %{_datadir}/%{name}/mcrypt
374 %{_datadir}/%{name}/mdadm
375 %{_datadir}/%{name}/minicom
376 %{_datadir}/%{name}/mplayer
377 %{_datadir}/%{name}/msynctool
378 %{_datadir}/%{name}/mtx
379 %{_datadir}/%{name}/munin
380 %{_datadir}/%{name}/munin-node
381 %{_datadir}/%{name}/mutt
382 %{_datadir}/%{name}/mysqladmin
383 %{_datadir}/%{name}/mysqldump
384 %{_datadir}/%{name}/ncftp
385 %{_datadir}/%{name}/net-tools
386 %{_datadir}/%{name}/ntpdate
387 %{_datadir}/%{name}/openldap
388 %{_datadir}/%{name}/openssl
389 %{_datadir}/%{name}/perl
390 %{_datadir}/%{name}/pine
391 %{_datadir}/%{name}/pkg-config
392 %{_datadir}/%{name}/poldek
393 %{_datadir}/%{name}/postfix
394 %{_datadir}/%{name}/postgresql
395 %{_datadir}/%{name}/povray
396 %{_datadir}/%{name}/python
397 %{_datadir}/%{name}/qdbus
398 %{_datadir}/%{name}/qemu
399 %{_datadir}/%{name}/quota-tools
400 %{_datadir}/%{name}/rcs
401 %{_datadir}/%{name}/rdesktop
402 %{_datadir}/%{name}/resolvconf
403 %{_datadir}/%{name}/rfkill
404 %{_datadir}/%{name}/ri
405 %{_datadir}/%{name}/rpcdebug
406 %{_datadir}/%{name}/rpm
407 %{_datadir}/%{name}/rrdtool
408 %{_datadir}/%{name}/rsync
409 %{_datadir}/%{name}/samba
410 %{_datadir}/%{name}/sbcl
411 %{_datadir}/%{name}/screen
412 %{_datadir}/%{name}/shadow
413 %{_datadir}/%{name}/sitecopy
414 %{_datadir}/%{name}/smartctl
415 %{_datadir}/%{name}/snownews
416 %{_datadir}/%{name}/ssh
417 %{_datadir}/%{name}/strace
418 %{_datadir}/%{name}/svk
419 %{_datadir}/%{name}/sysctl
420 %{_datadir}/%{name}/sysvinit
421 %{_datadir}/%{name}/tar
422 %{_datadir}/%{name}/tcpdump
423 %{_datadir}/%{name}/unace
424 %{_datadir}/%{name}/unrar
425 %{_datadir}/%{name}/vncviewer
426 %{_datadir}/%{name}/vpnc
427 %{_datadir}/%{name}/wireless-tools
428 %{_datadir}/%{name}/wodim
429 %{_datadir}/%{name}/wvdial
430 %{_datadir}/%{name}/xhost
431 %{_datadir}/%{name}/xm
432 %{_datadir}/%{name}/xmllint
433 %{_datadir}/%{name}/xmlwf
434 %{_datadir}/%{name}/xmms
435 %{_datadir}/%{name}/xrandr
436 %{_datadir}/%{name}/xz
437 %{_datadir}/%{name}/yp-tools
438 %{_datadir}/%{name}/yum
439 %{_datadir}/%{name}/yum-arch