Commit Graph

250 Commits

Author SHA1 Message Date
Marvin Scholz fc3e2f5ad0 depfixer: Do not try to fix rpaths of dlls 2018-10-25 19:30:02 +03:00
Jon Turney 93f7b83bf5 Fix flake8 'imported but unused' reports
$ flake8 | grep F401
./mesonbuild/minstall.py:15:1: F401 'gzip' imported but unused
./mesonbuild/backend/backends.py:26:1: F401 '..compilers.get_macos_dylib_install_name' imported but unused
./mesonbuild/backend/backends.py:29:1: F401 'functools.lru_cache' imported but unused
./mesonbuild/scripts/dist.py:27:1: F401 'mesonbuild.dependencies.ExternalProgram' imported but unused
2018-10-24 19:11:46 +03:00
David Seifert 3a8911a07f Do not try to remove duplicate RPATH entries on macOS 2018-10-14 23:50:52 +03:00
Mohammed Sadiq 25fef3d1fa coverage: fix lcov branch coverage generation
lcov branch coverage are disabled by default.  So branch
coverage has to be enabled for every stage to make them work.

Fixes https://github.com/mesonbuild/meson/issues/4319
2018-10-09 22:43:27 +03:00
Guido Günther 1e7aea65e6 scanbuild: Split SCANBUILD using shlex
This allows invocations like

    SCANBUILD="scan-build --status-bugs" ninja scan-build

Closes: #4334
2018-10-08 20:21:32 +03:00
Jan Tojnar c0c075c129 Make custom dist scripts accept arguments.
meson.add_dist_script, introduced in #3906, did not accept any arguments
other than script name. Since all other meson.add_*_script methods
do accept args, this makes the dist script accept them as well.
2018-10-04 21:20:57 +03:00
dx-mon 65cb7b0241 Fixed the lack of stdout being displayed when not in capture mode for meson_exe (meson --internal exe) 2018-10-04 00:17:35 +03:00
Jussi Pakkanen ca4c8de09f
Merge pull request #4261 from rossburton/cross
WIP RFC gnome.py cross improvements
2018-09-28 12:56:40 -07:00
Nirbheek Chauhan 4a8210e81c dist: Warn if there are uncommitted changes in the repository
Closes https://github.com/mesonbuild/meson/issues/1977
2018-09-28 12:55:59 -07:00
Nirbheek Chauhan cbbab82b70 dist: Make usage of period in messages consistent
Having a period at the end of sentences in messages is confusing when
a file or path is being outputted, and is inconsistent when not.

This is part of an ongoing effort to fix this inconsistency across the
message outputs everywhere in Meson.
2018-09-28 12:55:59 -07:00
Ross Burton 1efcca637b gtkdochelper: show full command if it fails
Instead of showing just the command invoked, it's useful when debugging to also
show all of the arguments.
2018-09-28 17:18:24 +01:00
Marco Trevisan (Treviño) 5bec6c28e7 gnome: add support for `module_version`
gtk-doc for autotools has the concept of module version, that is used to define
the module install path and the devhelp2 basename.

Add a `module_version` parameter to gnome.gtkdoc to replicate the same behavior.
Updated the test checking that the install_dir is properly computed (if not
passed), and that the .devhelp2 file has proper name.

https://gitlab.gnome.org/GNOME/gtk-doc/blob/GTK_DOC_1_29/buildsystems/autotools/gtk-doc.make#L269
2018-09-21 09:13:21 +02:00
Jussi Pakkanen b86f2fd17f
Merge pull request #4016 from thiblahute/hotdoc
modules: Add an 'hotdoc' module
2018-08-29 21:18:26 +03:00
Thibault Saunier 378bd4df0e modules: Add an 'hotdoc' module
hotdoc: http://github.com/hotdoc/hotdoc/
2018-08-28 18:18:40 -03:00
Jussi Pakkanen fb770e1e3d Add support for custom dist scripts. 2018-08-27 23:35:29 +03:00
Christoph Reiter 69a65006f2 gtkdoc: set PATH on Windows when executing gtkdoc-scangobj. Fixes #3307
The code was adding the library paths to LD_LIBRARY_PATH, but that
doesn't work on Windows where they need to be added to PATH instead.

Move the environ handling into gtkdoc_run_check() and add paths to PATH
instead of LD_LIBRARY_PATH when on Windows.

