From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Cc: Michael Olbrich <m.olbrich@pengutronix.de>
Subject: [ptxdist] [PATCH] add install_script_replace to replace in pre/post scripts
Date: Sun, 20 Nov 2011 13:44:23 +0100 [thread overview]
Message-ID: <1321793063-6210-1-git-send-email-m.olbrich@pengutronix.de> (raw)
In-Reply-To: <3944866A166FC34A948C72DD5EDDCA2A1DAE27E9@HQ0SBS01.airtag.local>
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
---
I had some time to play with the idea. What do you think of this?
Michael
rules/post/install.make | 18 ++++++++++++++++++
scripts/lib/ptxd_make_xpkg_finish.sh | 25 ++++++++++++-------------
scripts/lib/ptxd_make_xpkg_pkg.sh | 32 ++++++++++++++++++++++++++++++++
scripts/lib/ptxd_make_xpkg_prepare.sh | 7 -------
4 files changed, 62 insertions(+), 20 deletions(-)
diff --git a/rules/post/install.make b/rules/post/install.make
index 35b0034..4ad7f87 100644
--- a/rules/post/install.make
+++ b/rules/post/install.make
@@ -278,6 +278,24 @@ install_replace_figlet = \
echo "ptxd_install_replace_figlet '$$FILE' '$$PLACEHOLDER' '$$VALUE'" >> "$(STATEDIR)/$$XPKG.cmds"
#
+# install_script_replace
+#
+# Replace placeholder with value in a script
+#
+# $1: xpkg label
+# $2: script (preinst, postinst, ...)
+# $3: placeholder
+# $4: value
+#
+install_script_replace = \
+ XPKG=$(subst _,-,$(strip $(1))); \
+ FILE=$(strip $(2)); \
+ PLACEHOLDER=$(strip $(3)); \
+ VALUE=$(strip $(4)); \
+ $(call install_check, install_script_replace); \
+ echo "ptxd_install_script_replace '$$FILE' '$$PLACEHOLDER' '$$VALUE'" >> "$(STATEDIR)/$$XPKG.cmds"
+
+#
# install_copy_toolchain_lib
#
# $1: xpkg label
diff --git a/scripts/lib/ptxd_make_xpkg_finish.sh b/scripts/lib/ptxd_make_xpkg_finish.sh
index d424eac..64bed28 100644
--- a/scripts/lib/ptxd_make_xpkg_finish.sh
+++ b/scripts/lib/ptxd_make_xpkg_finish.sh
@@ -72,6 +72,18 @@ EOF
rm -f "${ptx_pkg_dir}/${pkg_xpkg}"_*"${PTXDIST_IPKG_ARCH_STRING}.ipk"
#
+ # add pre-/postinst runs to the command list
+ # make sure we replace in preinst first
+ #
+ (
+ cat "${pkg_xpkg_cmds}" | grep ptxd_install_script_replace
+ echo "ptxd_install_run preinst"
+ cat "${pkg_xpkg_cmds}" | grep -v ptxd_install_script_replace
+ echo "ptxd_install_run postinst"
+ ) > "${pkg_xpkg_cmds}.tmp"
+ mv "${pkg_xpkg_cmds}.tmp" "${pkg_xpkg_cmds}"
+
+ #
# create pkg
#
echo "xpkg_finish: creating ${pkg_xpkg_type} package ... " &&
@@ -83,18 +95,5 @@ EOF
}
echo "done."
-
-
- #
- # post install
- #
- # FIXME: install ipkg rather than executing script
- if ptxd_in_path PTXDIST_PATH_RULES "${pkg_xpkg}.postinst"; then
- echo "xpkg_finish: running postinst"
- DESTDIR="${ptx_nfsroot}" /bin/sh "${ptxd_reply}"
- DESTDIR="${ptx_nfsroot_dbg}" /bin/sh "${ptxd_reply}"
- fi
-
- return
}
export -f ptxd_make_xpkg_finish
diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh
index 89d6319..ecc077a 100644
--- a/scripts/lib/ptxd_make_xpkg_pkg.sh
+++ b/scripts/lib/ptxd_make_xpkg_pkg.sh
@@ -369,6 +369,24 @@ install replace:
}
export -f ptxd_install_replace
+ptxd_install_script_replace() {
+ local dst="$1"
+ local placeholder="$2"
+ local value="$3"
+
+ echo "\
+install script replace:
+ script=${dst}
+ '${placeholder}' -> '${value}'
+"
+
+ ptxd_exist "${pkg_xpkg_control_dir}/${dst}" &&
+ sed -i -e "s,${placeholder},${value},g" "${pkg_xpkg_control_dir}/${dst}" ||
+
+ ptxd_install_error "install_script_replace failed!"
+}
+export -f ptxd_install_script_replace
+
ptxd_install_replace_figlet() {
local dst="$1"
local placeholder="$2"
@@ -627,6 +645,20 @@ ptxd_install_lib() {
}
export -f ptxd_install_lib
+ptxd_install_run() {
+ local script="${pkg_xpkg_control_dir}/${1}"
+
+ if [ -e "${script}" ]; then
+ echo "\
+executing '${pkg_label}.${1}'
+"
+ DESTDIR="${ptx_nfsroot}" /bin/sh "${script}" &&
+ DESTDIR="${ptx_nfsroot_dbg}" /bin/sh "${script}"
+ fi ||
+ ptxd_install_error "running '${1}' script failed!"
+}
+export -f ptxd_install_run
+
ptxd_make_xpkg_pkg() {
local pkg_xpkg_tmp="$1"
local pkg_xpkg_cmds="$2"
diff --git a/scripts/lib/ptxd_make_xpkg_prepare.sh b/scripts/lib/ptxd_make_xpkg_prepare.sh
index eeb9356..e88a347 100644
--- a/scripts/lib/ptxd_make_xpkg_prepare.sh
+++ b/scripts/lib/ptxd_make_xpkg_prepare.sh
@@ -93,13 +93,6 @@ install_init: @DEPENDS@ -> ${dep}"
"${pkg_xpkg_control_dir}/${script}" || return
echo "packaging: '$(ptxd_print_path "${ptxd_reply}")'"
-
- # FIXME: install ipkg rather than executing script
- if [ "${script}" = "preinst" ]; then
- echo "install_init: executing '${ptxd_reply}'"
- DESTDIR="${ptx_nfsroot}" /bin/sh "${ptxd_reply}"
- DESTDIR="${ptx_nfsroot_dbg}" /bin/sh "${ptxd_reply}"
- fi
else
echo "not available"
fi
--
1.7.7.1
--
ptxdist mailing list
ptxdist@pengutronix.de
prev parent reply other threads:[~2011-11-20 12:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-10 10:45 [ptxdist] install_replace on a {pre,post}{rm,inst} script Benoît BURNICHON
2011-11-10 12:34 ` Benoît BURNICHON
2011-11-20 12:44 ` Michael Olbrich [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1321793063-6210-1-git-send-email-m.olbrich@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox