1*4882a593SmuzhiyunSUMMARY = "Advanced front-end for dpkg" 2*4882a593SmuzhiyunDESCRIPTION = "APT is the Advanced Package Tool, an advanced interface to the Debian packaging system which provides the apt-get program." 3*4882a593SmuzhiyunHOMEPAGE = "https://packages.debian.org/jessie/apt" 4*4882a593SmuzhiyunLICENSE = "GPL-2.0-or-later" 5*4882a593SmuzhiyunSECTION = "base" 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# Triehash script taken from https://github.com/julian-klode/triehash 8*4882a593SmuzhiyunSRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \ 9*4882a593Smuzhiyun file://triehash \ 10*4882a593Smuzhiyun file://0001-Disable-documentation-directory-altogether.patch \ 11*4882a593Smuzhiyun file://0001-Fix-musl-build.patch \ 12*4882a593Smuzhiyun file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \ 13*4882a593Smuzhiyun file://0001-cmake-Do-not-build-po-files.patch \ 14*4882a593Smuzhiyun file://0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch \ 15*4882a593Smuzhiyun file://0001-aptwebserver.cc-Include-array.patch \ 16*4882a593Smuzhiyun " 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunSRC_URI:append:class-native = " \ 19*4882a593Smuzhiyun file://0001-Do-not-init-tables-from-dpkg-configuration.patch \ 20*4882a593Smuzhiyun file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \ 21*4882a593Smuzhiyun " 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunSRC_URI:append:class-nativesdk = " \ 24*4882a593Smuzhiyun file://0001-Do-not-init-tables-from-dpkg-configuration.patch \ 25*4882a593Smuzhiyun file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \ 26*4882a593Smuzhiyun " 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunSRC_URI[sha256sum] = "5552f175c3a3924f5cda0c079b821b30f68a2521959f2c30ab164d2ec7993ecf" 29*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263" 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun# the package is taken from snapshots.debian.org; that source is static and goes stale 32*4882a593Smuzhiyun# so we check the latest upstream from a directory that does get updated 33*4882a593SmuzhiyunUPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/" 34*4882a593Smuzhiyun 35*4882a593Smuzhiyuninherit cmake perlnative bash-completion upstream-version-is-even useradd 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun# User is added to allow apt to drop privs, will runtime warn without 38*4882a593SmuzhiyunUSERADD_PACKAGES = "${PN}" 39*4882a593SmuzhiyunUSERADD_PARAM:${PN} = "--system --home /nonexistent --no-create-home _apt" 40*4882a593Smuzhiyun 41*4882a593SmuzhiyunBBCLASSEXTEND = "native nativesdk" 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunDEPENDS += "db gnutls lz4 zlib bzip2 xz libgcrypt xxhash" 44*4882a593Smuzhiyun 45*4882a593SmuzhiyunEXTRA_OECMAKE:append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \ 46*4882a593Smuzhiyun -DDPKG_DATADIR=${datadir}/dpkg \ 47*4882a593Smuzhiyun -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash \ 48*4882a593Smuzhiyun -DCMAKE_DISABLE_FIND_PACKAGE_ZSTD=True \ 49*4882a593Smuzhiyun -DCMAKE_DISABLE_FIND_PACKAGE_SECCOMP=True \ 50*4882a593Smuzhiyun -DWITH_TESTS=False \ 51*4882a593Smuzhiyun" 52*4882a593Smuzhiyun 53*4882a593Smuzhiyundo_configure:prepend() { 54*4882a593Smuzhiyun echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )" >> ${WORKDIR}/toolchain.cmake 55*4882a593Smuzhiyun} 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun# Unfortunately apt hardcodes this all over the place 58*4882a593SmuzhiyunFILES:${PN} += "${prefix}/lib/dpkg ${prefix}/lib/apt" 59*4882a593SmuzhiyunRDEPENDS:${PN} += "bash perl dpkg" 60*4882a593Smuzhiyun 61*4882a593Smuzhiyuncustomize_apt_conf_sample() { 62*4882a593Smuzhiyun cat > ${D}${sysconfdir}/apt/apt.conf.sample << EOF 63*4882a593SmuzhiyunDir "${STAGING_DIR_NATIVE}/" 64*4882a593Smuzhiyun{ 65*4882a593Smuzhiyun State "var/lib/apt/" 66*4882a593Smuzhiyun { 67*4882a593Smuzhiyun Lists "#APTCONF#/lists/"; 68*4882a593Smuzhiyun status "#ROOTFS#/var/lib/dpkg/status"; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun Cache "var/cache/apt/" 71*4882a593Smuzhiyun { 72*4882a593Smuzhiyun Archives "archives/"; 73*4882a593Smuzhiyun pkgcache ""; 74*4882a593Smuzhiyun srcpkgcache ""; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun Bin "${STAGING_BINDIR_NATIVE}/" 77*4882a593Smuzhiyun { 78*4882a593Smuzhiyun methods "${STAGING_LIBDIR}/apt/methods/"; 79*4882a593Smuzhiyun gzip "/bin/gzip"; 80*4882a593Smuzhiyun dpkg "dpkg"; 81*4882a593Smuzhiyun dpkg-source "dpkg-source"; 82*4882a593Smuzhiyun dpkg-buildpackage "dpkg-buildpackage"; 83*4882a593Smuzhiyun apt-get "apt-get"; 84*4882a593Smuzhiyun apt-cache "apt-cache"; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun Etc "#APTCONF#" 87*4882a593Smuzhiyun { 88*4882a593Smuzhiyun Preferences "preferences"; 89*4882a593Smuzhiyun }; 90*4882a593Smuzhiyun Log "var/log/apt"; 91*4882a593Smuzhiyun}; 92*4882a593Smuzhiyun 93*4882a593SmuzhiyunAPT 94*4882a593Smuzhiyun{ 95*4882a593Smuzhiyun Install-Recommends "true"; 96*4882a593Smuzhiyun Immediate-Configure "false"; 97*4882a593Smuzhiyun Architecture "i586"; 98*4882a593Smuzhiyun Get 99*4882a593Smuzhiyun { 100*4882a593Smuzhiyun Assume-Yes "true"; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun}; 103*4882a593Smuzhiyun 104*4882a593SmuzhiyunAcquire 105*4882a593Smuzhiyun{ 106*4882a593Smuzhiyun AllowInsecureRepositories "true"; 107*4882a593Smuzhiyun}; 108*4882a593Smuzhiyun 109*4882a593SmuzhiyunDPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-debsig"}; 110*4882a593SmuzhiyunDPkg::Path ""; 111*4882a593SmuzhiyunEOF 112*4882a593Smuzhiyun} 113*4882a593Smuzhiyun 114*4882a593Smuzhiyundo_install:append:class-native() { 115*4882a593Smuzhiyun customize_apt_conf_sample 116*4882a593Smuzhiyun} 117*4882a593Smuzhiyun 118*4882a593Smuzhiyundo_install:append:class-nativesdk() { 119*4882a593Smuzhiyun customize_apt_conf_sample 120*4882a593Smuzhiyun rm -rf ${D}${localstatedir}/log 121*4882a593Smuzhiyun} 122*4882a593Smuzhiyun 123*4882a593Smuzhiyundo_install:append:class-target() { 124*4882a593Smuzhiyun # Write the correct apt-architecture to apt.conf 125*4882a593Smuzhiyun APT_CONF=${D}${sysconfdir}/apt/apt.conf 126*4882a593Smuzhiyun echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF} 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun # Remove /var/log/apt. /var/log is normally a link to /var/volatile/log 129*4882a593Smuzhiyun # and /var/volatile is a tmpfs mount. So anything created in /var/log 130*4882a593Smuzhiyun # will not be available when the tmpfs is mounted. 131*4882a593Smuzhiyun rm -rf ${D}${localstatedir}/log 132*4882a593Smuzhiyun} 133*4882a593Smuzhiyun 134*4882a593Smuzhiyundo_install:append() { 135*4882a593Smuzhiyun # Avoid non-reproducible -src package 136*4882a593Smuzhiyun sed -i -e "s,${B}/include/,,g" ${B}/apt-pkg/tagfile-keys.cc 137*4882a593Smuzhiyun} 138