This fixes the gtk-doc build for glib on Windows
(in case glib isn't installed already)
2018-08-07 04:42:03 -07:00
Jussi Pakkanen 543a49a29c
Merge pull request #3799 from rossburton/gtkdoc
scripts/gtkdochelper: add support for --run
2018-07-31 19:37:00 +03:00
Ross Burton d365bde555 scripts/gtkdochelper: add support for --run
gtkdoc-scangobj has a --run argument that specifies a wrapper to be used when
executing the GObject scanner.  Typically this can be libtool but it is also
useful in cross-compilation environments.

This patch adds support for this argument to the gtkdochelper so that tools
using the helper can pass --run if required.
2018-07-09 23:44:35 +01:00
Nirbheek Chauhan e8dae2b966 cross: Be more permissive about not-found exe_wrapper
We used to immediately try to use whatever exe_wrapper was defined in
the cross file, but some people generate the cross file once and use
it for several projects, most of which do not even need an exe wrapper
to build.

Now we're a bit more resilient. We quietly fall back to using
non-exe-wrapper paths for compiler checks and skip the sanity check.
However, if some code needs the exe wrapper, f.ex., if you run a built
executable using custom_target() or run_target(), we will error out
during setup.

Tests will, of course, continue to error out when you run them if the
exe wrapper was not found. We don't want people's tests to silently
"pass" (aka skip) because of a bad CI setup.

Closes https://github.com/mesonbuild/meson/issues/3562

This commit also adds a test for the behaviour of exe_wrapper in these
cases, and refactors the unit tests a bit for it.
2018-07-09 05:39:40 +05:30
Nirbheek Chauhan 416a00308f cross: Use ExternalProgram for cross-file exe_wrapper
We already have code to fetch and find binaries specified in a cross
file, so use the same code for exe_wrapper. This allows us to handle
the same corner-cases that were fixed for other cross binaries.
2018-07-09 04:09:46 +05:30
Niclas Moeslund Overby c70a051e93 java: remove manifest classpath from installed jar 2018-07-03 22:12:17 +02:00
Xavier Claessens 32c22ec492 gtkdoc: Use generated types file if there is one
Closes: #3773.
2018-06-26 22:58:45 +03:00
Jussi Pakkanen f3c01a3c4f
Merge pull request #3590 from mesonbuild/testcommand
Made install a top level Meson command.
2018-06-21 00:53:54 +03:00
Ross Burton 57b3f98586 gtkdochelper: pass CC to gtkdoc-scangobj
The helper is told what CC to use already, but doesn't pass it to
gtkdoc-scangobj.
2018-06-20 13:53:09 +00:00
Jussi Pakkanen 6cf79f86ee Made install a top level Meson command. 2018-06-18 22:02:56 +03:00
Nirbheek Chauhan d7466066e4 meson_install: Don't add DESTDIR to install_name
This was added accidentally. Includes a test for it.

Also fix a rebase error. The variable was defined incorrectly and was
overwritten with the correct value immediately afterwards.
2018-06-18 09:57:18 +00:00
Nirbheek Chauhan 96b7fdb723 macos: Rewrite install_name for dependent built libraries on install
On macOS, we set the install_name for built libraries to
@rpath/libfoo.dylib, and when linking to the library, we set the RPATH
to its path in the build directory. This allows all built binaries to
be run as-is from the build directory (uninstalled).

However, on install, we have to strip all the RPATHs because they
point to the build directory, and we change the install_name of all
built libraries to the absolute path to the library. This causes the
install name in binaries to be out of date.

We now change that install name to point to the absolute path to each
built library after installation.

Fixes https://github.com/mesonbuild/meson/issues/3038
Fixes https://github.com/mesonbuild/meson/issues/3077

With this, the default workflow on macOS matches what everyone seems
to do, including Autotools and CMake. The next step is providing a way
for build files to override the install_name that is used after
installation for use with, f.ex., private libraries when combined with
the install_rpath: kwarg on targets.
2018-06-18 06:33:23 +00:00
Nirbheek Chauhan 69f817b0e3 depfixer: Rewrite install_name for dylibs on install
The install name is used by consumers of the library to find the
library at runtime. If it's @rpath/libfoo.dylib, all consumers must
manually add the library path to RPATH, which is not what people
expect.

Almost everyone sets the library install name as the full path to the
library, and this is done at install time with install_name_tool.
2018-06-18 06:33:23 +00:00
Xavier Claessens c5cb65eb7c gtkdoc: Run gtkdoc-scangobj command from build directory
All paths in CFLAGS are relative to build_root, so current directory
must be there we invoking gtkdoc-scangobj.

Closes: #3379
2018-06-17 15:38:30 +03:00
Philip Chimento d9efee01d0 gettext: Install .mo files atomically
Without this, building a module in a Flatpak app manifest that is a
newer version of a module already present in the Flatpak runtime will
fail. (The Flatpak file system is a bunch of hard links to readonly
files, which can be replaced but not written to.)

This instead creates a temporary file in the same directory as the
destination (to avoid cross-device renaming errors) and atomically
renames the temporary file to the destination, replacing it instead of
rewriting it as shutil.copyfile() would do.
2018-06-07 00:18:21 +03:00
Xavier Claessens aa879b7f0c Fix issues found by flake8 2018-06-06 20:02:37 +00:00
Nirbheek Chauhan efa9b75d5d Set WINEPATH when running serialized executables
When the exe runner is `wine` or `wine32` or `wine64`, etc.
This allows people to run tests with wine.

Note that you also have to set WINEPATH to point to your custom
prefix(es) if your tests use external dependencies.

Closes https://github.com/mesonbuild/meson/issues/3620
2018-06-05 10:50:22 +00:00
Filipe Brandenburger 05c43cdcd1 Add 'install_mode' to all installable targets
This makes it possible to customize permissions of all installable
targets, such as executable(), libraries, man pages, header files and
custom or generated targets.

This is useful, for instance, to install setuid/setgid binaries, which
was hard to accomplish without access to this attribute.
2018-06-02 04:50:32 +00:00
Nirbheek Chauhan 0a035dea6d Set the meson command to use when we know what it is
Instead of using fragile guessing to figure out how to invoke meson,
set the value when meson is run. Also rework how we pass of
meson_script_launcher to regenchecker.py -- it wasn't even being used

With this change, we only need to guess the meson path when running
the tests, and in that case:

1. If MESON_EXE is set in the env, we know how to run meson
   for project tests.
2. MESON_EXE is not set, which means we run the configure in-process
   for project tests and need to guess what meson to run, so either
   - meson.py is found next to run_tests.py, or
   - meson, meson.py, or meson.exe is in PATH

Otherwise, you can invoke meson in the following ways:

1. meson is installed, and mesonbuild is available in PYTHONPATH:
   - meson, meson.py, meson.exe from PATH
   - python3 -m mesonbuild.mesonmain
   - python3 /path/to/meson.py
   - meson is a shell wrapper to meson.real
2. meson is not installed, and is run from git:
   - Absolute path to meson.py
   - Relative path to meson.py
   - Symlink to meson.py

All these are tested in test_meson_commands.py, except meson.exe since
that involves building the meson msi and installing it.
2018-06-01 19:20:04 +00:00
Filipe Brandenburger 4e0a417763 Revert "commandrunner: make run handle python options"
This reverts commit ab599b5733.
2018-06-01 07:22:41 +00:00
Martin Kelly ab599b5733 commandrunner: make run handle python options
Currently, commandrunner breaks when we give options to python because
it assumes python commands are in the form "python script.py", rather
than "python -u script.py" or "python -u -m module script.py". Extend it
to be more resilient and correctly parse python options.
2018-05-30 18:29:16 +00:00
Nirbheek Chauhan 9f616e98bf depfixer: Run install_name_tool only once while deleting rpaths 2018-05-24 14:38:28 +00:00
Nirbheek Chauhan a6c9f98c57 depfixer: We no longer run this as a script 2018-05-24 14:38:28 +00:00
Ryan Gonzalez 7e8c099387 Print message when using polkit 2018-05-18 17:12:24 +03:00
Ryan Gonzalez 60352521d1 Fix #3579: Wait for a permissions failure before trying to run pkexec 2018-05-18 17:12:24 +03:00
Ryan Gonzalez 559286a0da Support installation via polkit 2018-05-17 00:23:18 +03:00
Nirbheek Chauhan c1f275bfa6 gnome.gtkdoc: Allow passing file objects as xml_files
If we pass a source files() object, we will look for it in the build
directory, which is wrong. If we pass a build files() object (from
configure_file()), we will find it in the build directory, and then
try to copy it on top of itself in gtkdochelper.py getting a
SameFileError.

Add a test for it, and also properly iterate custom target outputs
when adding to content files.
2018-05-06 20:25:16 +05:30
Jussi Pakkanen d3ff7d44ab Made depfixer more robust on OSX. Closes #3493. 2018-05-01 12:10:25 +00:00
Filipe Brandenburger 8651d55c6a Add new builtin option --install-umask
This option controls the permissions of installed files (except for
those specified explicitly using install_mode option, e.g. in
install_data rules.)

An install-umask of 022 will install all binaries, directories and
executable files with mode rwxr-xr-x, while all data and non-executable
files will be installed with mode rw-r--r--.

Setting install-umask to the string 'preserve' will disable this
feature, keeping the permissions of installed files same as the files in
the build tree (or source tree for install_data and install_subdir.)
Note that, in this case, the umask used when building and that used when
checking out the source tree will leak into the install tree.

Keep the default as 'preserve', to show that no behavior is changed and
all tests keep passing unchanged.

Tested: ./run_tests.py
2018-04-18 11:44:54 -07:00
Jussi Pakkanen 7c37ca15f3 🤦🤦🤦 2018-04-14 22:41:24 +03:00
Jussi Pakkanen aed11affd3 Update depfixer to fix rpaths also on OSX. 2018-04-08 19:48:31 +03:00
Jussi Pakkanen 98267e104e
Merge pull request #3242 from thejk/coverage_targets
Use standalone coverage script for legacy targets
2018-04-02 20:08:30 +03:00
Sébastien Wilmet 51a1952172 gtkdochelper: print warnings
The GTK-Doc commands output was never printed, except in case of error.
So there was no way to see the warnings.

https://github.com/mesonbuild/meson/issues/2396
2018-04-02 19:49:22 +03:00
Jussi Pakkanen 9b2e533d87 Always build parser objects anew to avoid leaking old data. 2018-03-27 00:39:45 +03:00
Nirbheek Chauhan d012b5b997 Create a helper for checking if a string has a path component
This is used in a number of places, and in some places it is incomplete.
Use a helper to ensure it's used properly.
2018-03-19 23:45:43 +02:00