fix output for mac
This commit is contained in:
@@ -230,6 +230,7 @@ AC_DEFUN([AX_CHECK_QT], [
|
||||
AC_SUBST(CXXFLAGS)
|
||||
AC_SUBST(PKG_REQUIREMENTS)
|
||||
AX_ADDITIONAL_QT_RULES_HACK='
|
||||
#### Begin: Appended by $0
|
||||
|
||||
LANGUAGE_FILE_BASE ?= translations
|
||||
|
||||
@@ -241,7 +242,6 @@ moc_%.cxx: %.hxx
|
||||
|
||||
qrc_%.cxx: %.qrc
|
||||
$(RCC) -o [$][@] -name ${<:%.qrc=%} $<
|
||||
AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK)
|
||||
|
||||
#%.qrc: %
|
||||
# cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@]
|
||||
@@ -249,12 +249,15 @@ qrc_%.cxx: %.qrc
|
||||
%.qm: %.ts
|
||||
${LRELEASE} $< -qm [$][@]
|
||||
|
||||
%.ts: ${LANGUAGE_FILES:%=%}
|
||||
%.ts: ${LANGUAGE_FILES}
|
||||
${LUPDATE} -no-obsolete \
|
||||
-target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \
|
||||
-ts [$][@] $<
|
||||
-target-language [$]{@:${LANGUAGE_FILE_BASE}_%.ts=%} \
|
||||
[$][^] \
|
||||
-ts [$][@]
|
||||
|
||||
'])
|
||||
#### End: $0
|
||||
'
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_REQUIRE_QT], [
|
||||
AX_CHECK_QT([$1], [$2], [$3], [$4])
|
||||
@@ -269,3 +272,13 @@ AC_DEFUN([AX_REQUIRE_QT], [
|
||||
AC_DEFUN([AX_QT_NO_KEYWORDS], [
|
||||
CPPFLAGS+=" -DQT_NO_KEYWORDS"
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_INIT_QT], [
|
||||
if test -n "${AX_ADDITIONAL_QT_RULES_HACK}"; then
|
||||
for f in $(find test examples src -name makefile.in); do
|
||||
test -f "$f" && cat >> "$f" <<EOF
|
||||
${AX_ADDITIONAL_QT_RULES_HACK}
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
@@ -90,7 +90,7 @@ dnl refers to ${prefix}. Thus we have to use `eval' twice.
|
||||
# $3 = filename of makefile.in
|
||||
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
||||
sh_add_makefile_target_dep() {
|
||||
sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${srcdir}/${3}"
|
||||
sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'"${1}"':.*$/& '"${2}"'/' "${srcdir}/${3}"
|
||||
if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then
|
||||
echo "${1}: ${2}" >> "${srcdir}/${3}"
|
||||
fi
|
||||
@@ -171,7 +171,7 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
||||
AX_SUBST(HOME)
|
||||
if test -f README.md; then
|
||||
README=$(tail -n +3 README.md)
|
||||
DESCRIPTION=$(head -1 README.md)
|
||||
DESCRIPTION=$(head -1 README.md | sed 's,^#\+ *,,;s, *#\+$,,')
|
||||
else
|
||||
README=$(tail -n +3 README)
|
||||
DESCRIPTION=$(head -1 README)
|
||||
@@ -456,6 +456,12 @@ AC_DEFUN([AX_USE_NODEJS], [
|
||||
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
|
||||
AC_CONFIG_FILES([nodejs/package.json])
|
||||
AC_CONFIG_FILES([nodejs/makefile])
|
||||
if test -z "${DEB_SECTION}"; then
|
||||
AX_DEB_SECTION([web])
|
||||
fi
|
||||
if test -z "${RPM_GROUP}"; then
|
||||
AX_RPM_GROUP([Applications/Internet])
|
||||
fi
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-nodejs-targets], [nodejs/makefile.in])
|
||||
test -f nodejs/makefile.in && cat >> nodejs/makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
@@ -494,6 +500,12 @@ EOF
|
||||
# use this in configure.ac to support HTML data for webservers
|
||||
AC_DEFUN([AX_BUILD_HTML], [
|
||||
AC_CONFIG_FILES([html/makefile])
|
||||
if test -z "${DEB_SECTION}"; then
|
||||
AX_DEB_SECTION([web])
|
||||
fi
|
||||
if test -z "${RPM_GROUP}"; then
|
||||
AX_RPM_GROUP([Applications/Internet])
|
||||
fi
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-html-targets], [html/makefile.in])
|
||||
test -f html/makefile.in && cat >> html/makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
@@ -521,6 +533,12 @@ AC_DEFUN([AX_USE_LIBTOOL], [
|
||||
AC_SUBST(LIB_VERSION)
|
||||
AC_PROG_LIBTOOL
|
||||
AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc])
|
||||
if test -z "${DEB_SECTION}"; then
|
||||
AX_DEB_SECTION([devel])
|
||||
fi
|
||||
if test -z "${RPM_GROUP}"; then
|
||||
AX_RPM_GROUP([Development/Libraries])
|
||||
fi
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-libtool-pkg], [src/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-data-am], [src/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-data-am], [uninstall-data-libtool-pkg], [src/makefile.in])
|
||||
@@ -538,7 +556,11 @@ EOF
|
||||
])
|
||||
|
||||
# use this in configure.ac to support debian packages
|
||||
# - $1: optional debian package section
|
||||
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
|
||||
if test -n "$1"; then
|
||||
AX_DEB_SECTION([$1])
|
||||
fi
|
||||
if test -f README.md; then
|
||||
README_DEB=$(tail -n +3 README.md | sed -e 's/^ *$/./g' -e 's/^/ /g')
|
||||
else
|
||||
@@ -563,7 +585,11 @@ EOF
|
||||
])
|
||||
|
||||
# use this in configure.ac to support RPM packages
|
||||
# - $1: optional rpm package group
|
||||
AC_DEFUN([AX_USE_RPM_PACKAGING], [
|
||||
if test -n "$1"; then
|
||||
AX_RPM_GROUP([$1])
|
||||
fi
|
||||
AC_CONFIG_FILES([${PACKAGE_NAME}.spec])
|
||||
#AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-rpm-targets], [makefile.in])
|
||||
@@ -718,12 +744,10 @@ EOF
|
||||
# $5 = optional flags:
|
||||
# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged
|
||||
# $6 = optional parameters, allowed are (evaluated in this order):
|
||||
# - RPM_DIST_PKG=<name>
|
||||
# special name for the RPM package
|
||||
# - DEB_DIST_PKG=<name>
|
||||
# special name for the debian package
|
||||
# - DIST_PKG=<name>
|
||||
# if the name of the package is different
|
||||
# - DEV_RPM_DIST_PKG=<name>
|
||||
# special name for the RPM development package
|
||||
# - DEV_DEB_DIST_PKG=<name>
|
||||
# special name for the debian development package
|
||||
# - DEV_DIST_PKG=<name>
|
||||
# if the name of the development package is different
|
||||
#
|
||||
@@ -735,11 +759,6 @@ EOF
|
||||
AC_DEFUN([AX_PKG_REQUIRE], [
|
||||
PKG_PROG_PKG_CONFIG
|
||||
optional_flags="$5"
|
||||
$6
|
||||
if test -n "$DEV_DIST_PKG"; then
|
||||
DEV_DEB_DIST_PKG=${DEV_DIST_PKG}-dev
|
||||
DEV_RPM_DIST_PKG=${DEV_DIST_PKG}-devel
|
||||
fi
|
||||
$1_found=no
|
||||
secondpar="m4_default([$2], [$1])"
|
||||
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
|
||||
@@ -819,10 +838,6 @@ AC_DEFUN([AX_PKG_REQUIRE], [
|
||||
AC_MSG_ERROR([Feature $1 not found please install module $secondpar])
|
||||
fi
|
||||
fi
|
||||
AX_DEB_BUILD_DEPEND([${DEV_DEB_DIST_PKG:-${DEB_DIST_PKG:-${DIST_PKG:-${$1_found}-dev}}}])
|
||||
AX_RPM_BUILD_DEPEND([${DEV_RPM_DIST_PKG:-${RPM_DIST_PKG:-${DIST_PKG:-${$1_found}-devel}}}])
|
||||
AX_DEB_DEPEND([${DEB_DIST_PKG:-${DIST_PKG:-${$1_found}}}])
|
||||
AX_RPM_DEPEND([${RPM_DIST_PKG:-${DIST_PKG:-${$1_found}}}])
|
||||
[$1]_CPPFLAGS="${$1_CFLAGS}"
|
||||
[$1]_CXXFLAGS="${$1_CFLAGS}"
|
||||
AC_SUBST([$1]_CPPFLAGS)
|
||||
@@ -835,6 +850,33 @@ AC_DEFUN([AX_PKG_REQUIRE], [
|
||||
else
|
||||
AC_MSG_NOTICE([To enable $1, add $1_CPPFLAGS, $1_CXXFLAGS and $1_LIBS])
|
||||
fi
|
||||
|
||||
DEV_DEB_DIST_PKG=
|
||||
DEV_RPM_DIST_PKG=
|
||||
DEV_DIST_PKG=
|
||||
pkg=m4_default([$2], [$1])
|
||||
$6
|
||||
dep_pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
||||
rpm_pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
|
||||
if test -n "$4"; then
|
||||
for f in $pkg $4; do
|
||||
if test -n "$(apt-cache policy -q ${f}-dev 2> /dev/null)"; then
|
||||
deb_pkg=${f}-dev
|
||||
break
|
||||
fi
|
||||
done
|
||||
for f in $pkg $4; do
|
||||
if (test -x /usr/bin/zypper && zypper search -x "${f}-devel" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/dnf && dnf list -q "${f}-devel" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/yum && yum list -q "${f}-devel" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/sbin/urpmq && urpmq "${f}-devel" 1>&2 > /dev/null); then
|
||||
rpm_pkg=${f}-devel
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
AX_DEB_BUILD_DEPEND([$deb_pkg])
|
||||
AX_RPM_BUILD_DEPEND([$rpm_pkg])
|
||||
])
|
||||
|
||||
# check if a specific package exists
|
||||
@@ -844,12 +886,10 @@ AC_DEFUN([AX_PKG_REQUIRE], [
|
||||
# $3 = optional flags:
|
||||
# manualflags if CXXFLAGS, CPPFLAGS, LIBS should remain unchanged
|
||||
# $4 = optional parameters, allowed are (evaluated in this order):
|
||||
# - RPM_DIST_PKG=<name>
|
||||
# special name for the RPM package
|
||||
# - DEB_DIST_PKG=<name>
|
||||
# special name for the debian package
|
||||
# - DIST_PKG=<name>
|
||||
# if the name of the package is different
|
||||
# - DEV_RPM_DIST_PKG=<name>
|
||||
# special name for the RPM development package
|
||||
# - DEV_DEB_DIST_PKG=<name>
|
||||
# special name for the debian development package
|
||||
# - DEV_DIST_PKG=<name>
|
||||
# if the name of the development package is different
|
||||
#
|
||||
@@ -858,11 +898,6 @@ AC_DEFUN([AX_PKG_REQUIRE], [
|
||||
# sets all flags, so that the module can be used everywhere
|
||||
AC_DEFUN([AX_PKG_CHECK], [
|
||||
optional_flags="$3"
|
||||
$4
|
||||
if test -n "$DEV_DIST_PKG"; then
|
||||
DEV_DEB_DIST_PKG=${DEV_DIST_PKG}-dev
|
||||
DEV_RPM_DIST_PKG=${DEV_DIST_PKG}-devel
|
||||
fi
|
||||
PKG_PROG_PKG_CONFIG
|
||||
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
|
||||
HAVE_$1=1
|
||||
@@ -886,15 +921,29 @@ AC_DEFUN([AX_PKG_CHECK], [
|
||||
], [
|
||||
HAVE_$1=0
|
||||
])
|
||||
AX_DEB_BUILD_DEPEND([${DEV_DEB_DIST_PKG:-${DEB_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])-dev}}}])
|
||||
AX_RPM_BUILD_DEPEND([${DEV_RPM_DIST_PKG:-${RPM_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])-devel}}}])
|
||||
AX_DEB_DEPEND([${DEB_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])}}])
|
||||
AX_RPM_DEPEND([${RPM_DIST_PKG:-${DIST_PKG:-m4_default([$2], [$1])}}])
|
||||
AM_CONDITIONAL(HAVE_$1, test $HAVE_[$1] -eq 1)
|
||||
AC_SUBST(HAVE_$1)
|
||||
AC_SUBST(CPPFLAGS)
|
||||
AC_SUBST(CXXFLAGS)
|
||||
AC_SUBST(PKG_REQUIREMENTS)
|
||||
|
||||
DEV_DEB_DIST_PKG=
|
||||
DEV_RPM_DIST_PKG=
|
||||
DEV_DIST_PKG=
|
||||
pkg=m4_default([$2], [$1])
|
||||
$4
|
||||
dep_pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
||||
rpm_pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
|
||||
if test -n "$(apt-cache policy -q ${deb_pkg} 2> /dev/null)"; then
|
||||
AX_DEB_BUILD_DEPEND([$deb_pkg])
|
||||
fi
|
||||
if (test -x /usr/bin/zypper && zypper search -x "$rpm_pkg" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/dnf && dnf list -q "$rpm_pkg" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/yum && yum list -q "$rpm_pkg" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/sbin/urpmq && urpmq "$rpm_pkg" 1>&2 > /dev/null); then
|
||||
AX_RPM_BUILD_DEPEND([$rpm_pkg])
|
||||
fi
|
||||
)
|
||||
])
|
||||
|
||||
# make sure, a specific header exists
|
||||
@@ -1176,7 +1225,9 @@ AC_DEFUN([AX_ALL_DEPEND], [
|
||||
|
||||
# finish configuration - to be called instead of AC_OUTPUT
|
||||
AC_DEFUN([AX_OUTPUT], [
|
||||
AX_INIT_QT
|
||||
AX_DEB_RESOLVE
|
||||
AX_RPM_RESOLVE
|
||||
AC_OUTPUT
|
||||
AC_MSG_NOTICE([configured for ${PACKAGE_NAME}-${VERSION}])
|
||||
])
|
||||
|
275
bootstrap.sh
275
bootstrap.sh
@@ -138,10 +138,12 @@ GENERATED FILES
|
||||
* build-resource-file.sh - build resource.qrc file from a resource directory
|
||||
* sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen
|
||||
* mac-create-app-bundle.sh - script to create apple mac os-x app-bundle
|
||||
* dependency-graph.sh - script to draw project dependencies
|
||||
* template.sh - generic template for bash scripts
|
||||
* test/runtests.sh - template file to run test scripts, i.e. docker based
|
||||
* AUTHORS - replace your name in AUTHORS before first run
|
||||
* NEWS - empty file add your project's news
|
||||
* README - add project description (first line is header, followed by an empty line)
|
||||
* README (or README.md) - add project description (first line: header, followed by empty line)
|
||||
* configure.ac - global configuration file template
|
||||
* makefile.am - global makefile template
|
||||
* ${DEFAULT_PROJECT_NAME}.desktop.in - linux desktop file
|
||||
@@ -300,7 +302,91 @@ EOF
|
||||
shift;
|
||||
done
|
||||
|
||||
echo -en "\e[1m-> checking:\e[0m for version control system ..."
|
||||
# check if stdout is a terminal...
|
||||
if test -t 1; then
|
||||
|
||||
# see if it supports colors...
|
||||
ncolors=$(tput colors)
|
||||
|
||||
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||
bold="$(tput bold)"
|
||||
underline="$(tput smul)"
|
||||
standout="$(tput smso)"
|
||||
normal="$(tput sgr0)"
|
||||
black="$(tput setaf 0)"
|
||||
red="$(tput setaf 1)"
|
||||
green="$(tput setaf 2)"
|
||||
yellow="$(tput setaf 3)"
|
||||
blue="$(tput setaf 4)"
|
||||
magenta="$(tput setaf 5)"
|
||||
cyan="$(tput setaf 6)"
|
||||
white="$(tput setaf 7)"
|
||||
fi
|
||||
fi
|
||||
|
||||
notice() {
|
||||
echo "${yellow}→ notice: ${bold}$*${normal}"
|
||||
}
|
||||
|
||||
running() {
|
||||
echo -n "${bold}${blue}→ running: ${bold}${white}$*${normal} … "
|
||||
}
|
||||
|
||||
checking() {
|
||||
echo -n "${bold}${blue}→ checking: ${bold}${white}$*${normal} … "
|
||||
}
|
||||
|
||||
generating() {
|
||||
echo -n "${bold}${blue}→ generating: ${bold}${white}$*${normal} … "
|
||||
}
|
||||
|
||||
configuring() {
|
||||
echo -n "${bold}${blue}→ configuring ${bold}${white}$1${normal}:"
|
||||
shift
|
||||
echo -n "${white}$*${normal} … "
|
||||
}
|
||||
|
||||
ignored() {
|
||||
echo "${bold}${yellow}ignored $*${normal}"
|
||||
}
|
||||
|
||||
success() {
|
||||
echo "${bold}${green}success $*${normal}"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo "${bold}${red}→ error: $1${normal}"
|
||||
shift
|
||||
if test -n "$*"; then
|
||||
echo "${bold}$*${normal}"
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
run() {
|
||||
check=1
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--no-check) check=0;;
|
||||
(*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
running $*
|
||||
result=$($* 2>&1)
|
||||
res=$?
|
||||
if test $res -ne 0; then
|
||||
if test $check -eq 1; then
|
||||
error "Failed with return code: $res" "$result"
|
||||
else
|
||||
ignored
|
||||
fi
|
||||
else
|
||||
success
|
||||
fi
|
||||
}
|
||||
|
||||
checking for version control system
|
||||
VCS=""
|
||||
VCSDEPENDS=""
|
||||
for path in . .. ../.. ../../..; do
|
||||
@@ -308,18 +394,18 @@ for path in . .. ../.. ../../..; do
|
||||
VCS="svn"
|
||||
VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
|
||||
VCSDEPENDS_RPM="subversion, "
|
||||
echo -e " \e[32msuccess\e[0m detected ${VCS}"
|
||||
success detected ${VCS}
|
||||
break
|
||||
elif test -d ${path}/.git; then
|
||||
VCS="git"
|
||||
VCSDEPENDS_DEB="git2cl, git,"
|
||||
VCSDEPENDS_RPM="git, "
|
||||
echo -e " \e[32msuccess\e[0m detected ${VCS}"
|
||||
success detected ${VCS}
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$VCS"; then
|
||||
echo -e " \e[33mignored\e[0m"
|
||||
ignored
|
||||
fi
|
||||
|
||||
HEADER='## @id '"\$Id\$"'
|
||||
@@ -347,38 +433,6 @@ CHEADER='/** @id '"\$Id\$"'
|
||||
|
||||
'
|
||||
|
||||
notice() {
|
||||
echo -e "\e[1;33m$*\e[0m"
|
||||
}
|
||||
|
||||
run() {
|
||||
check=1
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--no-check) check=0;;
|
||||
(*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
echo -en "\e[1m-> running:\e[0m $* ..."
|
||||
result=$($* 2>&1)
|
||||
res=$?
|
||||
if test $res -ne 0; then
|
||||
if test $check -eq 1; then
|
||||
echo -e " \e[31merror\e[0m"
|
||||
echo -e "\e[1m*** Failed with return code: $res\e[0m"
|
||||
if test -n "$result"; then
|
||||
echo "$result"
|
||||
fi
|
||||
exit 1
|
||||
else
|
||||
echo -e " \e[33mignored\e[0m"
|
||||
fi
|
||||
else
|
||||
echo -e " \e[32msuccess\e[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
testtag() {
|
||||
local IFS="|"
|
||||
egrep -q '^ *'"($*)"' *(\(.*)? *$' configure.ac
|
||||
@@ -431,18 +485,13 @@ to() {
|
||||
return 1
|
||||
fi
|
||||
checkdir "$(dirname ${1})"
|
||||
echo -en "\e[1m-> generating:\e[0m $1 ..."
|
||||
generating $1
|
||||
result=$(cat > "$1" 2>&1)
|
||||
res=$?
|
||||
if test $res -ne 0; then
|
||||
echo -e " \e[31merror\e[0m"
|
||||
echo -e "\e[1m*** Failed with return code: $res\e[0m"
|
||||
if test -n "$result"; then
|
||||
echo "$result"
|
||||
fi
|
||||
exit 1
|
||||
error "Failed with return code: $res" "$result"
|
||||
else
|
||||
echo -e " \e[32msuccess\e[0m"
|
||||
success
|
||||
fi
|
||||
run chmod $mode $1
|
||||
if test $exists -eq 0; then
|
||||
@@ -484,24 +533,20 @@ copy() {
|
||||
}
|
||||
|
||||
doxyreplace() {
|
||||
echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
|
||||
configuring doxyfile $1
|
||||
if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then
|
||||
echo -e " \e[32msuccess\e[0m"
|
||||
success
|
||||
else
|
||||
echo -e " \e[31merror\e[0m"
|
||||
echo -e "\e[1m**** command: $0 $*\e[0m"
|
||||
exit 1
|
||||
error $0 $*
|
||||
fi
|
||||
}
|
||||
|
||||
doxyadd() {
|
||||
echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
|
||||
configuring doxyfile $1
|
||||
if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then
|
||||
echo -e " \e[32msuccess\e[0m"
|
||||
success
|
||||
else
|
||||
echo -e " \e[31merror\e[0m"
|
||||
echo -e "\e[1m**** command: $0 $*\e[0m"
|
||||
exit 1
|
||||
error $0 $*
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -512,13 +557,18 @@ vcs2cl() {
|
||||
else
|
||||
touch "ChangeLog"
|
||||
fi
|
||||
if test -x $(which timeout); then
|
||||
local TIMEOUT="timeout 10"
|
||||
else
|
||||
local TIMEOUT=
|
||||
fi
|
||||
if test -x $(which ${VCS}2cl); then
|
||||
if test "${VCS}" = "git"; then
|
||||
${VCS}2cl > ChangeLog
|
||||
$TIMEOUT ${VCS}2cl || true > ChangeLog
|
||||
elif test "${VCS}" = "svn"; then
|
||||
${VCS}2cl --break-before-msg -a -i
|
||||
$TIMEOUT ${VCS}2cl --break-before-msg -a -i || true
|
||||
elif test -n "${VCS}"; then
|
||||
${VCS}2cl
|
||||
$TIMEOUT ${VCS}2cl || true
|
||||
fi
|
||||
fi
|
||||
if test $exists -eq 0; then
|
||||
@@ -549,6 +599,8 @@ copy rpmsign.exp
|
||||
copy build-resource-file.sh
|
||||
copy sql-to-dot.sed
|
||||
copy mac-create-app-bundle.sh
|
||||
copy dependency-graph.sh
|
||||
copy template.sh
|
||||
AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1)
|
||||
if test -z "${AUTHOR}"; then
|
||||
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
|
||||
@@ -559,11 +611,18 @@ EOF
|
||||
to NEWS <<EOF && notice "please edit NEWS"
|
||||
$(date) created ${DEFAULT_PROJECT_NAME}
|
||||
EOF
|
||||
if test -e README.md; then
|
||||
README=README.md
|
||||
else
|
||||
README=README
|
||||
to README <<EOF && notice "please edit README"
|
||||
|
||||
${DEFAULT_PROJECT_NAME}
|
||||
|
||||
add description for ${DEFAULT_PROJECT_NAME}
|
||||
EOF
|
||||
fi
|
||||
DESCRIPTION=$(head -1 $README | sed 's,^#\+ *,,;s, *#\+$,,')
|
||||
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0
|
||||
${HEADER}# default is generated from AUTHORS and project name
|
||||
PROJECT_URL=
|
||||
@@ -1048,7 +1107,7 @@ to --condition AX_USE_NODEJS nodejs/etc/default/${PACKAGE_NAME} <<EOF
|
||||
EOF
|
||||
to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF
|
||||
#!upstart
|
||||
description "$(head -1 README)"
|
||||
description "$DESCRIPTION"
|
||||
author "$(head -1 AUTHORS)"
|
||||
|
||||
start on (local-filesystems and net-device-up)
|
||||
@@ -1088,7 +1147,7 @@ end script
|
||||
EOF
|
||||
to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF
|
||||
[Unit]
|
||||
Description=$(head -1 README)
|
||||
Description=$DESCRIPTION
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}
|
||||
@@ -1216,11 +1275,11 @@ to --condition AX_USE_NODEJS nodejs/views/index.ejs <<EOF
|
||||
<link href="stylesheets/style.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
|
||||
<script type="text/javascript" src="javascripts/${PACKAGE_NAME}.js"></script>
|
||||
<title>$(head -1 README)</title>
|
||||
<title>$DESCRIPTION</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>$(head -1 README)</h1>
|
||||
<h1>$DESCRIPTION</h1>
|
||||
<p>generated by bootstrap, please edit</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1290,6 +1349,9 @@ ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
|
||||
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
|
||||
LDADD = -l${PACKAGE_NAME#lib}
|
||||
|
||||
exampledir = ${docdir}/examples
|
||||
example_DATA =
|
||||
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
EOF
|
||||
to --condition AX_BUILD_HTML_NPM html/package.json.in <<EOF
|
||||
@@ -1568,7 +1630,7 @@ EOF2
|
||||
EOF
|
||||
to debian/docs <<EOF
|
||||
NEWS
|
||||
README
|
||||
$README
|
||||
EOF
|
||||
to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF
|
||||
usr/lib/lib*.so.*
|
||||
@@ -1613,7 +1675,7 @@ fi)
|
||||
$(if testtag AX_RPM_DEPEND; then echo "Requires: @RPM_DEPEND@"; fi)
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||
BuildRequires: which, pkgconfig, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, autoconf, rpm-build$(
|
||||
BuildRequires: which, pkgconfig, pandoc, gnupg, expect, ${VCSDEPENDS_RPM}make, automake, autoconf, rpm-build$(
|
||||
if testtag AX_USE_CXX; then
|
||||
echo -n ", binutils-devel, gcc-c++"
|
||||
fi
|
||||
@@ -1626,15 +1688,19 @@ BuildRequires: which, pkgconfig, gnupg, expect, ${VCSDEPENDS_RPM}make, automake,
|
||||
if testtag AX_USE_PERLDOC; then
|
||||
echo -n ", libpod-tree-perl";
|
||||
fi
|
||||
if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then
|
||||
echo -n ", qt-devel, libqt5-qtbase-devel, libqt5-qttools, libQt5WebKit5-devel";
|
||||
fi
|
||||
) @RPM_BUILD_DEPEND@ @RPM_DEPEND_IFEXISTS@
|
||||
|
||||
#### os dependent definitions ####
|
||||
%if 0%{?suse_version} || 0%{?sles_version}
|
||||
BuildRequires: lsb-release
|
||||
BuildRequires: lsb-release$(
|
||||
if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT; then
|
||||
echo -n ", libqt5-qtbase-devel, libqt5-qttools, libqt5-linguist-devel, libQt5WebKit5-devel libqt5-qtwebengine-devel libQt5WebKitWidgets-devel";
|
||||
fi)
|
||||
%else
|
||||
$(
|
||||
if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT; then
|
||||
echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools-devel, qt5-qtwebkit-devel";
|
||||
fi)
|
||||
%if 0%{?mageia}
|
||||
BuildRequires: rpm-sign, lsb-release
|
||||
%else
|
||||
@@ -1688,25 +1754,20 @@ rm -rf \$RPM_BUILD_ROOT
|
||||
$(if testtag AX_USE_LIBTOOL; then
|
||||
echo '/usr/%_lib/*.so.*'
|
||||
else
|
||||
echo '/usr/bin/*'
|
||||
echo '/usr/share/applications/*'
|
||||
echo '/usr/bin'
|
||||
echo '/usr/share/applications'
|
||||
fi)
|
||||
$(if testtag AX_USE_NODEJS AX_BUILD_HTML AX_BUILD_HTML_NPM; then
|
||||
echo '/usr/share/@PACKAGE_NAME@'
|
||||
/usr/share/@PACKAGE_NAME@
|
||||
$(if testtag AX_USE_ETC; then
|
||||
|
||||
cat <<EOF2
|
||||
%config
|
||||
/etc/*
|
||||
|
||||
EOF2
|
||||
fi)
|
||||
%doc
|
||||
$(if testtag AX_USE_LIBTOOL; then
|
||||
cat <<EOF2
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/AUTHORS
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/COPYING
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/ChangeLog
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/INSTALL
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/NEWS
|
||||
/usr/share/doc/packages/@PACKAGE_NAME@/README
|
||||
EOF2
|
||||
else
|
||||
echo '/usr/share'
|
||||
fi)
|
||||
/usr/share/doc
|
||||
|
||||
$(if testtag AX_USE_LIBTOOL; then
|
||||
cat <<EOF2
|
||||
@@ -1776,7 +1837,18 @@ $(case "$VCS" in
|
||||
esac)
|
||||
fi
|
||||
aclocal
|
||||
$(if testtag AX_USE_LIBTOOL; then echo libtoolize --force; fi)
|
||||
$(if testtag AX_USE_LIBTOOL; then
|
||||
cat <<EOF1
|
||||
if which libtoolize > /dev/null; then
|
||||
run libtoolize --force;
|
||||
elif which glibtoolize > /dev/null; then
|
||||
run glibtoolize --force;
|
||||
else
|
||||
echo "error: libtoolize not found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
EOF1
|
||||
fi)
|
||||
automake -a
|
||||
autoconf
|
||||
EOF
|
||||
@@ -1785,15 +1857,24 @@ ${HEADER}SUBDIRS =${SUBDIRS}
|
||||
|
||||
desktopdir = \${datadir}/applications
|
||||
desktop_DATA = @PACKAGE_DESKTOP@
|
||||
dist_pkgdata_DATA = @PACKAGE_ICON@ ax_check_qt.m4 bootstrap.sh \\
|
||||
dist_pkgdata_DATA = @PACKAGE_ICON@
|
||||
dist_noinst_DATA = ax_check_qt.m4 bootstrap.sh \\
|
||||
resolve-rpmbuilddeps.sh autogen.sh \\
|
||||
ax_cxx_compile_stdcxx_11.m4 build-in-docker.sh \\
|
||||
build-resource-file.sh \\
|
||||
ax_init_standard_project.m4 \\
|
||||
mac-create-app-bundle.sh resolve-debbuilddeps.sh \\
|
||||
dependency-graph.sh template.sh \\
|
||||
sql-to-dot.sed
|
||||
dist_doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||
dist_doc_DATA = AUTHORS NEWS $README COPYING INSTALL ChangeLog
|
||||
$(if test -e README.md -a ! -e README; then
|
||||
cat <<EOF2
|
||||
|
||||
README: README.md
|
||||
|
||||
CLEANFILES = README
|
||||
EOF2
|
||||
fi)
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
EOF
|
||||
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF
|
||||
@@ -1812,14 +1893,14 @@ Requires: @PKG_REQUIREMENTS@
|
||||
EOF
|
||||
to build-in-docker.conf <<EOF
|
||||
${HEADER}# Use Ubuntu Universe Repository
|
||||
repos+=("Ubuntu:::universe")
|
||||
repos+=("ubuntu:::universe")
|
||||
|
||||
# Use Marc Wäckerlin's Repository, see https://dev.marc.waeckerlin.org
|
||||
repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository")
|
||||
repos+=("openSUSE:::https://dev.marc.waeckerlin.org/repository/opensuse/marc-waeckerlin.repo")
|
||||
repos+=("Fedora:::https://dev.marc.waeckerlin.org/repository/fedora/marc-waeckerlin.repo")
|
||||
repos+=("CentOS:::https://dev.marc.waeckerlin.org/repository/centos/marc-waeckerlin.repo")
|
||||
repos+=("debian|ubuntu:::https://dev.marc.waeckerlin.org/repository:::https://dev.marc.waeckerlin.org/repository/@DISTRIBUTOR@/marc-waeckerlin.repo")
|
||||
keys+=("https://dev.marc.waeckerlin.org/repository/PublicKey")
|
||||
|
||||
# centos requires epel-release for some packages, such as Qt WebKit
|
||||
packages+=("centos:::epel-release")
|
||||
EOF
|
||||
|
||||
#### Cleanup If Makefile Exists ####
|
||||
@@ -1835,7 +1916,15 @@ else
|
||||
#### Bootstrap Before Configure ####
|
||||
run --no-check vcs2cl
|
||||
run aclocal
|
||||
if testtag AX_USE_LIBTOOL; then run libtoolize --force; fi
|
||||
if testtag AX_USE_LIBTOOL; then
|
||||
if which libtoolize > /dev/null; then
|
||||
run libtoolize --force;
|
||||
elif which glibtoolize > /dev/null; then
|
||||
run glibtoolize --force;
|
||||
else
|
||||
error libtoolize not found
|
||||
fi
|
||||
fi
|
||||
run automake -a
|
||||
run autoconf
|
||||
|
||||
|
@@ -90,7 +90,7 @@ while test $# -gt 0; do
|
||||
img="mwaeckerlin/ubuntu:latest"; host="${host:---host=i686-w64-mingw32}"
|
||||
targets="all install"
|
||||
flags+=("--prefix=/workdir/usr")
|
||||
packages1=("mingw-w64")
|
||||
packages+=("mingw-w64")
|
||||
;;
|
||||
(*)
|
||||
echo "**** ERROR: unknown mode '$1', try --help" 1>&2
|
||||
@@ -195,20 +195,26 @@ function ifthenelse() {
|
||||
arg="$1"
|
||||
shift
|
||||
cmd="$*"
|
||||
DISTRIBUTOR=$(docker exec ${DOCKER_ID} lsb_release -si | sed 's, .*,,' | tr [:upper:] [:lower:])
|
||||
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -cs)
|
||||
ARCH=$((docker exec ${DOCKER_ID} which dpkg > /dev/null 2> /dev/null && docker exec ${DOCKER_ID} dpkg --print-architecture) || echo amd64)
|
||||
if test "${arg/:::/}" = "${arg}"; then
|
||||
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg}}"
|
||||
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||
else
|
||||
os="${arg%%:::*}"
|
||||
thenpart="${arg#*:::}"
|
||||
if test "${thenpart/:::/}" = "${thenpart}"; then
|
||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
|
||||
else
|
||||
elsepart=
|
||||
if test "${thenpart/:::/}" != "${thenpart}"; then
|
||||
elsepart="${thenpart##*:::}"
|
||||
thenpart="${thenpart%:::*}"
|
||||
thenpart="${thenpart%%:::*}"
|
||||
fi
|
||||
if [[ "${DISTRIBUTOR}-${CODENAME}-${ARCH}" =~ ${os} ]]; then
|
||||
if test -n "${thenpart}"; then
|
||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
|
||||
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${thenpart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||
fi
|
||||
else
|
||||
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
|
||||
if test -n "${elsepart}"; then
|
||||
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${elsepart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -290,10 +296,16 @@ EOF
|
||||
rm rpm-key
|
||||
done
|
||||
for repo in "${repos[@]}"; do
|
||||
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo true))
|
||||
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo false))
|
||||
ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'"
|
||||
((++i))
|
||||
done
|
||||
for package in "${packages[@]}"; do
|
||||
ifthenelse "${package}" "${INSTALL_TOOL} ARG"
|
||||
done
|
||||
for command in "${commands[@]}"; do
|
||||
ifthenelse "${command}" "ARG"
|
||||
done
|
||||
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh
|
||||
;;
|
||||
esac
|
||||
|
171
dependency-graph.sh
Executable file
171
dependency-graph.sh
Executable file
@@ -0,0 +1,171 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# template for bash scripts
|
||||
|
||||
# internal use only
|
||||
append_msg() {
|
||||
if test $# -ne 0; then
|
||||
echo -en ":\e[0m \e[1m$*"
|
||||
fi
|
||||
echo -e "\e[0m"
|
||||
}
|
||||
|
||||
# write a notice
|
||||
notice() {
|
||||
if test $# -eq 0; then
|
||||
return
|
||||
fi
|
||||
echo -e "\e[1m$*\e[0m" 1>&3
|
||||
}
|
||||
|
||||
# write error message
|
||||
error() {
|
||||
echo -en "\e[1;31merror" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# write a warning message
|
||||
warning() {
|
||||
echo -en "\e[1;33mwarning" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# write a success message
|
||||
success() {
|
||||
echo -en "\e[1;32msuccess" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# commandline parameter evaluation
|
||||
files=${0%/*}/configure.ac
|
||||
short=0
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--short|-s) short=1;;
|
||||
(--help|-h) less <<EOF
|
||||
SYNOPSIS
|
||||
|
||||
$0 [OPTIONS] <files>
|
||||
|
||||
OPTIONS
|
||||
|
||||
--help, -h show this help
|
||||
--short, -s short graph with no external dependencies
|
||||
|
||||
<files> list of zero or more configure.ac files
|
||||
(default: ${files})
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
Evaluates dependencies of all the given configure.ac file. By
|
||||
default takes the local configure.ac. Outputs a graphwiz dot file
|
||||
with the dependencies. Solid lines are required dependencies, dotted
|
||||
lines are optional dependencies.
|
||||
|
||||
EXAMPLE
|
||||
|
||||
Evaluate all dependencies between all local subversion and git
|
||||
projects, if they are in the path ~/svn and ~/git:
|
||||
|
||||
$0 ~/svn/*/configure.ac ~/git/*/configure.ac
|
||||
|
||||
EOF
|
||||
exit;;
|
||||
(*) files=$*; break;;
|
||||
esac
|
||||
if test $# -eq 0; then
|
||||
error "missing parameter, try $0 --help"; exit 1
|
||||
fi
|
||||
shift;
|
||||
done
|
||||
|
||||
# run a command, print the result and abort in case of error
|
||||
# option: --no-check: ignore the result, continue in case of error
|
||||
run() {
|
||||
check=1
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--no-check) check=0;;
|
||||
(*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
echo -en "\e[1m-> running:\e[0m $* ..."
|
||||
result=$($* 2>&1)
|
||||
res=$?
|
||||
if test $res -ne 0; then
|
||||
if test $check -eq 1; then
|
||||
error "failed with return code: $res"
|
||||
if test -n "$result"; then
|
||||
echo "$result"
|
||||
fi
|
||||
exit 1
|
||||
else
|
||||
warning "ignored return code: $res"
|
||||
fi
|
||||
else
|
||||
success
|
||||
fi
|
||||
}
|
||||
|
||||
# error handler
|
||||
function traperror() {
|
||||
set +x
|
||||
local err=($1) # error status
|
||||
local line="$2" # LINENO
|
||||
local linecallfunc="$3"
|
||||
local command="$4"
|
||||
local funcstack="$5"
|
||||
for e in ${err[@]}; do
|
||||
if test -n "$e" -a "$e" != "0"; then
|
||||
error "line $line - command '$command' exited with status: $e (${err[@]})"
|
||||
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
|
||||
echo -n " ... error at ${funcstack} "
|
||||
if [ "$linecallfunc" != "" ]; then
|
||||
echo -n "called at line $linecallfunc"
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
exit $e
|
||||
fi
|
||||
done
|
||||
success
|
||||
exit 0
|
||||
}
|
||||
|
||||
# catch errors
|
||||
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
|
||||
|
||||
##########################################################################################
|
||||
|
||||
filter() {
|
||||
if test $short -eq 1; then
|
||||
all=$(cat)
|
||||
allowed=$(sed -n '/"\(.*\)" \[style=solid\];/{s//\1/;H};${x;s/\n//;s/\n/\\|/gp}' <<<"${all}")
|
||||
sed -n '/"\('"${allowed}"'\)" -> "\('"${allowed}"'\)"/p' <<<"${all}"
|
||||
else
|
||||
cat
|
||||
fi
|
||||
}
|
||||
|
||||
echo "digraph G {"
|
||||
if test $short -eq 0; then
|
||||
echo "node [style=dashed];"
|
||||
fi
|
||||
(
|
||||
for file in $files; do
|
||||
if ! test -e $file; then
|
||||
error "file $file not found"; exit 1
|
||||
fi
|
||||
sed -n '
|
||||
/^ *m4_define(x_package_name, */ {s//"/;s/ *).*/"/;h;s/.*/& [style=solid];/p}
|
||||
/^ *AX_REQUIRE_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/&;/p}
|
||||
/^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/&;/p}
|
||||
/^ *AX_PKG_REQUIRE(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/&;/p}
|
||||
/^ *AX_CHECK_QT/ {s/.*/"qt" -> /;G;s/\n//;s/.*/& [style=dashed];/p}
|
||||
/^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?, \[\?\([^],)]\+\)\]\?.*/ {s//"\2" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
|
||||
/^ *AX_PKG_CHECK(\[\?\([^],)]\+\)\]\?.*/ {s//"\1" -> /;G;s/\n//;s/.*/& [style=dotted];/p}
|
||||
' $file
|
||||
done
|
||||
) | filter
|
||||
echo "}"
|
@@ -35,13 +35,53 @@ TO_INSTALL=
|
||||
DEPS=
|
||||
|
||||
if test -e debian/control.in -a ! -e debian/control; then
|
||||
function pkg_exists() {
|
||||
test -n "$(${DO} apt-cache policy -q ${1})"
|
||||
}
|
||||
function AX_PKG_CHECK() {
|
||||
local DEV_DEB_DIST_PKG=
|
||||
local DEV_DIST_PKG=
|
||||
local pkg=
|
||||
eval $4
|
||||
if test -z "$2"; then
|
||||
pkg=$1
|
||||
else
|
||||
pkg=$2
|
||||
fi
|
||||
pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
||||
if pkg_exists "${pkg}"; then
|
||||
echo $pkg
|
||||
fi
|
||||
}
|
||||
function AX_PKG_REQUIRE() {
|
||||
local DEV_DEB_DIST_PKG=
|
||||
local DEV_DIST_PKG=
|
||||
local pkg=
|
||||
eval $6
|
||||
if test -z "$2"; then
|
||||
pkg=$1
|
||||
else
|
||||
pkg=$2
|
||||
fi
|
||||
if test -n "$4"; then
|
||||
for f in $pkg $4; do
|
||||
if pkg_exists "${f}-dev"; then
|
||||
pkg=$f
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo ${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
||||
}
|
||||
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_REQUIRE/{s,^ *\(AX_PKG_REQUIRE\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
||||
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_CHECK/{s,^ *\(AX_PKG_CHECK\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
||||
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do
|
||||
if test -n "$(${DO} apt-cache policy -q ${f})" && ((! $(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}")); then
|
||||
if pkg_exists "${f}"; then
|
||||
DEPS+=" ${f}"
|
||||
fi
|
||||
done
|
||||
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do
|
||||
if test -n "$(${DO} apt-cache policy -q ${f}-dev)" && ((! $(${DO} apt-cache policy ${f}-dev 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}-dev")); then
|
||||
if pkg_exists "${f}-dev"; then
|
||||
DEPS+=" ${f}-dev"
|
||||
fi
|
||||
done
|
||||
@@ -57,10 +97,11 @@ if test -e debian/control.in -a ! -e debian/control; then
|
||||
fi
|
||||
|
||||
install dpkg-dev
|
||||
|
||||
DEPS+=" $(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')"
|
||||
|
||||
for pa in ${DEPS}; do
|
||||
if test ${pa//|/} = ${pa}; then
|
||||
if test "${pa//|/}" = "${pa}"; then
|
||||
TO_INSTALL+=" ${pa}"
|
||||
continue;
|
||||
fi
|
||||
@@ -83,4 +124,10 @@ if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FILES="$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')"
|
||||
if test -n "${FILES}"; then
|
||||
echo "**** ERROR: Cannot install: " $FILES
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "**** Success: All Dependencies Resolved"
|
||||
|
@@ -23,19 +23,56 @@ for f in BUILD BUILDROOT RPMS SPECS SRPMS; do
|
||||
fi
|
||||
done
|
||||
if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then
|
||||
function pkg_exists() {
|
||||
(test -x /usr/bin/zypper && zypper search -x "$1" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/dnf && dnf list -q "$1" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/yum && yum list -q "$1" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/sbin/urpmq && urpmq "$1" 1>&2 > /dev/null)
|
||||
}
|
||||
function AX_PKG_CHECK() {
|
||||
local DEV_RPM_DIST_PKG=
|
||||
local DEV_DIST_PKG=
|
||||
local pkg=
|
||||
eval $4
|
||||
if test -z "$2"; then
|
||||
pkg=$1
|
||||
else
|
||||
pkg=$2
|
||||
fi
|
||||
pkg=${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
|
||||
if pkg_exists "${pkg}"; then
|
||||
echo ${pkg}
|
||||
fi
|
||||
}
|
||||
function AX_PKG_REQUIRE() {
|
||||
local DEV_RPM_DIST_PKG=
|
||||
local DEV_DIST_PKG=
|
||||
local pkg=
|
||||
eval $6
|
||||
if test -z "$2"; then
|
||||
pkg=$1
|
||||
else
|
||||
pkg=$2
|
||||
fi
|
||||
if test -n "$4"; then
|
||||
for f in $pkg $4; do
|
||||
if pkg_exists "${f}-devel"; then
|
||||
pkg=$f
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo ${DEV_RPM_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-devel}
|
||||
}
|
||||
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_REQUIRE/{s,^ *\(AX_PKG_REQUIRE\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
||||
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_CHECK/{s,^ *\(AX_PKG_CHECK\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
||||
for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do
|
||||
if (test -x /usr/bin/zypper && zypper search -x "$f" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/dnf && dnf list -q "$f" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/yum && yum list -q "$f" 1>&2 > /dev/null) || \
|
||||
(test -x /usr/sbin/urpmq && urpmq "$f" 1>&2 > /dev/null); then
|
||||
if pkg_exists "${f}"; then
|
||||
DEPS+=" ${f}"
|
||||
fi
|
||||
done
|
||||
for f in $(sed -n 's, *AX_\(RPM\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do
|
||||
if (test -x /usr/bin/zypper && zypper search -x "$f"-devel 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/dnf && dnf list -q "$f"-devel 1>&2 > /dev/null) || \
|
||||
(test -x /usr/bin/yum && yum list -q "$f"-devel 1>&2 > /dev/null) || \
|
||||
(test -x /usr/sbin/urpmq && urpmq "$f"-devel 1>&2 > /dev/null); then
|
||||
if pkg_exists "${f}-devel"; then
|
||||
DEPS+=" ${f}-devel"
|
||||
fi
|
||||
done
|
||||
@@ -70,5 +107,14 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "${SCHROOTNAME}"; then
|
||||
FILES=$(LANG= schroot -c ${SCHROOTNAME} -- rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
|
||||
else
|
||||
FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
|
||||
fi
|
||||
if test -n "${FILES}"; then
|
||||
echo "**** ERROR: Cannot install: " $FILES
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "**** Success: All Dependencies Resolved"
|
||||
|
159
template.sh
Executable file
159
template.sh
Executable file
@@ -0,0 +1,159 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
##########################################################################################
|
||||
#### template for bash scripts #### START BELOW ##########################################
|
||||
##########################################################################################
|
||||
|
||||
############################################################################ begin logging
|
||||
# check if stdout is a terminal...
|
||||
if test -t 1; then
|
||||
|
||||
# see if it supports colors...
|
||||
ncolors=$(tput colors)
|
||||
|
||||
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||
bold="$(tput bold)"
|
||||
underline="$(tput smul)"
|
||||
standout="$(tput smso)"
|
||||
normal="$(tput sgr0)"
|
||||
black="$(tput setaf 0)"
|
||||
red="$(tput setaf 1)"
|
||||
green="$(tput setaf 2)"
|
||||
yellow="$(tput setaf 3)"
|
||||
blue="$(tput setaf 4)"
|
||||
magenta="$(tput setaf 5)"
|
||||
cyan="$(tput setaf 6)"
|
||||
white="$(tput setaf 7)"
|
||||
fi
|
||||
fi
|
||||
|
||||
append_msg() {
|
||||
if test $# -ne 0; then
|
||||
echo -n ": ${bold}$*"
|
||||
fi
|
||||
echo "${normal}"
|
||||
}
|
||||
|
||||
# write a message
|
||||
message() {
|
||||
if test $# -eq 0; then
|
||||
return
|
||||
fi
|
||||
echo "${bold}${while}$*${normal}" 1>&2
|
||||
}
|
||||
|
||||
# write a success message
|
||||
success() {
|
||||
echo -n "${bold}${green}success" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# write a notice
|
||||
notice() {
|
||||
echo -n "${bold}${yellow}notice" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# write a warning message
|
||||
warning() {
|
||||
echo -en "${bold}${red}warning" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# write error message
|
||||
error() {
|
||||
echo -en "${bold}${red}error" 1>&2
|
||||
append_msg $* 1>&2
|
||||
}
|
||||
|
||||
# run a command, print the result and abort in case of error
|
||||
# option: --ignore: ignore the result, continue in case of error
|
||||
run() {
|
||||
ignore=1
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--ignore) ignore=0;;
|
||||
(*) break;;
|
||||
esac
|
||||
shift;
|
||||
done
|
||||
echo -n "${bold}${yellow}running:${white} $*${normal} … "
|
||||
set +e
|
||||
result=$($* 2>&1)
|
||||
res=$?
|
||||
set -e
|
||||
if test $res -ne 0; then
|
||||
if test $ignore -eq 1; then
|
||||
error "failed with return code: $res"
|
||||
if test -n "$result"; then
|
||||
echo "$result"
|
||||
fi
|
||||
exit 1
|
||||
else
|
||||
warning "ignored return code: $res"
|
||||
fi
|
||||
else
|
||||
success
|
||||
fi
|
||||
}
|
||||
|
||||
############################################################################ error handler
|
||||
function traperror() {
|
||||
set +x
|
||||
local err=($1) # error status
|
||||
local line="$2" # LINENO
|
||||
local linecallfunc="$3"
|
||||
local command="$4"
|
||||
local funcstack="$5"
|
||||
for e in ${err[@]}; do
|
||||
if test -n "$e" -a "$e" != "0"; then
|
||||
error "line $line - command '$command' exited with status: $e (${err[@]})"
|
||||
if [ "${funcstack}" != "main" -o "$linecallfunc" != "0" ]; then
|
||||
echo -n " ... error at ${funcstack} " 1>&2
|
||||
if [ "$linecallfunc" != "" ]; then
|
||||
echo -n "called at line $linecallfunc" 1>&2
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
exit $e
|
||||
fi
|
||||
done
|
||||
success
|
||||
exit 0
|
||||
}
|
||||
|
||||
# catch errors
|
||||
trap 'traperror "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' ERR SIGINT INT TERM EXIT
|
||||
|
||||
|
||||
|
||||
##########################################################################################
|
||||
#### START HERE ##########################################################################
|
||||
##########################################################################################
|
||||
|
||||
######################################################### commandline parameter evaluation
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--help|-h) less <<EOF
|
||||
SYNOPSIS
|
||||
|
||||
$0 [OPTIONS]
|
||||
|
||||
OPTIONS
|
||||
|
||||
--help, -h show this help
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
EOF
|
||||
exit;;
|
||||
(*) error "unknow option $1, try $0 --help"; exit 1;;
|
||||
esac
|
||||
if test $# -eq 0; then
|
||||
error "missing parameter, try $0 --help"; exit 1
|
||||
fi
|
||||
shift;
|
||||
done
|
||||
|
||||
##################################################################################### Main
|
||||
|
Reference in New Issue
Block a user