[pacman-dev] [PATCH 10/11] makepkg: provide mechanism for auto-updating pkgver

Dave Reisner d at falconindy.com
Tue Jun 26 20:20:28 EDT 2012


On Wed, Jun 27, 2012 at 09:18:53AM +1000, Allan McRae wrote:
> Now that VCS repos are provided in the source array, it becomes too
> complicated to have automatic updating pkgver as was the case with
> the old VCS PKGBUILDs (there can be multiple repos of different types
> in the source array, the VCS repo may not be the package primary
> source, etc).
> 
> Instead provide an optional way for a PKGBUILD to update the pkgver
> value through the specifing of a pkgver() function that returns the
> new version string.  This is run after all source files are downloaded
> so can access the VCS repo if needed.
> 
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>  scripts/makepkg.sh.in | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 0b282a5..5cc378d 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -471,9 +471,30 @@ download_sources() {
>  		esac
>  	done
>  
> +	if declare -f pkgver >/dev/null; then
> +		update_pkgver
> +	fi
> +
>  	popd &>/dev/null
>  }
>  
> +# Automatically update pkgver variable if a pkgver() function is provided
> +# Re-sources the PKGBUILD afterwards to allow for other variables that use $pkgver
> +update_pkgver() {
> +	newpkgver=$(pkgver)

This is arbitrary code from the user. Should we be wrapping this in the
error trap?

> +
> +	if [[ -n $newpkgver && $newpkgver != "$pkgver" ]]; then
> +		if [[ -f $BUILDFILE && -w $BUILDFILE ]]; then
> +			@SEDINPLACE@ "s/^pkgver=[^ ]*/pkgver=$newpkgver/" "$BUILDFILE"
> +			@SEDINPLACE@ "s/^pkgrel=[^ ]*/pkgrel=1/" "$BUILDFILE"
> +			source "$BUILDFILE"
> +		else
> +			warning "$(gettext "%s is not writeable -- pkgver will not be updated")" \
> +					"$BUILDFILE"
> +		fi
> +	fi

Hmmm, maybe a warning if $newpkgver is empty?

> +}
> +
>  # Print 'source not found' error message and exit makepkg
>  missing_source_file() {
>  	error "$(gettext "Unable to find source file %s.")" "$(get_filename "$1")"
> -- 
> 1.7.11.1
> 
> 


More information about the pacman-dev mailing list