diff options
6 files changed, 96 insertions, 17 deletions
diff --git a/recipes-core/cacao/cacao-1.6.1/cacao-1.6.1-do-not-rely-on-absolute-paths.patch b/recipes-core/cacao/cacao-1.6.1/cacao-1.6.1-do-not-rely-on-absolute-paths.patch new file mode 100644 index 0000000..2b046cf --- /dev/null +++ b/recipes-core/cacao/cacao-1.6.1/cacao-1.6.1-do-not-rely-on-absolute-paths.patch @@ -0,0 +1,41 @@ +java.in: Do not use hardcode paths + +Cacao uses hardcoded paths to various files, if these paths are not +provided. This causes issues when sharing sstate with otherwise +identical workers, if build time paths are not identical. + +Signed-off-by: Erkka Kääriä <erkka.kaaria@intel.com> + +Upstream-Status: Inappropriate [Yocto-specific fixes] + +--- + cacao-1.6.1/src/scripts/java.in | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git cacao-1.6.1/src/scripts/java.in cacao-1.6.1/src/scripts/java.in +index 0790f02..2118de7 100644 +--- cacao-1.6.1/src/scripts/java.in ++++ cacao-1.6.1/src/scripts/java.in +@@ -22,5 +22,17 @@ + ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + ## 02110-1301, USA. + +-IFS="" +-exec $(dirname ${0})/cacao ${1+"$@"} ++SH_DIR=`dirname "$0"` ++CURRENT_DIR=`cd "${SH_DIR}" && pwd` ++ ++# if this shell script is invoked through symlink, we get invalid paths. As getting the real path to this file is ++# very painful using only /bin/sh, python is used instead. ++PYTHON_STR="import os; print os.path.dirname(os.path.realpath(os.readlink(\"${CURRENT_DIR}/java\"))) if os.path.islink(\"${CURRENT_DIR}/java\") else \"${CURRENT_DIR}\"" ++REAL_DIR=`python -c "${PYTHON_STR}"` ++ ++PARENT_DIR=`dirname ${REAL_DIR}` ++ ++export BOOTCLASSPATH="${PARENT_DIR}/share/cacao/vm.zip:${PARENT_DIR}/share/classpath/glibj.zip" ++LIBRARY_PATH="-Djava.library.path=${PARENT_DIR}/lib/classpath" ++exec ${REAL_DIR}/cacao ${LIBRARY_PATH} ${1+"$@"} ++ +-- +2.7.4 + diff --git a/recipes-core/cacao/cacao-initial-native_0.98.bb b/recipes-core/cacao/cacao-initial-native_0.98.bb index 2a8ced5..caaf53c 100644 --- a/recipes-core/cacao/cacao-initial-native_0.98.bb +++ b/recipes-core/cacao/cacao-initial-native_0.98.bb @@ -15,6 +15,7 @@ SRC_URI = "\ file://cacao-0.98-initial.patch \ file://disable_hw_exceptions.patch \ file://cacao-0.9.8-initial-fix-gc-undefined-behaviour.patch \ + file://cacao-0.9.8-do-not-rely-on-absolute-paths.patch \ " # libjvm disabled - it would conflict with cacao-native installations diff --git a/recipes-core/cacao/cacao_1.6.1.bb b/recipes-core/cacao/cacao_1.6.1.bb index 83f216c..ec13cc5 100644 --- a/recipes-core/cacao/cacao_1.6.1.bb +++ b/recipes-core/cacao/cacao_1.6.1.bb @@ -11,7 +11,10 @@ DEPENDS = "zlib libtool classpath virtual/javac-native bdwgc" RPROVIDES_${PN} = "java2-runtime" SRC_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.xz \ - file://system-boehm-gc.patch" + file://system-boehm-gc.patch \ + file://cacao-1.6.1-do-not-rely-on-absolute-paths.patch \ +" + SRC_URI[md5sum] = "2c18478404afd1cffdd15ad1e9d85a57" SRC_URI[sha256sum] = "eecc8bd1b528a028f43d9d1d0c06b97855bbf1d40e03826d911ebbc0b6971e12" @@ -23,13 +26,12 @@ REQUIRED_DISTRO_FEATURES_class-native := "" EXTRA_OECONF_class-native = "\ --enable-debug \ --with-vm-zip=${datadir}/cacao/vm.zip \ - --disable-libjvm \ - \ --with-java-runtime-library-classes=${datadir}/classpath/glibj.zip \ --with-java-runtime-library-libdir=${libdir_jni}:${libdir} \ --with-jni_md_h=${includedir}/classpath \ --with-jni_h=${includedir}/classpath \ --disable-test-dependency-checks \ + --disable-libjvm \ " CACHED_CONFIGUREVARS_class-native += "ac_cv_prog_JAVAC=${STAGING_BINDIR_NATIVE}/ecj-initial" @@ -37,11 +39,9 @@ CACHED_CONFIGUREVARS_class-native += "ac_cv_prog_JAVAC=${STAGING_BINDIR_NATIVE}/ EXTRA_OECONF = "\ --with-vm-zip=${datadir}/cacao/vm.zip \ --disable-libjvm \ - \ --with-build-java-runtime-library-classes=${STAGING_DATADIR}/classpath/glibj.zip \ --with-jni_h=${STAGING_INCDIR}/classpath \ --with-jni_md_h=${STAGING_INCDIR}/classpath \ - \ --with-java-runtime-library-classes=${datadir}/classpath/glibj.zip \ --with-java-runtime-library-libdir=${libdir_jni}:${libdir} \ --disable-test-dependency-checks \ @@ -54,21 +54,12 @@ do_configure_prepend () { mkdir -p src/mm/boehm-gc/m4 } -do_install_append () { +do_install_append_class-target() { rm ${D}/${bindir}/java } -do_install_append_class-native () { - ln -sf cacao ${D}/${bindir}/java -} - FILES_${PN} = "${bindir}/${PN} ${libdir}/cacao/lib*.so ${libdir}/lib*.so* ${datadir}/${PN}" FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug/lib*.so*" FILES_${PN}-doc += "${datadir}/gc" -ALTERNATIVE_${PN} = "java" -ALTERNATIVE_LINK = "${bindir}/java" -ALTERNATIVE_TARGET = "${bindir}/cacao" -ALTERNATIVE_PRIORITY = "10" - BBCLASSEXTEND = "native" diff --git a/recipes-core/cacao/files/cacao-0.9.8-do-not-rely-on-absolute-paths.patch b/recipes-core/cacao/files/cacao-0.9.8-do-not-rely-on-absolute-paths.patch new file mode 100644 index 0000000..93bcc3e --- /dev/null +++ b/recipes-core/cacao/files/cacao-0.9.8-do-not-rely-on-absolute-paths.patch @@ -0,0 +1,33 @@ +java.in: Do not use hardcode paths + +Cacao uses hardcoded paths to various files, if these paths are not +provided. This causes issues when sharing sstate with otherwise +identical workers, if build time paths are not identical. + +Signed-off-by: Erkka Kääriä <erkka.kaaria@intel.com> + +Upstream-Status: Inappropriate [Yocto-specific fixes] + +--- + cacao-0.98/src/scripts/java.in | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git cacao-0.98/src/scripts/java.in cacao-0.98/src/scripts/java.in +index 8a402e4..1738897 100644 +--- cacao-0.98/src/scripts/java.in ++++ cacao-0.98/src/scripts/java.in +@@ -32,4 +32,10 @@ + ## + ## $Id: java.in 5659 2006-10-04 10:37:09Z twisti $ + +-exec cacao ${1+"$@"} ++SH_DIR=`dirname "$0"` ++CURRENT_DIR=`cd "${SH_DIR}" && pwd` ++PARENT_DIR=`dirname ${CURRENT_DIR}` ++export BOOTCLASSPATH="${PARENT_DIR}/share/cacao-initial/vm.zip:${PARENT_DIR}/share/classpath-initial/glibj.zip" ++ ++LIBRARY_PATH="-Djava.library.path=${PARENT_DIR}/lib/classpath-initial" ++exec cacao ${LIBRARY_PATH} ${1+"$@"} ++ +-- +2.7.4 diff --git a/recipes-core/ecj/ecj-bootstrap-native.bb b/recipes-core/ecj/ecj-bootstrap-native.bb index e159c9d..276a8f0 100644 --- a/recipes-core/ecj/ecj-bootstrap-native.bb +++ b/recipes-core/ecj/ecj-bootstrap-native.bb @@ -27,7 +27,13 @@ inherit native do_compile() { # Create the start script echo "#!/bin/sh" > ecj-bootstrap - echo "ECJ_JAR=${STAGING_DATADIR}/java/${JAR}" >> ecj-bootstrap + + # get absolute path to parent directory, and use that as base path for the jar + echo "SH_DIR=\`dirname "\$0"\`" >> ecj-bootstrap + echo "CURRENT_DIR=\`cd "\${SH_DIR}" && pwd\`" >> ecj-bootstrap + echo "PARENT_DIR=\`dirname \${CURRENT_DIR}\`" >> ecj-bootstrap + + echo "ECJ_JAR=\${PARENT_DIR}/share/java/${JAR}" >> ecj-bootstrap echo "RUNTIME=java" >> ecj-bootstrap cat ecj.in >> ecj-bootstrap } diff --git a/recipes-core/ecj/ecj-initial-native.bb b/recipes-core/ecj/ecj-initial-native.bb index ed334ed..1792390 100644 --- a/recipes-core/ecj/ecj-initial-native.bb +++ b/recipes-core/ecj/ecj-initial-native.bb @@ -21,11 +21,18 @@ JAR = "ecj-bootstrap.jar" do_compile() { # Create the start script echo "#!/bin/sh" > ecj-initial - echo "ECJ_JAR=${STAGING_DATADIR}/java/${JAR}" >> ecj-initial + + # get absolute path to parent directory, and use that as base path for the jar + echo "SH_DIR=\`dirname "\$0"\`" >> ecj-initial + echo "CURRENT_DIR=\`cd "\${SH_DIR}" && pwd\`" >> ecj-initial + echo "PARENT_DIR=\`dirname \${CURRENT_DIR}\`" >> ecj-initial + + echo "ECJ_JAR=\${PARENT_DIR}/share/java/${JAR}" >> ecj-initial echo "RUNTIME=java-initial" >> ecj-initial cat ecj-initial.in >> ecj-initial } + do_install() { install -d ${D}${bindir} install -m 755 ${S}/ecj-initial ${D}${bindir} |