summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2011-02-07 18:18:18 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-02-08 18:01:35 +0000
commit906285ff00d6ffd3fd7713af52250e7c6503edb7 (patch)
tree2ae9c99eb5772b965c8c690817407c0327f04e59 /meta/recipes-devtools/rpm
parent2f3a7348b7da637d2362e7ed50c96a248ff58fc5 (diff)
downloadpoky-906285ff00d6ffd3fd7713af52250e7c6503edb7.tar.gz
fetch2: Add SRPM knowledge
Enable the fetcher to be able to unpack and SRPM. By default the system will unpack the contents of the SRPM into the WORKDIR. A new syntax "unpack=file" was developed for the SRC_URI, to allow for a recipe to extract a specific file within an SRPM. An unpack operation will then be executed on the extracted file. In order to apply extracted patches (or unpack files not specified with unpack), you must specify the path using WORKDIR, i.e.: file://${WORKDIR}/mypatch.patch Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Diffstat (limited to 'meta/recipes-devtools/rpm')
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.0.bb52
1 files changed, 2 insertions, 50 deletions
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
index ba1a2a2341..566325ea4a 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb
@@ -43,12 +43,11 @@ LICENSE = "LGPL 2.1"
43LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1" 43LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
44 44
45DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt" 45DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
46PR = "r10" 46PR = "r11"
47 47
48# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed 48# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed
49# in order to extract the distribution SRPM into a format we can extract... 49# in order to extract the distribution SRPM into a format we can extract...
50SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm \ 50SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;unpack=rpm-5.4.0.tar.gz \
51 file://rpm2cpio;md5=1850f9872a4803f5165bfd5816274275 \
52 file://perfile_rpmdeps.sh \ 51 file://perfile_rpmdeps.sh \
53 file://rpm-autogen.patch \ 52 file://rpm-autogen.patch \
54 file://rpm-libsql-fix.patch \ 53 file://rpm-libsql-fix.patch \
@@ -66,8 +65,6 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm \
66SRC_URI[md5sum] = "19c1a7f68d7765eeb7615c9c4e54e380" 65SRC_URI[md5sum] = "19c1a7f68d7765eeb7615c9c4e54e380"
67SRC_URI[sha256sum] = "887e76218308b570c33c8c2fb10b5298b3afd5d602860d281befc85357b3b923" 66SRC_URI[sha256sum] = "887e76218308b570c33c8c2fb10b5298b3afd5d602860d281befc85357b3b923"
68 67
69SRPM_UNPACK = "rpm-5.4.0.tar.gz"
70
71inherit autotools gettext 68inherit autotools gettext
72 69
73acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java" 70acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
@@ -328,51 +325,6 @@ FILE_${PN}-dev = "${includedir}/rpm \
328###%{_rpmhome}/lib/librpmjsm.la 325###%{_rpmhome}/lib/librpmjsm.la
329###%{_rpmhome}/lib/librpmjsm.so 326###%{_rpmhome}/lib/librpmjsm.so
330 327
331def subprocess_setup():
332 import signal
333 # Python installs a SIGPIPE handler by default. This is usually not what
334 # non-Python subprocesses expect.
335 # SIGPIPE errors are known issues with gzip/bash
336 signal.signal(signal.SIGPIPE, signal.SIG_DFL)
337
338# If base_do_unpack is refactored this may have to be adjusted
339python base_do_unpack_append() {
340 import subprocess
341
342 for url in bb.data.getVar("SRC_URI", d, True).split():
343 local = bb.fetch2.localpath(url, d)
344 if local is None:
345 continue
346 local = os.path.realpath(local)
347
348 if local.endswith('.src.rpm') or local.endswith('.srpm'):
349 cmdname = os.path.join(bb.data.getVar('WORKDIR', localdata, 1),'rpm2cpio')
350 efile = os.path.join(bb.data.getVar('WORKDIR', localdata, 1),os.path.basename(local))
351 cmd = "%s %s | cpio -i" % (cmdname, efile)
352 cmd = "PATH=\"%s\" %s" % (bb.data.getVar('PATH', localdata, 1), cmd)
353 old_cwd = os.getcwd()
354 newdir = os.path.join(d.getVar("WORKDIR", True), 'srpm-unpack')
355 bb.mkdirhier(newdir)
356 os.chdir(newdir)
357 ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
358 os.chdir(old_cwd)
359 if ret != 0:
360 raise bb.build.FuncFailed('Unpack command failed: %s (%s)' % (cmd, ret))
361
362 srpm_uri = bb.data.getVar('SRPM_UNPACK', localdata, True).split()
363 if len(srpm_uri) == 0:
364 return
365
366 rootdir = bb.data.getVar('WORKDIR', localdata, True)
367 srpm_file_uri = [ "file://" + rootdir + "/srpm-unpack/" + uri for uri in srpm_uri];
368
369 try:
370 fetcher = bb.fetch2.Fetch(srpm_file_uri, localdata, cache=False)
371 fetcher.unpack(rootdir, srpm_file_uri)
372 except bb.fetch2.BBFetchException, e:
373 raise bb.build.FuncFailed(e)
374}
375
376do_configure() { 328do_configure() {
377 # Disable tests! 329 # Disable tests!
378 echo "all:" > tests/Makefile.am 330 echo "all:" > tests/Makefile.am