summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2013-02-17 08:19:12 +0100
committerMartin Jansa <Martin.Jansa@gmail.com>2013-02-19 01:48:45 +0100
commit6033ea7c61de16bf00f7b9c380494b846699f024 (patch)
tree04950aa9ffee1e506107b0810f695e27343ce91c
parentbd326014bab239ea86c6ae1b2dc063da9a821ba1 (diff)
downloadmeta-openembedded-6033ea7c61de16bf00f7b9c380494b846699f024.tar.gz
swig: upgrade to 2.0.9 and add patch to fix swiglib
* FindSWIG.cmake is using swig -swiglib to find swig.swg and set SWIG_DIR without that patch swig -swiglib reports absolute path to datadir how it was on builder which created sstate archive, reusing swig from sstate results in invalid path hardcoded in swig binary and FindSWIG reporting missing swig * unfortunately it's not using any config file we could make relocateble with SSTATE_SCAN_FILES * LICENSE-UNIVERSITIES change is only formal Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r--meta-oe/recipes-devtools/swig/swig.inc2
-rw-r--r--meta-oe/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch69
-rw-r--r--meta-oe/recipes-devtools/swig/swig_2.0.0.bb7
-rw-r--r--meta-oe/recipes-devtools/swig/swig_2.0.9.bb8
4 files changed, 78 insertions, 8 deletions
diff --git a/meta-oe/recipes-devtools/swig/swig.inc b/meta-oe/recipes-devtools/swig/swig.inc
index 9d62d27b3..97fc5c79e 100644
--- a/meta-oe/recipes-devtools/swig/swig.inc
+++ b/meta-oe/recipes-devtools/swig/swig.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://swig.sourceforge.net/"
3LICENSE = "BSD & GPLv3" 3LICENSE = "BSD & GPLv3"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \ 4LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \
5 file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \ 5 file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \
6 file://LICENSE-UNIVERSITIES;md5=e0eaeeef7b2662c0c2d0d3c0b2509f75" 6 file://LICENSE-UNIVERSITIES;md5=8ce9dcc8f7c994de4a408b205c72ba08"
7 7
8SECTION = "devel" 8SECTION = "devel"
9INC_PR = "r2" 9INC_PR = "r2"
diff --git a/meta-oe/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/meta-oe/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
new file mode 100644
index 000000000..81df3e264
--- /dev/null
+++ b/meta-oe/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
@@ -0,0 +1,69 @@
1From a4a0440a644c6c5e5da096efe3cf05ba309a284f Mon Sep 17 00:00:00 2001
2From: "NODA, Kai" <nodakai@gmail.com>
3Date: Sun, 22 Apr 2012 17:01:02 +0900
4Subject: [PATCH] Use /proc/self/exe for "swig -swiglib" on non-Win32
5 platforms.
6
7If it wasn't found, then fall back to a fixed string just as before.
8
9Upstream-Status: Submitted
10http://sourceforge.net/mailarchive/message.php?msg_id=29179733
11
12---
13 Source/Modules/main.cxx | 24 ++++++++++++++++++++++--
14 1 file changed, 22 insertions(+), 2 deletions(-)
15
16diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx
17index d2f5d3b..cbb0a12 100644
18--- a/Source/Modules/main.cxx
19+++ b/Source/Modules/main.cxx
20@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$";
21 #include "cparse.h"
22 #include <ctype.h>
23 #include <limits.h> // for INT_MAX
24+#ifndef _WIN32
25+#include <cstddef>
26+#include <unistd.h> // for readlink
27+#include <sys/stat.h> // for stat
28+#endif
29
30 // Global variables
31
32@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) {
33
34 // Check for SWIG_LIB environment variable
35 if ((c = getenv("SWIG_LIB")) == (char *) 0) {
36+ char *p;
37 #if defined(_WIN32)
38 char buf[MAX_PATH];
39- char *p;
40 if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) {
41 *(p + 1) = '\0';
42 SwigLib = NewStringf("%sLib", buf); // Native windows installation path
43@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) {
44 if (Len(SWIG_LIB_WIN_UNIX) > 0)
45 SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw)
46 #else
47- SwigLib = NewString(SWIG_LIB);
48+ char buf[PATH_MAX];
49+ if (0 < ::readlink("/proc/self/exe", buf, sizeof(buf)) &&
50+ (p = ::strstr(buf, "/bin/swig"))) {
51+ int major, minor, patch;
52+ const int ret = ::sscanf(VERSION, "%d.%d.%d", &major, &minor, &patch);
53+ if (3 == ret) {
54+ const ::ptrdiff_t dir_part_len = p - buf;
55+ ::snprintf(p, PATH_MAX - dir_part_len, "/share/swig/%d.%d.%d", major, minor, patch);
56+ struct ::stat stat_res;
57+ if (0 == ::stat(buf, &stat_res) && S_ISDIR(stat_res.st_mode)) {
58+ SwigLib = NewString(buf);
59+ }
60+ }
61+ }
62+ if (NULL == SwigLib)
63+ SwigLib = NewString(SWIG_LIB);
64 #endif
65 } else {
66 SwigLib = NewString(c);
67--
681.7.9.5
69
diff --git a/meta-oe/recipes-devtools/swig/swig_2.0.0.bb b/meta-oe/recipes-devtools/swig/swig_2.0.0.bb
deleted file mode 100644
index b443def58..000000000
--- a/meta-oe/recipes-devtools/swig/swig_2.0.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
1require swig.inc
2
3PR = "${INC_PR}.0"
4
5SRC_URI[md5sum] = "36ee2d9974be46a9f0a36460af928eb9"
6SRC_URI[sha256sum] = "2568d042d3c7cfbcb17e2471b0434bd3aa78d7a1829f9ef6f1b9fc522e4754ea"
7
diff --git a/meta-oe/recipes-devtools/swig/swig_2.0.9.bb b/meta-oe/recipes-devtools/swig/swig_2.0.9.bb
new file mode 100644
index 000000000..9e9544c5b
--- /dev/null
+++ b/meta-oe/recipes-devtools/swig/swig_2.0.9.bb
@@ -0,0 +1,8 @@
1require ${BPN}.inc
2
3PR = "${INC_PR}.0"
4
5SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch"
6
7SRC_URI[md5sum] = "54d534b14a70badc226129159412ea85"
8SRC_URI[sha256sum] = "586954000d297fafd7e91d1ad31089cc7e249f658889d11a44605d3662569539"