build-package: mv code for creating subpackages to new file
This commit is contained in:
parent
a83e47ca77
commit
d30227669f
@ -116,6 +116,9 @@ termux_step_post_make_install() {
|
||||
# Function to cp (through tar) installed files to massage dir
|
||||
source scripts/build/termux_step_extract_into_massagedir.sh
|
||||
|
||||
# Create all subpackages. Run from termux_step_massage
|
||||
source scripts/build/termux_create_subpackages.sh
|
||||
|
||||
# Function to run various cleanup/fixes
|
||||
source scripts/build/termux_step_massage.sh
|
||||
|
||||
|
@ -62,7 +62,8 @@ Package build flow is controlled by script [build-package.sh](../build-package.s
|
||||
| 16 | `termux_step_make_install` | yes | Install the package. |
|
||||
| 17 | `termux_step_post_make_install` | yes | Hook before extraction. |
|
||||
| 18 | `termux_step_extract_into_massagedir` | no with `make_install` | Extracts installed files. |
|
||||
| 19 | `termux_step_massage` | no | Remove unusable files and creates subpackages. |
|
||||
| 19 | `termux_step_massage` | no | Remove unusable files. |
|
||||
| 19.1 | `termux_create_subpackages` | no | Creates all subpackages. |
|
||||
| 20 | `termux_step_post_massage` | yes | Final hook before packaging. |
|
||||
| 21 | `termux_step_create_datatar` | no | Archive package files. |
|
||||
| 22 | `termux_step_create_debfile` | no | Create package. |
|
||||
|
82
scripts/build/termux_create_subpackages.sh
Normal file
82
scripts/build/termux_create_subpackages.sh
Normal file
@ -0,0 +1,82 @@
|
||||
termux_create_subpackages() {
|
||||
# Sub packages:
|
||||
if [ -d include ] && [ -z "${TERMUX_PKG_NO_DEVELSPLIT}" ]; then
|
||||
# Add virtual -dev sub package if there are include files:
|
||||
local _DEVEL_SUBPACKAGE_FILE=$TERMUX_PKG_TMPDIR/${TERMUX_PKG_NAME}-dev.subpackage.sh
|
||||
echo TERMUX_SUBPKG_INCLUDE=\"include share/vala share/man/man3 lib/pkgconfig share/aclocal lib/cmake $TERMUX_PKG_INCLUDE_IN_DEVPACKAGE\" > "$_DEVEL_SUBPACKAGE_FILE"
|
||||
echo "TERMUX_SUBPKG_DESCRIPTION=\"Development files for ${TERMUX_PKG_NAME}\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
if [ -n "$TERMUX_PKG_DEVPACKAGE_DEPENDS" ]; then
|
||||
echo "TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME,$TERMUX_PKG_DEVPACKAGE_DEPENDS\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
else
|
||||
echo "TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
fi
|
||||
fi
|
||||
# Now build all sub packages
|
||||
rm -Rf "$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages"
|
||||
for subpackage in $TERMUX_PKG_BUILDER_DIR/*.subpackage.sh $TERMUX_PKG_TMPDIR/*subpackage.sh; do
|
||||
test ! -f "$subpackage" && continue
|
||||
local SUB_PKG_NAME
|
||||
SUB_PKG_NAME=$(basename "$subpackage" .subpackage.sh)
|
||||
# Default value is same as main package, but sub package may override:
|
||||
local TERMUX_SUBPKG_PLATFORM_INDEPENDENT=$TERMUX_PKG_PLATFORM_INDEPENDENT
|
||||
local SUB_PKG_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages/$SUB_PKG_NAME
|
||||
local TERMUX_SUBPKG_DEPENDS=""
|
||||
local TERMUX_SUBPKG_CONFLICTS=""
|
||||
local TERMUX_SUBPKG_REPLACES=""
|
||||
local TERMUX_SUBPKG_CONFFILES=""
|
||||
local SUB_PKG_MASSAGE_DIR=$SUB_PKG_DIR/massage/$TERMUX_PREFIX
|
||||
local SUB_PKG_PACKAGE_DIR=$SUB_PKG_DIR/package
|
||||
mkdir -p "$SUB_PKG_MASSAGE_DIR" "$SUB_PKG_PACKAGE_DIR"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
source "$subpackage"
|
||||
|
||||
for includeset in $TERMUX_SUBPKG_INCLUDE; do
|
||||
local _INCLUDE_DIRSET
|
||||
_INCLUDE_DIRSET=$(dirname "$includeset")
|
||||
test "$_INCLUDE_DIRSET" = "." && _INCLUDE_DIRSET=""
|
||||
if [ -e "$includeset" ] || [ -L "$includeset" ]; then
|
||||
# Add the -L clause to handle relative symbolic links:
|
||||
mkdir -p "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET"
|
||||
mv "$includeset" "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET"
|
||||
fi
|
||||
done
|
||||
|
||||
local SUB_PKG_ARCH=$TERMUX_ARCH
|
||||
test -n "$TERMUX_SUBPKG_PLATFORM_INDEPENDENT" && SUB_PKG_ARCH=all
|
||||
|
||||
cd "$SUB_PKG_DIR/massage"
|
||||
local SUB_PKG_INSTALLSIZE
|
||||
SUB_PKG_INSTALLSIZE=$(du -sk . | cut -f 1)
|
||||
tar -cJf "$SUB_PKG_PACKAGE_DIR/data.tar.xz" .
|
||||
|
||||
mkdir -p DEBIAN
|
||||
cd DEBIAN
|
||||
cat > control <<-HERE
|
||||
Package: $SUB_PKG_NAME
|
||||
Architecture: ${SUB_PKG_ARCH}
|
||||
Installed-Size: ${SUB_PKG_INSTALLSIZE}
|
||||
Maintainer: $TERMUX_PKG_MAINTAINER
|
||||
Version: $TERMUX_PKG_FULLVERSION
|
||||
Homepage: $TERMUX_PKG_HOMEPAGE
|
||||
HERE
|
||||
test ! -z "$TERMUX_SUBPKG_DEPENDS" && echo "Depends: $TERMUX_SUBPKG_DEPENDS" >> control
|
||||
test ! -z "$TERMUX_SUBPKG_CONFLICTS" && echo "Conflicts: $TERMUX_SUBPKG_CONFLICTS" >> control
|
||||
test ! -z "$TERMUX_SUBPKG_REPLACES" && echo "Replaces: $TERMUX_SUBPKG_REPLACES" >> control
|
||||
echo "Description: $TERMUX_SUBPKG_DESCRIPTION" >> control
|
||||
tar -czf "$SUB_PKG_PACKAGE_DIR/control.tar.gz" .
|
||||
|
||||
for f in $TERMUX_SUBPKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> conffiles; done
|
||||
|
||||
# Create the actual .deb file:
|
||||
TERMUX_SUBPKG_DEBFILE=$TERMUX_DEBDIR/${SUB_PKG_NAME}${DEBUG}_${TERMUX_PKG_FULLVERSION}_${SUB_PKG_ARCH}.deb
|
||||
test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary"
|
||||
ar cr "$TERMUX_SUBPKG_DEBFILE" \
|
||||
"$TERMUX_COMMON_CACHEDIR/debian-binary" \
|
||||
"$SUB_PKG_PACKAGE_DIR/control.tar.gz" \
|
||||
"$SUB_PKG_PACKAGE_DIR/data.tar.xz"
|
||||
|
||||
# Go back to main package:
|
||||
cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX"
|
||||
done
|
||||
}
|
@ -69,86 +69,7 @@ termux_step_massage() {
|
||||
done < <(find share/man -type l -print0)
|
||||
fi
|
||||
|
||||
# Sub packages:
|
||||
if [ -d include ] && [ -z "${TERMUX_PKG_NO_DEVELSPLIT}" ]; then
|
||||
# Add virtual -dev sub package if there are include files:
|
||||
local _DEVEL_SUBPACKAGE_FILE=$TERMUX_PKG_TMPDIR/${TERMUX_PKG_NAME}-dev.subpackage.sh
|
||||
echo TERMUX_SUBPKG_INCLUDE=\"include share/vala share/man/man3 lib/pkgconfig share/aclocal lib/cmake $TERMUX_PKG_INCLUDE_IN_DEVPACKAGE\" > "$_DEVEL_SUBPACKAGE_FILE"
|
||||
echo "TERMUX_SUBPKG_DESCRIPTION=\"Development files for ${TERMUX_PKG_NAME}\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
if [ -n "$TERMUX_PKG_DEVPACKAGE_DEPENDS" ]; then
|
||||
echo "TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME,$TERMUX_PKG_DEVPACKAGE_DEPENDS\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
else
|
||||
echo "TERMUX_SUBPKG_DEPENDS=\"$TERMUX_PKG_NAME\"" >> "$_DEVEL_SUBPACKAGE_FILE"
|
||||
fi
|
||||
fi
|
||||
# Now build all sub packages
|
||||
rm -Rf "$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages"
|
||||
for subpackage in $TERMUX_PKG_BUILDER_DIR/*.subpackage.sh $TERMUX_PKG_TMPDIR/*subpackage.sh; do
|
||||
test ! -f "$subpackage" && continue
|
||||
local SUB_PKG_NAME
|
||||
SUB_PKG_NAME=$(basename "$subpackage" .subpackage.sh)
|
||||
# Default value is same as main package, but sub package may override:
|
||||
local TERMUX_SUBPKG_PLATFORM_INDEPENDENT=$TERMUX_PKG_PLATFORM_INDEPENDENT
|
||||
local SUB_PKG_DIR=$TERMUX_TOPDIR/$TERMUX_PKG_NAME/subpackages/$SUB_PKG_NAME
|
||||
local TERMUX_SUBPKG_DEPENDS=""
|
||||
local TERMUX_SUBPKG_CONFLICTS=""
|
||||
local TERMUX_SUBPKG_REPLACES=""
|
||||
local TERMUX_SUBPKG_CONFFILES=""
|
||||
local SUB_PKG_MASSAGE_DIR=$SUB_PKG_DIR/massage/$TERMUX_PREFIX
|
||||
local SUB_PKG_PACKAGE_DIR=$SUB_PKG_DIR/package
|
||||
mkdir -p "$SUB_PKG_MASSAGE_DIR" "$SUB_PKG_PACKAGE_DIR"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
source "$subpackage"
|
||||
|
||||
for includeset in $TERMUX_SUBPKG_INCLUDE; do
|
||||
local _INCLUDE_DIRSET
|
||||
_INCLUDE_DIRSET=$(dirname "$includeset")
|
||||
test "$_INCLUDE_DIRSET" = "." && _INCLUDE_DIRSET=""
|
||||
if [ -e "$includeset" ] || [ -L "$includeset" ]; then
|
||||
# Add the -L clause to handle relative symbolic links:
|
||||
mkdir -p "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET"
|
||||
mv "$includeset" "$SUB_PKG_MASSAGE_DIR/$_INCLUDE_DIRSET"
|
||||
fi
|
||||
done
|
||||
|
||||
local SUB_PKG_ARCH=$TERMUX_ARCH
|
||||
test -n "$TERMUX_SUBPKG_PLATFORM_INDEPENDENT" && SUB_PKG_ARCH=all
|
||||
|
||||
cd "$SUB_PKG_DIR/massage"
|
||||
local SUB_PKG_INSTALLSIZE
|
||||
SUB_PKG_INSTALLSIZE=$(du -sk . | cut -f 1)
|
||||
tar -cJf "$SUB_PKG_PACKAGE_DIR/data.tar.xz" .
|
||||
|
||||
mkdir -p DEBIAN
|
||||
cd DEBIAN
|
||||
cat > control <<-HERE
|
||||
Package: $SUB_PKG_NAME
|
||||
Architecture: ${SUB_PKG_ARCH}
|
||||
Installed-Size: ${SUB_PKG_INSTALLSIZE}
|
||||
Maintainer: $TERMUX_PKG_MAINTAINER
|
||||
Version: $TERMUX_PKG_FULLVERSION
|
||||
Homepage: $TERMUX_PKG_HOMEPAGE
|
||||
HERE
|
||||
test ! -z "$TERMUX_SUBPKG_DEPENDS" && echo "Depends: $TERMUX_SUBPKG_DEPENDS" >> control
|
||||
test ! -z "$TERMUX_SUBPKG_CONFLICTS" && echo "Conflicts: $TERMUX_SUBPKG_CONFLICTS" >> control
|
||||
test ! -z "$TERMUX_SUBPKG_REPLACES" && echo "Replaces: $TERMUX_SUBPKG_REPLACES" >> control
|
||||
echo "Description: $TERMUX_SUBPKG_DESCRIPTION" >> control
|
||||
tar -czf "$SUB_PKG_PACKAGE_DIR/control.tar.gz" .
|
||||
|
||||
for f in $TERMUX_SUBPKG_CONFFILES; do echo "$TERMUX_PREFIX/$f" >> conffiles; done
|
||||
|
||||
# Create the actual .deb file:
|
||||
TERMUX_SUBPKG_DEBFILE=$TERMUX_DEBDIR/${SUB_PKG_NAME}${DEBUG}_${TERMUX_PKG_FULLVERSION}_${SUB_PKG_ARCH}.deb
|
||||
test ! -f "$TERMUX_COMMON_CACHEDIR/debian-binary" && echo "2.0" > "$TERMUX_COMMON_CACHEDIR/debian-binary"
|
||||
ar cr "$TERMUX_SUBPKG_DEBFILE" \
|
||||
"$TERMUX_COMMON_CACHEDIR/debian-binary" \
|
||||
"$SUB_PKG_PACKAGE_DIR/control.tar.gz" \
|
||||
"$SUB_PKG_PACKAGE_DIR/data.tar.xz"
|
||||
|
||||
# Go back to main package:
|
||||
cd "$TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX"
|
||||
done
|
||||
termux_create_subpackages
|
||||
|
||||
# .. remove empty directories (NOTE: keep this last):
|
||||
find . -type d -empty -delete
|
||||
|
Loading…
Reference in New Issue
Block a user