[pacman-dev] [PATCH 2/3] libmakepkg: make package tidy functions extendable

Allan McRae allan at archlinux.org
Sun Feb 1 12:34:28 UTC 2015


To add a new packaging option, drop a file into libmakepkg/tidy that contains
a 'packaging_options+=('<option>') and a function that implements that
option. The function needs added to the 'tidy_remove' array if it removes
files or the 'tidy_modify' array otherwise.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/libmakepkg/tidy.sh.in            | 27 ++++++++++++---------------
 scripts/libmakepkg/tidy/docs.sh.in       |  2 ++
 scripts/libmakepkg/tidy/emptydirs.sh.in  |  3 +++
 scripts/libmakepkg/tidy/libtool.sh.in    |  3 +++
 scripts/libmakepkg/tidy/optipng.sh.in    |  3 +++
 scripts/libmakepkg/tidy/purge.sh.in      |  3 +++
 scripts/libmakepkg/tidy/staticlibs.sh.in |  3 +++
 scripts/libmakepkg/tidy/strip.sh.in      |  3 +++
 scripts/libmakepkg/tidy/upx.sh.in        |  3 +++
 scripts/libmakepkg/tidy/zipman.sh.in     |  3 +++
 10 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/scripts/libmakepkg/tidy.sh.in b/scripts/libmakepkg/tidy.sh.in
index b8c2965..1f439ba 100644
--- a/scripts/libmakepkg/tidy.sh.in
+++ b/scripts/libmakepkg/tidy.sh.in
@@ -26,14 +26,14 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 
 source "$LIBRARY/util/message.sh"
 
+
+declare -a packaging_options tidy_remove tidy_modify
+
 for lib in "$LIBRARY/tidy/"*.sh; do
 	source "$lib"
 done
 
-
-packaging_options=('strip' 'docs' 'libtool' 'staticlibs' 'emptydirs' 'zipman'
-                   'purge' 'upx' 'optipng' 'debug')
-readonly -a packaging_options
+readonly -a packaging_options tidy_remove tidy_modify
 
 
 tidy_install() {
@@ -41,15 +41,12 @@ tidy_install() {
 	msg "$(gettext "Tidying install...")"
 
 	# options that remove unwanted files
-	tidy_docs
-	tidy_purge
-	tidy_libtool
-	tidy_staticlibs
-	tidy_emptydirs
-
-	# options that reduce file sizes
-	tidy_zipman
-	tidy_strip
-	tidy_upx
-	tidy_optipng
+	for func in ${tidy_remove[@]}; do
+		$func
+	done
+
+	# options that modify files
+	for func in ${tidy_modify[@]}; do
+		$func
+	done
 }
diff --git a/scripts/libmakepkg/tidy/docs.sh.in b/scripts/libmakepkg/tidy/docs.sh.in
index 09b7234..a979130 100644
--- a/scripts/libmakepkg/tidy/docs.sh.in
+++ b/scripts/libmakepkg/tidy/docs.sh.in
@@ -26,6 +26,8 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
+packaging_options+=('docs')
+tidy_remove+=('tidy_docs')
 
 tidy_docs() {
 	if check_option "docs" "n" && [[ -n ${DOC_DIRS[*]} ]]; then
diff --git a/scripts/libmakepkg/tidy/emptydirs.sh.in b/scripts/libmakepkg/tidy/emptydirs.sh.in
index 8cdb4b0..c7103e9 100644
--- a/scripts/libmakepkg/tidy/emptydirs.sh.in
+++ b/scripts/libmakepkg/tidy/emptydirs.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('emptydirs')
+tidy_remove+=('tidy_emptydirs')
+
 tidy_emptydirs() {
 	if check_option "emptydirs" "n"; then
 		msg2 "$(gettext "Removing empty directories...")"
diff --git a/scripts/libmakepkg/tidy/libtool.sh.in b/scripts/libmakepkg/tidy/libtool.sh.in
index e1dafe6..b9c6245 100644
--- a/scripts/libmakepkg/tidy/libtool.sh.in
+++ b/scripts/libmakepkg/tidy/libtool.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('libtool')
+tidy_remove+=('tidy_libtool')
+
 tidy_libtool() {
 	if check_option "libtool" "n"; then
 		msg2 "$(gettext "Removing "%s" files...")" "libtool"
diff --git a/scripts/libmakepkg/tidy/optipng.sh.in b/scripts/libmakepkg/tidy/optipng.sh.in
index 1cd74f5..f739a82 100644
--- a/scripts/libmakepkg/tidy/optipng.sh.in
+++ b/scripts/libmakepkg/tidy/optipng.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('optipng')
+tidy_modify+=('tidy_optipng')
+
 tidy_optipng() {
 	if check_option "optipng" "y"; then
 		msg2 "$(gettext "Optimizing PNG images...")"
diff --git a/scripts/libmakepkg/tidy/purge.sh.in b/scripts/libmakepkg/tidy/purge.sh.in
index dbc0381..948f001 100644
--- a/scripts/libmakepkg/tidy/purge.sh.in
+++ b/scripts/libmakepkg/tidy/purge.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('purge')
+tidy_remove+=('tidy_purge')
+
 tidy_purge() {
 	if check_option "purge" "y" && [[ -n ${PURGE_TARGETS[*]} ]]; then
 		msg2 "$(gettext "Purging unwanted files...")"
diff --git a/scripts/libmakepkg/tidy/staticlibs.sh.in b/scripts/libmakepkg/tidy/staticlibs.sh.in
index 7dbe801..4849aba 100644
--- a/scripts/libmakepkg/tidy/staticlibs.sh.in
+++ b/scripts/libmakepkg/tidy/staticlibs.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('staticlibs')
+tidy_remove+=('tidy_staticlibs')
+
 tidy_staticlibs() {
 	if check_option "staticlibs" "n"; then
 		msg2 "$(gettext "Removing static library files...")"
diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in
index 4fe334b..15d92be 100644
--- a/scripts/libmakepkg/tidy/strip.sh.in
+++ b/scripts/libmakepkg/tidy/strip.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('strip' 'debug')
+tidy_modify+=('tidy_strip')
+
 tidy_strip() {
 	if check_option "strip" "y"; then
 		msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")"
diff --git a/scripts/libmakepkg/tidy/upx.sh.in b/scripts/libmakepkg/tidy/upx.sh.in
index 9012cd3..ec40b2e 100644
--- a/scripts/libmakepkg/tidy/upx.sh.in
+++ b/scripts/libmakepkg/tidy/upx.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('upx')
+tidy_modify+=('tidy_upx')
+
 tidy_upx() {
 	if check_option "upx" "y"; then
 		msg2 "$(gettext "Compressing binaries with %s...")" "UPX"
diff --git a/scripts/libmakepkg/tidy/zipman.sh.in b/scripts/libmakepkg/tidy/zipman.sh.in
index 8557789..a08a60f 100644
--- a/scripts/libmakepkg/tidy/zipman.sh.in
+++ b/scripts/libmakepkg/tidy/zipman.sh.in
@@ -27,6 +27,9 @@ source "$LIBRARY/util/message.sh"
 source "$LIBRARY/util/option.sh"
 
 
+packaging_options+=('zipman')
+tidy_modify+=('tidy_zipman')
+
 tidy_zipman() {
 	if check_option "zipman" "y" && [[ -n ${MAN_DIRS[*]} ]]; then
 		msg2 "$(gettext "Compressing man and info pages...")"
-- 
2.2.2


More information about the pacman-dev mailing list