aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/environment.py
AgeCommit message (Collapse)AuthorFilesLines
2023-02-06micro-optimize: define typing-only objects in TYPE_CHECKINGEli Schwartz1-2/+3
Union types that exist solely for use as annotations don't need to be created in normal runs.
2023-02-06treewide: add future annotations importEli Schwartz1-0/+1
2023-02-06Revert "debug cygwin CI"Eli Schwartz1-1/+0
This reverts commit 79d7891746a7864a1407d48eac8a753b225ec6c3. This debug print probably should not have ended up live. Moreover, the function it debugs is, surprisingly, called rather often. Adding I/O to it causes it to begin to noticeably lag, on the scale of adding actual *minutes* to a setup run. Fixes #11322
2022-12-11debug cygwin CIEli Schwartz1-0/+1
2022-12-07Remove useless EmptyExternalProgramXavier Claessens1-5/+3
It is only used by Environment.get_exe_wrapper() and every callers were handling None already. Type annotation was wrong, it already could return None for the case an exe wrapper is needed but none is provided.
2022-11-30pylint: enable the set_membership pluginDylan Baker1-2/+2
Which adds the `use-set-for-membership` check. It's generally faster in python to use a set with the `in` keyword, because it's a hash check instead of a linear walk, this is especially true with strings, where it's actually O(n^2), one loop over the container, and an inner loop of the strings (as string comparison works by checking that `a[n] == b[n]`, in a loop). Also, I'm tired of complaining about this in reviews, let the tools do it for me :)
2022-11-24Fix various spelling errorsDavid Robillard1-1/+1
Found with codespell.
2022-10-25Fix native compilation on ARM64 WindowsGustavoLCR1-19/+3
Move `detect_native_windows_arch()` to `mesonlib/universal.py` and rename it to `windows_detect_native_arch()` Use `IsWow64Process2()` to detect native architecture if available Use native `vcvarsarm64.bat` to initialize vsenv if available
2022-09-19pylint: enable consider-using-inDylan Baker1-1/+1
2022-09-19compilers: don't use instance checks to determine propertiesEli Schwartz1-2/+2
In various situations we want to figure out what type of compiler we have, because we want to know stuff like "is it the pgi one", or "does it use msvc style". The compiler object has this property already, via an API specifically designed to communicate this info, but instead we performed isinstance checks on a compiler class. This is confusing and indirect, and has the side effect of requiring more imports everywhere. We should do away with it.
2022-06-27dependencies: update llvm versionsDylan Baker1-1/+3
15 is the current snapshot version, 13 and 14 are released.
2022-04-30pkgconfig: Use EnvironmentVariables to build PKG_CONFIG_* envXavier Claessens1-1/+1
The new get_env() method that returns an EnvironmentVariables object will be needed in next commit that will pass it to CustomTarget. This has the side effect to use the proper os specific path separator instead of hardcoding `:`. It is the obvious right thing to do here, but has caused issues in the past. Hopefully issues have been fixed in the meantime. If not, better deal with fallouts than keep doing the wrong thing forever.
2022-03-07merge various TYPE_CHECKING blocks into oneEli Schwartz1-3/+1
A bunch of files have several T.TYPE_CHECKING blocks that each do some things which could just as well be done once, with a single `if` statement. Make them do so.
2022-02-28Change jar() default install dirTristan Partin1-0/+4
The previous install dir seemed incorrect when looking at various Linux distributions.
2021-11-01coverage generator: obey the documentation and only generate supported outputsEli Schwartz1-4/+4
We say: > If version 4.2 or higher of the first is found, targets coverage-text, > coverage-xml, coverage-sonarqube and coverage-html are generated. But this is totally untrue. Make it true, by actually checking (and not generating broken coverage commands when older versions of gcovr are found). Fixes #9505
2021-10-10Fix typos discovered by codespellChristian Clauss1-3/+3
2021-10-04fix extra whitespaceEli Schwartz1-1/+0
discovered via flake8 --select E303
2021-09-24pylint: check for duplicate importsDylan Baker1-1/+0
I ran into one of these from LGTM, and it would be nice if pylint could warn me as part of my local development process instead of waiting for the CI to tell me.
2021-08-30environment: correctly handle cpu value aarch64_beDylan Baker1-1/+7
Fixes #9191
2021-08-30environment: add ppc -> ppc64 for aix to detect_cpuDylan Baker1-0/+4
This seems like an oversight, that we'd replace ppc with ppc64 on AIX for the cpu_family, but not for the specific cpu.
2021-08-30environment: Add a few type annotationsDylan Baker1-6/+4
These are just annotations in code that I'm working for this series
2021-08-27environment: Add correct annotation for wrap_resolverDylan Baker1-1/+2
2021-08-20environment: add annotations and fix get_meson_commandDylan Baker1-3/+7
It is theoretically possible for the command to be None so we should handle that.
2021-08-20environment: add some missing annotationsDylan Baker1-5/+5
2021-07-05more f-strings too complex to be caught by pyupgradeEli Schwartz1-2/+2
2021-06-25typing: Annotate compilers.detectDaniel Mensinger1-1/+1
2021-06-25Split compiler detection from EnvironmentDaniel Mensinger1-1363/+5
This moves all the compiler detection logic into the new compilers.detect module. This dramatically reduces the size and complexity of Environment.
2021-06-14environment: Add LLVM suffixes for 11 and 12Ting-Wei Lan1-2/+4
Both LLVM 11 and 12 are stable releases. Note that FreeBSD changes the way to version LLVM executables in LLVM 10.
2021-06-09typing: Fully annotate run_project_tests.pyDaniel Mensinger1-2/+2
2021-06-07environment: Add detection logic for cythonDylan Baker1-0/+28
2021-04-12dependency: Add JDK system dependencyTristan Partin1-2/+3
The JDK system dependency is important for detecting JDK include paths that may be useful when developing a JNI interface.
2021-04-06environment: simplify handling of native files with no cross filesDylan Baker1-7/+3
Instead of treating native files as always being for the build machine, and then copying them to the host machine, treat them as for the build machine only when a cross file is also present
2021-04-06environment: fix typos in commentDylan Baker1-1/+1
2021-04-06environment: don't load project options from a native file in a cross buildDylan Baker1-1/+3
2021-04-06environment: Add some comments to the _load_machine_file_options methodDylan Baker1-2/+11
2021-04-01environment: get environment variables for both host and build machinesDylan Baker1-6/+2
Fixes #8605
2021-03-30Split environment variable and command line cflagsDylan Baker1-1/+22
They are supposed to have different behavior. The environment variables apply to both the compiler and linker when the compiler acts as a linker, but the command line ones do not. Fixes #8345
2021-03-19split program related classes and functions out of dependenciesDylan Baker1-3/+3
Dependencies is already a large and complicated package without adding programs to the list. This also allows us to untangle a bit of spaghetti that we have.
2021-03-14ninjabackend: Use rsp_file_syntax methodDylan Baker1-1/+1
This also makes us of the new enum value in the backend, for better type saftey.
2021-03-08remove unused environment functionEli Schwartz1-4/+0
The script dir is never really used since meson --internal handles this. The last remaining use of the raw script dir got removed in commit 522392e7553823e6b3ac38cadc4fbee72eae9540.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz1-8/+8
performed by running "pyupgrade --py36-plus" and committing the results
2021-03-04various python neatness cleanupsEli Schwartz1-2/+2
All changes were created by running "pyupgrade --py3-only --keep-percent-format" and committing the results. I have not touched string formatting for now. - use set literals - simplify .format() parameter naming - remove __future__ - remove default "r" mode for open() - use OSError rather than compatibility aliases - remove stray parentheses in function(generator) scopes
2021-02-18environment: Allow setting build options in cross filesDylan Baker1-4/+11
This did work previously, so we need to let it continue working. I'm proposing removing it in 0.60 because the correct solution has always worked. I've also been a bit more defensive here, and made setting `subproject:opt = foo` in the machine files an error, as we have `[subproject:built-in options]` or `[subproject:project options]` for that.
2021-02-17Environment: Fix passing envrionment variables CPPFLAGS and CFLAGSDylan Baker1-7/+12
Or other language flags that use CPPFLAGS (like CXXFLAGS). The problem here is actually rather simple, `dict.setdefault()` doesn't work like I thought it did, I thought it created a weak entry, but it actually is equivalent to: ```python if k not in dict: dict[k] = v ``` Instead we'll use an intermediate dictionary (a default dictionary actually, since that makes things a little cleaner) and then add the keys from that dict to self.options as applicable. Test case written by Jussi, Fix by Dylan Co-authored-by: Jussi Pakkanen Fixes: #8361 Fixes: #8345
2021-02-03environment: fix typosAli Alnubani1-4/+4
Fixed typos and reworded some sentences. Signed-off-by: Ali Alnubani <alialnu@nvidia.com>
2021-01-23split mesonlib into a packageDylan Baker1-2/+2
Currently mesonlib does some import tricks to figure out whether it needs to use windows or posix specific functions. This is a little hacky, but works fine. However, the way the typing stubs are implemented for the msvcrt and fnctl modules will cause mypy to fail on the other platform, since the functions are not implemented. To aleviate this (and for slightly cleaner design), I've split mesonlib into a pacakge with three modules. A universal module contains all of the platform agnositc code, a win32 module contains window specific code, a posix module contains the posix specific code, and a platform module contains no-op implementations. Then the package's __init__ file imports all of the universal functions and all of the functions from the approriate platform module, or the no-op versions as fallbacks. This makes mypy happy, and avoids `if`ing all over the code to switch between the platform specific code.
2021-01-11make some Environment methods protectedDylan Baker1-5/+5
they're really not public methods, they'r only meant to be called from the initializer. Let's mark them as such.
2021-01-11clean up get_env_var_pairDylan Baker1-14/+8
This function returns both the name and the value, but we never actually use the name, just the value. Also make this module private. We really want to keep all environment variable reading in the Environment class so it's done once up front. This should help with that goal.
2021-01-11move get_env_var_pair to environmentDylan Baker1-4/+30
This is only used in environment, so it should live there too.
2021-01-11boost: default machine file properties to env var valuesDylan Baker1-0/+21
This both moves the env reading to configuration time, which is useful, and also simplifies the implementation of the boost dependency. The simplification comes from being able to delete basically duplicated code since the values will be in the Properties if they exist at all.