*/add rpm-tools
This commit is contained in:
parent
252cdc3fc6
commit
e54c5b92e3
40
rpm-tools/.SRCINFO
Normal file
40
rpm-tools/.SRCINFO
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
pkgbase = rpm-tools
|
||||||
|
pkgdesc = RPM Package Manager - RPM.org fork, used in major RPM distros
|
||||||
|
pkgver = 4.20.0
|
||||||
|
pkgrel = 2
|
||||||
|
url = https://rpm.org/
|
||||||
|
install = rpm-tools.install
|
||||||
|
arch = x86_64
|
||||||
|
arch = powerpc64le
|
||||||
|
arch = powerpc64
|
||||||
|
arch = powerpc
|
||||||
|
arch = riscv64
|
||||||
|
license = GPL2
|
||||||
|
makedepends = python
|
||||||
|
makedepends = pkg-config
|
||||||
|
makedepends = cmake
|
||||||
|
depends = lua
|
||||||
|
depends = file
|
||||||
|
depends = nss
|
||||||
|
depends = popt
|
||||||
|
depends = elfutils
|
||||||
|
depends = libarchive
|
||||||
|
depends = libcap
|
||||||
|
depends = rpm-sequoia
|
||||||
|
provides = rpm=4.20.0
|
||||||
|
provides = rpmextract=1.0-4
|
||||||
|
provides = rpm-org
|
||||||
|
conflicts = rpm
|
||||||
|
conflicts = rpmextract
|
||||||
|
options = !libtool
|
||||||
|
source = http://ftp.rpm.org/releases/rpm-4.20.x/rpm-4.20.0.tar.bz2
|
||||||
|
source = rpmextract.sh
|
||||||
|
source = rpmlib-filesystem-check.patch
|
||||||
|
sha256sums = 56ff7638cff98b56d4a7503ff59bc79f281a6ddffcda0d238c082bedfb5fbe7b
|
||||||
|
sha256sums = 3e5bf450d4628366ba35469ec0530a99cd09ab2616a3d261a3f68270f481f777
|
||||||
|
sha256sums = bd0e6dbd458f990268c60324190c6825b234647ecdde08296d2b453dc4bce27a
|
||||||
|
makedepends_x86_64 = podman
|
||||||
|
makedepends_powerpc64le = podman
|
||||||
|
makedepends_riscv64 = podman
|
||||||
|
|
||||||
|
pkgname = rpm-tools
|
7
rpm-tools/.nvchecker.toml
Normal file
7
rpm-tools/.nvchecker.toml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[rpm-tools]
|
||||||
|
source = "git"
|
||||||
|
git = "https://github.com/rpm-software-management/rpm.git"
|
||||||
|
include_regex = '^rpm-([\d.]+)-release$'
|
||||||
|
from_pattern = '^rpm-([\d.]+)-release$'
|
||||||
|
to_pattern = '\1'
|
||||||
|
use_max_tag = true
|
56
rpm-tools/PKGBUILD
Normal file
56
rpm-tools/PKGBUILD
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
|
||||||
|
# Maintainer: Anatol Pomozov <anatol pomozov at gmail>
|
||||||
|
# Contributor: Johannes Dewender arch at JonnyJD dot net
|
||||||
|
# Contributor: Konrad <konrad AT knauber DOT name>
|
||||||
|
# Contributor: Luka Perkov <archlinux <at> lukaperkov <dOt> net>
|
||||||
|
# Contributor: Fernando M <f <at> beford.net>
|
||||||
|
# Author: Wintershade <Wintershade AT google mail DOT com>
|
||||||
|
|
||||||
|
# Note: rebuilds required: sogrep all librpmio.so and librpm.so
|
||||||
|
|
||||||
|
pkgname=rpm-tools
|
||||||
|
pkgver=4.20.0
|
||||||
|
pkgrel=2
|
||||||
|
pkgdesc="RPM Package Manager - RPM.org fork, used in major RPM distros"
|
||||||
|
arch=(x86_64 powerpc64le powerpc64 powerpc riscv64)
|
||||||
|
url='https://rpm.org/'
|
||||||
|
license=('GPL2')
|
||||||
|
depends=('lua' 'file' 'nss' 'popt' 'elfutils' 'libarchive' 'libcap' 'rpm-sequoia')
|
||||||
|
makedepends=('python' 'pkg-config' 'cmake')
|
||||||
|
makedepends_powerpc64le=('podman')
|
||||||
|
makedepends_riscv64=('podman')
|
||||||
|
makedepends_x86_64=('podman')
|
||||||
|
conflicts=('rpm' 'rpmextract')
|
||||||
|
options=('!libtool')
|
||||||
|
provides=("rpm=${pkgver}" 'rpmextract=1.0-4' 'rpm-org')
|
||||||
|
install=rpm-tools.install
|
||||||
|
|
||||||
|
_pkgver_major="${pkgver%%.*}"
|
||||||
|
_pkgver_major_rem="${pkgver#*.}"
|
||||||
|
_pkgver_minor="${_pkgver_major_rem%%.*}"
|
||||||
|
_base_pkgver=$_pkgver_major.$_pkgver_minor.x
|
||||||
|
|
||||||
|
source=(http://ftp.rpm.org/releases/rpm-$_base_pkgver/rpm-$pkgver.tar.bz2
|
||||||
|
rpmextract.sh
|
||||||
|
rpmlib-filesystem-check.patch)
|
||||||
|
sha256sums=('56ff7638cff98b56d4a7503ff59bc79f281a6ddffcda0d238c082bedfb5fbe7b'
|
||||||
|
'3e5bf450d4628366ba35469ec0530a99cd09ab2616a3d261a3f68270f481f777'
|
||||||
|
'bd0e6dbd458f990268c60324190c6825b234647ecdde08296d2b453dc4bce27a')
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
cd rpm-${pkgver}
|
||||||
|
patch -p1 < ../rpmlib-filesystem-check.patch
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cmake -B build -S "rpm-$pkgver" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX='/usr' \
|
||||||
|
-DWITH_SELINUX=OFF \
|
||||||
|
-DWITH_DBUS=OFF \
|
||||||
|
-DENABLE_TESTSUITE=OFF
|
||||||
|
cmake --build build
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
DESTDIR="$pkgdir" cmake --install build
|
||||||
|
}
|
8
rpm-tools/rpm-tools.install
Normal file
8
rpm-tools/rpm-tools.install
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
post_install() {
|
||||||
|
echo " rpm-tools installs RedHat package manager for you."
|
||||||
|
echo " It is useful for those who wants to create/modify RPM files."
|
||||||
|
echo " But do not use rpm-tools to install RedHat packages at your ArchLinux machine."
|
||||||
|
echo " It will break your system!"
|
||||||
|
echo " You will need to go back to Arch wiki and read the installation guide again."
|
||||||
|
echo " You've been warned!"
|
||||||
|
}
|
6
rpm-tools/rpmextract.sh
Normal file
6
rpm-tools/rpmextract.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
if [ "$1" = "" -o ! -e "$1" ]; then
|
||||||
|
echo "no package supplied" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
bsdtar xf $1
|
125
rpm-tools/rpmlib-filesystem-check.patch
Normal file
125
rpm-tools/rpmlib-filesystem-check.patch
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
diff -up rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check rpm-4.10.90.git11978/lib/depends.c
|
||||||
|
--- rpm-4.10.90.git11978/lib/depends.c.rpmlib-filesystem-check 2012-11-01 09:40:26.000000000 +0200
|
||||||
|
+++ rpm-4.10.90.git11978/lib/depends.c 2012-11-05 10:53:42.294733695 +0200
|
||||||
|
@@ -589,6 +589,109 @@ static int rpmdbProvides(rpmts ts, depCa
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Temporary support for live-conversion of the filesystem hierarchy
|
||||||
|
+ * mailto: kay@redhat.com, harald@redhat.com
|
||||||
|
+ * https://fedoraproject.org/wiki/Features/UsrMove
|
||||||
|
+ *
|
||||||
|
+ * X-CheckUnifiedSystemdir:
|
||||||
|
+ * /bin, /sbin, /lib, /lib64 --> /usr
|
||||||
|
+ *
|
||||||
|
+ * X-CheckUnifiedBindir:
|
||||||
|
+ * /usr/sbin -> /usr/bin
|
||||||
|
+ *
|
||||||
|
+ * X-CheckMultiArchLibdir:
|
||||||
|
+ * /usr/lib64 /usr/lib/<platform tuple> (e.g. x86_64-linux-gnu)
|
||||||
|
+ *
|
||||||
|
+ * This code is not needed for new installations, it can be removed after
|
||||||
|
+ * updates from older systems are no longer supported: Fedora 19 / RHEL 8.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static int CheckLink(const char *dir, const char *root)
|
||||||
|
+{
|
||||||
|
+ char *d = NULL;
|
||||||
|
+ struct stat sbuf;
|
||||||
|
+ int rc = 0;
|
||||||
|
+
|
||||||
|
+ if (!root)
|
||||||
|
+ root = "/";
|
||||||
|
+
|
||||||
|
+ rasprintf(&d, "%s%s", root, dir);
|
||||||
|
+ if (!d) {
|
||||||
|
+ rc = -1;
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* directory or symlink does not exist, all is fine */
|
||||||
|
+ if (lstat(d, &sbuf) < 0) {
|
||||||
|
+ rc = 1;
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* if it is a symlink, all is fine */
|
||||||
|
+ if (S_ISLNK(sbuf.st_mode))
|
||||||
|
+ rc = 1;
|
||||||
|
+
|
||||||
|
+exit:
|
||||||
|
+ free(d);
|
||||||
|
+ return rc;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int CheckFilesystemHierarchy(rpmds * dsp, const char *root)
|
||||||
|
+{
|
||||||
|
+ static const char *dirs[] = { "bin", "sbin", "lib", "lib64" };
|
||||||
|
+ int check;
|
||||||
|
+ int i;
|
||||||
|
+ rpmds ds;
|
||||||
|
+ rpmstrPool pool = rpmdsPool(*dsp);
|
||||||
|
+ int rc = 0;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) {
|
||||||
|
+ check = CheckLink(dirs[i], root);
|
||||||
|
+ if (check < 0) {
|
||||||
|
+ rc = -1;
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (check == 0)
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME,
|
||||||
|
+ "rpmlib(X-CheckUnifiedSystemdir)", "1",
|
||||||
|
+ RPMSENSE_EQUAL);
|
||||||
|
+ rpmdsMerge(dsp, ds);
|
||||||
|
+ rpmdsFree(ds);
|
||||||
|
+
|
||||||
|
+ check = CheckLink("usr/lib64", root);
|
||||||
|
+ if (check < 0) {
|
||||||
|
+ rc = -1;
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+ if (check > 0) {
|
||||||
|
+ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME,
|
||||||
|
+ "rpmlib(X-CheckMultiArchLibdir)", "1",
|
||||||
|
+ RPMSENSE_EQUAL);
|
||||||
|
+ rpmdsMerge(dsp, ds);
|
||||||
|
+ rpmdsFree(ds);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ check = CheckLink("usr/sbin", root);
|
||||||
|
+ if (check < 0) {
|
||||||
|
+ rc = -1;
|
||||||
|
+ goto exit;
|
||||||
|
+ }
|
||||||
|
+ if (check > 0) {
|
||||||
|
+ ds = rpmdsSinglePool(pool, RPMTAG_PROVIDENAME,
|
||||||
|
+ "rpmlib(X-CheckUnifiedBindir)", "1",
|
||||||
|
+ RPMSENSE_EQUAL);
|
||||||
|
+ rpmdsMerge(dsp, ds);
|
||||||
|
+ rpmdsFree(ds);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+exit:
|
||||||
|
+ return rc;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Check dep for an unsatisfied dependency.
|
||||||
|
* @param ts transaction set
|
||||||
|
@@ -612,8 +715,10 @@ retry:
|
||||||
|
* Check those dependencies now.
|
||||||
|
*/
|
||||||
|
if (dsflags & RPMSENSE_RPMLIB) {
|
||||||
|
- if (tsmem->rpmlib == NULL)
|
||||||
|
+ if (tsmem->rpmlib == NULL) {
|
||||||
|
rpmdsRpmlibPool(rpmtsPool(ts), &(tsmem->rpmlib), NULL);
|
||||||
|
+ CheckFilesystemHierarchy(&(tsmem->rpmlib), rpmtsRootDir(ts));
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (tsmem->rpmlib != NULL && rpmdsSearch(tsmem->rpmlib, dep) >= 0) {
|
||||||
|
rpmdsNotify(dep, "(rpmlib provides)", rc);
|
Loading…
x
Reference in New Issue
Block a user