[pacman-dev] [PATCH 3/3] PKGBUILD: add support for arch-specific sources

Andrew Gregory andrew.gregory.8 at gmail.com
Sun Aug 10 17:18:49 EDT 2014


On 08/07/14 at 08:46pm, Dave Reisner wrote:
> This implements support for declarations such as:
> 
>   arch=('i686' 'x86_64')
>   ...
> 
>   source=("somescript.sh")
>   source_i686=("http://evilmonster.com/i686/ponies-9001-1.i686.bin")
>   source_x86_64=("http://evilmonster.com/i686/ponies-9001-1.x86_64.bin")
> 
>   md5sums=('d41d8cd98f00b204e9800998ecf8427e')
>   md5sums_i686=('e4ca381035a34b7a852184cc0dd89baa')
>   md5sums_x86_64=('4019740e6998f30a3c534bac6a83f582')
> 
> Just the same as the "untagged" sources, multiple integrity algorithms
> are supported. The manpage is updated to reflect support for these
> suffices.
> ---
>  doc/PKGBUILD.5.txt    |   4 ++
>  scripts/makepkg.sh.in | 104 +++++++++++++++++++++++++++++++++++++++++---------
>  2 files changed, 90 insertions(+), 18 deletions(-)

...

> @@ -710,8 +742,8 @@ download_sources() {
>  		GET_VCS=0
>  	fi
>  
> -	local netfile
> -	for netfile in "${source[@]}"; do
> +	get_all_sources_for_arch 'all_sources'
> +	for netfile in "${all_sources[@]}"; do
>  		pushd "$SRCDEST" &>/dev/null
>  
>  		local proto=$(get_protocol "$netfile")

...

> @@ -2065,8 +2131,10 @@ create_srcpackage() {
>  	msg2 "$(gettext "Adding %s...")" "$BUILDSCRIPT"
>  	ln -s "${BUILDFILE}" "${srclinks}/${pkgbase}/${BUILDSCRIPT}"
>  
> -	local file
> -	for file in "${source[@]}"; do
> +	local file all_sources
> +
> +	get_all_sources all_sources 'all_sources'

It looks like get_all_sources only takes one argument but you're
passing two.

> +	for file in "${all_sources[@]}"; do
>  		if [[ "$file" = "$(get_filename "$file")" ]] || (( SOURCEONLY == 2 )); then
>  			local absfile
>  			absfile=$(get_filepath "$file") || missing_source_file "$file"

Doesn't this break --allsource packages?  This attempts to add *all*
sources but only the arch-specific sources are ever downloaded.  It
should also probably be noted somewhere that all sources must have
unique names even between different architectures, for example the
following will confuse create_srcpackage:

   source_i686=( "http://evilmonster.com/i686/ponies-9001-1.bin")
   source_x86_64=("http://evilmonster.com/x64/ponies-9001-1.bin")

apg


More information about the pacman-dev mailing list