diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2014-03-18 15:54:34 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-19 14:42:43 +0000 |
commit | a0c83577cc108aaae8632fe44f0c1bd46995b264 (patch) | |
tree | 3f4b257f14d4381fe2da68994a431e8e5d9a9303 | |
parent | 779f5936f18c1c974cde477c68e775e95668cb08 (diff) | |
download | poky-a0c83577cc108aaae8632fe44f0c1bd46995b264.tar.gz |
sgml-common-native: fix the generation of sgml-docbook.cat
There would be build errors if multiple builds use the same SSTATE_DIR,
and the builds use the different versions' docbook-sgml-dtd-native, the
problems are: we have multiple versions docbook-sgml-dtd-native:
docbook-sgml-dtd-3.1-native
docbook-sgml-dtd-4.1-native
docbook-sgml-dtd-4.5-native
And they depend on sgml-common-native which installs the file
sysroot/etc/sgml/sgml-docbook.cat, this file is also included in the
sstate cache file (.tar.gz), but both the 3 versions
docbook-sgml-dtd-native may update the
sysroot/ect/sgml/sgml-docbook.cat, and it is a hardlink to
SYSROOT_DESTDIR/etc/sgml/sgml-docbook.cat, so the sgml-docbook.cat in
the sstate cache file may contain the
docbook-sgml-dtd-<version>-native's info, and there would be errors when
we mirror the sstate-cache to another build which uses a different
version.
Now we exclude the sgml-docbook.cat from the ${D}, and generate
sysroot/ect/sgml/sgml-docbook.cat dynamically will fix the problem, both
the sgml-common-native and docbook-sgml-dtd-<version>-native can update
it it correctly.
The similar to docbook-dsssl-stylesheets-native and openjade-native.
[YOCTO #5994]
(From OE-Core rev: 50683df81e1605ad7c03bc633aa55da7e97cfe62)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
4 files changed, 34 insertions, 11 deletions
diff --git a/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb b/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb index d5f5381d72..461b48f4ca 100644 --- a/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb +++ b/meta/recipes-devtools/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb | |||
@@ -19,6 +19,7 @@ inherit native | |||
19 | 19 | ||
20 | SSTATEPOSTINSTFUNCS += "docbook_dsssl_stylesheets_sstate_postinst" | 20 | SSTATEPOSTINSTFUNCS += "docbook_dsssl_stylesheets_sstate_postinst" |
21 | SYSROOT_PREPROCESS_FUNCS += "docbook_dsssl_sysroot_preprocess" | 21 | SYSROOT_PREPROCESS_FUNCS += "docbook_dsssl_sysroot_preprocess" |
22 | CLEANFUNCS += "docbook_dsssl_stylesheets_sstate_clean" | ||
22 | 23 | ||
23 | 24 | ||
24 | do_install () { | 25 | do_install () { |
@@ -57,3 +58,11 @@ docbook_dsssl_sysroot_preprocess () { | |||
57 | install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-docbook-dsssl | 58 | install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-docbook-dsssl |
58 | } | 59 | } |
59 | 60 | ||
61 | docbook_dsssl_stylesheets_sstate_clean () { | ||
62 | # Ensure that the catalog file sgml-docbook.cat is properly | ||
63 | # updated when the package is removed from sstate cache. | ||
64 | files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat" | ||
65 | for f in $files; do | ||
66 | [ ! -f $f ] || sed -i '/\/sgml\/dsssl-docbook-stylesheets.cat/d' $f | ||
67 | done | ||
68 | } | ||
diff --git a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc index b2381bd7d1..af50987968 100644 --- a/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc +++ b/meta/recipes-devtools/docbook-sgml-dtd/docbook-sgml-dtd-native.inc | |||
@@ -63,10 +63,8 @@ CLEANFUNCS += "docbook_sgml_dtd_sstate_clean" | |||
63 | docbook_sgml_dtd_sstate_clean () { | 63 | docbook_sgml_dtd_sstate_clean () { |
64 | # Ensure that the catalog file sgml-docbook.cat is properly | 64 | # Ensure that the catalog file sgml-docbook.cat is properly |
65 | # updated when the package is removed from sstate cache. | 65 | # updated when the package is removed from sstate cache. |
66 | if [ -f ${sysconfdir}/sgml/sgml-docbook.bak ]; then | 66 | files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat" |
67 | sed -i '/'"\/sgml\/sgml-docbook-dtd-${DTD_VERSION}.cat"'/d' \ | 67 | for f in $files; do |
68 | ${sysconfdir}/sgml/sgml-docbook.bak | 68 | [ ! -f $f ] || sed -i '/\/sgml\/sgml-docbook-dtd-${DTD_VERSION}.cat/d' $f |
69 | sed -i '/'"\/sgml\/sgml-docbook-dtd-${DTD_VERSION}.cat"'/d' \ | 69 | done |
70 | ${sysconfdir}/sgml/sgml-docbook.cat | ||
71 | fi | ||
72 | } | 70 | } |
diff --git a/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb b/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb index ccce421cf3..fa7aa62eb3 100644 --- a/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb +++ b/meta/recipes-devtools/openjade/openjade-native_1.3.2.bb | |||
@@ -40,6 +40,7 @@ CFLAGS =+ "-I${S}/include" | |||
40 | 40 | ||
41 | SSTATEPOSTINSTFUNCS += "openjade_sstate_postinst" | 41 | SSTATEPOSTINSTFUNCS += "openjade_sstate_postinst" |
42 | SYSROOT_PREPROCESS_FUNCS += "openjade_sysroot_preprocess" | 42 | SYSROOT_PREPROCESS_FUNCS += "openjade_sysroot_preprocess" |
43 | CLEANFUNCS += "openjade_sstate_clean" | ||
43 | 44 | ||
44 | # configure.in needs to be reloacted to trigger reautoconf | 45 | # configure.in needs to be reloacted to trigger reautoconf |
45 | do_extraunpack () { | 46 | do_extraunpack () { |
@@ -97,3 +98,11 @@ openjade_sysroot_preprocess () { | |||
97 | install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade | 98 | install -m 755 ${STAGING_BINDIR_NATIVE}/install-catalog ${SYSROOT_DESTDIR}${bindir_crossscripts}/install-catalog-openjade |
98 | } | 99 | } |
99 | 100 | ||
101 | openjade_sstate_clean () { | ||
102 | # Ensure that the catalog file sgml-docbook.cat is properly | ||
103 | # updated when the package is removed from sstate cache. | ||
104 | files="${sysconfdir}/sgml/sgml-docbook.bak ${sysconfdir}/sgml/sgml-docbook.cat" | ||
105 | for f in $files; do | ||
106 | [ ! -f $f ] || sed -i '/\/sgml\/openjade-${PV}.cat/d' $f | ||
107 | done | ||
108 | } | ||
diff --git a/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb b/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb index af7e104274..597536570d 100644 --- a/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb +++ b/meta/recipes-devtools/sgml-common/sgml-common-native_0.6.3.bb | |||
@@ -22,6 +22,7 @@ S = "${WORKDIR}/sgml-common-${PV}" | |||
22 | 22 | ||
23 | SYSROOT_PREPROCESS_FUNCS += "sgml_common_native_mangle" | 23 | SYSROOT_PREPROCESS_FUNCS += "sgml_common_native_mangle" |
24 | SSTATEPOSTINSTFUNCS += "sgml_common_sstate_postinst" | 24 | SSTATEPOSTINSTFUNCS += "sgml_common_sstate_postinst" |
25 | CLEANFUNCS += "sgml_common_sstate_clean" | ||
25 | 26 | ||
26 | 27 | ||
27 | do_install_append() { | 28 | do_install_append() { |
@@ -33,9 +34,8 @@ do_install_append() { | |||
33 | --add ${D}${sysconfdir}/sgml/sgml-ent.cat \ | 34 | --add ${D}${sysconfdir}/sgml/sgml-ent.cat \ |
34 | ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog | 35 | ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog |
35 | 36 | ||
36 | ${D}${bindir}/install-catalog \ | 37 | # The sgml-docbook.cat will be regenerated by sstate_postinst |
37 | --add ${D}${sysconfdir}/sgml/sgml-docbook.cat \ | 38 | rm -f ${D}${sysconfdir}/sgml/sgml-docbook.cat |
38 | ${D}${sysconfdir}/sgml/sgml-ent.cat | ||
39 | } | 39 | } |
40 | 40 | ||
41 | sgml_common_native_mangle () { | 41 | sgml_common_native_mangle () { |
@@ -43,8 +43,6 @@ sgml_common_native_mangle () { | |||
43 | sed -i -e "s|${D}${sysconfdir}/sgml|${sysconfdir}/sgml|g" ${SYSROOT_DESTDIR}${STAGING_BINDIR}/install-catalog | 43 | sed -i -e "s|${D}${sysconfdir}/sgml|${sysconfdir}/sgml|g" ${SYSROOT_DESTDIR}${STAGING_BINDIR}/install-catalog |
44 | # Change path from ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog to ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog in sgml-ent.cat | 44 | # Change path from ${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog to ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog in sgml-ent.cat |
45 | sed -i -e "s|${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-ent.cat | 45 | sed -i -e "s|${D}${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|${datadir}/sgml/sgml-iso-entities-8879.1986/catalog|g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-ent.cat |
46 | # Change path from ${D}${sysconfdir}/sgml/sgml-ent.cat|${sysconfdir}/sgml/sgml-ent.cat to ${sysconfdir}/sgml/sgml-ent.cat in sgml-ent.cat | ||
47 | sed -i -e "s|${D}${sysconfdir}/sgml/sgml-ent.cat|${sysconfdir}/sgml/sgml-ent.cat|g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/sgml-docbook.cat | ||
48 | # Remove ${D} path from catalog file created by install-catalog script | 46 | # Remove ${D} path from catalog file created by install-catalog script |
49 | sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/catalog | 47 | sed -i -e "s|${D}||g" ${SYSROOT_DESTDIR}${sysconfdir}/sgml/catalog |
50 | } | 48 | } |
@@ -52,6 +50,7 @@ sgml_common_native_mangle () { | |||
52 | sgml_common_sstate_postinst() { | 50 | sgml_common_sstate_postinst() { |
53 | if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ] | 51 | if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ] |
54 | then | 52 | then |
53 | ${bindir}/install-catalog --add ${sysconfdir}/sgml/sgml-docbook.cat ${sysconfdir}/sgml/sgml-ent.cat | ||
55 | if [ -e ${sysconfdir}/sgml/sgml-docbook.bak ]; then | 54 | if [ -e ${sysconfdir}/sgml/sgml-docbook.bak ]; then |
56 | for catalog in `awk '{print $2}' ${sysconfdir}/sgml/sgml-docbook.bak`; do | 55 | for catalog in `awk '{print $2}' ${sysconfdir}/sgml/sgml-docbook.bak`; do |
57 | if [ ! `grep $catalog ${sysconfdir}/sgml/sgml-docbook.cat 1> /dev/null 2>&1` ]; then | 56 | if [ ! `grep $catalog ${sysconfdir}/sgml/sgml-docbook.cat 1> /dev/null 2>&1` ]; then |
@@ -62,3 +61,11 @@ sgml_common_sstate_postinst() { | |||
62 | fi | 61 | fi |
63 | fi | 62 | fi |
64 | } | 63 | } |
64 | |||
65 | sgml_common_sstate_clean () { | ||
66 | # Ensure that the catalog file sgml-docbook.cat is properly | ||
67 | # updated when the package is removed from sstate cache. | ||
68 | if [ -f ${sysconfdir}/sgml/sgml-docbook.cat ]; then | ||
69 | sed -i '/\/sgml\/sgml-ent.cat/d' ${sysconfdir}/sgml/sgml-docbook.cat | ||
70 | fi | ||
71 | } | ||