Browse Source

build-package: mv code for creating subpackages to new file

android-5
Henrik Grimler 6 years ago
parent
commit
9dece59651
  1. 3
      build-package.sh
  2. 3
      docs/BUILD.md
  3. 82
      scripts/build/termux_create_subpackages.sh
  4. 81
      scripts/build/termux_step_massage.sh

3
build-package.sh

@ -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

3
docs/BUILD.md

@ -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

@ -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
}

81
scripts/build/termux_step_massage.sh

@ -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…
Cancel
Save