Support different interpreters in prein/postin scriptlets 00/300200/2
authorwang biao <biao716.wang@samsung.com>
Wed, 18 Oct 2023 08:51:50 +0000 (16:51 +0800)
committerwang biao <biao716.wang@samsung.com>
Mon, 23 Oct 2023 07:59:29 +0000 (15:59 +0800)
In default, it use /bin/sh as prein/postin scriptlets interpreter, but it also
allow lua or perl other kinds of interpeter to run scripts.
Change-Id: Ie01ee8af5154c2f7b73c55a897722b4cb6031928
Signed-off-by: wang biao <biao716.wang@samsung.com>
build-pkg-rpm

index 0b31576..607edf7 100644 (file)
@@ -186,7 +186,9 @@ pkg_preinstall_rpm() {
     fi
     if test -e ".init_b_cache/scripts/$PKG.run" ; then
        rpm -qp --nodigest --nosignature --qf "%{PREIN}" "'$BUILD_ROOT'/.init_b_cache/rpms/$PKG.rpm" > ".init_b_cache/scripts/$PKG.pre"
+       rpm -qp --nodigest --nosignature --qf "%{PREINPROG}" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" > ".init_b_cache/scripts/$PKG.preprog"
        rpm -qp --nodigest --nosignature --qf "%{POSTIN}" "'$BUILD_ROOT'/.init_b_cache/rpms/$PKG.rpm" > ".init_b_cache/scripts/$PKG.post"
+       rpm -qp --nodigest --nosignature --qf "%{POSTINPROG}" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" > ".init_b_cache/scripts/$PKG.postprog"
        echo -n '(none)' > .init_b_cache/scripts/.none
        cmp -s ".init_b_cache/scripts/$PKG.pre" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$PKG.pre"
        cmp -s ".init_b_cache/scripts/$PKG.post" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$PKG.post"
@@ -204,12 +206,16 @@ pkg_preinstall_rpm() {
 pkg_runscripts_rpm() {
     if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" ; then
        echo "running $PKG preinstall script"
-       (cd "$BUILD_ROOT" && chroot "$BUILD_ROOT" sh ".init_b_cache/scripts/$PKG.pre" 0)
-       rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre"
+       local prog
+       read prog < "$BUILD_ROOT/.init_b_cache/scripts/$PKG.preprog"
+       (cd $BUILD_ROOT && chroot $BUILD_ROOT "${prog:-sh}" ".init_b_cache/scripts/$PKG.pre" 0)
+       rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" "$BUILD_ROOT/.init_b_cache/scripts/$PKG.preprog"
     fi
     if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" ; then
        echo "running $PKG postinstall script"
-       (cd "$BUILD_ROOT" && chroot "$BUILD_ROOT" sh ".init_b_cache/scripts/$PKG.post" 1)
-       rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post"
+       local prog
+       read prog < "$BUILD_ROOT/.init_b_cache/scripts/$PKG.postprog"
+       (cd $BUILD_ROOT && chroot $BUILD_ROOT "${prog:-sh}" ".init_b_cache/scripts/$PKG.post" 1)
+       rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" "$BUILD_ROOT/.init_b_cache/scripts/$PKG.postprog"
     fi
 }