Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: kde@g.o, "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH 1/3] Move header consistency checking func into multilib-build.
Date: Tue, 05 Feb 2013 20:20:10
Message-Id: 1360095564-18154-2-git-send-email-mgorny@gentoo.org
In Reply to: [gentoo-dev] New eclass: cmake-multilib for cmake multilib package builds by "Michał Górny"
1 There it can be reused by eclasses & ebuilds.
2 ---
3 gx86/eclass/autotools-multilib.eclass | 29 +-------------------------
4 gx86/eclass/multilib-build.eclass | 38 +++++++++++++++++++++++++++++++++++
5 2 files changed, 39 insertions(+), 28 deletions(-)
6
7 diff --git a/gx86/eclass/autotools-multilib.eclass b/gx86/eclass/autotools-multilib.eclass
8 index 97abfe6..ff7e8b8 100644
9 --- a/gx86/eclass/autotools-multilib.eclass
10 +++ b/gx86/eclass/autotools-multilib.eclass
11 @@ -50,34 +50,7 @@ autotools-multilib_src_install() {
12 autotools-utils_src_install
13
14 # Make sure all headers are the same for each ABI.
15 - autotools-multilib_cksum() {
16 - find "${ED}"usr/include -type f \
17 - -exec cksum {} + | sort -k2
18 - }
19 -
20 - local cksum=$(autotools-multilib_cksum)
21 - local cksum_file=${T}/.autotools-multilib_cksum
22 -
23 - if [[ -f ${cksum_file} ]]; then
24 - local cksum_prev=$(< "${cksum_file}")
25 -
26 - if [[ ${cksum} != ${cksum_prev} ]]; then
27 - echo "${cksum}" > "${cksum_file}.new"
28 -
29 - eerror "Header files have changed between ABIs."
30 -
31 - if type -p diff &>/dev/null; then
32 - eerror "$(diff -du "${cksum_file}" "${cksum_file}.new")"
33 - else
34 - eerror "Old checksums in: ${cksum_file}"
35 - eerror "New checksums in: ${cksum_file}.new"
36 - fi
37 -
38 - die "Header checksum mismatch, aborting."
39 - fi
40 - else
41 - echo "${cksum}" > "${cksum_file}"
42 - fi
43 + multilib_check_headers
44 }
45
46 multilib_foreach_abi autotools-multilib_secure_install
47 diff --git a/gx86/eclass/multilib-build.eclass b/gx86/eclass/multilib-build.eclass
48 index 4298a54..2b6c8b5 100644
49 --- a/gx86/eclass/multilib-build.eclass
50 +++ b/gx86/eclass/multilib-build.eclass
51 @@ -137,5 +137,43 @@ multilib_parallel_foreach_abi() {
52 multijob_finish
53 }
54
55 +# @FUNCTION: multilib_check_headers
56 +# @DESCRIPTION:
57 +# Check whether the header files are consistent between ABIs.
58 +#
59 +# This function needs to be called after each ABI's installation phase.
60 +# It obtains the header file checksums and compares them with previous
61 +# runs (if any). Dies if header files differ.
62 +multilib_check_headers() {
63 + _multilib_header_cksum() {
64 + find "${ED}"usr/include -type f \
65 + -exec cksum {} + | sort -k2
66 + }
67 +
68 + local cksum=$(_multilib_header_cksum)
69 + local cksum_file=${T}/.multilib_header_cksum
70 +
71 + if [[ -f ${cksum_file} ]]; then
72 + local cksum_prev=$(< "${cksum_file}")
73 +
74 + if [[ ${cksum} != ${cksum_prev} ]]; then
75 + echo "${cksum}" > "${cksum_file}.new"
76 +
77 + eerror "Header files have changed between ABIs."
78 +
79 + if type -p diff &>/dev/null; then
80 + eerror "$(diff -du "${cksum_file}" "${cksum_file}.new")"
81 + else
82 + eerror "Old checksums in: ${cksum_file}"
83 + eerror "New checksums in: ${cksum_file}.new"
84 + fi
85 +
86 + die "Header checksum mismatch, aborting."
87 + fi
88 + else
89 + echo "${cksum}" > "${cksum_file}"
90 + fi
91 +}
92 +
93 _MULTILIB_BUILD=1
94 fi
95 --
96 1.8.1.2