From ede7ea996ee0d38c82d41652bf2fb2a264aaf934 Mon Sep 17 00:00:00 2001 From: Michael Wagner Date: Wed, 25 Jan 2017 18:02:03 +0100 Subject: [PATCH] bass --- tools/make/configure | 136 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 tools/make/configure diff --git a/tools/make/configure b/tools/make/configure new file mode 100755 index 0000000..e9770fa --- /dev/null +++ b/tools/make/configure @@ -0,0 +1,136 @@ +#!/bin/bash +set -e + +function echo_usage { + echo "usage: configure [options]" + echo " -b " + echo " -a " + echo " -g " + echo " -n : do not delete src dir" +} + +# to build a package you need ... +# .co: checkout commands +# .cp (optional): copy step for package production +# .cpp.sh (optional): commands to setup the C++ compile environment + +if [ $# -lt 2 ] +then + echo_usage + exit 1 +fi + +paket=$1 +build=$2 +shift 2 +ARCH="" +cpp_build=0 +alt_repos="" +delete_src=1 + +while getopts ":a:b:g:n" opt; do + case $opt in + a) ARCH=$OPTARG + ;; + b) branch=$OPTARG + ;; + g) alt_repos="-g $OPTARG" + ;; + n) delete_src=0 + ;; + \?) echo "Invalid option: -$OPTARG" + echo_usage + exit 1 + ;; + :) echo "Option -$OPTARG requires an argument." + echo_usage + exit 1 + ;; + esac +done + +ln -sf projects/tools/make/makefile . + +# check standard files +if [ ! -x $paket.co ] +then + echo "file $paket.co missing or not executable." + exit 1 +fi + +# clean dirs and check out +if [ -d src -a $delete_src -eq 1 ] +then + rm -rf src +fi + +if [ -e $paket ] +then + rm -rf $paket +fi +rm *.stamp || true +rm make.pre || true + +mkdir -p src +cwd=$(pwd) + +# checkout +pushd src >/dev/null + ../$paket.co $alt_repos $build +popd >/dev/null + +# load util functions for C/C++ - build +if [ -f $paket.cpp.sh ] +then + cpp_build=1 + . projects/tools/make/c_configure.sh + . $paket.cpp.sh +fi + +# copy package control +control=$(find -L src -name $paket.control) +build_number=${build#*_} +if [ -z "$control" ] +then + echo "warning: control file not found" + echo " this file is necessary for any package production." +else + sed "s/%BUILD%/$build_number/" $control |sed "s/%ARCH%/$ARCH/" >$paket.control + echo "$paket.control written." + + # extract version + version=$(grep Version $paket.control |sed "s/Version: //") +fi + +# check for copy file +copy=$(find -L src -name $paket.cp) +if [ -n "$copy" ] +then + ln -sf $copy . +else + echo "warning: file $paket.cp missing or not executable:" + echo " this file is necessary for any package production." +fi + +# check for postinst +postinst=$(find -L src -name $paket.postinst) +if [ -n "$postinst" ] +then + ln -sf $postinst . +fi + +# create generic make.pre, if not existing +if [ ! -f make.pre ] +then + cat >>make.pre <> make.pre +echo "build = $build" >> make.pre + -- 2.20.1