From ea79e9496438abe2d1d4ad957cc8bd9324f3d24f Mon Sep 17 00:00:00 2001 From: Hemmo Nieminen Date: Tue, 20 Jun 2017 21:34:28 +0300 Subject: [PATCH 1/2] Fix a missing path issue causing Python traceback. A path was missing from a call to os.path.relpath when handling rpaths. Fix this by assuming empty target directory means build root. --- mesonbuild/compilers/compilers.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 579988f06..6b5c4a489 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -763,6 +763,10 @@ class Compiler: # directory. This breaks reproducible builds. rel_rpaths = [] for p in rpath_paths: + # p can be an empty string for build_dir (relative path), but + # os.path.relpath() below won't like that. + if p == '': + p = build_dir if p == from_dir: relative = '' # relpath errors out in this case else: From 1d7c7a7ea6ef52b307dbc99fe63f9818f0521c00 Mon Sep 17 00:00:00 2001 From: Hemmo Nieminen Date: Sun, 18 Jun 2017 22:58:27 +0300 Subject: [PATCH 2/2] Add a test case for a "library at project root" use case. --- test cases/common/154 library at root/lib.c | 6 ++++++ test cases/common/154 library at root/main/main.c | 5 +++++ test cases/common/154 library at root/main/meson.build | 2 ++ test cases/common/154 library at root/meson.build | 3 +++ 4 files changed, 16 insertions(+) create mode 100644 test cases/common/154 library at root/lib.c create mode 100644 test cases/common/154 library at root/main/main.c create mode 100644 test cases/common/154 library at root/main/meson.build create mode 100644 test cases/common/154 library at root/meson.build diff --git a/test cases/common/154 library at root/lib.c b/test cases/common/154 library at root/lib.c new file mode 100644 index 000000000..a5b3dc3b8 --- /dev/null +++ b/test cases/common/154 library at root/lib.c @@ -0,0 +1,6 @@ +#if defined _WIN32 || defined __CYGWIN__ +__declspec(dllexport) +#endif +int fn(void) { + return -1; +} diff --git a/test cases/common/154 library at root/main/main.c b/test cases/common/154 library at root/main/main.c new file mode 100644 index 000000000..c4e1b4ee3 --- /dev/null +++ b/test cases/common/154 library at root/main/main.c @@ -0,0 +1,5 @@ +extern int fn(void); + +int main() { + return 1 + fn(); +} diff --git a/test cases/common/154 library at root/main/meson.build b/test cases/common/154 library at root/main/meson.build new file mode 100644 index 000000000..557378ae5 --- /dev/null +++ b/test cases/common/154 library at root/main/meson.build @@ -0,0 +1,2 @@ +exe = executable('main', 'main.c', link_with : lib) +test('stuff works', exe) diff --git a/test cases/common/154 library at root/meson.build b/test cases/common/154 library at root/meson.build new file mode 100644 index 000000000..bfdd869d7 --- /dev/null +++ b/test cases/common/154 library at root/meson.build @@ -0,0 +1,3 @@ +project('lib@root', 'c') +lib = shared_library('lib', 'lib.c') +subdir('main')