[pacman-dev] [RFC] [PATCH] makepkg: run locally with libtool style wrapper
Build makepkg to scripts/.lib/makepkg and add a wrapper script to call it. This is not useful at the moment, but is the first step to allowing makepkg to be split into smaller pieces. Signed-off-by: Allan McRae <allan@archlinux.org> --- This seems somewhat horrid, but I could not find a better way to do this. Once this splitting is started, it will be easy(er) to overhaul the VCS PKGBUILD system, and perhaps debugging symbol packages too... Tested that building and running "makepkg" in the usual way works, "make install" and "make distcheck" work. scripts/.gitignore | 1 + scripts/Makefile.am | 27 ++++++++++++++++++++++++++- scripts/makepkg-wrapper.sh.in | 23 +++++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 scripts/makepkg-wrapper.sh.in diff --git a/scripts/.gitignore b/scripts/.gitignore index 9e403bf..0310b9b 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,4 +1,5 @@ makepkg +makepkg-wrapper pacman-db-upgrade pacman-key pacman-optimize diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 9a08524..71d6cc4 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -4,7 +4,8 @@ AUTOMAKE_OPTIONS = std-options SUBDIRS = po bin_SCRIPTS = \ - $(OURSCRIPTS) + $(OURSCRIPTS) \ + makepkg-wrapper OURSCRIPTS = \ makepkg \ @@ -16,6 +17,7 @@ OURSCRIPTS = \ EXTRA_DIST = \ makepkg.sh.in \ + makepkg-wrapper.sh.in \ pacman-db-upgrade.sh.in \ pacman-key.sh.in \ pacman-optimize.sh.in \ @@ -32,6 +34,9 @@ LIBRARY = \ # Files that should be removed, but which Automake does not know. MOSTLYCLEANFILES = $(bin_SCRIPTS) +clean-local: + $(AM_V_at)rm -rf .lib + if USE_GIT_VERSION GIT_VERSION := $(shell sh -c 'git describe --abbrev=4 --dirty | sed s/^v//') REAL_PACKAGE_VERSION = $(GIT_VERSION) @@ -69,6 +74,7 @@ $(OURSCRIPTS): Makefile makepkg: \ $(srcdir)/makepkg.sh.in \ + $(srcdir)/makepkg-wrapper.sh.in \ $(srcdir)/library/parseopts.sh pacman-db-upgrade: \ @@ -101,8 +107,27 @@ repo-elephant: $(srcdir)/repo-add.sh.in $(RM) repo-elephant $(LN_S) repo-add repo-elephant +makepkg-wrapper: \ + Makefile \ + $(srcdir)/makepkg-wrapper.sh.in \ + $(srcdir)/makepkg.sh.in \ + $(srcdir)/library/parseopts.sh \ + | makepkg + $(AM_V_at)$(MKDIR_P) .lib + $(AM_V_at)mv -f makepkg .lib + $(AM_V_at)$(RM) $@ + $(AM_V_GEN)sed \ + -e "s|@PWD[@]|$$(pwd)|" \ + -e '1s|!/bin/bash|!$(BASH_SHELL)|g' \ + $(srcdir)/$@.sh.in > $@ + $(AM_V_at)chmod +x,a-w $@ + $(AM_V_at)$(LN_S) makepkg-wrapper makepkg + install-data-hook: cd $(DESTDIR)$(bindir) && \ + $(RM) makepkg makepkg-wrapper + $(INSTALL) .lib/makepkg $(DESTDIR)$(bindir)/makepkg + cd $(DESTDIR)$(bindir) && \ $(RM) repo-elephant && \ ( $(LN_S) repo-add repo-elephant || \ ln repo-add repo-elephant || \ diff --git a/scripts/makepkg-wrapper.sh.in b/scripts/makepkg-wrapper.sh.in new file mode 100644 index 0000000..70cda93 --- /dev/null +++ b/scripts/makepkg-wrapper.sh.in @@ -0,0 +1,23 @@ +#!/bin/bash +# +# makepkg - a wrapper for running the real makepkg in the source tree +# +# Copyright (c) 2012 Pacman Development Team <pacman-dev@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/>. +# + +DIR=@PWD@ + +LIBRARY=$DIR/libmakepkg $DIR/.lib/makepkg "$@" -- 1.7.10.2
participants (1)
-
Allan McRae