[pacman-dev] [PATCH] makepkg: split message functions into libmakepkg

Allan McRae allan at archlinux.org
Mon Jan 26 14:50:04 UTC 2015


This performs all the needed work for libmakepkg to be included in
tarballs, installed into the correct place, and read into makepkg.

Also change the install root for libmakepkg to an architecture independant
location.

Signed-off-by: Allan McRae <allan at archlinux.org>
---
 scripts/Makefile.am                | 47 ++++++++++++++++++++++++++++++++----
 scripts/libmakepkg/.gitignore      |  1 +
 scripts/libmakepkg/util.sh.in      | 28 ++++++++++++++++++++++
 scripts/libmakepkg/util/message.sh | 49 ++++++++++++++++++++++++++++++++++++++
 scripts/makepkg.sh.in              | 29 ++++------------------
 scripts/po/POTFILES.in             |  1 +
 6 files changed, 125 insertions(+), 30 deletions(-)
 create mode 100644 scripts/libmakepkg/.gitignore
 create mode 100644 scripts/libmakepkg/util.sh.in
 create mode 100644 scripts/libmakepkg/util/message.sh

diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 4ef3ce0..5b61a6d 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -28,7 +28,8 @@ EXTRA_DIST = \
 	pacman-optimize.sh.in \
 	pkgdelta.sh.in \
 	repo-add.sh.in \
-	$(LIBRARY)
+	$(LIBRARY) \
+	$(LIBMAKEPKG_DIST)
 
 LIBRARY = \
 	library/output_format.sh \
@@ -37,10 +38,23 @@ LIBRARY = \
 	library/size_to_human.sh \
 	library/term_colors.sh
 
-# Files that should be removed, but which Automake does not know.
-MOSTLYCLEANFILES = $(bin_SCRIPTS)
+libmakepkgdir = $(datarootdir)/makepkg
+
+LIBMAKEPKGDIRS = \
+	util
+
+LIBMAKEPKG = \
+	libmakepkg/util/message.sh
 
-libmakepkgdir = $(libdir)/makepkg
+LIBMAKEPKG_IN = \
+	libmakepkg/util.sh
+
+LIBMAKEPKG_DIST = \
+	$(LIBMAKEPKG) \
+	$(addsuffix .in, $(LIBMAKEPKG_IN))
+
+# Files that should be removed, but which Automake does not know.
+MOSTLYCLEANFILES = $(bin_SCRIPTS) $(LIBMAKEPKG_IN)
 
 clean-local:
 	$(AM_V_at)$(RM) -r .lib
@@ -87,10 +101,18 @@ $(OURSCRIPTS): Makefile
 	$(AM_V_at)chmod +x,a-w $@
 	@$(BASH_SHELL) -O extglob -n $@
 
+$(LIBMAKEPKG_IN): %: %.in Makefile
+	$(AM_V_at)$(RM) $@
+	$(AM_V_at)$(MKDIR_P) $(dir $@)
+	$(AM_V_GEN)test -f $(srcdir)/$@.in && $(edit) $(srcdir)/$@.in >$@
+	$(AM_V_at)chmod a-w $@
+	@$(BASH_SHELL) -O extglob -n $@
+
 makepkg: \
 	$(srcdir)/makepkg.sh.in \
 	$(srcdir)/makepkg-wrapper.sh.in \
-	$(srcdir)/library/parseopts.sh
+	$(srcdir)/library/parseopts.sh \
+	$(LIBMAKEPKG_IN)
 
 makepkg-template: \
 	$(srcdir)/makepkg-template.pl.in \
@@ -150,6 +172,15 @@ install-exec-hook:
 	cd $(DESTDIR)$(bindir) && \
 		$(RM) makepkg makepkg-wrapper
 	$(INSTALL) .lib/makepkg $(DESTDIR)$(bindir)/makepkg
