updated build system
This commit is contained in:
@@ -10,36 +10,111 @@
|
||||
## 1 2 3 4 5 6 7 8
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
INSTALL_TOOL=${INSTALL_TOOL:-$((test -x /usr/bin/zypper && echo zypper install -y) || (test -x /usr/bin/dnf && echo dnf install -y) || (test -x /usr/bin/yum && echo yum install -y) || (test -x /usr/sbin/urpmi && echo urpmi --auto))}
|
||||
SCHROOTNAME="$1"
|
||||
PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac)
|
||||
PKGCONFIGS="${2:-epel-release}" # packages to configure yum
|
||||
|
||||
TRAP_CMD="sleep ${SLEEP:-0};"
|
||||
DEPS=
|
||||
for f in BUILD BUILDROOT RPMS SPECS SRPMS; do
|
||||
if ! test -d $f; then
|
||||
TRAP_CMD+="rm -rf $f;"
|
||||
mkdir $f
|
||||
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 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 pkg_exists "${f}-devel"; then
|
||||
DEPS+=" ${f}-devel"
|
||||
fi
|
||||
done
|
||||
for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do
|
||||
DEPS+=" ${f}"
|
||||
done
|
||||
for f in $(sed -n 's, *AX_\(RPM\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do
|
||||
DEPS+=" ${f}-devel"
|
||||
done
|
||||
TRAP_CMD+="rm ${PACKAGE_NAME}.spec;"
|
||||
trap "${TRAP_CMD}" INT TERM EXIT
|
||||
sed 's,@\(\(ALL\|RPM\)_DEPEND_IFEXISTS\|\(ALL\|RPM\)_BUILD_DEPEND\|\(ALL\|RPM\)_DEPEND\)@,,g' ${PACKAGE_NAME}.spec.in | \
|
||||
sed 's,@[^@]*@,dummytext,g' > ${PACKAGE_NAME}.spec
|
||||
fi
|
||||
|
||||
TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec)
|
||||
if ! test -e $TGZFILE; then
|
||||
TRAP_CMD+="rm ${TGZFILE};"
|
||||
trap "${TRAP_CMD}" INT TERM EXIT
|
||||
touch $TGZFILE
|
||||
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')
|
||||
if test -n "${FILES}"; then
|
||||
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}")
|
||||
if test -n "${FIRST}"; then
|
||||
schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FIRST} || \
|
||||
schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FIRST} || \
|
||||
schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FIRST}
|
||||
fi
|
||||
schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FILES} || \
|
||||
schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FILES} || \
|
||||
schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FILES}
|
||||
schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES} ${DEPS}
|
||||
fi
|
||||
else
|
||||
FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
|
||||
if test -n "${FILES}"; then
|
||||
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}")
|
||||
if test -n "${FIRST}"; then
|
||||
yum install -y ${FIRST} || \
|
||||
zypper install -y ${FIRST} || \
|
||||
dnf install -y ${FIRST}
|
||||
fi
|
||||
yum install -y ${FILES} || \
|
||||
zypper install -y ${FILES} || \
|
||||
dnf install -y ${FILES}
|
||||
${INSTALL_TOOL} ${FILES} ${DEPS}
|
||||
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"
|
||||
|
Reference in New Issue
Block a user