aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xci/appveyor-install.bat3
-rw-r--r--mesonbuild/backend/ninjabackend.py8
-rw-r--r--mesonbuild/environment.py2
-rw-r--r--mesonbuild/mesonlib.py47
-rwxr-xr-xrun_project_tests.py1
-rw-r--r--test cases/frameworks/11 gir subproject/gir/meson.build3
-rw-r--r--test cases/frameworks/11 gir subproject/installed_files.txt4
-rw-r--r--test cases/frameworks/12 multiple gir/installed_files.txt4
-rw-r--r--test cases/frameworks/7 gnome/gir/meson.build3
-rw-r--r--test cases/frameworks/7 gnome/installed_files.txt6
-rw-r--r--test cases/vala/11 generated vapi/installed_files.txt4
-rw-r--r--test cases/vala/11 generated vapi/libbar/bar.c23
-rw-r--r--test cases/vala/11 generated vapi/libbar/bar.h6
-rw-r--r--test cases/vala/11 generated vapi/libfoo/foo.c23
-rw-r--r--test cases/vala/11 generated vapi/libfoo/foo.h6
-rw-r--r--test cases/vala/11 generated vapi/main.vala4
-rw-r--r--test cases/vala/7 shared library/installed_files.txt4
-rw-r--r--test cases/vala/9 gir/installed_files.txt2
-rwxr-xr-xwraptool.py5
19 files changed, 114 insertions, 44 deletions
diff --git a/ci/appveyor-install.bat b/ci/appveyor-install.bat
index 2d4a8cb..1e60179 100755
--- a/ci/appveyor-install.bat
+++ b/ci/appveyor-install.bat
@@ -10,10 +10,13 @@ echo Updating Cygwin and installing ninja and test prerequisites
%CYGWIN_ROOT%\%SETUP% -qnNdO -R "%CYGWIN_ROOT%" -s "%CYGWIN_MIRROR%" -l "%CACHE%" -g -P ^
gcc-objc++,^
gcc-objc,^
+gobject-introspection,^
libboost-devel,^
libglib2.0-devel,^
+libgtk3-devel,^
ninja,^
python3-pip,^
+vala,^
zlib-devel
echo Install done
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 1057892..85ed232 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -42,8 +42,12 @@ def ninja_quote(text):
for char in ('$', ' ', ':'):
text = text.replace(char, '$' + char)
if '\n' in text:
- raise MesonException('Ninja does not support newlines in rules. '
- 'Please report this error with a test case to the Meson bug tracker.')
+ errmsg = '''Ninja does not support newlines in rules. The content was:
+
+%s
+
+Please report this error with a test case to the Meson bug tracker.''' % text
+ raise MesonException(errmsg)
return text
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 0c9a2f3..e5aa43e 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -731,7 +731,7 @@ class Environment:
return compilers.LLVMDCompiler(exelist, version, is_cross, full_version=full_version)
elif 'gdc' in out:
return compilers.GnuDCompiler(exelist, version, is_cross, full_version=full_version)
- elif 'Digital Mars' in out:
+ elif 'The D Language Foundation' in out or 'Digital Mars' in out:
return compilers.DmdDCompiler(exelist, version, is_cross, full_version=full_version)
raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"')
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index 3b32996..de83e90 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -25,29 +25,40 @@ from glob import glob
def detect_meson_py_location():
c = sys.argv[0]
- c_fname = os.path.split(c)[1]
- if c_fname == 'meson' or c_fname == 'meson.py':
- # $ /foo/meson.py <args>
- if os.path.isabs(c):
- return c
- # $ meson <args> (gets run from /usr/bin/meson)
+ c_dir, c_fname = os.path.split(c)
+
+ # get the absolute path to the <mesontool> folder
+ m_dir = None
+ if os.path.isabs(c):
+ # $ /foo/<mesontool>.py <args>
+ m_dir = c_dir
+ elif c_dir == '':
+ # $ <mesontool> <args> (gets run from /usr/bin/<mesontool>)
in_path_exe = shutil.which(c_fname)
if in_path_exe:
- # Special case: when run like "./meson.py <opts>" and user has
- # period in PATH, we need to expand it out, because, for example,
+ m_dir, c_fname = os.path.split(in_path_exe)
+ # Special case: when run like "./meson.py <opts>",
+ # we need to expand it out, because, for example,
# "ninja test" will be run from a different directory.
- if '.' in os.environ['PATH'].split(':'):
- p, f = os.path.split(in_path_exe)
- if p == '' or p == '.':
- return os.path.join(os.getcwd(), f)
- return in_path_exe
- # $ python3 ./meson.py <args>
- if os.path.exists(c):
- return os.path.join(os.getcwd(), c)
-
+ if m_dir == '.':
+ m_dir = os.getcwd()
+ else:
+ m_dir = os.path.abspath(c_dir)
+
+ # find meson in m_dir
+ if m_dir is not None:
+ for fname in ['meson', 'meson.py']:
+ m_path = os.path.join(m_dir, fname)
+ if os.path.exists(m_path):
+ return m_path
+
+ # No meson found, which means that either:
+ # a) meson is not installed
+ # b) meson is installed to a non-standard location
+ # c) the script that invoked mesonlib is not the one of meson tools (e.g. run_unittests.py)
# The only thing remaining is to try to find the bundled executable and
# pray distro packagers have not moved it.
- fname = os.path.join(os.path.dirname(__file__), '..', 'meson.py')
+ fname = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', 'meson.py'))
if not os.path.exists(fname):
raise RuntimeError('Could not determine how to run Meson. Please file a bug with details.')
return fname
diff --git a/run_project_tests.py b/run_project_tests.py
index 0bf5f31..d442dd3 100755
--- a/run_project_tests.py
+++ b/run_project_tests.py
@@ -185,6 +185,7 @@ def get_relative_files_list_from_dir(fromdir):
def platform_fix_name(fname, compiler):
if '?lib' in fname:
if mesonlib.is_cygwin():
+ fname = re.sub(r'lib/\?lib(.*)\.so$', r'bin/cyg\1.dll', fname)
fname = re.sub(r'\?lib(.*)\.dll$', r'cyg\1.dll', fname)
else:
fname = re.sub(r'\?lib', 'lib', fname)
diff --git a/test cases/frameworks/11 gir subproject/gir/meson.build b/test cases/frameworks/11 gir subproject/gir/meson.build
index 48e0a47..fe40dc6 100644
--- a/test cases/frameworks/11 gir subproject/gir/meson.build
+++ b/test cases/frameworks/11 gir subproject/gir/meson.build
@@ -31,6 +31,9 @@ message('TEST: ' + girsubproject.outdir())
envdata = environment()
envdata.append('GI_TYPELIB_PATH', girsubproject.outdir(), 'subprojects/mesongir', separator : ':')
envdata.append('LD_LIBRARY_PATH', girsubproject.outdir(), 'subprojects/mesongir')
+if ['windows', 'cygwin'].contains(host_machine.system())
+ envdata.append('PATH', girsubproject.outdir(), 'subprojects/mesongir')
+endif
test('gobject introspection/subproject/c', girexe)
test('gobject introspection/subproject/py', find_program('prog.py'),
diff --git a/test cases/frameworks/11 gir subproject/installed_files.txt b/test cases/frameworks/11 gir subproject/installed_files.txt
index 434481e..87d49a1 100644
--- a/test cases/frameworks/11 gir subproject/installed_files.txt
+++ b/test cases/frameworks/11 gir subproject/installed_files.txt
@@ -2,5 +2,5 @@ usr/lib/girepository-1.0/Meson-1.0.typelib
usr/lib/girepository-1.0/MesonSub-1.0.typelib
usr/share/gir-1.0/Meson-1.0.gir
usr/share/gir-1.0/MesonSub-1.0.gir
-usr/lib/libgirsubproject.so
-usr/lib/libgirlib.so
+usr/lib/?libgirsubproject.so
+usr/lib/?libgirlib.so
diff --git a/test cases/frameworks/12 multiple gir/installed_files.txt b/test cases/frameworks/12 multiple gir/installed_files.txt
index 9fb51bf..a5d16bc 100644
--- a/test cases/frameworks/12 multiple gir/installed_files.txt
+++ b/test cases/frameworks/12 multiple gir/installed_files.txt
@@ -1,6 +1,6 @@
usr/lib/girepository-1.0/Meson-1.0.typelib
usr/lib/girepository-1.0/MesonSub-1.0.typelib
-usr/lib/libgirlib.so
-usr/lib/libgirsubproject.so
+usr/lib/?libgirlib.so
+usr/lib/?libgirsubproject.so
usr/share/gir-1.0/Meson-1.0.gir
usr/share/gir-1.0/MesonSub-1.0.gir
diff --git a/test cases/frameworks/7 gnome/gir/meson.build b/test cases/frameworks/7 gnome/gir/meson.build
index a91cb97..1771548 100644
--- a/test cases/frameworks/7 gnome/gir/meson.build
+++ b/test cases/frameworks/7 gnome/gir/meson.build
@@ -41,5 +41,8 @@ gir_paths = ':'.join([girlib.outdir(), dep1lib.outdir(), dep2lib.outdir()])
envdata = environment()
envdata.append('GI_TYPELIB_PATH', gir_paths, separator : ':')
envdata.append('LD_LIBRARY_PATH', gir_paths)
+if ['windows', 'cygwin'].contains(host_machine.system())
+ envdata.append('PATH', gir_paths)
+endif
test('gobject introspection/py', find_program('prog.py'),
env : envdata)
diff --git a/test cases/frameworks/7 gnome/installed_files.txt b/test cases/frameworks/7 gnome/installed_files.txt
index d0d51d5..c7c704f 100644
--- a/test cases/frameworks/7 gnome/installed_files.txt
+++ b/test cases/frameworks/7 gnome/installed_files.txt
@@ -2,9 +2,9 @@ usr/include/enums.h
usr/include/enums2.h
usr/include/enums3.h
usr/include/marshaller.h
-usr/lib/libgir_lib.so
-usr/lib/libdep1lib.so
-usr/lib/libdep2lib.so
+usr/lib/?libgir_lib.so
+usr/lib/?libdep1lib.so
+usr/lib/?libdep2lib.so
usr/lib/girepository-1.0/Meson-1.0.typelib
usr/lib/girepository-1.0/MesonDep1-1.0.typelib
usr/lib/girepository-1.0/MesonDep2-1.0.typelib
diff --git a/test cases/vala/11 generated vapi/installed_files.txt b/test cases/vala/11 generated vapi/installed_files.txt
index 5993d01..aeaf2da 100644
--- a/test cases/vala/11 generated vapi/installed_files.txt
+++ b/test cases/vala/11 generated vapi/installed_files.txt
@@ -1,6 +1,6 @@
usr/bin/vapigen-test
-usr/lib/libfoo.so
-usr/lib/libbar.so
+usr/lib/?libfoo.so
+usr/lib/?libbar.so
usr/share/vala/vapi/foo-1.0.vapi
usr/share/vala/vapi/foo-1.0.deps
usr/share/vala/vapi/bar-1.0.vapi
diff --git a/test cases/vala/11 generated vapi/libbar/bar.c b/test cases/vala/11 generated vapi/libbar/bar.c
index f0f5cb8..3037141 100644
--- a/test cases/vala/11 generated vapi/libbar/bar.c
+++ b/test cases/vala/11 generated vapi/libbar/bar.c
@@ -1,12 +1,29 @@
#include "bar.h"
#include "foo.h"
+struct _BarBar
+{
+ GObject parent_instance;
+};
+
+G_DEFINE_TYPE (BarBar, bar_bar, G_TYPE_OBJECT)
+
+static void
+bar_bar_class_init (BarBarClass *klass)
+{
+}
+
+static void
+bar_bar_init (BarBar *self)
+{
+}
+
/**
- * bar_return_success:
+ * bar_bar_return_success:
*
* Returns 0
*/
-int bar_return_success(void)
+int bar_bar_return_success(void)
{
- return foo_return_success();
+ return foo_foo_return_success();
}
diff --git a/test cases/vala/11 generated vapi/libbar/bar.h b/test cases/vala/11 generated vapi/libbar/bar.h
index 165b104..4ca7270 100644
--- a/test cases/vala/11 generated vapi/libbar/bar.h
+++ b/test cases/vala/11 generated vapi/libbar/bar.h
@@ -2,4 +2,8 @@
#pragma once
-int bar_return_success(void);
+#define BAR_TYPE_BAR (bar_bar_get_type())
+
+G_DECLARE_FINAL_TYPE (BarBar, bar_bar, BAR, BAR, GObject)
+
+int bar_bar_return_success(void);
diff --git a/test cases/vala/11 generated vapi/libfoo/foo.c b/test cases/vala/11 generated vapi/libfoo/foo.c
index 0413ac5..dd2b891 100644
--- a/test cases/vala/11 generated vapi/libfoo/foo.c
+++ b/test cases/vala/11 generated vapi/libfoo/foo.c
@@ -1,11 +1,28 @@
#include "foo.h"
+struct _FooFoo
+{
+ GObject parent_instance;
+};
+
+G_DEFINE_TYPE (FooFoo, foo_foo, G_TYPE_OBJECT)
+
+static void
+foo_foo_class_init (FooFooClass *klass)
+{
+}
+
+static void
+foo_foo_init (FooFoo *self)
+{
+}
+
/**
- * foo_return_success:
+ * foo_foo_return_success:
*
* Returns 0
*/
-int foo_return_success(void)
+int foo_foo_return_success(void)
{
- return 0;
+ return 0;
}
diff --git a/test cases/vala/11 generated vapi/libfoo/foo.h b/test cases/vala/11 generated vapi/libfoo/foo.h
index f09256d..e1887d8 100644
--- a/test cases/vala/11 generated vapi/libfoo/foo.h
+++ b/test cases/vala/11 generated vapi/libfoo/foo.h
@@ -2,4 +2,8 @@
#pragma once
-int foo_return_success(void);
+#define FOO_TYPE_FOO (foo_foo_get_type())
+
+G_DECLARE_FINAL_TYPE (FooFoo, foo_foo, Foo, FOO, GObject)
+
+int foo_foo_return_success(void);
diff --git a/test cases/vala/11 generated vapi/main.vala b/test cases/vala/11 generated vapi/main.vala
index 303ab33..d61fba0 100644
--- a/test cases/vala/11 generated vapi/main.vala
+++ b/test cases/vala/11 generated vapi/main.vala
@@ -3,7 +3,7 @@ using Bar;
class Main : GLib.Object {
public static int main(string[] args) {
- var ignore = Foo.return_success();
- return Bar.return_success();
+ var ignore = Foo.Foo.return_success();
+ return Bar.Bar.return_success();
}
}
diff --git a/test cases/vala/7 shared library/installed_files.txt b/test cases/vala/7 shared library/installed_files.txt
index f70e439..012b107 100644
--- a/test cases/vala/7 shared library/installed_files.txt
+++ b/test cases/vala/7 shared library/installed_files.txt
@@ -1,5 +1,5 @@
-usr/lib/libinstalled_vala_lib.so
-usr/lib/libinstalled_vala_all.so
+usr/lib/?libinstalled_vala_lib.so
+usr/lib/?libinstalled_vala_all.so
usr/include/installed_vala_all.h
usr/include/valah/installed_vala_all_nolib.h
usr/include/installed_vala_onlyh.h
diff --git a/test cases/vala/9 gir/installed_files.txt b/test cases/vala/9 gir/installed_files.txt
index 7a0e055..64bddee 100644
--- a/test cases/vala/9 gir/installed_files.txt
+++ b/test cases/vala/9 gir/installed_files.txt
@@ -1,2 +1,2 @@
-usr/lib/libfoo.so
+usr/lib/?libfoo.so
usr/share/gir-1.0/Foo-1.0.gir
diff --git a/wraptool.py b/wraptool.py
index 5e03efd..a5ee9ef 100755
--- a/wraptool.py
+++ b/wraptool.py
@@ -17,4 +17,7 @@
from mesonbuild.wrap import wraptool
import sys
-sys.exit(wraptool.run(sys.argv[1:]))
+if __name__ == '__main__':
+ print('Warning: This executable is deprecated. Use "meson wrap" instead.',
+ file=sys.stderr)
+ sys.exit(wraptool.run(sys.argv[1:]))