+	for dir in $(LIBMAKEPKGDIRS); do \
+		$(MKDIR_P) $(DESTDIR)$(libmakepkgdir)/$$dir; \
+	done
+	for lib in $(LIBMAKEPKG); do \
+		$(INSTALL) $(srcdir)/$$lib $(DESTDIR)$(libmakepkgdir)/$${lib#libmakepkg}; \
+	done
+	for lib in $(LIBMAKEPKG_IN); do \
+		$(INSTALL) $$lib $(DESTDIR)$(libmakepkgdir)/$${lib#libmakepkg}; \
+	done
 	cd $(DESTDIR)$(bindir) && \
 		$(RM) repo-elephant && \
 		( $(LN_S) repo-add repo-elephant || \
@@ -164,5 +195,11 @@ install-exec-hook:
 uninstall-hook:
 	cd $(DESTDIR)$(bindir) && \
 		$(RM) repo-remove repo-elephant
+	for lib in $(LIBMAKEPKG) $(LIBMAKEPKG_IN); do \
+		$(RM) $(DESTDIR)$(libmakepkgdir)/$${lib#libmakepkg}; \
+	done
+	for dir in $(LIBMAKEPKGDIRS); do \
+		$(RM) -r $(DESTDIR)$(libmakepkgdir)/$$dir; \
+	done
 
 # vim:set noet:
diff --git a/scripts/libmakepkg/.gitignore b/scripts/libmakepkg/.gitignore
new file mode 100644
index 0000000..d1c680d
--- /dev/null
+++ b/scripts/libmakepkg/.gitignore
@@ -0,0 +1 @@
+util.sh
diff --git a/scripts/libmakepkg/util.sh.in b/scripts/libmakepkg/util.sh.in
new file mode 100644
index 0000000..86c7659
--- /dev/null
+++ b/scripts/libmakepkg/util.sh.in
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+#   util.sh - utility functions for makepkg
+#
+#   Copyright (c) 2015 Pacman Development Team <pacman-dev at archlinux.org>
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ -n "$LIBMAKEPKG_UTIL_SH" ] && return
+LIBMAKEPKG_UTIL_SH=1
+
+LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
+
+for lib in "$LIBRARY/util/"*.sh; do
+	source "$lib"
+done
diff --git a/scripts/libmakepkg/util/message.sh b/scripts/libmakepkg/util/message.sh
new file mode 100644
index 0000000..15208ef
--- /dev/null
+++ b/scripts/libmakepkg/util/message.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+#   message.sh - functions for outputting messages in makepkg
+#
+#   Copyright (c) 2006-2015 Pacman Development Team <pacman-dev at archlinux.org>
+#   Copyright (c) 2002-2006 by Judd Vinet <jvinet at zeroflux.org>
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ -n "$LIBMAKEPKG_UTIL_MESSAGE_SH" ] && return
+LIBMAKEPKG_UTIL_MESSAGE_SH=1
+
+
+plain() {
+	local mesg=$1; shift
+	printf "${BOLD}    ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+msg() {
+	local mesg=$1; shift
+	printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+msg2() {
+	local mesg=$1; shift
+	printf "${BLUE}  ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+warning() {
+	local mesg=$1; shift
+	printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+error() {
+	local mesg=$1; shift
+	printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 99f645b..437c74b 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -100,31 +100,10 @@ shopt -s extglob
 
 ### SUBROUTINES ###
 
-plain() {
-	local mesg=$1; shift
-	printf "${BOLD}    ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
-msg() {
-	local mesg=$1; shift
-	printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
-msg2() {
-	local mesg=$1; shift
-	printf "${BLUE}  ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
-warning() {
-	local mesg=$1; shift
-	printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
-error() {
-	local mesg=$1; shift
-	printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
+# Import libmakepkg
+for lib in "$LIBRARY"/*.sh; do
+	source "$lib"
+done
 
 ##
 # Special exit call for traps, Don't print any error messages when inside,
diff --git a/scripts/po/POTFILES.in b/scripts/po/POTFILES.in
index f9e8a48..f286be9 100644
--- a/scripts/po/POTFILES.in
+++ b/scripts/po/POTFILES.in
@@ -8,5 +8,6 @@ scripts/pacman-key.sh.in
 scripts/pacman-optimize.sh.in
 scripts/pkgdelta.sh.in
 scripts/repo-add.sh.in
+scripts/libmakepkg/util/message.sh
 scripts/library/output_format.sh
 scripts/library/parseopts.sh
-- 
2.2.2


More information about the pacman-dev mailing list