This idea is Thomas', I take no credit, except that I actually wrote it up.
The idea: texinfo, on install, processes all info files. bash and glibc (and, likely, other packages in core) no longer need to depend on texinfo, but should check for install-info in the scriptlets before running. a) user installs bash and glibc. No info files are processed, texinfo not installed user then installs texinfo, all info files are processed b) user installs texinfo first (somehow) user then installs bash, info files processed due to existence of install-info c) user follows case a or b user upgrades bash or glibc, info files processed as normal due to presence of install-info Any issues with this? See attached patch. Please review. If possible, this needs to go to core before we release the ISOs.
Index: bash/trunk/PKGBUILD =================================================================== --- bash/trunk/PKGBUILD (revision 25717) +++ bash/trunk/PKGBUILD (working copy) @@ -4,7 +4,7 @@ pkgname=bash _patchlevel=048 pkgver=3.2.$_patchlevel -pkgrel=2 +pkgrel=3 pkgdesc="The GNU Bourne Again shell" arch=(i686 x86_64) license=('GPL') Index: bash/trunk/bash.install =================================================================== --- bash/trunk/bash.install (revision 25717) +++ bash/trunk/bash.install (working copy) @@ -2,6 +2,7 @@ info_files=(bash.info) post_install() { + which install-info 2>&1 >/dev/null || return for f in ${info_fil...@]}; do install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null done @@ -12,6 +13,7 @@ } pre_remove() { + which install-info 2>&1 >/dev/null || return for f in ${info_fil...@]}; do install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null done Index: texinfo/trunk/texinfo.install =================================================================== --- texinfo/trunk/texinfo.install (revision 25717) +++ texinfo/trunk/texinfo.install (working copy) @@ -2,13 +2,15 @@ filelist=(info.info.gz info-stnd.info.gz texinfo.gz texinfo-1.gz texinfo-2.gz texinfo-3.gz) post_install() { - for file in ${fileli...@]}; do - install-info $infodir/$file $infodir/dir 2> /dev/null + for file in $(find $infodir -type f ! -name dir); do + install-info $file $infodir/dir 2> /dev/null done } post_upgrade() { - post_install $1 + for file in ${fileli...@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done } pre_remove() { Index: glibc/trunk/PKGBUILD =================================================================== --- glibc/trunk/PKGBUILD (revision 25717) +++ glibc/trunk/PKGBUILD (working copy) @@ -4,7 +4,7 @@ pkgname=glibc pkgver=2.9 -pkgrel=2 +pkgrel=3 _glibcdate=20081119 install=glibc.install backup=(etc/locale.gen) @@ -13,7 +13,7 @@ license=('GPL' 'LGPL') url="http://www.gnu.org/software/libc" groups=('base') -depends=('sh' 'kernel-headers>=2.6.27.6' 'tzdata' 'texinfo') +depends=('sh' 'kernel-headers>=2.6.27.6' 'tzdata') makedepends=('gcc>=4.3.2-2') replaces=('glibc-xen') source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.tar.bz2 Index: glibc/trunk/glibc.install =================================================================== --- glibc/trunk/glibc.install (revision 25717) +++ glibc/trunk/glibc.install (working copy) @@ -34,6 +34,7 @@ fi fi + which install-info 2>&1 >/dev/null || return for file in ${fileli...@]}; do install-info $infodir/$file $infodir/dir 2> /dev/null done @@ -121,12 +122,14 @@ fi fi + which install-info 2>&1 >/dev/null || return for file in ${fileli...@]}; do install-info $infodir/$file $infodir/dir 2> /dev/null done } pre_remove() { + which install-info 2>&1 >/dev/null || return for file in ${fileli...@]}; do install-info --delete $infodir/$file $infodir/dir 2> /dev/null done