mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-10-15 19:35:53 +03:00
make .gnulib a submodule
This makes it so we record (via a git submodule) a snapshot of whatever version of gnulib we're using, and none of gnulib sources are in the libvirt repository. The result is that we have as much reproducibility as when we version-controlled imported copies of the gnulib sources, but without the hassle of the manual process we used when syncing with upstream. Note that when you clone libvirt, you get only the libvirt repository, but when you first run ./bootstrap, it clones gnulib (at the SHA1 recorded via the submodule), creating the .gnulib/ hierarchy. Then, the bootstrap script runs gnulib-tool to populate gnulib/ with the files that make up the selected modules. Put the following in your ~/.gitconfig file. [alias] syncsub = submodule foreach git pull origin master The update procedure is simple: git syncsub ...build & test... git commit -m 'gnulib: sync submodule to latest' .gnulib * .gitmodules: New file. * .gnulib: Initialize. * bootstrap: Set up to use the new submodule. Stop using --no-vc-files. Don't remove .gitignore files. Don't use or create .cvsignore. Diagnose an invalid --gnulib-srcdir=DIR argument. * build-aux/vc-list-files: Delete file, now pulled from gnulib. * build-aux/useless-if-before-free: Likewise. * po/POTFILES.in: Remove gnulib/lib/gai_strerror.c, since it no longer contains translatable strings. * gnulib/*: Remove gnulib/ hierarchy.
This commit is contained in:
47
bootstrap
47
bootstrap
@@ -40,25 +40,31 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
cleanup_gnulib() {
|
||||
st=$?
|
||||
rm -fr .gnulib
|
||||
exit $st
|
||||
}
|
||||
# Get gnulib files.
|
||||
|
||||
case ${GNULIB_SRCDIR--} in
|
||||
-)
|
||||
if [ ! -d .gnulib ]; then
|
||||
echo "$0: getting gnulib files..."
|
||||
|
||||
trap cleanup_gnulib 1 2 13 15
|
||||
|
||||
git clone --depth 1 git://git.sv.gnu.org/gnulib .gnulib ||
|
||||
cleanup_gnulib
|
||||
|
||||
trap - 1 2 13 15
|
||||
fi
|
||||
echo "$0: getting gnulib files..."
|
||||
git submodule init || exit $?
|
||||
git submodule update || exit $?
|
||||
GNULIB_SRCDIR=.gnulib
|
||||
;;
|
||||
*)
|
||||
# Redirect the gnulib submodule to the directory on the command line
|
||||
# if possible.
|
||||
if test -d "$GNULIB_SRCDIR"/.git && \
|
||||
git config --file .gitmodules submodule.gnulib.url >/dev/null; then
|
||||
git submodule init
|
||||
GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
|
||||
git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
|
||||
echo "$0: getting gnulib files..."
|
||||
git submodule update || exit $?
|
||||
GNULIB_SRCDIR=.gnulib
|
||||
else
|
||||
echo >&2 "$0: invalid gnulib srcdir: $GNULIB_SRCDIR"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
||||
@@ -103,20 +109,9 @@ vc-list-files
|
||||
# put *.[ch] files in new gnulib/lib/ dir.
|
||||
|
||||
$gnulib_tool \
|
||||
--no-vc-files \
|
||||
--lgpl=2 \
|
||||
--with-tests \
|
||||
--m4-base=gnulib/m4 \
|
||||
--source-base=gnulib/lib \
|
||||
--tests-base=gnulib/tests \
|
||||
--import $modules
|
||||
|
||||
rm -f \
|
||||
.gitignore \
|
||||
gnulib/lib/.gitignore \
|
||||
gnulib/m4/.gitignore \
|
||||
gnulib/tests/.gitignore
|
||||
|
||||
(cd gnulib/lib &&
|
||||
(cat .cvsignore; \
|
||||
ls -1 *.in.h|sed 's/\.in\.h/.h/') | sort -u > .t; mv .t .cvsignore)
|
||||
|
Reference in New Issue
Block a user