function echo_usage {
echo "usage: configure [options] <package>"
- echo " -a <arch>"
- echo " -c : configure"
- echo " -C <cross environment>"
- echo " -d : compile"
- echo " -i : install dir. default: /"
- echo " -I : print this info"
- echo " -p : pack default: do all"
- echo " -v : set version"
- echo " -V : version set by project"
+ echo "--- general options ---"
+ echo " -h : print this info"
+ echo "--- compile options ---"
+ echo " -a <arch>"
+ echo " -c <compile type: NONE|CPP|CMAKE|PDF|ANY> default: NONE"
+ echo " -C <cross environment>"
+ echo " -d <compile_dir>"
+ echo " -e <compile_target>"
+ echo "--- build target options ---"
+ echo " -i : install dir. default: /, nec. for make install"
+ echo " -n <target_name>: default: <package>"
+ echo " -t <target_type: FILE|DEB|ZIP>, nec. for make pack"
+ echo " -v : set version"
+ echo " -V : version set by project"
}
+function create_build {
+ pushd $BUILD_DIR >/dev/null
+ if [ "$compile_type" == "PDF" ]
+ then
+ echo "cd $compile_dir" > debian/$paket.build
+ echo "make $compile_target" >> debian/$paket.build
+ chmod 755 debian/$paket.build
+ else
+ echo "build for compile_type not implemented."
+ exit 10
+ fi
+ popd >/dev/null
+}
function cmake_check {
pushd ../build >/dev/null
# do checks
build=${tag##*-}
else
echo "No configuration system found. Cannot determine version."
- exit 1
+ exit 3
fi
}
if [ "$clversion" != $version ]
then
echo "version mismatch: git: $version, changelog: $clversion"
- exit 1
+ exit 4
+ fi
+}
+
+function add_sources {
+ echo "Anz: $#"
+ for suf in $*
+ do
+ find . -name "*.$suf" -exec echo " "{}" \\" >> make.pre \;
+ done
+ if [ $# -eq 2 ]
+ then
+ rm make.tmp || true
+ find . -name "*.$2" -exec echo {} >> make.tmp \;
+ while read line
+ do
+ echo " ${line/\.$2/\.$1} \\" >> make.pre
+ done < make.tmp
fi
}
##############################################################################
install_dir="/"
+compile_type=NONE
+extern_build=0
+
while [ $OPTIND -le "$#" ]
do
- if getopts "a:C:i:Iv:V" opt
+ if getopts "ha:bc:C:d:e:i:n:t:v:V" opt
then
case $opt in
+ h) echo_usage
+ exit 0
+ ;;
a) ARCH=$OPTARG
;;
+ b) extern_build=1
+ ;;
+ c) compile_type=$OPTARG
+ ;;
C) cross=$OPTARG
;;
+ d) compile_dir=$OPTARG
+ ;;
+ d) compile_target=$OPTARG
+ ;;
i) install_dir=$OPTARG
;;
- I) echo_usage
- exit 0
+ n) target_name=$OPTARG
+ ;;
+ t) target_type=$OPTARG
;;
v) optversion=$OPTARG
;;
;;
\?) echo "Invalid option: -$OPTARG"
echo_usage
- exit 1
+ exit 5
;;
:) echo "Option -$OPTARG requires an argument."
echo_usage
- exit 1
+ exit 6
;;
esac
else
if [ -z "$paket" ]
then
echo_usage
- exit 1
+ exit 7
+fi
+
+# read build configuration, if existing
+if [ -f debian/$paket.conf ]
+then
+ . debian/$paket.conf
fi
if [ -n "$ARCH" -a -n "$cross" ]
then
echo "invalid options: supply -a for multiarch or -C for explicit cross compile environment"
- exit 1
+ exit 8
fi
if [ ! -e Makefile ]
dpkg-architecture $arch_opt >> debian/setenv.sh
echo "paket=$paket" >> debian/setenv.sh
-echo "oldpack=\"$oldpack\"" >> debian/setenv.sh
set_build
if [ -z "$optversion" ]
version=$optversion
fi
echo "version=$version" >> debian/rules.pre
+echo "version=$version" >> debian/setenv.sh
echo "build=$build" >> debian/rules.pre
+echo "build=$build" >> debian/setenv.sh
# get repository name
# tmp=$(pwd)
popd >/dev/null
# ./. ---------------------------------------------
-# copy package control
-if [ -f debian/$paket.control ]
-then
- # proceed
- echo
-else
- echo "warning: control file not found"
- echo " this file is necessary for any package production."
-fi
-
# build prepare
if [ -x debian/$paket.prepare ]
then
debian/$paket.prepare
fi
-# compile prepare
-if [ -x debian/$paket.build -o -e debian/$paket.cmake ]
+if [ "$compile_type" == "NONE" ]
then
- # build requrired
+ echo "BUILD=nobuild" >> debian/rules.pre
+else
echo "BUILD=build" >> debian/rules.pre
- if [ -n "$BUILD_DIR" ]
+
+ if [ $extern_build -eq 1 ]
then
- BUILD_DIR=.
+ BUILD_DIR=~/build
+ echo "BUILD_DIR=~/build" >> debian/rules.pre
+ debian/rules sync
fi
-else
- echo "BUILD=nobuild" >> debian/rules.pre
-fi
-# .build
-if [ -x debian/$paket.build ]
-then
+
+ # .build
+ if [ "$compile_type" != "CMAKE" -a "$compile_type" != "ANY" ]
+ then
+ cp debian/rules.pre $BUILD_DIR/$compile_dir/make.pre
+ pushd $BUILD_DIR/$compile_dir >/dev/null
+ ln -sf /usr/share/mbuild/makefile .
+# if [ -n "$sources_suffix" ]
+# then
+# echo "SOURCES = \\" >> make.pre
+# for suf in $sources_suffix
+# do
+# find . -name "*.$suf" -exec echo " "{}" \\" >> make.pre \;
+# done
+# echo >> make.pre
+ fi
+ popd >/dev/null
+ fi
+
+ if [ "$compile_type" == "PDF" ]
+ then
+ pushd $BUILD_DIR/$compile_dir >/dev/null
+ echo "SOURCES = \\" >> make.pre
+ add_sources tex xml
+ echo >> make.pre
+ popd >/dev/null
if [ -x debian/$paket.prebuild ]
then
pushd $BUILD_DIR >/dev/null
debian/$paket.prebuild
popd >/dev/null
fi
-fi
-# .cmake
-if [ -e debian/$paket.cmake ]
-then
- cmake_check
-fi
-
-# pack prepare
-if [ -f debian/$paket.cp -a -f debian/$paket.control ]
-then
- echo "PACK=binary" >> debian/rules.pre
- if grep "^Architecture: *all" debian/$paket.control >/dev/null
+ if ! [ -x debian/$paket.build -o -f debian/$paket.cmake ]
then
- echo "arch = all" >> debian/rules.pre
- echo 'BINARY_INDEP = copy ../$(paket)_$(version)-$(build)_all.deb' >> debian/rules.pre
- else
- echo 'arch = ${DEB_HOST_ARCH}' >> debian/rules.pre
- echo "BINARY_ARCH = copy ../${paket}_$version-${build}_"'$(arch).deb' >> debian/rules.pre
+ create_build
fi
- if ! [ -f debian/$paket.changelog ]
+
+ # .cmake
+ if [ -e debian/$paket.cmake ]
then
- echo "changelog_source = debian/default.changelog" >> debian/rules.pre
- if [ -f debian/default.changelog ]
- then
- rm debian/default.changelog
- fi
+ cmake_check
fi
-elif [ -f debian/$paket.cp ]
-then
- echo "PACK=zip" >> debian/rules.pre
-else
- echo "PACK=version" >> debian/rules.pre
fi
+