diff --git a/core/pacman/0001-Sychronize-filesystem.patch b/core/pacman/0001-Sychronize-filesystem.patch index 9e76a0d34..06659b54e 100644 --- a/core/pacman/0001-Sychronize-filesystem.patch +++ b/core/pacman/0001-Sychronize-filesystem.patch @@ -1,4 +1,4 @@ -From f1f7a14e173822fb075576c69f8bd4476f5263da Mon Sep 17 00:00:00 2001 +From d78f14170b2950fd3a252bec1ecc808a6de433b1 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 13 Sep 2014 18:58:16 -0600 Subject: [PATCH] Sychronize filesystem @@ -14,10 +14,10 @@ Signed-off-by: Kevin Mihelich 1 file changed, 3 insertions(+) diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c -index 8d4e0e7..886f87b 100644 +index e680feb..1e103f2 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c -@@ -175,6 +175,9 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data) +@@ -211,6 +211,9 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data) trans->state = STATE_COMMITED; @@ -28,5 +28,5 @@ index 8d4e0e7..886f87b 100644 } -- -2.1.0 +2.2.1 diff --git a/core/pacman/0001-pacman-key-compatibility-with-gnupg-2.1.patch b/core/pacman/0001-pacman-key-compatibility-with-gnupg-2.1.patch deleted file mode 100644 index 65b72efd3..000000000 --- a/core/pacman/0001-pacman-key-compatibility-with-gnupg-2.1.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 41c8263ba289dac191d7f74faaa62476baf41c28 Mon Sep 17 00:00:00 2001 -From: Tobias Powalowski -Date: Fri, 21 Nov 2014 20:54:58 +1000 -Subject: [PATCH] pacman-key: compatibility with gnupg-2.1 - -GnuPG 2.1 no longer allow empty passphrases by default. - -Signed-off-by: Allan McRae ---- - scripts/pacman-key.sh.in | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in -index ba8d02e..5ba0ad8 100644 ---- a/scripts/pacman-key.sh.in -+++ b/scripts/pacman-key.sh.in -@@ -151,6 +151,7 @@ Key-Usage: sign - Name-Real: Pacman Keyring Master Key - Name-Email: pacman@localhost - Expire-Date: 0 -+%no-protection - %commit - %echo Done - EOF --- -2.1.3 - diff --git a/core/pacman/PKGBUILD b/core/pacman/PKGBUILD index eb568e09d..82d048653 100644 --- a/core/pacman/PKGBUILD +++ b/core/pacman/PKGBUILD @@ -4,20 +4,20 @@ # Maintainer: Dave Reisner # ALARM: Kevin Mihelich -# - arch/host/flags for arm and armv7h -# - pacman.conf: architecture=arm/armv7h, added our aur and alarm repos +# - arch/host/flags for arm, armv6h, and armv7h +# - pacman.conf: architecture=arm/armv6h/armv7h, added our aur and alarm repos # - makepkg.conf: adjusted C/CXX/LDFLAGS # - patch to sync filesystem after install/remove pkgname=pacman -pkgver=4.1.2 -pkgrel=7 +pkgver=4.2.0 +pkgrel=5 pkgdesc="A library-based package manager with dependency support" arch=('i686' 'x86_64') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base' 'base-devel') -depends=('bash>=4.2.042-2' 'glibc>=2.17-2' 'libarchive>=3.1.2' 'curl>=7.19.4' +depends=('bash' 'glibc' 'libarchive>=3.1.2' 'curl>=7.39.0' 'gpgme' 'pacman-mirrorlist') checkdepends=('python2' 'fakechroot') optdepends=('fakeroot: for makepkg usage as normal user') @@ -27,22 +27,24 @@ replaces=('pacman-contrib') backup=(etc/pacman.conf etc/makepkg.conf) options=('strip' 'debug') source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig} - 0001-pacman-key-compatibility-with-gnupg-2.1.patch 0001-Sychronize-filesystem.patch pacman.conf - makepkg.conf) -md5sums=('063c8b0ff6bdf903dc235445525627cd' + makepkg.conf + pacman-4.2.0-roundup.patch) +md5sums=('184ce14f1f326fede72012cca51bba51' 'SKIP' - 'd0e015b1bf78cbf9762d9c44ea5f77a9' - 'f7f7bd5bdd5f7973955f3af8bbceae61' + '291123878ec33ca8a3020ac85f2e91d1' '5c491b27bae54d93d6ba972ce0fccfa7' - '1f8d6efc76a395956fdae71927698666') + 'c88c41076f26e97c6915d8b967df96e7' + '8b8e478e3b6f785f6fb0029f792cea38') validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD') # Allan McRae prepare() { cd $srcdir/$pkgname-$pkgver patch -p1 -i ../0001-Sychronize-filesystem.patch - patch -p1 -i $srcdir/0001-pacman-key-compatibility-with-gnupg-2.1.patch + + # v4.2.0-13-gacc639a + patch -p1 -i $srcdir/pacman-4.2.0-roundup.patch } build() { diff --git a/core/pacman/makepkg.conf b/core/pacman/makepkg.conf index 9fc14b229..d43c1407d 100644 --- a/core/pacman/makepkg.conf +++ b/core/pacman/makepkg.conf @@ -19,6 +19,13 @@ DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o % # /usr/bin/lftpget -c # /usr/bin/wget +#-- The the package required by makepkg to download VCS sources +# Format: 'protocol::package' +VCSCLIENTS=('bzr::bzr' + 'git::git' + 'hg::mercurial' + 'svn::subversion') + ######################################################################### # ARCHITECTURE, COMPILE FLAGS ######################################################################### @@ -43,7 +50,7 @@ DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" # BUILD ENVIRONMENT ######################################################################### # -# Defaults: BUILDENV=(fakeroot !distcc color !ccache check !sign) +# Defaults: BUILDENV=(!distcc color !ccache check !sign) # A negated environment option will do the opposite of the comments below. # #-- fakeroot: Allow building packages as a non-root user @@ -53,7 +60,7 @@ DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" #-- check: Run the check() function if present in the PKGBUILD #-- sign: Generate PGP signature file # -BUILDENV=(fakeroot !distcc color !ccache check !sign) +BUILDENV=(!distcc color !ccache check !sign) # #-- If using DistCC, your MAKEFLAGS will also need modification. In addition, #-- specify a space-delimited list of hosts running in the DistCC cluster. diff --git a/core/pacman/pacman-4.2.0-roundup.patch b/core/pacman/pacman-4.2.0-roundup.patch new file mode 100644 index 000000000..db18e1800 --- /dev/null +++ b/core/pacman/pacman-4.2.0-roundup.patch @@ -0,0 +1,243 @@ +diff --git a/contrib/paclist.sh.in b/contrib/paclist.sh.in +index 1c10b32..f4fd540 100644 +--- a/contrib/paclist.sh.in ++++ b/contrib/paclist.sh.in +@@ -31,7 +31,7 @@ if ! type gettext &>/dev/null; then + fi + + usage() { +- printf "%s (pacman) v%s\n" "${myname}" "myver" ++ printf "%s (pacman) v%s\n" "${myname}" "${myver}" + echo + printf "List all packages installed from a given repository\n" "${myname}" + echo +diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in +index 712ca60..9ed7ef9 100644 +--- a/etc/makepkg.conf.in ++++ b/etc/makepkg.conf.in +@@ -19,6 +19,13 @@ DLAGENTS=('ftp::/usr/bin/curl -qfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o + # /usr/bin/lftpget -c + # /usr/bin/wget + ++#-- The the package required by makepkg to download VCS sources ++# Format: 'protocol::package' ++VCSCLIENTS=('bzr::bzr' ++ 'git::git' ++ 'hg::mercurial' ++ 'svn::subversion') ++ + ######################################################################### + # ARCHITECTURE, COMPILE FLAGS + ######################################################################### +diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c +index d232bcc..9af5e84 100644 +--- a/lib/libalpm/log.c ++++ b/lib/libalpm/log.c +@@ -52,7 +52,7 @@ int SYMEXPORT alpm_logaction(alpm_handle_t *handle, const char *prefix, + int fd; + do { + fd = open(handle->logfile, O_WRONLY | O_APPEND | O_CREAT | O_CLOEXEC, +- 0000); ++ 0644); + } while(fd == -1 && errno == EINTR); + if(fd >= 0) { + handle->logstream = fdopen(fd, "a"); +diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c +index e2997f6..d9ed3d3 100644 +--- a/lib/libalpm/package.c ++++ b/lib/libalpm/package.c +@@ -574,7 +574,7 @@ int _alpm_pkg_dup(alpm_pkg_t *pkg, alpm_pkg_t **new_ptr) + newpkg->installdate = pkg->installdate; + STRDUP(newpkg->packager, pkg->packager, goto cleanup); + STRDUP(newpkg->md5sum, pkg->md5sum, goto cleanup); +- STRDUP(newpkg->sha256sum, pkg->md5sum, goto cleanup); ++ STRDUP(newpkg->sha256sum, pkg->sha256sum, goto cleanup); + STRDUP(newpkg->arch, pkg->arch, goto cleanup); + newpkg->size = pkg->size; + newpkg->isize = pkg->isize; +diff --git a/scripts/makepkg-template.pl.in b/scripts/makepkg-template.pl.in +index 6e6d944..d9da167 100755 +--- a/scripts/makepkg-template.pl.in ++++ b/scripts/makepkg-template.pl.in +@@ -70,7 +70,7 @@ sub parse_template_line { + foreach my $element (@elements) { + my ($key, $val) = ($element =~ /^([a-z0-9]+)=(.*)$/); + unless ($key and $val) { +- die gettext("invalid key/value pair\n%s:%s: %s"), ++ die gettext("invalid key/value pair\n"), + "$filename:$linenumber: $line"; + } + $values{$key} = $val; +diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in +index 33dff24..18b2822 100644 +--- a/scripts/makepkg.sh.in ++++ b/scripts/makepkg.sh.in +@@ -1317,47 +1317,41 @@ verify_integrity_sums() { + fi + } + +-have_sources() { +- local a +- +- (( ${#source[*]} )) && return 0 ++check_checksums() { ++ local integ a ++ declare -A correlation ++ (( SKIPCHECKSUMS )) && return 0 + ++ # Initialize a map which we'll use to verify that every source array has at ++ # least some kind of checksum array associated with it. ++ (( ${#source[*]} )) && correlation['source']=1 + case $1 in + all) + for a in "${arch[@]}"; do +- array_build _ source_"$a" && return 0 ++ array_build _ source_"$a" && correlation["source_$a"]=1 + done + ;; + *) +- array_build _ source_"$CARCH" && return 0 ++ array_build _ source_"$CARCH" && correlation["source_$CARCH"]=1 + ;; + esac + +- return 1 +-} +- +-check_checksums() { +- (( SKIPCHECKSUMS )) && return 0 +- have_sources "$1" || return 0 +- +- local correlation=0 +- local integ a + for integ in "${known_hash_algos[@]}"; do +- verify_integrity_sums "$integ" && correlation=1 ++ verify_integrity_sums "$integ" && unset "correlation[source]" + + case $1 in + all) + for a in "${arch[@]}"; do +- verify_integrity_sums "$integ" "$a" && correlation=1 ++ verify_integrity_sums "$integ" "$a" && unset "correlation[source_$a]" + done + ;; + *) +- verify_integrity_sums "$integ" "$CARCH" && correlation=1 ++ verify_integrity_sums "$integ" "$CARCH" && unset "correlation[source_$CARCH]" + ;; + esac + done + +- if (( ! correlation )); then ++ if (( ${#correlation[*]} )); then + error "$(gettext "Integrity checks are missing.")" + exit 1 # TODO: error code + fi +@@ -1627,7 +1621,10 @@ merge_arch_attrs() { + + source_buildfile() { + source_safe "$@" +- merge_arch_attrs ++ ++ if (( !SOURCEONLY )); then ++ merge_arch_attrs ++ fi + } + + run_function_safe() { +@@ -2142,8 +2139,6 @@ write_pkginfo() { + local size="$(@DUPATH@ @DUFLAGS@)" + size="$(( ${size%%[^0-9]*} * 1024 ))" + +- merge_arch_attrs +- + msg2 "$(gettext "Generating %s file...")" ".PKGINFO" + printf "# Generated by makepkg %s\n" "$makepkg_version" + printf "# using %s\n" "$(fakeroot -v)" +@@ -2896,7 +2891,7 @@ get_vcsclient() { + } + + check_vcs_software() { +- local ret=0 ++ local all_sources all_deps deps ret=0 + + if (( SOURCEONLY == 1 )); then + # we will not download VCS sources +@@ -2908,7 +2903,17 @@ check_vcs_software() { + return $ret + fi + +- for netfile in ${source[@]}; do ++ # we currently only use global depends/makedepends arrays for --syncdeps ++ for attr in depends makedepends; do ++ pkgbuild_get_attribute "$pkg" "$attr" 1 'deps' ++ all_deps+=("${deps[@]}") ++ ++ pkgbuild_get_attribute "$pkg" "${attr}_$CARCH" 1 'deps' ++ all_deps+=("${deps[@]}") ++ done ++ ++ get_all_sources_for_arch 'all_sources' ++ for netfile in ${all_sources[@]}; do + local proto=$(get_protocol "$netfile") + + case $proto in +@@ -2921,7 +2926,7 @@ check_vcs_software() { + uninstalled="$(set +E; check_deps $client)" || exit 1 + # if not installed, check presence in depends or makedepends + if [[ -n "$uninstalled" ]] && (( ! NODEPS || ( VERIFYSOURCE && !DEP_BIN ) )); then +- if ! in_array "$client" ${depends[@]} ${makedepends[@]}; then ++ if ! in_array "$client" ${all_deps[@]}; then + error "$(gettext "Cannot find the %s package needed to handle %s sources.")" \ + "$client" "${proto%%+*}" + ret=1 +@@ -3435,7 +3440,7 @@ CARCH=${_CARCH:-$CARCH} + if (( ! INFAKEROOT )); then + if (( EUID == 0 )); then + error "$(gettext "Running %s as root is not allowed as it can cause permanent,\n\ +-catastrophic damage to your system.")" ++catastrophic damage to your system.")" "makepkg" + exit 1 # $E_USER_ABORT + fi + else +@@ -3597,7 +3602,7 @@ if (( SOURCEONLY )); then + download_sources allarch + elif ( (( ! SKIPCHECKSUMS )) || \ + ( (( ! SKIPPGPCHECK )) && source_has_signatures ) ); then +- download_sources novcs ++ download_sources allarch novcs + fi + check_source_integrity all + cd_safe "$startdir" +diff --git a/scripts/pacman-db-upgrade.sh.in b/scripts/pacman-db-upgrade.sh.in +index 7bb277b..7d01bce 100644 +--- a/scripts/pacman-db-upgrade.sh.in ++++ b/scripts/pacman-db-upgrade.sh.in +@@ -19,6 +19,9 @@ + # along with this program. If not, see . + # + ++# Avoid creating world-unreadable files ++umask 022 ++ + # gettext initialization + export TEXTDOMAIN='pacman-scripts' + export TEXTDOMAINDIR='@localedir@' +@@ -167,6 +170,8 @@ if [[ -z "$db_version" ]]; then + fi + + # pacman 4.1 to 4.2 upgrade - remove directory symlink support ++ msg "$(gettext "Pre-4.2 database format detected - upgrading...")" ++ + dirlist=() + + unset GREP_OPTIONS +@@ -180,8 +185,6 @@ if [[ -z "$db_version" ]]; then + done) + + if [[ ${#dirlist[@]} != 0 ]]; then +- msg "$(gettext "Pre-4.2 database format detected - upgrading...")" +- + pacroot="$(resolve_dir "$pacroot")" + + for dir in "${dirlist[@]}"; do