xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/rpm/rpm_4.17.1.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "The RPM package management system"
2*4882a593SmuzhiyunDESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
3*4882a593Smuzhiyunpackage management system capable of installing, uninstalling, \
4*4882a593Smuzhiyunverifying, querying, and updating software packages. Each software \
5*4882a593Smuzhiyunpackage consists of an archive of files along with information about \
6*4882a593Smuzhiyunthe package like its version, a description, etc."
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunSUMMARY:${PN}-dev = "Development files for manipulating RPM packages"
9*4882a593SmuzhiyunDESCRIPTION:${PN}-dev = "This package contains the RPM C library and header files. These \
10*4882a593Smuzhiyundevelopment files will simplify the process of writing programs that \
11*4882a593Smuzhiyunmanipulate RPM packages and databases. These files are intended to \
12*4882a593Smuzhiyunsimplify the process of creating graphical package managers or any \
13*4882a593Smuzhiyunother tools that need an intimate knowledge of RPM packages in order \
14*4882a593Smuzhiyunto function."
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunSUMMARY:python3-rpm = "Python bindings for apps which will manupulate RPM packages"
17*4882a593SmuzhiyunDESCRIPTION:python3-rpm = "The python3-rpm package contains a module that permits applications \
18*4882a593Smuzhiyunwritten in the Python programming language to use the interface \
19*4882a593Smuzhiyunsupplied by the RPM Package Manager libraries."
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunHOMEPAGE = "http://www.rpm.org"
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun# libraries are also LGPL - how to express this?
24*4882a593SmuzhiyunLICENSE = "GPL-2.0-only"
25*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://COPYING;md5=c4eec0c20c6034b9407a09945b48a43f"
26*4882a593Smuzhiyun
27*4882a593SmuzhiyunSRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.17.x;protocol=https \
28*4882a593Smuzhiyun           file://environment.d-rpm.sh \
29*4882a593Smuzhiyun           file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
30*4882a593Smuzhiyun           file://0001-Do-not-read-config-files-from-HOME.patch \
31*4882a593Smuzhiyun           file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
32*4882a593Smuzhiyun           file://0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch \
33*4882a593Smuzhiyun           file://0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch \
34*4882a593Smuzhiyun           file://0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch \
35*4882a593Smuzhiyun           file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
36*4882a593Smuzhiyun           file://0001-perl-disable-auto-reqs.patch \
37*4882a593Smuzhiyun           file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
38*4882a593Smuzhiyun           file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
39*4882a593Smuzhiyun           file://0001-tools-Add-error.h-for-non-glibc-case.patch \
40*4882a593Smuzhiyun           file://0001-docs-do-not-build-manpages-requires-pandoc.patch \
41*4882a593Smuzhiyun           file://0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch \
42*4882a593Smuzhiyun           file://0001-configure.ac-add-linux-gnux32-variant-to-triplet-han.patch \
43*4882a593Smuzhiyun           "
44*4882a593Smuzhiyun
45*4882a593SmuzhiyunPE = "1"
46*4882a593SmuzhiyunSRCREV = "5bef402da334595ed9302b8bca1acdf5e88bfe11"
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunS = "${WORKDIR}/git"
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunDEPENDS = "lua libgcrypt file popt xz bzip2 elfutils python3"
51*4882a593SmuzhiyunDEPENDS:append:class-native = " file-replacement-native bzip2-replacement-native"
52*4882a593Smuzhiyun
53*4882a593Smuzhiyuninherit autotools gettext pkgconfig python3native
54*4882a593Smuzhiyunexport PYTHON_ABI
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunAUTOTOOLS_AUXDIR = "${S}/build-aux"
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun# OE-core patches autoreconf to additionally run gnu-configize, which fails with this recipe
59*4882a593SmuzhiyunEXTRA_AUTORECONF:append = " --exclude=gnu-configize"
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun# Vendor is detected differently on x86 and aarch64 hosts and can feed into target packages
62*4882a593SmuzhiyunEXTRA_OECONF:append = " --enable-python --with-crypto=libgcrypt --with-vendor=pc"
63*4882a593SmuzhiyunEXTRA_OECONF:append:libc-musl = " --disable-nls --disable-openmp"
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun# --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
66*4882a593Smuzhiyun# --localstatedir prevents rpm from writing its database to native sysroot when building images
67*4882a593Smuzhiyun# Forcibly disable plugins for native/nativesdk, as the inhibit and prioreset
68*4882a593Smuzhiyun# plugins both behave badly inside builds.
69*4882a593SmuzhiyunEXTRA_OECONF:append:class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
70*4882a593SmuzhiyunEXTRA_OECONF:append:class-nativesdk = " --sysconfdir=/etc --disable-plugins"
71*4882a593Smuzhiyun
72*4882a593SmuzhiyunBBCLASSEXTEND = "native nativesdk"
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunPACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)} sqlite zstd"
75*4882a593Smuzhiyun# The inhibit plugin serves no purpose outside of the target
76*4882a593SmuzhiyunPACKAGECONFIG:remove:class-native = "inhibit"
77*4882a593SmuzhiyunPACKAGECONFIG:remove:class-nativesdk = "inhibit"
78*4882a593Smuzhiyun
79*4882a593SmuzhiyunPACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
80*4882a593SmuzhiyunPACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus"
81*4882a593SmuzhiyunPACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive"
82*4882a593SmuzhiyunPACKAGECONFIG[sqlite] = "--enable-sqlite=yes,--enable-sqlite=no,sqlite3"
83*4882a593SmuzhiyunPACKAGECONFIG[ndb] = "--enable-ndb,--disable-ndb"
84*4882a593SmuzhiyunPACKAGECONFIG[bdb-ro] = "--enable-bdb-ro,--disable-bdb-ro"
85*4882a593SmuzhiyunPACKAGECONFIG[zstd] = "--enable-zstd=yes,--enable-zstd=no,zstd"
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunASNEEDED = ""
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun# Direct rpm-native to read configuration from our sysroot, not the one it was compiled in
90*4882a593Smuzhiyun# libmagic also has sysroot path contamination, so override it
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunWRAPPER_TOOLS = " \
93*4882a593Smuzhiyun   ${bindir}/rpm \
94*4882a593Smuzhiyun   ${bindir}/rpm2archive \
95*4882a593Smuzhiyun   ${bindir}/rpm2cpio \
96*4882a593Smuzhiyun   ${bindir}/rpmbuild \
97*4882a593Smuzhiyun   ${bindir}/rpmdb \
98*4882a593Smuzhiyun   ${bindir}/rpmgraph \
99*4882a593Smuzhiyun   ${bindir}/rpmkeys \
100*4882a593Smuzhiyun   ${bindir}/rpmsign \
101*4882a593Smuzhiyun   ${bindir}/rpmspec \
102*4882a593Smuzhiyun   ${libdir}/rpm/rpmdeps \
103*4882a593Smuzhiyun"
104*4882a593Smuzhiyun
105*4882a593Smuzhiyundo_configure:prepend() {
106*4882a593Smuzhiyun        mkdir -p ${S}/build-aux
107*4882a593Smuzhiyun}
108*4882a593Smuzhiyun
109*4882a593Smuzhiyundo_install:append:class-native() {
110*4882a593Smuzhiyun        for tool in ${WRAPPER_TOOLS}; do
111*4882a593Smuzhiyun                test -x ${D}$tool && create_wrapper ${D}$tool \
112*4882a593Smuzhiyun                        RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
113*4882a593Smuzhiyun                        RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
114*4882a593Smuzhiyun                        MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
115*4882a593Smuzhiyun                        RPM_NO_CHROOT_FOR_SCRIPTS=1
116*4882a593Smuzhiyun        done
117*4882a593Smuzhiyun}
118*4882a593Smuzhiyun
119*4882a593Smuzhiyundo_install:append:class-nativesdk() {
120*4882a593Smuzhiyun        for tool in ${WRAPPER_TOOLS}; do
121*4882a593Smuzhiyun                test -x ${D}$tool && create_wrapper ${D}$tool \
122*4882a593Smuzhiyun                        RPM_CONFIGDIR='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir'), d.getVar('bindir'))}/rpm \
123*4882a593Smuzhiyun                        RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir'), d.getVar('bindir'))}/..} \
124*4882a593Smuzhiyun                        MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir'), d.getVar('bindir'))}/misc/magic.mgc \
125*4882a593Smuzhiyun                        RPM_NO_CHROOT_FOR_SCRIPTS=1
126*4882a593Smuzhiyun        done
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun        rm -rf ${D}/var
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun        mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
131*4882a593Smuzhiyun        install -m 644 ${WORKDIR}/environment.d-rpm.sh ${D}${SDKPATHNATIVE}/environment-setup.d/rpm.sh
132*4882a593Smuzhiyun}
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun# Rpm's make install creates var/tmp which clashes with base-files packaging
135*4882a593Smuzhiyundo_install:append:class-target() {
136*4882a593Smuzhiyun    rm -rf ${D}/var
137*4882a593Smuzhiyun}
138*4882a593Smuzhiyundo_install:append:class-nativesdk() {
139*4882a593Smuzhiyun    rm -rf ${D}${SDKPATHNATIVE}/var
140*4882a593Smuzhiyun}
141*4882a593Smuzhiyun
142*4882a593Smuzhiyundo_install:append () {
143*4882a593Smuzhiyun	sed -i -e 's:${HOSTTOOLS_DIR}/::g' \
144*4882a593Smuzhiyun	    ${D}/${libdir}/rpm/macros
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun}
147*4882a593Smuzhiyun
148*4882a593SmuzhiyunFILES:${PN} += "${libdir}/rpm-plugins/*.so \
149*4882a593Smuzhiyun               "
150*4882a593SmuzhiyunFILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/rpm.sh"
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunFILES:${PN}-dev += "${libdir}/rpm-plugins/*.la \
153*4882a593Smuzhiyun                    "
154*4882a593SmuzhiyunPACKAGE_BEFORE_PN += "${PN}-build ${PN}-sign ${PN}-archive"
155*4882a593Smuzhiyun
156*4882a593SmuzhiyunRRECOMMENDS:${PN} += "rpm-sign rpm-archive"
157*4882a593Smuzhiyun
158*4882a593SmuzhiyunFILES:${PN}-build = "\
159*4882a593Smuzhiyun    ${bindir}/rpmbuild \
160*4882a593Smuzhiyun    ${bindir}/gendiff \
161*4882a593Smuzhiyun    ${bindir}/rpmspec \
162*4882a593Smuzhiyun    ${libdir}/librpmbuild.so.* \
163*4882a593Smuzhiyun    ${libdir}/rpm/brp-* \
164*4882a593Smuzhiyun    ${libdir}/rpm/check-* \
165*4882a593Smuzhiyun    ${libdir}/rpm/debugedit \
166*4882a593Smuzhiyun    ${libdir}/rpm/sepdebugcrcfix \
167*4882a593Smuzhiyun    ${libdir}/rpm/find-debuginfo.sh \
168*4882a593Smuzhiyun    ${libdir}/rpm/find-lang.sh \
169*4882a593Smuzhiyun    ${libdir}/rpm/*provides* \
170*4882a593Smuzhiyun    ${libdir}/rpm/*requires* \
171*4882a593Smuzhiyun    ${libdir}/rpm/*deps* \
172*4882a593Smuzhiyun    ${libdir}/rpm/*.prov \
173*4882a593Smuzhiyun    ${libdir}/rpm/*.req \
174*4882a593Smuzhiyun    ${libdir}/rpm/config.* \
175*4882a593Smuzhiyun    ${libdir}/rpm/mkinstalldirs \
176*4882a593Smuzhiyun    ${libdir}/rpm/macros.p* \
177*4882a593Smuzhiyun    ${libdir}/rpm/fileattrs/* \
178*4882a593Smuzhiyun"
179*4882a593Smuzhiyun
180*4882a593SmuzhiyunFILES:${PN}-sign = "\
181*4882a593Smuzhiyun    ${bindir}/rpmsign \
182*4882a593Smuzhiyun    ${libdir}/librpmsign.so.* \
183*4882a593Smuzhiyun"
184*4882a593Smuzhiyun
185*4882a593SmuzhiyunFILES:${PN}-archive = "\
186*4882a593Smuzhiyun    ${bindir}/rpm2archive \
187*4882a593Smuzhiyun"
188*4882a593Smuzhiyun
189*4882a593SmuzhiyunPACKAGES += "python3-rpm"
190*4882a593SmuzhiyunPROVIDES += "python3-rpm"
191*4882a593SmuzhiyunFILES:python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
192*4882a593Smuzhiyun
193*4882a593SmuzhiyunRDEPENDS:${PN}-build = "bash perl python3-core"
194*4882a593Smuzhiyun
195*4882a593SmuzhiyunPACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun# Do not specify a sysroot when compiling on a target.
198*4882a593Smuzhiyunrpm_package_preprocess () {
199*4882a593Smuzhiyun	sed -i -e 's:--sysroot[^ ]*::g' \
200*4882a593Smuzhiyun	    ${PKGD}/${libdir}/rpm/macros
201*4882a593Smuzhiyun}
202*4882a593Smuzhiyun
203*4882a593SmuzhiyunSSTATE_HASHEQUIV_FILEMAP = " \
204*4882a593Smuzhiyun    populate_sysroot:*/rpm/macros:${TMPDIR} \
205*4882a593Smuzhiyun    populate_sysroot:*/rpm/macros:${COREBASE} \
206*4882a593Smuzhiyun    "
207