
Presiouvly, when there was a tarball file in the top git-tree, it would have been choosen and no easy way to overwrite the decision to build from a git-archive. Now you can safely build current HEAD by simply calling ./contrib/fedora/rpm/build_clean.sh -g Contrary to the regular build which calls `make dist`, this doesn't require a clean working copy and no need to purge it with git-clean.
135 lines
3.9 KiB
Bash
Executable File
135 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
|
|
die() {
|
|
echo "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
echo "USAGE: $0 [-h|--help|-?|help] [-f|--force] [-c|--clean] [-S|--srpm] [-g|--git] [-Q|--quick] [-N|--no-dist] [[-w|--with OPTION] ...] [[-W|--without OPTION] ...]"
|
|
echo
|
|
echo "Does all the steps from a clean git working directory to an RPM of NetworkManager"
|
|
echo
|
|
echo "This is also the preferred way to create a distribution tarball for release:"
|
|
echo " $ $0 -c -S"
|
|
echo
|
|
echo "Options:"
|
|
echo " -f|--force: force build, even if working directory is not clean and has local modifications"
|
|
echo " -c|--clean: run \`git-clean -fdx :/\` before build"
|
|
echo " -S|--srpm: only build the SRPM"
|
|
echo " -g|--git: create tarball from current git HEAD (skips make dist)"
|
|
echo " -Q|--quick: only run \`make dist\` instead of \`make distcheck\`"
|
|
echo " -N|--no-dist: skip creating the source tarball if you already did \`make dist\`"
|
|
echo " -w|--with \$OPTION: pass --with \$OPTION to rpmbuild. For example --with debug"
|
|
echo " -W|--without \$OPTION: pass --without \$OPTION to rpmbuild. For example --without debug"
|
|
}
|
|
|
|
|
|
ORIGDIR="$(readlink -f "$PWD")"
|
|
SCRIPTDIR="$(dirname "$(readlink -f "$0")")"
|
|
GITDIR="$(cd "$SCRIPTDIR" && git rev-parse --show-toplevel || die "Could not get GITDIR")"
|
|
|
|
|
|
[[ -x "$SCRIPTDIR"/build.sh ]] || die "could not find \"$SCRIPTDIR/build.sh\""
|
|
|
|
cd "$GITDIR" || die "could not change to $GITDIR"
|
|
|
|
IGNORE_DIRTY=0
|
|
GIT_CLEAN=0
|
|
QUICK=0
|
|
NO_DIST=0
|
|
WITH_LIST=()
|
|
SOURCE_FROM_GIT=0
|
|
|
|
_next_with=
|
|
for A; do
|
|
if [ -n "$_next_with" ]; then
|
|
WITH_LIST=("${WITH_LIST[@]}" "$_next_with" "$A")
|
|
_next_with=
|
|
continue
|
|
fi
|
|
case "$A" in
|
|
-h|--help|-\?|help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-f|--force)
|
|
IGNORE_DIRTY=1
|
|
;;
|
|
-c|--clean)
|
|
GIT_CLEAN=1
|
|
;;
|
|
-S|--srpm)
|
|
BUILDTYPE=SRPM
|
|
;;
|
|
-g|--git)
|
|
NO_DIST=1
|
|
IGNORE_DIRTY=1
|
|
SOURCE_FROM_GIT=1
|
|
;;
|
|
-Q|--quick)
|
|
NO_DIST=0
|
|
QUICK=1
|
|
SOURCE_FROM_GIT=0
|
|
;;
|
|
-N|--no-dist)
|
|
NO_DIST=1
|
|
IGNORE_DIRTY=1
|
|
SOURCE_FROM_GIT=0
|
|
;;
|
|
-w|--with)
|
|
_next_with=--with
|
|
;;
|
|
-W|--without)
|
|
_next_with=--without
|
|
;;
|
|
*)
|
|
usage
|
|
die "Unexpected argument \"$A\""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
test -n "$_next_with" && die "Missing argument to $_next_with"
|
|
|
|
if [[ $GIT_CLEAN == 1 ]]; then
|
|
git clean -fdx :/
|
|
fi
|
|
|
|
if [[ $IGNORE_DIRTY != 1 ]]; then
|
|
# check for a clean working directory.
|
|
# We ignore the /contrib directory, because this is where the automation
|
|
# scripts and the build results will be.
|
|
if [[ "x$(LANG=C git clean -ndx | grep '^Would \(remove contrib/\|skip repository libgsystem/\).*$' -v)" != x ]]; then
|
|
die "The working directory is not clean. Refuse to run. Try \`$0 --force\`, \`$0 --clean\`, or \`git clean -e :/contrib -dx -n\`"
|
|
fi
|
|
if [[ "x$(git status --porcelain)" != x ]]; then
|
|
die "The working directory has local changes. Refuse to run. Try \`$0 --force\`"
|
|
fi
|
|
fi
|
|
|
|
if [[ $NO_DIST != 1 ]]; then
|
|
./autogen.sh --enable-gtk-doc || die "Error autogen.sh"
|
|
|
|
if [[ $QUICK == 1 ]]; then
|
|
make -C shared || die "Error make -C shared"
|
|
make -C introspection || die "Error make -C introspection"
|
|
make -C libnm-core || die "Error make -C libnm-core"
|
|
make -C libnm || die "Error make -C libnm"
|
|
make -C libnm-util || die "Error make -C libnm-util"
|
|
make -C libnm-glib || die "Error make -C libnm-glib"
|
|
make dist || die "Error make distcheck"
|
|
else
|
|
make -j 10 || die "Error make"
|
|
make distcheck || die "Error make distcheck"
|
|
fi
|
|
fi
|
|
|
|
export SOURCE_FROM_GIT
|
|
export BUILDTYPE
|
|
export NM_RPMBUILD_ARGS="${WITH_LIST[@]}"
|
|
|
|
"$SCRIPTDIR"/build.sh
|
|
|