Gentoo Archives: gentoo-dev

From: justin <jlec@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] RFC: intel-sdp.eclass unpacking speedup
Date: Sun, 25 Nov 2012 10:10:09
Message-Id: 50B1EE4C.8020900@gentoo.org
1 Hi,
2
3 Change of the unpacking logic which allows at least a speed up of factor 2.
4 Before we unpacked every single rpm from the tarball separately, now we
5 generate all possibilities and unpack them at once, ignoring warnings.
6
7 Justin
8
9 commit f13912b377189f6b80d05eb122c9f27e187c02a6
10 Author: Justin Lecher <jlec@g.o>
11 Date: Sun Nov 25 10:51:00 2012 +0100
12
13 Speed up unpacking #431614
14
15 diff --git a/eclass/intel-sdp.eclass b/eclass/intel-sdp.eclass
16 index eafb523..a0f5b37 100644
17 --- a/eclass/intel-sdp.eclass
18 +++ b/eclass/intel-sdp.eclass
19 @@ -180,28 +180,27 @@ intel-sdp_pkg_setup() {
20 }
21
22 intel-sdp_src_unpack() {
23 - local l r t rpmdir
24 - debug-print "INTEL_RPMS_DIRS are \"${INTEL_RPMS_DIRS}\""
25 + local l r subdir rb t list=()
26 +
27 for t in ${A}; do
28 for r in ${INTEL_RPMS}; do
29 - # Find which subdirectory of the archive the rpm
30 is in
31 - rpm_found="false"
32 for subdir in ${INTEL_RPMS_DIRS}; do
33 - [[ "${rpm_found}" == "true" ]] && continue
34 rpmdir=${t%%.*}/${subdir}
35 - l=.${r}_$(date +'%d%m%y_%H%M%S').log
36 - tar xf "${DISTDIR}"/${t} ${rpmdir}/${r}
37 2> /dev/null || continue
38 - einfo "Unpacking ${r}"
39 - rpm_found="true"
40 - rpm2tar -O "./${rpmdir}/${r}" | tar xvf
41 - | sed -e \
42 - "s:^\.:${EROOT#/}:g" > ${l} ||
43 die "unpacking ${r} failed"
44 - mv ${l} opt/intel/ || die "failed moving
45 extract log file"
46 + list+=( ${rpmdir}/${r})
47 done
48 - [[ "${rpm_found}" == "false" ]] && \
49 - debug-print "RPM \"${r}\" not found in ${t}"
50 + done
51 + tar xf "${DISTDIR}"/${t} ${list[@]} 2> /dev/null || die
52 + for r in ${list[@]}; do
53 + rb=$(basename ${r})
54 + l=.${rb}_$(date +'%d%m%y_%H%M%S').log
55 + einfo "Unpacking ${rb}"
56 + rpm2tar -O ${r} | tar xvf - | sed -e \
57 + "s:^\.:${EROOT#/}:g" > ${l} || die
58 "unpacking ${r} failed"
59 + mv ${l} opt/intel/ || die "failed moving extract
60 log file"
61 done
62 done
63 - mv -v opt/intel/* ${INTEL_SDP_DIR} || die "mv to INTEL_SDP_DIR
64 failed"
65 +
66 + mv opt/intel/* ${INTEL_SDP_DIR} || die "mv to INTEL_SDP_DIR failed"
67 }

Attachments

File name MIME type
signature.asc application/pgp-signature