[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r10332 - /man-cgi/static-repository/bin/fetch-man-pages.sh



Author: jfs
Date: Wed Nov  6 21:07:27 2013
New Revision: 10332

URL: http://svn.debian.org/wsvn/?sc=1&rev=10332
Log:

- Import configuration from absolute path, not relative
- Add support of debugging through DEBUG variable, uncomment debug printf calls
- Try to not create cruft under /tmp but do it in a controlled location instead
- Extract contents using a tar file
- Only extract manpages under usr/share/man or usr/X11R6/man


Modified:
    man-cgi/static-repository/bin/fetch-man-pages.sh

Modified: man-cgi/static-repository/bin/fetch-man-pages.sh
URL: http://svn.debian.org/wsvn/man-cgi/static-repository/bin/fetch-man-pages.sh?rev=10332&op=diff
==============================================================================
--- man-cgi/static-repository/bin/fetch-man-pages.sh	(original)
+++ man-cgi/static-repository/bin/fetch-man-pages.sh	Wed Nov  6 21:07:27 2013
@@ -25,7 +25,10 @@
 # License can be found in /usr/share/common-licenses/GPL-3
 ###############################################################################
 
-. ./config
+ME=$0
+MYDIR="`dirname $ME`"
+
+. ${MYDIR}/config
 
 DIST="$1"
 PKG="$2"
@@ -38,11 +41,11 @@
 export W3MMAN_MAN='man --no-hyphenation'
 export MAN_KEEP_FORMATTING=1
 
-#printf "%s\n" "INFO: Looking for manpages in [$DEB]"
+[ -n "$DEBUG" ] && printf "%s\n" "INFO: Looking for manpages in [$DEB]"
 # The .*man bit is to handle postgres' inane manpage installation
 man=`dpkg-deb -c "$DEB" | egrep " \./usr/share.*/man/.*\.[0-9][a-zA-Z0-9\.\-]*\.gz$" | sed -e "s/^.*\.\//\.\//" -e "s/ \-> /\->/"`
 if [ -z "$man" ]; then
-	#printf "%s\n" "INFO: No manpages: [$DIST] [$PKG]"
+	[ -n "$DEBUG" ] && printf "%s\n" "INFO: No manpages: [$DIST] [$PKG]"
 	# Touch the cache file so we don't look again until package updated
 	touch $DESTDIR/.cache/$NAME
 	# Exit immediately if this package does not contain manpages
@@ -50,30 +53,33 @@
 fi
 src_pkg=`dpkg -I "$DEB" | egrep "^ Package: |^ Source: " | tail -n1 | sed "s/^.*: //"`
 
-# BUG: Cruft gets created in /tmp/, it would be better to use a location specific for the script (work directory)
-#printf "%s\n" "INFO: Extracting manpages from [$DEB]"
-TEMPDIR=`mktemp -d -t doc-XXXXXX`
-trap "rm -rf $TEMPDIR 2>/dev/null || true" EXIT HUP INT QUIT TERM
+[ -n "$DEBUG" ] && printf "%s\n" "INFO: Extracting manpages from [$DEB]"
+TMPDIR=$TEMPDIR
+export TMPDIR
+EXTRACTDIR=`mktemp -d -t manpages-XXXXXX`
+trap "rm -rf $EXTRACTDIR 2>/dev/null || true" EXIT HUP INT QUIT TERM
 
-# BUG: script uses dpkg-deb -x which extracts the full package, should try to use --fsys-tarfile instead 
-# (see Debian's extractor script)
-dpkg-deb -x "$DEB" "$TEMPDIR"
+
+# Extract only manpages from the package
+dpkg-deb --fsys-tarfile "$DEB" | tar -C "$EXTRACTDIR" usr/share/man ./usr/share/man usr/X11R6/man ./usr/X11R6/man 2>/dev/null
+# This extracts *all* the contents of the package
+# dpkg-deb -x "$DEB" "$EXTRACTDIR"
 for i in $man; do
-	#printf "%s\n" "INFO: Considering entry [$i]"
+        [ -n "$DEBUG" ] && printf "%s\n" "INFO: Considering entry [$i]"
 	i=`printf "%s" "$i" | sed "s/^.*\.\///"`
 	if printf "%s" "$i" | grep -qs "\->"; then
 		SYMLINK=1
 		symlink_src_html=`printf "%s" "$i" | sed -e "s/^.*\->//" -e "s/\.gz$/\.html/"`
 		i=`printf "%s" "$i" | sed "s/\->.*$//" `
-		#printf "%s\n" "INFO: [$i] is a symbolic link"
+               [ -n "$DEBUG" ] &&  printf "%s\n" "INFO: [$i] is a symbolic link"
 	else
 		SYMLINK=0
 	fi
-	manpage="$TEMPDIR/$i"
+        manpage="$EXTRACTDIR/$i"
 	i=`printf "%s" "$i" | sed -e "s/usr\/share.*\/man\///i" -e "s/\.gz$//"`
-	#printf "%s\n" "INFO: Considering manpage [$i]"
+        [ -n "$DEBUG" ] && printf "%s\n" "INFO: Considering manpage [$i]"
 	if [ ! -s "$manpage" -o -z "$i" ] && [ "$SYMLINK" = "0" ]; then
-		#printf "%s\n" "INFO: Skipping empty manpage [$manpage]"
+                [ -n "$DEBUG" ] && printf "%s\n" "INFO: Skipping empty manpage [$manpage]"
 		continue
 	fi
 	out="$DESTDIR"/"$i".html
@@ -86,7 +92,7 @@
 		if LN=`zcat "$manpage" | head -n1 | grep "^\.so "`; then
 			LN=`printf "%s" "$LN" | sed -e 's/^\.so /\.\.\//' -e 's/\/\.\.\//\//g' -e 's/$/\.html/'`
 			ln -f -s "$LN" "$out"
-			printf "INFO: Created symlink [$out]"
+			[ -n "$DEBUG" ] && printf "INFO: Created symlink [$out]"
                 else
 			#man "$manpage" 2>/dev/null | col -b > "$out".txt
 			#man2html -r "$manpage" > "$out"
@@ -110,7 +116,7 @@
 			printf "%s\n" "$BODY" >> "$out"
 			printf "%s\n" "</pre><!--#include virtual='/below.html' -->" >> "$out"
 
-			printf "%s\n" "INFO: Created manpage [$out]"
+			[ -n "$DEBUG" ] && printf "%s\n" "INFO: Created manpage [$out]"
 		fi
 	fi
 	mv -f "$manpage" "$outgz"
@@ -121,5 +127,5 @@
 	fi
 done
 # In the case of freakish package permissions, fix them on rm failure.
-rm -rf "$TEMPDIR" 2>/dev/null || ( chmod -R 700 "$TEMPDIR" && rm -rf "$TEMPDIR" ) || true
+rm -rf "$EXTRACTDIR" 2>/dev/null || ( chmod -R 700 "$EXTRACTDIR" && rm -rf "$EXTRACTDIR" ) || true
 exit 0


Reply to: