[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