[PATCH util-modular 4/4] release.sh: implement around git worktree
Peter Hutterer
peter.hutterer at who-t.net
Fri Jan 20 02:49:18 UTC 2017
On Thu, Jan 19, 2017 at 07:30:10PM +0000, Emil Velikov wrote:
> From: Emil Velikov <emil.velikov at collabora.com>
>
> Months ago, before my work in here there the script had a number of
> assumptions:
> - autoreconf or alike is ran by the user - slight nuisance esp. when
> releasing multiple packages.
> - the generated files were compatible with the ones on the server -
> rarely and issue, but still
> - config.status means 'all the autotools bits were generated correctly'
> - failed to consider if user has multiple config.status - using
> ./build-64bit/ and ./build-32bit/ anyone ?
> - ...
>
> With 663364cda5e316a0509ff5869293e3a815b9945f we mitigated a lot of that
> but did not consider
> - forcing people to `git clean' is annoying and if not careful one can
> purge local files that they want to keep
> - the files generated by autotools were left behind
>
> In order to mitigate those use git worktree. This is more efficient
> [both bandwidth and storage wise] than pulling/generating git tarballs,
> git clone and friends.
>
> Cc: Peter Hutterer <peter.hutterer at who-t.net>
> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> ---
> There's a git of noise produced by git worktree and autoreconf. I'm fine
> with 2>/dev/null but I'd leave that to others to decide
> ---
> release.sh | 34 +++++++++++++++++++---------------
> 1 file changed, 19 insertions(+), 15 deletions(-)
>
> diff --git a/release.sh b/release.sh
> index 8ed179d..0b3fcbf 100755
> --- a/release.sh
> +++ b/release.sh
> @@ -357,25 +357,24 @@ process_module() {
> return 1
> fi
>
> - if [ -e configure ]; then
> - echo "Error: the git repository contains configure"
> - echo "Did you forget to run git clean -fXd (and git clean -fxd) ?"
> - return 1
> - fi
> -
> - # Create tmpdir for the build
> + # Create tmpdir for the release
> build_dir=`mktemp -d -p . build.XXXXXXXXXX`
> if [ $? -ne 0 ]; then
> - echo "Error: could not create a temporary directory for the build."
> + echo "Error: could not create a temporary directory for the release"
> echo "Do you have coreutils' mktemp ?"
> return 1
> fi
>
> - echo "Info: generating configure."
> - autoreconf --force --install >/dev/null
> + # Worktree removal is intentionally left to the user, due to:
> + # - currently we cannot select only one worktree to prune
> + # - requires to removal of $build_dir which might contradict with the
> + # user decision to keep some artefacts like tarballs or other
> + echo "Info: creating new git worktree."
> + git worktree add $build_dir
> if [ $? -ne 0 ]; then
> - echo "Error: failed to generate configure."
> - return 1
> + echo "Error: failed to create a git worktree."
> + cd $top_src
> + return 1
there's an indentation error, but otherwise the series looks good and is
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
I guess I'll test this on the next release ;)
Cheers,
Peter
> fi
>
> cd $build_dir
> @@ -385,9 +384,14 @@ process_module() {
> return 1
> fi
>
> - # Using ../ here feels a bit nasty, yet $top_src is an absolute path. Thus
> - # it will get propagated in the generated sources, which we do not want.
> - ../configure >/dev/null
> + echo "Info: generating configure."
> + autoreconf --force --install >/dev/null
> + if [ $? -ne 0 ]; then
> + echo "Error: failed to generate configure."
> + return 1
> + fi
> +
> + ./configure >/dev/null
> if [ $? -ne 0 ]; then
> echo "Error: failed to configure module."
> cd $top_src
> --
> 2.11.0
>
More information about the xorg-devel
mailing list