aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/scripts
AgeCommit message (Collapse)AuthorFilesLines
2018-05-01Made depfixer more robust on OSX. Closes #3493.Jussi Pakkanen1-4/+10
2018-04-18Add new builtin option --install-umaskFilipe Brandenburger1-8/+33
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-14🤦🤦🤦Jussi Pakkanen2-8/+9
2018-04-08Update depfixer to fix rpaths also on OSX.Jussi Pakkanen2-11/+52
2018-04-02Merge pull request #3242 from thejk/coverage_targetsJussi Pakkanen1-73/+121
Use standalone coverage script for legacy targets
2018-04-02gtkdochelper: print warningsSébastien Wilmet1-0/+2
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-03-27Always build parser objects anew to avoid leaking old data.Jussi Pakkanen1-3/+5
2018-03-19Create a helper for checking if a string has a path componentNirbheek Chauhan1-2/+3
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-19Generate coveragereport directory for gcovr html targetJoel Klinghed1-0/+2
2018-03-19Exclude subprojects when doing coverageJoel Klinghed1-2/+12
Restore subproject exclusion for the html coverage report that existed in the ninja backend legacy target. Also exclude subprojects for the gcovr generated reports.
2018-03-19Use standalone coverage script for legacy targetsJoel Klinghed1-73/+109
ninja coverage -> generate all possible reports (text, xml, html) depending on gcovr and/or lcov/genhtml availability. ninja coverage-html -> generate only html report ninja coverage-xml -> generate only xml report ninja coverage-text -> generate only text report Make all targets phony, the old legacy rules where just annoying as you would have to remove the old report before being able to generate a new one. ninja coverage succeeds if it can generate at least one report. ninja coverage-* only succeeds if it can generate the requested report
2018-03-15Fix FileNotFoundError when restorecon unavailableFabrice Fontaine1-0/+4
Fixes: - http://autobuild.buildroot.net/results/d5dcdfdfab3503fdc387f99e68267972a38c417d Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2018-03-13Merge pull request #3145 from thejk/gcovrJussi Pakkanen1-4/+17
Support gcovr >= 3.1 and add gcovr html report as fallback
2018-03-12fixup! Allow gcovr >= 3.1 to be used to generate html coverage reportJoel Klinghed1-2/+2
Rename gcovr_3_1 to gcovr_new_rootdir
2018-03-12fixup! Fix coverage-xml and coverage-text targets for gcovr >= 3.1Joel Klinghed1-2/+2
Rename gcovr_3_1 to gcovr_new_rootdir
2018-03-12Use specific exception types instead of ExceptionAleksey Filippov1-1/+1
2018-03-11Do not use bare except [flake8]Aleksey Filippov1-1/+1
Use more specific exception types where appropriate. This patch does not change bare except calls if exception is re-raised.
2018-02-27Allow gcovr >= 3.1 to be used to generate html coverage reportJoel Klinghed1-1/+9
Modern gcovr includes html generation support so if lcov and genhtml are not available fallback to gcovr. Kept lcov and genhtml as default so to not surprise existing users of coverage-html with the different output of gcovr. gcovr added html support in 3.0 but as there already is a test for 3.1 because of the changes to -r/--rootdir I opted to only allow html generation for >= 3.1 to keep things simple.
2018-02-27Fix coverage-xml and coverage-text targets for gcovr >= 3.1Joel Klinghed1-3/+8
In gcovr 3.1 the -r/--rootdir argument changed meaning causing reports generated with gcovr 3.1 to not find the source files and look for *.gcda in the whole source tree rather than the build dir. So, detect gcovr version and if 3.1 give build_root to -r instead of source_root.
2018-02-08Remove all files outside the source directory from the coverage reportHenk van der Laan1-10/+7
Cuurently, a set of directories is filtered out from the output based on the location of system includes on most common linux distro's. This commit does away with the blacklist and implements a whitelist approach: only the files inside the source root are shown.
2018-02-05Fix install_subdir() installation messageAleksey Filippov1-5/+5
Print full destination path in 'Installing subdir ...' message, including DESTDIR, consistent with other installation functions. Use separate dst_dir and full_dst_dir variables to avoid mixing up the order in the future and make code more readable. Closes #3006.
2018-02-04Refactor and simplify install_subdir()Aleksey Filippov1-18/+36
- Pass exclude_files and exclude_directories relative to src_dir, same as specified by user and documented in public install_subdir(). - Make do_copydir() interface similar to do_copyfile(): install src_dir contents to dst_dir. - Remove src_prefix/src_dir code, it adds confusion and duplicates arguments. Use single src_dir parameter instead. - Make callers specify that src_dir contents should be installed under dst_dir/basename(src_dir) if necessary. - Use os.path.relpath() instead of string manipulations on paths. - Add documentation to do_copydir(): specify types and add usage example.
2018-01-30Use os.path: basename() and dirname() instead of split()Aleksey Filippov2-9/+9
According to Python documentation[1] dirname and basename are defined as follows: os.path.dirname() = os.path.split()[0] os.path.basename() = os.path.split()[1] For the purpose of better readability split() is replaced by appropriate function if only one part of returned tuple is used. [1]: https://docs.python.org/3/library/os.path.html#os.path.split
2018-01-30Echo coverage report uris after generation. Fixes #2805.Félix Piédallu1-1/+10
2018-01-14Avoid worrying about encodings when capturing child program outputIlia Mirkin1-5/+9
The output may be a binary data stream, not subject to any locale encoding. This avoids any encoding errors that might arise as a result. Also fixes github issue #2868.
2018-01-07gtkdochelper: Set LD_LIBRARY_PATH from -Wl,-rpath argumentsTing-Wei Lan1-3/+15
gnome.gtkdoc uses -Wl,-rpath to ensure the scanner executable built by gtkdoc-scangobj will load shared libraries from the correct directories. However, FreeBSD configures its linker to use --enable-new-dtags by default, which converts RPATH to RUNPATH. If users have LD_LIBRARY_PATH environment variable set, RUNPATH will be overrided by LD_LIBRARY_PATH and libraries will be loaded from wrong directories, causing undefined symbol error when running the executable. In order to solve the problem, we have to prepend directories specified with -Wl,-rpath to LD_LIBRARY_PATH to avoid relying on the deprecated RPATH attribute.
2017-12-30The scanbuild script does now also look for executables with a version in ↵snsmac1-1/+25
the name
2017-12-17Exclude llvm/clang lib headers from test coveragesnsmac1-0/+1
Excludes the /usr/lib/llvm-*/include/ directory from coverage. This directory is used on Ubuntu for the libclang-dev packages
2017-12-09Check for more errors when executing subprocess. (#2746)behlec1-4/+10
2017-12-07Improve error handling when failing to execute program. (#2743)behlec1-1/+4
2017-11-21Review fixes.Jussi Pakkanen1-5/+6
2017-11-20Replaced sys.executable use with the mesonlib equivalent.Jussi Pakkanen1-9/+5
2017-11-19Silence failed restorecon calls when $DESTDIR is setZbigniew Jędrzejewski-Szmek1-1/+3
This avoids hundres of warnings like: Warning no default label for /var/tmp/instroot.hUbtYJ/path/to/some/binary $DESTDIR is usually set to a temporary path, in which case the path is unknown to selinux. For that case we could just skip the restorecon calls. But sometimes it is used with a path to container. In that case, most of the time, selinux has no context for that path. But we can't rule that out somebody added custom context rules for the container. So let's still call restorecon, but silence the warning.
2017-11-11Pass restorecon file list through stdin.Elliott Sales de Andrade1-5/+7
This should avoid any issues with command-line argument limits.
2017-11-09Coalesce restorecon calls into one.Elliott Sales de Andrade1-16/+12
Fixes #2596.
2017-11-07gtkdoc: Pass the linker down to gtkdoc-scangobjXavier Claessens1-1/+2
Closes #2540
2017-10-19MSI: Fix regenerate with visual studioNiklas Claesson1-3/+5
Fixes #2461
2017-10-07Create the .po file with the `update_po` subcommand if it doesn't existCorentin Noël1-1/+4
2017-09-23Made man page gzip creation deterministic. Closes #2363.Jussi Pakkanen1-1/+3
2017-09-14Merge pull request #2216 from ebassi/yelp-linguasJussi Pakkanen1-0/+4
Support LINGUAS for gnome.yelp() languages
2017-09-04install: Also ignore PermissionError for selinuxNirbheek Chauhan1-1/+1
When the user does not have permissions to run `selinuxenabled`, a PermissionError is raised instead of FileNotFoundError. Closes https://github.com/mesonbuild/meson/issues/2257
2017-08-20Remove leftover debug print statement in meson_install.pyGabríel Arthúr Pétursson1-1/+1
2017-08-18Re-use gettext.read_linguas in yelphelperEmmanuele Bassi1-16/+1
2017-08-18Support LINGUAS for gnome.yelp() languagesEmmanuele Bassi1-0/+19
Listing all languages inside meson.build for the Yelp-based manual localisation is error-prone, and it also requires parsing and modifying Meson files from external tools. Just like we do for i18n, we can use an ancillary `LINGUAS` file in the help source sub-directory to list all the help languages.
2017-08-18Make all functionality invokable via the main Meson binary,Jussi Pakkanen2-8/+18
which can be a Windows .exe file.
2017-08-11Exclude system sources from test coverageStefan Sonski1-0/+1
Exclude /usr/src/ from code coverage, this is included for e.g. gtest/gmock.
2017-08-06Allow excluding files from `install_subdir`Elliott Sales de Andrade1-5/+15
The install_subdir command now accepts a new `exclude` keyword argument that allows specified files to be excluded from the installed subdirectory.
2017-08-01Remove directories created by ninja installPeter Hutterer2-17/+50
Introduce a DirMaker class that disassembles the path up to '/' and stores all directories in a list. That list is in creation order and pre-existing directories are ignored, i.e. creating the two paths '/usr/share/foo/bar/baz' and '/usr/share/foo/bar/boo' is stored as [ '/usr/share/foo', '/usr/share/foo/bar', '/usr/share/foo/bar/baz', '/usr/share/foo/bar/boo' ] This is on the assumption that /usr/share already existed. After all files have been installed, the list of created directories is appended in reverse order to the install log. The uninstall script then triggers rmdir on all directories. If a custom install script drops files into the directories, removing those will fail. This matches the current expectation, see the existing warning "Remember that files created by custom scripts have not been removed." Unfortunately, this makes the behavior on uninstall inconsistent. Assuming a non-existing prefix, ninja install && ninja uninstall removes all traces of the install. However, ninja install && ninja install && ninja uninstall removes the files only, not the directories as they already existed. This could be fixed by just unconditionally removing any (emtpy) directories that we drop files into, at the risk of removing system directories if empty. For example, one could imagine /etc/foo.conf.d/ to be removed in that case if it is empty. https://github.com/mesonbuild/meson/issues/2032
2017-08-01meson_install: rename 'data' to 'd' for consistencyPeter Hutterer1-3/+3
All other functions call it 'd', let's do it here too
2017-07-31install: restore the SELinux context on installPeter Hutterer1-0/+24
Try to restore the context for SELinux. If we fail on running 'selinuxenabled', quietly ignore the error and continue. If we fail on the actual restorecon call, we print a message but disable SELinux - chances are high that if one restorecon fails, others will too and that's likely a system setup issue. Fixes #1967