Dont update whatis on read-only filesystems #163932 by Doug Goldstein.
authorMike Frysinger <vapier@gentoo.org>
Sat, 27 Jan 2007 05:44:45 +0000 (05:44 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 27 Jan 2007 05:44:45 +0000 (05:44 +0000)
Package-Manager: portage-2.1.2-r4

sys-apps/man/ChangeLog
sys-apps/man/Manifest
sys-apps/man/files/digest-man-1.6e-r3 [new file with mode: 0644]
sys-apps/man/files/man-1.6e-readonly-whatis.patch [new file with mode: 0644]
sys-apps/man/files/man-1.6e-readonly-whatis2.patch [new file with mode: 0644]
sys-apps/man/man-1.6e-r3.ebuild [new file with mode: 0644]

index 09b7ae97a1fa7a3778e6bd885b2aec7a4893eb9c..5b6b4498ffa93c2c53415398cbd90c90192a06a0 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for sys-apps/man
 # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/man/ChangeLog,v 1.107 2007/01/12 02:04:47 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/man/ChangeLog,v 1.108 2007/01/27 05:44:45 vapier Exp $
+
+*man-1.6e-r3 (27 Jan 2007)
+
+  27 Jan 2007; Mike Frysinger <vapier@gentoo.org>
+  +files/man-1.6e-readonly-whatis.patch,
+  +files/man-1.6e-readonly-whatis2.patch, +man-1.6e-r3.ebuild:
+  Dont update whatis on read-only filesystems #163932 by Doug Goldstein.
 
 *man-1.6e-r2 (12 Jan 2007)
 
index 7749253355596635824c0ef10af525be88f100a2..d966a02708f24743d865b10c933e77c812fc7ab2 100644 (file)
@@ -61,6 +61,14 @@ AUX man-1.6e-man2html-bzip2.patch 1452 RMD160 b9f9d8bbc69e7f222cd366f1474351e138
 MD5 3cd108700679892dc8409d3fbdb2e07d files/man-1.6e-man2html-bzip2.patch 1452
 RMD160 b9f9d8bbc69e7f222cd366f1474351e138f64a18 files/man-1.6e-man2html-bzip2.patch 1452
 SHA256 8733a306b1af24efcc610994c8098dc03a90b2ecaba284762ea5dc04d67afaa0 files/man-1.6e-man2html-bzip2.patch 1452
+AUX man-1.6e-readonly-whatis.patch 1449 RMD160 40ad140c3729acb398aec0105b8fe541dc521bb3 SHA1 9540c95d8e385e4a2960206e8beae9f03b08164f SHA256 004d227a4cd12c213b624c85d72b63574ace09b430774f49053bb5fb863ba347
+MD5 bc5407f9ab5e75c4594a65d02fa8abc7 files/man-1.6e-readonly-whatis.patch 1449
+RMD160 40ad140c3729acb398aec0105b8fe541dc521bb3 files/man-1.6e-readonly-whatis.patch 1449
+SHA256 004d227a4cd12c213b624c85d72b63574ace09b430774f49053bb5fb863ba347 files/man-1.6e-readonly-whatis.patch 1449
+AUX man-1.6e-readonly-whatis2.patch 1179 RMD160 71e357153c18bcf444b9264b64d29de7e303ecab SHA1 981ab4e9743dce40a07fbb90d2c179c7a8716c56 SHA256 e87c4a98c9caee7fe80f873f29523232c9754f42aa78830028af2ddc40f408a8
+MD5 447e670deb3e7020871a99b32f41c146 files/man-1.6e-readonly-whatis2.patch 1179
+RMD160 71e357153c18bcf444b9264b64d29de7e303ecab files/man-1.6e-readonly-whatis2.patch 1179
+SHA256 e87c4a98c9caee7fe80f873f29523232c9754f42aa78830028af2ddc40f408a8 files/man-1.6e-readonly-whatis2.patch 1179
 DIST man-1.6d.tar.gz 270140 RMD160 2c476a735c211acbb478d604b73a1becb54cb87b SHA1 f83aecdcd922f0cf3515665b8e1e0e2514c99286 SHA256 a6d03bdabe16542a5a51471b5d8e7eaa50ad782577c7b31d9c478382097cf4eb
 DIST man-1.6e.tar.gz 252657 RMD160 486099dc1b34fe86a2c1d19b7c89dc19b9787837 SHA1 7264bda7dd7bf08bdb9dac6ec7734e755ec0a8d1 SHA256 022faf23844eabb3662eabb105836925dd83bedda10271e2450a5bc5b61a5b5f
 EBUILD man-1.6d.ebuild 3271 RMD160 cb2fa2ab59ed3641ac907f3e72597bdb78d6d176 SHA1 8e522d4667e92ce22c500040f12ae5d872fa836c SHA256 4719ecf55025f396ca02c3fe50beda55447db38bcebdbd4700725f5236fb4381
@@ -75,14 +83,18 @@ EBUILD man-1.6e-r2.ebuild 3504 RMD160 5c4d68f2863dc84d8b6f52420244167285bb5307 S
 MD5 487ae4a24bcd004654bc0115b37e1e7b man-1.6e-r2.ebuild 3504
 RMD160 5c4d68f2863dc84d8b6f52420244167285bb5307 man-1.6e-r2.ebuild 3504
 SHA256 e9050e66518e571e82ed84915b152e8592d1dd6d38b815fd335c22b2ed26a7bf man-1.6e-r2.ebuild 3504
+EBUILD man-1.6e-r3.ebuild 3566 RMD160 7eb2d947c638230be8e59adab62c5adcc90d90bc SHA1 51268e05666c00f1f926f9eaec71ca84add3794c SHA256 53af6bf116467ceba538ae7f4e3a16e6afba356985535616cc022a59fb9b554e
+MD5 763f04f8500db242f4ffae9262908782 man-1.6e-r3.ebuild 3566
+RMD160 7eb2d947c638230be8e59adab62c5adcc90d90bc man-1.6e-r3.ebuild 3566
+SHA256 53af6bf116467ceba538ae7f4e3a16e6afba356985535616cc022a59fb9b554e man-1.6e-r3.ebuild 3566
 EBUILD man-1.6e.ebuild 3307 RMD160 b5b9e644e803a87fe26b1c53201b16f9f3edc414 SHA1 67680c0c2f0d1ecac04da84daeb0c850fe4f6931 SHA256 096fcd00f187cb23d96268570c648dcff7a8c09105343a8166f0f2533121c139
 MD5 f19ddc44832adc425f5c0b231f0a6d14 man-1.6e.ebuild 3307
 RMD160 b5b9e644e803a87fe26b1c53201b16f9f3edc414 man-1.6e.ebuild 3307
 SHA256 096fcd00f187cb23d96268570c648dcff7a8c09105343a8166f0f2533121c139 man-1.6e.ebuild 3307
-MISC ChangeLog 15325 RMD160 ed801cb236e58f4780a96e12bd721f2bbf62daa4 SHA1 98657b2f9e942b4786fbcde158d8e738bdcec8a6 SHA256 7ef04b6353634a97d0c06765470148addc250c29a96222c0977876c1753a8429
-MD5 1e40cdb135b22fdb67b5ecc643f28962 ChangeLog 15325
-RMD160 ed801cb236e58f4780a96e12bd721f2bbf62daa4 ChangeLog 15325
-SHA256 7ef04b6353634a97d0c06765470148addc250c29a96222c0977876c1753a8429 ChangeLog 15325
+MISC ChangeLog 15581 RMD160 a580ab8d7f532ef2242e5a25b0f63d911f811aa8 SHA1 27893a2e920908859a54d0b4b2c9ab96149c8ee8 SHA256 5a1431a2cbc2d45d00e3d2f14fadc2cbc0ac26d0bf424857c8f0a8a18fe78548
+MD5 82e82a854c76a5ffe7f62a5a52287ec0 ChangeLog 15581
+RMD160 a580ab8d7f532ef2242e5a25b0f63d911f811aa8 ChangeLog 15581
+SHA256 5a1431a2cbc2d45d00e3d2f14fadc2cbc0ac26d0bf424857c8f0a8a18fe78548 ChangeLog 15581
 MISC metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 SHA1 9c213f5803676c56439df3716be07d6692588856 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92
 MD5 9a09f8d531c582e78977dbfd96edc1f2 metadata.xml 164
 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 metadata.xml 164
@@ -99,10 +111,13 @@ SHA256 450b990513ad7cf341ba6ba412d2ba0d380e11daa1f76fc70290fbbe40b88431 files/di
 MD5 9260305e16fda8ca7362cceb0cb5ad02 files/digest-man-1.6e-r2 226
 RMD160 9d9e3022e704e8ebbee6ab33f2f6b9357ffb0fe6 files/digest-man-1.6e-r2 226
 SHA256 450b990513ad7cf341ba6ba412d2ba0d380e11daa1f76fc70290fbbe40b88431 files/digest-man-1.6e-r2 226
+MD5 9260305e16fda8ca7362cceb0cb5ad02 files/digest-man-1.6e-r3 226
+RMD160 9d9e3022e704e8ebbee6ab33f2f6b9357ffb0fe6 files/digest-man-1.6e-r3 226
+SHA256 450b990513ad7cf341ba6ba412d2ba0d380e11daa1f76fc70290fbbe40b88431 files/digest-man-1.6e-r3 226
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.1 (GNU/Linux)
 
-iD8DBQFFpuzP8bi6rjpTunYRArk6AJ4reoS4sIvnK/mQSSf/7cqqU5FasACg4v0p
-DD4MfBgtkDDNGEnMcGwSS3A=
-=Zenp
+iD8DBQFFuub+8bi6rjpTunYRAp8BAKDMQ+NZA86Ljgn2JdDnPtq+gydIyACgxqU1
+7kKQWll4Ru8N031ZJYa/8dg=
+=z9x4
 -----END PGP SIGNATURE-----
diff --git a/sys-apps/man/files/digest-man-1.6e-r3 b/sys-apps/man/files/digest-man-1.6e-r3
new file mode 100644 (file)
index 0000000..69ec127
--- /dev/null
@@ -0,0 +1,3 @@
+MD5 d8187cd756398baefc48ba7d60ff6a8a man-1.6e.tar.gz 252657
+RMD160 486099dc1b34fe86a2c1d19b7c89dc19b9787837 man-1.6e.tar.gz 252657
+SHA256 022faf23844eabb3662eabb105836925dd83bedda10271e2450a5bc5b61a5b5f man-1.6e.tar.gz 252657
diff --git a/sys-apps/man/files/man-1.6e-readonly-whatis.patch b/sys-apps/man/files/man-1.6e-readonly-whatis.patch
new file mode 100644 (file)
index 0000000..d0f8ce1
--- /dev/null
@@ -0,0 +1,56 @@
+Dont update makewhatis files if they're on readonly filesystems
+
+http://bugs.gentoo.org/163932
+
+--- src/makewhatis.sh
++++ src/makewhatis.sh
+@@ -184,6 +188,34 @@
+      if [ x$verbose != x ]; then
+       echo "about to enter $mandir" > /dev/stderr
+      fi
++
++     # kludge for Slackware's /usr/man/preformat
++     if [ $mandir = /usr/man/preformat ]
++     then
++      mandir1=/usr/man
++     else
++      mandir1=$mandir
++     fi
++
++     # if $mandir is on a readonly partition, and the whatis file
++     # is not a symlink, then let's skip trying to update it
++     if [ ! -L ${mandir1}/whatis ]
++     then
++      if [ -e ${mandir1}/whatis ] && [ ! -w ${mandir1}/whatis ]
++      then
++         if [ x$verbose != x ]; then
++            echo skipping $mandir - whatis file is readonly > /dev/stderr
++         fi
++         continue
++      elif [ ! -e ${mandir1}/whatis ] && [ ! -w ${mandir1} ]
++      then
++         if [ x$verbose != x ]; then
++            echo skipping $mandir - directory is readonly > /dev/stderr
++         fi
++         continue
++      fi
++     fi
++
+      if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then
+       if [ x$verbose != x ]; then
+          echo skipping $mandir - we did it already > /dev/stderr
+@@ -407,14 +439,6 @@
+        cd $here
+-       # kludge for Slackware's /usr/man/preformat
+-       if [ $mandir = /usr/man/preformat ]
+-       then
+-       mandir1=/usr/man
+-       else
+-       mandir1=$mandir
+-       fi
+-
+        if [ -f ${mandir1}/whatis ]
+        then
+        cat ${mandir1}/whatis >> $TMPFILE
diff --git a/sys-apps/man/files/man-1.6e-readonly-whatis2.patch b/sys-apps/man/files/man-1.6e-readonly-whatis2.patch
new file mode 100644 (file)
index 0000000..92e37d0
--- /dev/null
@@ -0,0 +1,47 @@
+Dont update makewhatis files if they're on readonly filesystems
+
+http://bugs.gentoo.org/163932
+
+--- src/makewhatis.sh
++++ src/makewhatis.sh
+@@ -184,6 +188,25 @@
+      if [ x$verbose != x ]; then
+       echo "about to enter $mandir" > /dev/stderr
+      fi
++
++     # kludge for Slackware's /usr/man/preformat
++     if [ $mandir = /usr/man/preformat ]
++     then
++      mandir1=/usr/man
++     else
++      mandir1=$mandir
++     fi
++
++     # if $mandir is on a readonly partition and we cannot update the whatis
++     # file, then let's simply skip it
++     if ! touch ${mandir1}/whatis 2> /dev/null
++     then
++      if [ x$verbose != x ]; then
++         echo skipping $mandir - whatis file is readonly > /dev/stderr
++      fi
++      continue
++     fi
++
+      if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then
+       if [ x$verbose != x ]; then
+          echo skipping $mandir - we did it already > /dev/stderr
+@@ -407,14 +430,6 @@
+        cd $here
+-       # kludge for Slackware's /usr/man/preformat
+-       if [ $mandir = /usr/man/preformat ]
+-       then
+-       mandir1=/usr/man
+-       else
+-       mandir1=$mandir
+-       fi
+-
+        if [ -f ${mandir1}/whatis ]
+        then
+        cat ${mandir1}/whatis >> $TMPFILE
diff --git a/sys-apps/man/man-1.6e-r3.ebuild b/sys-apps/man/man-1.6e-r3.ebuild
new file mode 100644 (file)
index 0000000..d43a32f
--- /dev/null
@@ -0,0 +1,128 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/man/man-1.6e-r3.ebuild,v 1.1 2007/01/27 05:44:45 vapier Exp $
+
+inherit eutils flag-o-matic toolchain-funcs
+
+DESCRIPTION="Standard commands to read man pages"
+HOMEPAGE="http://primates.ximian.com/~flucifredi/man/"
+SRC_URI="http://primates.ximian.com/~flucifredi/man/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+IUSE="nls"
+
+DEPEND="nls? ( sys-devel/gettext )"
+DEPEND=">=sys-apps/groff-1.18
+       !sys-apps/man-db"
+PROVIDE="virtual/man"
+
+pkg_setup() {
+       enewgroup man 15
+       enewuser man 13 -1 /usr/share/man man
+}
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       # add support for bzip2 pages
+       epatch "${FILESDIR}"/man-1.6e-man2html-bzip2.patch
+
+       # We love to cross-compile
+       epatch "${FILESDIR}"/man-1.6-cross-compile.patch
+
+       # Fix search order in man.conf so that system installed manpages
+       # will be found first ...
+       epatch "${FILESDIR}"/man-1.5p-search-order.patch
+
+       # For groff-1.18 or later we need to call nroff with '-c'
+       epatch "${FILESDIR}"/man-1.5m-groff-1.18.patch
+
+       # makewhatis traverses manpages twice, as default manpath
+       # contains two directories that are symlinked together
+       epatch "${FILESDIR}"/man-1.5p-defmanpath-symlinks.patch
+
+       # add more sections to default search path
+       epatch "${FILESDIR}"/man-1.6b-more-sections.patch
+
+       # cut out symlinked paths #90186
+       epatch "${FILESDIR}"/man-1.6c-cut-duplicate-manpaths.patch
+
+       # Fedora patches
+       epatch "${FILESDIR}"/man-1.5m2-apropos.patch
+
+       # Fixes compilation in FreeBSD wrt #138123
+       epatch "${FILESDIR}"/man-1.6d-fbsd.patch
+
+       epatch "${FILESDIR}"/man-1.6e-dont-kill-shebangs.patch #159192
+       epatch "${FILESDIR}"/man-1.6e-headers.patch
+       epatch "${FILESDIR}"/man-1.6e-readonly-whatis2.patch #163932
+
+       strip-linguas $(eval $(grep ^LANGUAGES= configure) ; echo ${LANGUAGES//,/ })
+}
+
+src_compile() {
+       tc-export CC BUILD_CC
+
+       local mylang=
+       if use nls ; then
+               if [[ -z ${LINGUAS} ]] ; then
+                       mylang="all"
+               else
+                       mylang="${LINGUAS// /,}"
+               fi
+       else
+               mylang="none"
+       fi
+       ./configure \
+               -confdir=/etc \
+               +sgid +fhs \
+               +lang ${mylang} \
+               || die "configure failed"
+
+       append-ldflags $(bindnow-flags)
+       emake || die "emake failed"
+}
+
+src_install() {
+       emake PREFIX="${D}" install || die "make install failed"
+       dosym man /usr/bin/manpath
+
+       dodoc LSM README* TODO
+
+       # makewhatis only adds man-pages from the last 24hrs
+       exeinto /etc/cron.daily
+       newexe "${FILESDIR}"/makewhatis.cron makewhatis
+
+       keepdir /var/cache/man
+       diropts -m0775 -g man
+       local mansects=$(grep ^MANSECT "${D}"/etc/man.conf | cut -f2-)
+       for x in ${mansects//:/ } ; do
+               keepdir /var/cache/man/cat${x}
+       done
+}
+
+pkg_postinst() {
+       einfo "Forcing sane permissions onto ${ROOT}/var/cache/man (Bug #40322)"
+       chown -R root:man "${ROOT}"/var/cache/man
+       chmod -R g+w "${ROOT}"/var/cache/man
+       [[ -e ${ROOT}/var/cache/man/whatis ]] \
+               && chown root:0 "${ROOT}"/var/cache/man/whatis
+
+       echo
+
+       local f files=$(ls "${ROOT}"/etc/cron.{daily,weekly}/makewhatis{,.cron} 2>/dev/null)
+       for f in ${files} ; do
+               [[ ${f} == */etc/cron.daily/makewhatis ]] && continue
+               [[ $(md5sum "${f}") == "8b2016cc778ed4e2570b912c0f420266 "* ]] \
+                       && rm -f "${f}"
+       done
+       files=$(ls "${ROOT}"/etc/cron.{daily,weekly}/makewhatis{,.cron} 2>/dev/null)
+       if [[ ${files/$'\n'} != ${files} ]] ; then
+               ewarn "You have multiple makewhatis cron files installed."
+               ewarn "You might want to delete all but one of these:"
+               ewarn ${files}
+       fi
+}