Skip to content

Instantly share code, notes, and snippets.

@MarkWalters-dev
Last active February 24, 2021 16:11
Show Gist options
  • Save MarkWalters-dev/7a7e36c4a99c15e7b355ba12e3857d65 to your computer and use it in GitHub Desktop.
Save MarkWalters-dev/7a7e36c4a99c15e7b355ba12e3857d65 to your computer and use it in GitHub Desktop.
PKGBUILD for apt
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
# Co-Maintainer: Felix Golatofski <contact@xdfr.de>
# Contributor: Mark Weiman <mark.weiman@markzz.com>
# Contributor: Johannes Dewender arch at JonnyJD dot net
# Contributor: Tony Lambiris <tony@critialstack.com>
pkgbase=apt
pkgname=('apt' 'apt-docs')
pkgver=2.2.0
pkgrel=1
arch=('i686' 'x86_64')
url="http://packages.debian.org"
license=('GPL2')
makedepends=('cmake' 'dpkg' 'docbook-xsl' 'doxygen' 'git' 'gtest' 'w3m' 'triehash'
'perl-text-wrapi18n' 'perl-locale-gettext' 'perl-yaml-tiny'
'perl-term-readkey' 'perl-sgmls' 'perl-module-build' 'perl-unicode-linebreak' 'perl-pod-parser' 'po4a' 'xxhash')
provides=('libapt-inst' 'libapt-pkg' 'libapt-pkg-dev' "apt-utils")
source=("git+https://salsa.debian.org/apt-team/apt.git#tag=${pkgver}"
"https://github.com/mquinson/po4a/releases/download/v0.60/po4a-0.60.tar.gz")
sha256sums=('SKIP'
'c8d9c28758fa007e8e2989b5820c55910a6533dab581208d0c8acf4d43027b59')
build() {
# arch linux's po4a is too new to build apt, so build an older version
# will likely be good to use system po4a when it's updated in sid
msg2 "Building po4a 0.60..."
cd "$srcdir/po4a-0.60"
perl Build.PL installdirs=vendor create_packlist=0
LC_ALL=en_US.UTF-8 perl Build
[[ "$PATH" =~ /usr/bin/vendor_perl ]] || export PATH="$PATH:/usr/bin/vendor_perl"
msg2 "Building apt..."
cd "$srcdir/$pkgname"
# docbook xsl is stored with the version on Arch
DOCBOOK_XSL_VER=`ls -d /usr/share/xml/docbook/xsl-stylesheets-* | sort | head -1 | xargs basename`
cmake -B build \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_INSTALL_LIBDIR="lib" \
-DCMAKE_INSTALL_LIBEXECDIR="lib" \
-DDOCBOOK_XSL="/usr/share/xml/docbook/${DOCBOOK_XSL_VER}-nons"
sed -i -e "s|stylesheet/docbook-xsl|$DOCBOOK_XSL_VER=t|" build/doc/*.xsl
sed -i -e "s|stylesheet/nwalsh|$DOCBOOK_XSL_VER=|" build/doc/*.xsl
make -C build all
}
package_apt() {
depends=('gnupg' 'curl' 'libseccomp' 'perl' 'xxhash')
pkgdesc="Command-line package manager used on Debian-based systems"
cd "$srcdir/$pkgbase"
make -C build DESTDIR="${pkgdir}" install
rm -rf "${pkgdir}/usr/share/doc"
find "$pkgdir/usr/share/man" -type d -empty -delete
}
package_apt-docs() {
arch=('any')
pkgdesc="Documentation for apt"
cd "$srcdir/$pkgbase"
make -C build DESTDIR="${pkgdir}" install
rm -rf "${pkgdir}"/etc
rm -rf "${pkgdir}"/var
rm -rf "${pkgdir}"/usr/{bin,include,lib}
rm -rf "${pkgdir}"/usr/share/{bash-completion,locale,man}
}
# vim:set ts=2 sw=2 et:
@Un1Gfn
Copy link

Un1Gfn commented Feb 24, 2021

namcap apt-2.2.0-1-x86_64.pkg.tar

  1. base depends on xz => remove xz from depends of package_apt()
  2. /usr/lib/libapt-pkg.so.6.0.0 depends on /usr/lib/libxxhash.so.0 => add xxhash to package_apt() depends
  3. /usr/lib/apt/methods/store depends on /usr/lib/libseccomp.so.2 => add libseccomp to package_apt() depends
  4. /usr/lib/dpkg/methods/apt/setup is a perl script => add perl to package_apt() depends
  5. find "$pkgdir/usr/share/man" -type d -empty -delete since the following empty directories are introduced on my machine
    • /usr/share/man/pl/man7
    • /usr/share/man/ja/man7
    • /usr/share/man/es/man7
    • /usr/share/man/it/man7

namcap apt-2.2.0-1-x86_64.pkg.tar

apt-docs W: No ELF files and not an "any" package => add overriding arch=('any') to package_apt-docs()

patch in the next comment

@Un1Gfn
Copy link

Un1Gfn commented Feb 24, 2021

orig + patch = new

patch
--- PKGBUILD
+++ PKGBUILD
@@ -48,14 +48,16 @@
 }
 
 package_apt() {
-  depends=('gnupg' 'curl' 'xz')
+  depends=('gnupg' 'curl' 'libseccomp' 'perl' 'xxhash')
   pkgdesc="Command-line package manager used on Debian-based systems"
   cd "$srcdir/$pkgbase"
   make -C build DESTDIR="${pkgdir}" install
   rm -rf "${pkgdir}/usr/share/doc"
+  find "$pkgdir/usr/share/man" -type d -empty -delete
 }
 
 package_apt-docs() {
+  arch=('any')
   pkgdesc="Documentation for apt"
   cd "$srcdir/$pkgbase"
   make -C build DESTDIR="${pkgdir}" install
new
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
# Co-Maintainer: Felix Golatofski <contact@xdfr.de>
# Contributor: Mark Weiman <mark.weiman@markzz.com>
# Contributor: Johannes Dewender  arch at JonnyJD dot net
# Contributor: Tony Lambiris <tony@critialstack.com>

pkgbase=apt
pkgname=('apt' 'apt-docs')
pkgver=2.2.0
pkgrel=1
arch=('i686' 'x86_64')
url="http://packages.debian.org"
license=('GPL2')
makedepends=('cmake' 'dpkg' 'docbook-xsl' 'doxygen' 'git' 'gtest' 'w3m' 'triehash'
             'perl-text-wrapi18n' 'perl-locale-gettext' 'perl-yaml-tiny'
             'perl-term-readkey' 'perl-sgmls' 'perl-module-build' 'perl-unicode-linebreak' 'perl-pod-parser' 'po4a' 'xxhash')
provides=('libapt-inst' 'libapt-pkg' 'libapt-pkg-dev' "apt-utils")
source=("git+https://salsa.debian.org/apt-team/apt.git#tag=${pkgver}"
  "https://github.com/mquinson/po4a/releases/download/v0.60/po4a-0.60.tar.gz")
sha256sums=('SKIP'
            'c8d9c28758fa007e8e2989b5820c55910a6533dab581208d0c8acf4d43027b59')

build() {
  # arch linux's po4a is too new to build apt, so build an older version
  # will likely be good to use system po4a when it's updated in sid
  msg2 "Building po4a 0.60..."
  cd "$srcdir/po4a-0.60"
  perl Build.PL installdirs=vendor create_packlist=0
  LC_ALL=en_US.UTF-8 perl Build
  [[ "$PATH" =~ /usr/bin/vendor_perl ]] || export PATH="$PATH:/usr/bin/vendor_perl"

  msg2 "Building apt..."
  cd "$srcdir/$pkgname"

  # docbook xsl is stored with the version on Arch
  DOCBOOK_XSL_VER=`ls -d /usr/share/xml/docbook/xsl-stylesheets-* | sort | head -1 | xargs basename`

  cmake -B build \
    -DCMAKE_INSTALL_PREFIX="/usr" \
    -DCMAKE_INSTALL_LIBDIR="lib" \
    -DCMAKE_INSTALL_LIBEXECDIR="lib" \
  -DDOCBOOK_XSL="/usr/share/xml/docbook/${DOCBOOK_XSL_VER}-nons"

  sed -i -e "s|stylesheet/docbook-xsl|$DOCBOOK_XSL_VER=t|" build/doc/*.xsl
  sed -i -e "s|stylesheet/nwalsh|$DOCBOOK_XSL_VER=|" build/doc/*.xsl

  make -C build all
}

package_apt() {
  depends=('gnupg' 'curl' 'libseccomp' 'perl' 'xxhash')
  pkgdesc="Command-line package manager used on Debian-based systems"
  cd "$srcdir/$pkgbase"
  make -C build DESTDIR="${pkgdir}" install
  rm -rf "${pkgdir}/usr/share/doc"
  find "$pkgdir/usr/share/man" -type d -empty -delete
}

package_apt-docs() {
  arch=('any')
  pkgdesc="Documentation for apt"
  cd "$srcdir/$pkgbase"
  make -C build DESTDIR="${pkgdir}" install
  rm -rf "${pkgdir}"/etc
  rm -rf "${pkgdir}"/var
  rm -rf "${pkgdir}"/usr/{bin,include,lib}
  rm -rf "${pkgdir}"/usr/share/{bash-completion,locale,man}
}

# vim:set ts=2 sw=2 et:

@MarkWalters-dev
Copy link
Author

1-4: Good catch.
5: Yep. I see that on my machine too.
Updated my gist. Hopefully the maintainer will use these updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment