From: Allan McRae <allan@archlinux.org> 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> (cherry picked from commit 015667ab2c8f0be3b5ff34cc93757e7873a09dbd) Signed-off-by: Ashley Whetter <ashley@awhetter.co.uk> Conflicts: scripts/.gitignore scripts/Makefile.am --- scripts/.gitignore | 1 + scripts/Makefile.am | 25 +++++++++++++++++++++++++ scripts/makepkg-wrapper.sh.in | 23 +++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 scripts/makepkg-wrapper.sh.in diff --git a/scripts/.gitignore b/scripts/.gitignore index 26e088b..8dac503 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,5 +1,6 @@ makepkg makepkg-template +makepkg-wrapper pacman-db-upgrade pacman-key pacman-optimize diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 1f3bae2..f45065d 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -6,6 +6,7 @@ SUBDIRS = po bin_SCRIPTS = \ $(OURSCRIPTS) \ makepkg-template \ + makepkg-wrapper \ repo-remove \ repo-elephant @@ -20,6 +21,7 @@ OURSCRIPTS = \ EXTRA_DIST = \ makepkg.sh.in \ makepkg-template.pl.in \ + makepkg-wrapper.sh.in \ pacman-db-upgrade.sh.in \ pacman-key.sh.in \ pacman-optimize.sh.in \ @@ -37,6 +39,9 @@ LIBRARY = \ # Files that should be removed, but which Automake does not know. MOSTLYCLEANFILES = $(bin_SCRIPTS) +clean-local: + $(AM_V_at)$(RM) -r .lib + if USE_GIT_VERSION GIT_VERSION := $(shell sh -c 'git describe --abbrev=4 --dirty | sed s/^v//') REAL_PACKAGE_VERSION = $(GIT_VERSION) @@ -77,6 +82,7 @@ $(OURSCRIPTS): Makefile makepkg: \ $(srcdir)/makepkg.sh.in \ + $(srcdir)/makepkg-wrapper.sh.in \ $(srcdir)/library/parseopts.sh makepkg-template: \ @@ -117,8 +123,27 @@ repo-elephant: $(srcdir)/repo-add.sh.in $(AM_V_at)$(RM) repo-elephant $(AM_V_at)$(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..d703ee4 --- /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) 2013 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 exec "$DIR"/.lib/makepkg "$@" -- 1.8.4