diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-04-16 15:13:06 -0400 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2018-04-16 15:13:06 -0400 |
commit | a75465003e1052be970d31d297357c4ff513d0fb (patch) | |
tree | 740d85b85e3b91aa650f74813359aa8ea1a79aa5 /PKGBUILD | |
parent | ec231a1a5f4eabaa0419954454de96c0b33e3ac9 (diff) | |
download | pacman-static-a75465003e1052be970d31d297357c4ff513d0fb.tar.xz |
upgpkg: pacman-static 5.0.2-1
Rewrite building this properly, without relying on abs (which does not
exist anymore).
Note: curl does not seem to work statically, without c-ares. pacman just
segfaulted... this does not indicate promising behavior w.r.t. blindly
rebuilding the deptree using abs *or* asp.
I did not bother with monotonically increasing pkgver, since it is quite
some time since this worked and the date usage was madness anyway... it
is very unlikely anyone had this installed.
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 225 |
1 files changed, 212 insertions, 13 deletions
@@ -1,25 +1,224 @@ -# This is gross, but can totally save you if you need to fix a machine -# on which you can't easily boot install media. +# Maintainer: Eli Schwartz <eschwartz@archlinux.org> pkgname=pacman-static -pkgver=2015 -pkgrel=5 +pkgver=5.0.2 +_cares_ver=1.13.0 +_nghttp2_ver=1.31.0 +_curlver=7.57.0 +_sslver=1.1.0g +_xzver=5.2.3 +_bzipver=1.0.6 +_libarchive_ver=3.3.2 +_gpgerrorver=1.27 +_libassuanver=2.5.1 +_gpgmever=1.10.0 +_gnupgver=2.2.4 +pkgrel=1 pkgdesc="Statically-compiled pacman (to fix or install systems without libc)" arch=('i686' 'x86_64') url="http://www.archlinux.org/pacman/" license=('GPL') -makedepends=(gnupg abs asciidoc python2 fakechroot) -optdepends=('gnupg: verify package integrity') -source=(genpacmanstatic) -sha256sums=('77c706302199aa096dc990a71494f4525b819a81deab194cd2fc5ab1b6032b28') +depends=("pacman=${pkgver}") +options=('staticlibs') + +# pacman +source=("https://sources.archlinux.org/other/pacman/pacman-${pkgver}.tar.gz"{,.sig}) +validpgpkeys=('B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <andrew@archlinux.org> +# nghttp2 +source+=("https://github.com/nghttp2/nghttp2/releases/download/v$_nghttp2_ver/nghttp2-$_nghttp2_ver.tar.xz") +# c-ares +source+=("https://c-ares.haxx.se/download/c-ares-${_cares_ver}.tar.gz"{,.asc}) +validpgpkeys+=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg <daniel@haxx.se> +# curl +source+=("https://curl.haxx.se/download/curl-${_curlver}.tar.gz"{,.asc}) +# openssl +source+=("https://www.openssl.org/source/openssl-${_sslver}.tar.gz"{,.asc} + "ca-dir.patch") +validpgpkeys+=('8657ABB260F056B1E5190839D9C4D26D0E604491') # Matt Caswell <matt@openssl.org> +# xz +source+=("https://tukaani.org/xz/xz-${_xzver}.tar.gz"{,.sig}) +validpgpkeys+=('3690C240CE51B4670D30AD1C38EE757D69184620') # Lasse Collin <lasse.collin@tukaani.org> +# bzip2 +source+=("http://www.bzip.org/${_bzipver}/bzip2-${_bzipver}.tar.gz") +# libgpg-error +source+=("https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${_gpgerrorver}.tar.bz2"{,.sig}) +validpgpkeys+=('D8692123C4065DEA5E0F3AB5249B39D24F25E3B6' # Werner Koch + '031EC2536E580D8EA286A9F22071B08A33BD3F06') # NIIBE Yutaka (GnuPG Release Key) <gniibe@fsij.org> +# libassuan +source+=("https://gnupg.org/ftp/gcrypt/libassuan/libassuan-${_libassuanver}.tar.bz2"{,.sig}) +# gpgme +source+=("https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-${_gpgmever}.tar.bz2"{,.sig}) + +# libarchive +source+=("libarchive-${_libarchive_ver}.tar.gz::https://github.com/libarchive/libarchive/archive/v${_libarchive_ver}.tar.gz") + +sha512sums=('94a8cce1a52d2365a993c72f16537f4dbea6100feb8f22e8782cc7d2c1ef8a525a63f3c40bb183294c0faedcc743e3d806d2fc3c50a21ab9b03df2910039d628' + 'SKIP' + '00342b0517eb9e1044eced4649488d7ad35694e0a1303c4cba2d2be897fb86c5c70f1a5a157799d5c0cf448a6b983f2a2a57ee2bdb5ec762876647f9303446ca' + '4a7942e754673f5b8d55a7471e31b0f390e8324b14c12077580c956147fad4d165c7fe8a3190199b1add95c710ceeb1a7957706d4f0d6299d39c5dddc719bd9d' + 'SKIP' + '1ce8138c708965d29628f9b3e37cb9cb5c586f82f42091d5e60ba66ddcebcd55dba874c5d903365af0ef94c5c1679430bdd8c0cefbffdf5f7f347d9055824648' + 'SKIP' + '6c76f698fc2a4540f3977d97c889e139acf7d3f9eb85f349974175e8a7707b19743ef91c5ce32839310b6ea06ca88a03d9709ee011687b4634c5c50b5814f42a' + 'SKIP' + '3857c298663728a465b5f95a3ef44547efbfb420d755e9dde7f20aa3905171b400e1c126d8db5c2b916c733bbd0724d8753cad16c9baf7b12dcd225a3ee04a97' + 'a5eb4f707cf31579d166a6f95dbac45cf7ea181036d1632b4f123a4072f502f8d57cd6e7d0588f0bf831a07b8fc4065d26589a25c399b95ddcf5f73435163da6' + 'SKIP' + '00ace5438cfa0c577e5f578d8a808613187eff5217c35164ffe044fbafdfec9e98f4192c02a7d67e01e5a5ccced630583ad1003c37697219b0f147343a3fdd12' + '51b313c1159074fdbbce84f63bd8afd84b3b58cd608714865b25bed84c1862d050708aa06ac3dab92f1906593df5121161e594c2809653b0fb2c236cae5dcc2f' + 'SKIP' + 'c8829925221780f175cee8c4084060b0d661229f583a50d400a1903ab7303b2724b99ff9c0fa242881d4c5d779036756e1da54d9143acc0fcd92f302ecb5882d' + 'SKIP' + '8ffa348ef4775ed3209486444d54411e28c9a0ff1d7a4315feb0b2856ccd5d110b219100ea41262ca0016af69a1936d79fee0eadf2599c7c5bbeed05d11f7ab5' + 'SKIP' + '7bc17d6f742080278e35f86b0233d70045df0ca1578cd427126e0acce183709bf33ecca689db65e2e67bdfaf687c04d36cae1202a926beeebc88076648aa40bc') + +export LDFLAGS="$LDFLAGS -static" + +prepare() { + cd "${srcdir}"/libarchive-${_libarchive_ver} + autoreconf -fi +} build() { - cd "$srcdir" - export ASROOT - ./genpacmanstatic + export PKG_CONFIG_PATH="${srcdir}"/temp/usr/lib/pkgconfig + + # openssl + cd "${srcdir}"/openssl-${_sslver} + if [[ "${CARCH}" == 'x86_64' ]]; then + openssltarget='linux-x86_64' + optflags='enable-ec_nistp_64_gcc_128' + elif [[ "${CARCH}" == 'i686' ]]; then + openssltarget='linux-elf' + optflags='' + fi + # mark stack as non-executable: http://bugs.archlinux.org/task/12434 + ./Configure --prefix="${srcdir}"/temp/usr \ + --openssldir=/etc/ssl \ + --libdir=lib \ + no-shared \ + no-ssl3-method \ + ${optflags} \ + "${openssltarget}" \ + "-Wa,--noexecstack ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}" + make build_libs + make install_dev + + # xz + cd "${srcdir}"/xz-${_xzver} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared + cd src/liblzma + make + make install + + # bzip2 + cd "${srcdir}"/bzip2-${_bzipver} + sed -i "s|-O2|${CFLAGS}|g" Makefile + make libbz2.a + install -Dvm644 bzlib.h "${srcdir}"/temp/usr/include/ + install -Dvm644 libbz2.a "${srcdir}"/temp/usr/lib/ + + # libarchive + cd "${srcdir}"/libarchive-${_libarchive_ver} + CPPFLAGS="-I${srcdir}/temp/usr/include" CFLAGS="-L${srcdir}/temp/usr/lib" \ + ./configure --prefix="${srcdir}"/temp/usr \ + --without-xml2 \ + --without-nettle \ + --disable-{bsdtar,bsdcat,bsdcpio} \ + --without-expat \ + --disable-shared + make + make install-{includeHEADERS,libLTLIBRARIES,pkgconfigDATA,includeHEADERS} + + # nghttp2 + cd "${srcdir}"/nghttp2-${_nghttp2_ver} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared \ + --disable-examples \ + --disable-python-bindings + make -C lib + make -C lib install + + # c-ares + # needed for curl, which does not use it in the repos + # but seems to be needed for static builds + cd "${srcdir}"/c-ares-${_cares_ver} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared + make + make install-{libcares_laHEADERS,libLTLIBRARIES,pkgconfigDATA} + + # curl + cd "${srcdir}"/curl-${_curlver} + # c-ares/openssl is not detected via pkg-config :( + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared \ + --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \ + --disable-{dict,file,gopher,imap,imaps,ldap,ldaps,manual,pop3,pop3s,rtsp,scp,sftp,smb,smbs,smtp,smtps,telnet,tftp} \ + --without-{brotli,libidn2,librtmp,libssh2} \ + --disable-libcurl-option \ + --with-openssl="${srcdir}"/temp/usr \ + --enable-ares="${srcdir}"/temp/usr + make -C lib + make install-pkgconfigDATA + make -C lib install + make -C include install + + # libgpg-error + cd "${srcdir}"/libgpg-error-${_gpgerrorver} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared + make -C src + make -C src install-libLTLIBRARIES install-binSCRIPTS install-nodist_includeHEADERS + + # libassuan + cd "${srcdir}"/libassuan-${_libassuanver} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-shared + make -C src + make -C src install-libLTLIBRARIES install-binSCRIPTS install-nodist_includeHEADERS + + # gpgme + cd "${srcdir}"/gpgme-${_gpgmever} + ./configure --prefix="${srcdir}"/temp/usr \ + --disable-fd-passing \ + --disable-shared \ + --disable-languages + make -C src + make -C src install-libLTLIBRARIES install-binSCRIPTS install-nodist_includeHEADERS + + # Finally, it's a pacman! + # TODO: figure out why any pacman action that attempts to download things, segfaults + cd "${srcdir}"/pacman-${pkgver} + export PATH="${srcdir}/temp/usr/bin:${PATH}" + ./configure --prefix=/usr \ + --libdir=/usr/lib/pacman/lib \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-scriptlet-shell=/usr/bin/bash \ + --with-ldconfig=/usr/bin/ldconfig \ + --disable-shared \ + --disable-doc + make V=1 AM_LDFLAGS=-all-static } + + package() { - install -sD "$srcdir"/overlay/usr/bin/pacman-static \ - "$pkgdir"/usr/bin/pacman-static + cd "${srcdir}"/pacman-${pkgver} + make DESTDIR="${pkgdir}" install + + for f in "${pkgdir}"/usr/bin/*; do + if file "${f}" | grep -q ELF; then + mv "${f}" "${f}-static" + else + rm "${f}" + fi + done + + cp -a "${srcdir}"/temp/usr/{include,lib} "${pkgdir}"/usr/lib/pacman/ + sed -i "s@${srcdir}/temp/usr@/usr/lib/pacman@g" "${pkgdir}"/usr/lib/pacman/lib/pkgconfig/*.pc + + rm -rf "${pkgdir}"/{etc,usr/include,usr/share,var} } |