[pacman-dev] makepkg patch to create $pkgname-docs package for docs

Alessio 'mOLOk' Bolognino themolok.ml at gmail.com
Mon Apr 23 13:38:37 EDT 2007


This patch is a proof of concept to create a separate package
for docs file ($pkgname-docs) with an only PKGBUILD.

Do you like it?

---
 scripts/makepkg.in |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 108 insertions(+), 3 deletions(-)

diff --git a/scripts/makepkg.in b/scripts/makepkg.in
index 1125e85..0fa9015 100755
--- a/scripts/makepkg.in
+++ b/scripts/makepkg.in
@@ -414,6 +414,27 @@ installpackage() {
 	fi
 }
 
+installdocspackage() {
+	if [ "$INSTALL" = "1" -a "$SUDO" = "1" ]; then
+		msg "$(gettext "Installing docs package with pacman -U...")"
+		if [ "$INFAKEROOT" = "1" ]; then
+			FAKEROOTKEY2=$FAKEROOTKEY
+			unset FAKEROOTKEY
+		fi
+		sudo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-docs-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}
+		local exitcode=$?
+		if [ "$INFAKEROOT" = "1" ]; then
+			export FAKEROOTKEY=$FAKEROOTKEY2
+			unset FAKEROOTKEY2
+		fi
+		exit $exitcode
+	elif [ "$INSTALL" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then
+		msg "$(gettext "Installing docs package with pacman -U...")"
+		pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-docs-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}
+		exit $?
+	fi
+}
+
 usage() {
 	echo "$(eval_gettext "makepkg version \$myver")"
 	echo
@@ -961,9 +982,90 @@ else
 	fi
 fi
 
-if [ "$(check_option docs)" = "n" ]; then
-	# remove info/doc files
-	msg "$(gettext "Removing info/doc files...")"
+
+if [ "$(check_option packdocs)" = "y" ]; then
+	msg "Packaging docs"
+
+	rm -fr $startdir/pkg-docs
+
+	cd "$startdir/pkg"
+	for ddir in ${DOC_DIRS[@]}; do
+		if [ -d $ddir ]; then
+			mkdir -p "$startdir/pkg-docs/$ddir"
+			mv $ddir/* "$startdir/pkg-docs/$ddir"
+		fi
+	done
+
+	# remove docs from the master package
+	rm -rf ${DOC_DIRS[@]}
+	find -depth -type d -empty -delete;
+
+	cd "$startdir/pkg-docs"
+	tar cvf /dev/null * | sort >.FILELIST
+
+	builddate=$(LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y")
+	if [ "$PACKAGER" != "" ]; then
+		packager="$PACKAGER"
+	else
+		packager="Arch Linux (http://www.archlinux.org)"
+	fi
+
+	size=$(du -cb "$startdir/pkg-docs" | tail -n 1 | awk '{print $1}')
+
+	# write the .PKGINFO file
+	msg "$(gettext "Generating .PKGINFO file...")"
+	echo "# Generated by makepkg $myver" >.PKGINFO
+	echo -n "# " >>.PKGINFO
+	date >>.PKGINFO
+	echo "pkgname = $pkgname-docs" >>.PKGINFO
+	echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO
+
+	# You may want to change this
+	echo "pkgdesc = $pkgname docs" >>.PKGINFO
+	
+	echo "url = $url" >>.PKGINFO
+	echo "builddate = $builddate" >>.PKGINFO
+	echo "packager = $packager" >>.PKGINFO
+	echo "size = $size" >>.PKGINFO
+
+	# maybe put NOARCH or something similar?
+	if [ "$CARCH" != "" ]; then
+		echo "arch = $CARCH" >>.PKGINFO
+	fi
+
+	# and which license? should docs package 
+	# inherit master package license? (I don't think so)
+	# maybe we could add a docslicense var into the PKGBUILD
+	for it in "${license[@]}"; do
+		echo "license = $it" >>.PKGINFO
+	done
+
+	# We could use a 'docs' group, or inherit master package group
+	for it in "${groups[@]}"; do
+		echo "group = $it" >>.PKGINFO
+	done
+
+# I don't think these are needed for a -docs package
+# echo "replaces = $it" >>.PKGINFO
+# echo "depend = $it" >>.PKGINFO
+# echo "conflict = $it" >>.PKGINFO
+# echo "provides = $it" >>.PKGINFO
+# echo "backup = $it" >>.PKGINFO
+
+  pkg_docs_file="$PKGDEST/$pkgname-docs-$pkgver-$pkgrel-${CARCH}.${PKGEXT}"
+  comp_files=".PKGINFO .FILELIST ${install:+.INSTALL}"
+
+	msg "$(gettext "Compressing docs package...")"
+	if ! tar czf $pkg_docs_file $comp_files *; then
+		error "$(gettext "Failed to create docs package file.")"
+		exit 1
+	fi
+
+elif [ "$(check_option docs)" = "n" ]; then
+# maybe "else" instead of "elif" would be better?
+
+  # remove info/doc files
+  msg "$(gettext "Removing info/doc files...")"
 	cd "$startdir/pkg"
 	#fix flyspray bug #5021
 	rm -rf ${DOC_DIRS[@]}
@@ -1122,6 +1224,9 @@ msg "$(eval_gettext "Finished making: \$pkgname  (\$date)")"
 
 installpackage
 
+if [ "$(check_option packdocs)" = "y" ]; then
+	installdocspackage
+fi
 exit 0
 
 # vim: set ts=2 sw=2 noet:
-- 
1.5.1

-- 
Alessio 'mOLOk' Bolognino
Arch Linux Trusted User

Public Key @ http://themolok.netsons.org/uploads/themolok.asc
Key ID = 1024D / FE0270FB 2007-04-11
Key Fingerprint = 9AF8 9011 F271 450D 59CF  2D7D 96C9 8F2A FE02 70FB
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://archlinux.org/pipermail/pacman-dev/attachments/20070423/642d8e3e/attachment.pgp>


More information about the pacman-dev mailing list