# This file is part of the src2pkg program: # Copyright 2005-2010 Gilbert Ashley # src2pkg is released under the GNU General Public License Version 2 ### compress_man_pages # This function corrects the location of wrongly placed man-pages and info-pages # and makes the compression of them uniform ### compress_man_pages() { if [[ $ALLOW_USER_EXTENSIONS = "YES" ]] ; then # check if the user has any pre-execution extensions to this file and run them, if so. [[ -f "$HOME"/.src2pkg/extensions/12.pre ]] && . "$HOME"/.src2pkg/extensions/12.pre fi if [[ "$FAILED" = "" ]] && [[ ! $USER_CANCELLED ]] ; then if [[ ! $RESUME ]] || [[ $RESUME = $FUNCNAME ]] || [[ $HAVE_RESUMED ]] ; then [[ $RESUME = $FUNCNAME ]] && HAVE_RESUMED=1 && echo $CYAN" Notice - "$BLUE"Resuming build at: "$NORMAL "$FUNCNAME" if [[ $PAUSE = "BEFORE" ]] || [[ $PAUSE = $FUNCNAME ]] ; then echo $MAGENTA" Notice - "$BLUE"Pausing before: "$NORMAL" '$FUNCNAME' Press ENTER to continue" read fi if [[ "$CORRECT_MANS" = "YES" ]] ; then # Move badly placed man-pages if [[ -L "$PKG_DIR"/$BAD_MAN_PATH ]] ; then rm -f "$PKG_DIR"/$BAD_MAN_PATH fi if [[ -L "$PKG_DIR"/$GOOD_MAN_PATH ]] ; then rm -f "$PKG_DIR"/$GOOD_MAN_PATH fi if [[ -d "$PKG_DIR"/$BAD_MAN_PATH ]] ; then ( cd "$PKG_DIR" ; mkdir -p $GOOD_MAN_PATH &> /dev/null ) ( cd "$PKG_DIR" ; mv $BAD_MAN_PATH/* $GOOD_MAN_PATH/ &> /dev/null ) rm -rf "$PKG_DIR"/$BAD_MAN_PATH echo $CYAN" Notice - "$NORMAL"Moving man pages installed under $BAD_MAN_PATH to ${MAN_DIR#$PKG_DIR}" fi if [[ -d $PKG_DIR/$GOOD_MAN_PATH ]] ; then if [[ $(find $PKG_DIR/$GOOD_MAN_PATH -type d -name "cat*") ]] ; then [[ $DEBUG ]] && echo $CYAN" Notice - "$NORMAL"Removing pre-formatted (cat) man-pages" ( cd $PKG_DIR/$GOOD_MAN_PATH find . -type d -name "cat*" | xargs rm -rf ) fi fi fi if [[ $SAVE_SPACE -gt 3 ]] ; then for dir in $PRE_FIX/info $PRE_FIX/share/info usr/info usr/local/info usr/share/info /usr/local/share/info ; do if [[ -d "$PKG_DIR"/$dir ]] ; then echo -n $BLUE"Removing info files - "$NORMAL rm -rf "$PKG_DIR"/$dir echo $GREEN"Done!"$NORMAL fi done elif [[ "$CORRECT_MANS" = "YES" ]] ; then # Move badly placed info pages if [[ -L "$PKG_DIR"/$BAD_INFO_PATH ]] ; then rm -f "$PKG_DIR"/$BAD_INFO_PATH fi if [[ -L "$PKG_DIR"/$GOOD_INFO_PATH ]] ; then rm -f "$PKG_DIR"/$GOOD_INFO_PATH fi if [[ -d "$PKG_DIR"/$BAD_INFO_PATH ]] ; then echo $CYAN" Notice - "$NORMAL"Moving info pages installed under $BAD_INFO_PATH to ${INFO_DIR#$PKG_DIR}" ( cd $PKG_DIR ; mv $BAD_INFO_PATH $GOOD_INFO_PATH &> /dev/null ) rm -rf "$PKG_DIR"/$BAD_INFO_PATH fi # remove the info/dir file if present if [[ -f "$PKG_DIR"/$GOOD_INFO_PATH/dir ]] ; then rm -f "$PKG_DIR"/$GOOD_INFO_PATH/dir fi # remove the usr/share dir if empty if [[ -d "$PKG_DIR"/usr/share ]] && [[ $(ls "$PKG_DIR"/usr/share/ 2> /dev/null) = "" ]] ; then [[ $DEBUG ]] && echo $BLUE"Removing empty usr/share directory -"$NORMAL rm -rf "$PKG_DIR"/usr/share fi fi # make a more thorough check for man-pages if there still aren't any in the package if ! [[ -d "$MAN_DIR" ]] ; then for mansuffix in 1 1x 3 5 8 ; do if [[ -f "${SRC_DIR}"/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$SRC_DIR"/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=SRC_DIR fi if [[ -f "${SRC_DIR}"/debian/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$SRC_DIR"/debian/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=SRC_DIR/debian fi if [[ -f "${SRC_DIR}"/man${mansuffix}/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$SRC_DIR"/man$mansuffix/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=SRC_DIR/man$mansuffix fi if [[ -f "$CWD"/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$CWD"/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=CWD fi if [[ -f "$CWD"/Resources/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$CWD"/Resources/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=Resources fi if [[ -f "$CWD"/patches/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$CWD"/patches/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=patches fi if [[ -f "$PATCHES_DIR"/$NAME-patches/${NAME}.${mansuffix} ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$PATCHES_DIR"/$NAME-patches/$NAME.$mansuffix "$MAN_DIR"/man$mansuffix FOUND_MANS=$NAME-patches fi # make one last ditch effort to find a man-page if [[ $(find "${SRC_DIR}" -name "*.${mansuffix}") ]] ; then for MAN in $(find "${SRC_DIR}" -name "*.${mansuffix}") ; do if [[ $(file $MAN |grep troff) ]] ; then mkdir -p "$MAN_DIR"/man$mansuffix cp "$MAN" "$MAN_DIR"/man$mansuffix FOUND_MANS=SRC_DIR fi done fi done # lots of imake-type packages have .man pages, but we put them in man1 if [[ -f "$SRC_DIR"/$NAME.man ]] ; then mkdir -p "$MAN_DIR"/man1 cp "$SRC_DIR"/$NAME.man $MAN_DIR/man1/$NAME.1 FOUND_MANS=SRC_DIR elif [[ -f "$SRC_DIR"/debian/$NAME.man ]] ; then mkdir -p "$MAN_DIR"/man1 cp "$SRC_DIR"/debian/$NAME.man $MAN_DIR/man1/$NAME.1 FOUND_MANS=SRC_DIR fi if [[ $FOUND_MANS ]] ; then echo $CYAN" NOTICE - "$NORMAL"No man-pages installed by $MAKEFILE" echo $BLUE"Found man-pages in $FOUND_MANS -"$NORMAL" Installing in PKG_DIR" fi fi [[ $SAVE_SPACE -gt 0 ]] && MAN_COMPRESS="bzip2" case $MAN_COMPRESS in gzip*) MAN_COMPRESS_EXT=gz ;; bzip2*) MAN_COMPRESS_EXT=bz2 ;; lzma*) MAN_COMPRESS_EXT=lzma ;; esac # fix up any links to man-pages first if [[ -d "$MAN_DIR" ]]; then ( cd "$MAN_DIR" for manpagedir in $(find * -type d -name "man*") ; do # this function is from 09-fix_pkg_perms replace_hardlinks $manpagedir ( cd $manpagedir for eachpage in $( find . -maxdepth 1 -type l) ; do TARGET_PAGE=$( readlink $eachpage ) case $TARGET_PAGE in *.gz) BASE_TARGET=$(basename $TARGET_PAGE .gz) BASE_LINK=$(basename $eachpage .gz) ;; *.bz2) BASE_TARGET=$(basename $TARGET_PAGE .bz2) BASE_LINK=$(basename $eachpage .bz2) ;; *.lzma) BASE_TARGET=$(basename $TARGET_PAGE .lzma) BASE_LINK=$(basename $eachpage .lzma) ;; *) BASE_TARGET=$TARGET_PAGE ; BASE_LINK=$eachpage ;; esac rm -f $eachpage ln -sf $BASE_TARGET.$MAN_COMPRESS_EXT $BASE_LINK.$MAN_COMPRESS_EXT done ) done ) fi # decompress any already-compressed man-pages if [[ -d "$MAN_DIR" ]] ; then echo -n $BLUE"Compressing man pages - "$NORMAL cd "$MAN_DIR" find . -name '*.gz' -a -type f -exec gunzip -f {} \; &> /dev/null find . -name '*.bz2' -a -type f -exec bunzip2 -f {} \; &> /dev/null find . -name '*.lzma' -a -type f -exec unlzma -f {} \; &> /dev/null find . -name '*.xz' -a -type f -exec unxz -f {} \; &> /dev/null find . -type f -exec chmod 644 {} \; find . -type f -exec $MAN_COMPRESS -f {} \; &> /dev/null && MANSCOMPRESSED=1 find . -type f -exec $MAN_COMPRESS {} \; &> /dev/null && MANSCOMPRESSED=1 echo $GREEN"Done"$NORMAL fi if [[ -d "$INFO_DIR" ]] ; then echo -n $BLUE"Compressing info pages - "$NORMAL cd "$INFO_DIR" find . -name '*.gz' -a -type f -exec gunzip -f {} \; &> /dev/null find . -name '*.bz2' -a -type f -exec bunzip2 -f {} \; &> /dev/null find . -name '*.lzma' -a -type f -exec unlzma -f {} \; &> /dev/null find . -name '*.xz' -a -type f -exec unxz -f {} \; &> /dev/null find . -type f -exec chmod 644 {} \; find . -type f -exec $MAN_COMPRESS -f {} \; &> /dev/null && MANSCOMPRESSED=1 echo $GREEN"Done"$NORMAL fi # double-check the perms on the newly-created compressed files and the links # check directory perms if [[ -d "$MAN_DIR" ]] ; then chmod 755 "$MAN_DIR" ( cd "$MAN_DIR" ; find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; ) fi # check directory perms if [[ -d "$INFO_DIR" ]] ; then chmod 755 "$INFO_DIR" ( cd "$INFO_DIR" ; find -type f -exec chmod 644 {} \; ) fi if [[ $PAUSE = "AFTER" ]] || [[ $PAUSE = $FUNCNAME ]] ; then echo $MAGENTA" Notice - "$BLUE"Pausing after: "$NORMAL" '$FUNCNAME' Press ENTER to continue" read fi fi fi if [[ $ALLOW_USER_EXTENSIONS = "YES" ]] ; then # check if the user has any post-execution extensions to this file and run them, if so. [[ -f "$HOME"/.src2pkg/extensions/12.post ]] && . "$HOME"/.src2pkg/extensions/12.post fi } # end compress_man_pages