On 04/04/18 07:50, Eli Schwartz wrote:
> --verifysource is often used to validate the PKGBUILD before uploading
> to the AUR, but currently there is no way to trivially check all sources.
> By default we don't check sources we won't use, because it forces
> downloading those sources, but in certain cases the user might need to
> check them regardless...
> 

We looked at this when architecture dependent sources were added and
many or even most packages with architecture independent sources have
sources with the same filename from a different source path, or change
the source to have the same filename to make the rest of the PKGBUILD
easier.  So that was not implemented.

> --packagelist is usually used to derive the built package names for the
> user's machine, but in some cases, e.g. repo building, we might want to
> get the packagelist for all supported arches. This is primarily
> motivated by the desire to use this in the dbscripts testsuite (which
> tests for i686 and x86_64). While dbscripts could use `for a in
> ${ARCHES[@]}; do CARCH=$a makepkg --packagelist` it seemed easier to add
> this directly in makepkg once I was already changing --verifysource.

I'm not adding a feature to support a testsuite and not an actual usage.
 Do the loop.

> This partially reverts d8591dd3418d55c5736022ef003891fc03b953e0 but
> ensures the use is controllable.
> 
> Signed-off-by: Eli Schwartz <[email protected]>
> ---
>  doc/makepkg.8.txt                      | 13 ++++++++-----
>  scripts/libmakepkg/util/pkgbuild.sh.in | 14 ++++++++++----
>  scripts/makepkg.sh.in                  | 11 ++++++++---
>  3 files changed, 26 insertions(+), 12 deletions(-)
> 
> diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
> index a065b795..42abceae 100644
> --- a/doc/makepkg.8.txt
> +++ b/doc/makepkg.8.txt
> @@ -37,9 +37,10 @@ your logs and output are not localized.
>  Options
>  -------
>  *-A, \--ignorearch*::
> -     Ignore a missing or incomplete arch field in the build script. This is
> -     for rebuilding packages from source when the PKGBUILD may be slightly
> -     outdated and not updated with an `arch=('yourarch')` field.
> +     Ignore a missing or incomplete arch field in the build script, when
> +     building packages. This is for rebuilding packages from source when
> +     the PKGBUILD may be slightly outdated and not updated with an 
> `arch=('yourarch')`
> +     field. Act on all available arches, when performing other actions.
>  
>  *-c, \--clean*::
>       Clean up leftover work files and directories after a successful build.
> @@ -66,7 +67,8 @@ Options
>       if required and perform the integrity checks. No extraction or build is
>       performed. Dependencies specified in the PKGBUILD will not be handled
>       unless `--syncdeps` is used. Useful for performing subsequent offline
> -     builds.
> +     builds. When `--ignorearch` is used, verify all split arch sources 
> instead
> +     of just the sources for the current arch.
>  
>  *-f, \--force*::
>       makepkg will not build a package if a built package already exists in
> @@ -201,7 +203,8 @@ Options
>  
>  *\--packagelist*::
>       List the package filenames that would be produced without building. 
> Listed
> -     package filenames include PKGDEST and PKGEXT.
> +     package filenames include PKGDEST and PKGEXT. When `--ignorearch` is 
> used,
> +     list filenames for all supported arches.
>  
>  *\--printsrcinfo*::
>       Generate and print the SRCINFO file to stdout.
> diff --git a/scripts/libmakepkg/util/pkgbuild.sh.in 
> b/scripts/libmakepkg/util/pkgbuild.sh.in
> index 2db46f1f..e23208c3 100644
> --- a/scripts/libmakepkg/util/pkgbuild.sh.in
> +++ b/scripts/libmakepkg/util/pkgbuild.sh.in
> @@ -182,11 +182,17 @@ print_all_package_names() {
>       local version=$(get_full_version)
>       local architecture pkg opts a
>       for pkg in ${pkgname[@]}; do
> -             architecture=$(get_pkg_arch $pkg)
> -             printf "%s/%s-%s-%s%s\n" "$PKGDEST" "$pkg" "$version" 
> "$architecture" "$PKGEXT"
> -             if check_option "debug" "y" && check_option "strip" "y"; then
> -                     printf "%s/%s-%s-%s-%s%s\n" "$PKGDEST" "$pkg" 
> "@DEBUGSUFFIX@" "$version" "$architecture" "$PKGEXT"
> +             if (( IGNOREARCH )); then
> +                     get_pkgbuild_attribute "$pkg" 'arch' 1 architecture
> +             else
> +                     architecture=$(get_pkg_arch $pkg)
>               fi
> +             for a in "${architecture[@]}"; do
> +                     printf "%s/%s-%s-%s%s\n" "$PKGDEST" "$pkg" "$version" 
> "$a" "$PKGEXT"
> +                     if check_option "debug" "y" && check_option "strip" 
> "y"; then
> +                             printf "%s/%s-%s-%s-%s%s\n" "$PKGDEST" "$pkg" 
> "@DEBUGSUFFIX@" "$version" "$a" "$PKGEXT"
> +                     fi
> +             done
>       done
>  }
>  
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index bc2d0061..584c10a8 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1262,7 +1262,7 @@ while true; do
>               --nosign)         SIGNPKG='n' ;;
>               -o|--nobuild)     NOBUILD=1 ;;
>               -p)               shift; BUILDFILE=$1 ;;
> -             --packagelist)    PACKAGELIST=1 IGNOREARCH=1;;
> +             --packagelist)    PACKAGELIST=1 ;;
>               --printsrcinfo)   PRINTSRCINFO=1 IGNOREARCH=1;;
>               -r|--rmdeps)      RMDEPS=1 ;;
>               -R|--repackage)   REPKG=1 ;;
> @@ -1631,8 +1631,13 @@ if (( !REPKG )); then
>       if (( NOEXTRACT && ! VERIFYSOURCE )); then
>               warning "$(gettext "Using existing %s tree")" "\$srcdir/"
>       else
> -             download_sources
> -             check_source_integrity
> +             if (( VERIFYSOURCE && IGNOREARCH )); then
> +                     download_sources allarch
> +                     check_source_integrity all
> +             else
> +                     download_sources
> +                     check_source_integrity
> +             fi
>               (( VERIFYSOURCE )) && exit $E_OK
>  
>               if (( CLEANBUILD )); then
> 

Reply via email to