diff options
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | xi_buildscript.sh | 77 | ||||
-rw-r--r-- | xi_profile.sh | 93 | ||||
-rw-r--r-- | xibuild.sh | 13 |
4 files changed, 100 insertions, 86 deletions
@@ -2,4 +2,5 @@ PREFIX=/usr install: install -Dm755 xibuild.sh ${DESTDIR}${PREFIX}/bin/xibuild - install -Dm755 xi_profile.sh ${DESTDIR}${PREFIX}/lib/xibuild/xi_profile.sh + install -Dm755 xi_profile.sh ${DESTDIR}/etc/xibuild_profile.conf + install -Dm755 xi_buildscript.sh ${DESTDIR}${PREFIX}/lib/xibuild/xi_buildscript.sh diff --git a/xi_buildscript.sh b/xi_buildscript.sh new file mode 100644 index 0000000..d9e19f7 --- /dev/null +++ b/xi_buildscript.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +PKG_NAME=$1 +cd $2 + +. ./xi_profile.sh + +apply_patches () { + for p in *.patch; do + echo "Applying $p" + patch -Np1 -i $p + done +} + +add_from_main () { + for pattern in $@; do + printf "moving $pattern..." + for file in $(find ./xipkg/ -path "./xipkg/*/$pattern" ); do + printf "$file " + filename=${file#./xipkg/$PKG_NAME} + mkdir -p $PKG_DEST/${pattern%/*} + mv $file $PKG_DEST/${filename} + done + printf "\n" + done +} + +stages="prepare build check package" +case "$@" in + *"-n"*) + stages="prepare build package" +esac + +export BUILD_ROOT=$(realpath $2) + +echo "Build file for $1, to build at root $2" + +builds="$(ls *.xibuild | grep -v "$PKG_NAME.xibuild")" + +for xibuild in $PKG_NAME.xibuild $(ls *.xibuild | grep -v "^$PKG_NAME.xibuild$"); do + cd $2 + SUBPKG_NAME=$(basename $xibuild .xibuild) + mkdir -p ./xipkg/$SUBPKG_NAME + export PKG_DEST=$(realpath ./xipkg/$SUBPKG_NAME) + echo "to install to $PKG_DEST" + + echo "============$SUBPKG_NAME=============" + + # read only the static variables fromt the primary + . ./$PKG_NAME.xibuild + unset -f prepare + unset -f build + unset -f check + unset -f package + + . ./$xibuild + + + for t in $stages; do + type $t >/dev/null && { + echo "==========================$t stage==========================" + $t || exit 1 + } + done + + printf "checking for postinstall... " + if command -v postinstall > /dev/null; then + echo "adding postinstall" + POST_DIR=$PKG_DEST/var/lib/xipkg/postinstall + mkdir -p $POST_DIR + cat ./$PKG_NAME.xibuild > $POST_DIR/$PKG_NAME.sh + echo >> $POST_DIR/$PKG_NAME.sh + echo "postinstall" >> $POST_DIR/$PKG_NAME.sh + else + echo "no postinstall" + fi +done diff --git a/xi_profile.sh b/xi_profile.sh index d85d65e..93453cd 100644 --- a/xi_profile.sh +++ b/xi_profile.sh @@ -1,91 +1,24 @@ -#!/bin/sh - -export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin -export LIBRARY_PATH=/lib:/usr/lib/:/tools/lib:/tools/lib64 - export CC="clang" export CXX="clang++" export LD="clang" export JOBS=$(grep "processor" /proc/cpuinfo | wc -l) +export MAKEFLAGS=-j$JOBS +export SAMUFLAGS=-j$JOBS +export CARGO_BUILD_JOBS=$JOBS + +export CFLAGS="-Os -fomit-frame-pointer" +export CXXFLAGS="$CFLAGS" +export CPPFLAGS="$CFLAGS" +export LDFLAGS="-Wl,--as-needed,-O1,--sort-common" +export GOFLAGS="-buildmode=pie" +export DFLAGS="-Os" export HOME=/root -export MAKEFLAGS="-j$JOBS" export XORG_PREFIX="/usr" - export XORG_CONFIG="--prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static" -export RUST_TARGET="x86_64-unknown-linux-musl" - -apply_patches () { - for p in *.patch; do - echo "Applying $p" - patch -Np1 -i $p - done -} - -add_from_main () { - for pattern in $@; do - printf "moving $pattern..." - for file in $(find ./xipkg/ -path "./xipkg/*/$pattern" ); do - printf "$file " - filename=${file#./xipkg/$PKG_NAME} - mkdir -p $PKG_DEST/${pattern%/*} - mv $file $PKG_DEST/${filename} - done - printf "\n" - done -} - -PKG_NAME=$1 -cd $2 - -stages="prepare build check package" -case "$@" in - *"-n"*) - stages="prepare build package" -esac -export BUILD_ROOT=$(realpath $2) - -echo "Build file for $1, to build at root $2" - -builds="$(ls *.xibuild | grep -v "$PKG_NAME.xibuild")" - -for xibuild in $PKG_NAME.xibuild $(ls *.xibuild | grep -v "$PKG_NAME.xibuild"); do - cd $2 - SUBPKG_NAME=$(basename $xibuild .xibuild) - mkdir -p ./xipkg/$SUBPKG_NAME - export PKG_DEST=$(realpath ./xipkg/$SUBPKG_NAME) - echo "to install to $PKG_DEST" - - echo "============$SUBPKG_NAME=============" - - # read only the static variables fromt the primary - . ./$PKG_NAME.xibuild - unset -f prepare - unset -f build - unset -f check - unset -f package - - . ./$xibuild - - - for t in $stages; do - type $t >/dev/null && { - echo "==========================$t stage==========================" - $t || exit 1 - } - done +export RUST_TARGET="x86_64-unknown-linux-musl" - printf "checking for postinstall... " - if command -v postinstall > /dev/null; then - echo "adding postinstall" - POST_DIR=$PKG_DEST/var/lib/xipkg/postinstall - mkdir -p $POST_DIR - cat ./$PKG_NAME.xibuild > $POST_DIR/$PKG_NAME.sh - echo >> $POST_DIR/$PKG_NAME.sh - echo "postinstall" >> $POST_DIR/$PKG_NAME.sh - else - echo "no postinstall" - fi -done +export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin +export LIBRARY_PATH=/lib:/usr/lib/:/tools/lib:/tools/lib64 @@ -19,7 +19,8 @@ checkopt="" root="/" -xibuild_profile="/usr/lib/xibuild/xi_profile.sh" +xibuild_profile="/etc/xibuild_profile.conf" +xibuild_script="/usr/lib/xibuild/xi_buildscript.sh" usage () { cat << EOF @@ -34,9 +35,9 @@ ${BLUE}Avaiable Options: ${BLUE}-b ${LIGHT_BLUE}[path] ${LIGHT_CYAN}specify the directory to build things in ${LIGHT_WHITE}[default: /var/lib/xibuild] ${BLUE}-p ${LIGHT_BLUE}[file] - ${LIGHT_CYAN}specify a non-default xi_profile script, to run inside the chroot ${LIGHT_WHITE}[default: /usr/lib/xibuild/xi_profile.sh] + ${LIGHT_CYAN}specify a non-default xi_profile script, to run inside the chroot ${LIGHT_WHITE}[default: /etc/xibuild_profile.conf] ${BLUE}-k ${LIGHT_BLUE}[file] - ${LIGHT_CYAN}specify an openssl private key to sign packages with${LIGHT_WHITE}[default: /usr/lib/xibuild/xi_profile.sh] + ${LIGHT_CYAN}specify an openssl private key to sign packages with${LIGHT_WHITE} ${BLUE}-v ${LIGHT_CYAN}verbose: print logs to stdout @@ -114,13 +115,15 @@ xibuild_fetch () { } xibuild_build () { + install -d $root/$build_dir/ install -Dm755 $xibuild_profile $root/$build_dir/xi_profile.sh + install -Dm755 $xibuild_script $root/$build_dir/xi_buildscript.sh mkdir -p $root/$export_dir [ "$root" = "/" ] && { - sh $build_dir/xi_profile.sh $NAME $build_dir $checkopt || return 1 + sh $build_dir/xi_buildscript.sh $NAME $build_dir $checkopt || return 1 } || { - xichroot "$root" "$build_dir/xi_profile.sh $NAME $build_dir $checkopt" || return 1 + xichroot "$root" "$build_dir/xi_buildscript.sh $NAME $build_dir $checkopt" || return 1 } 2>&1 } |