summaryrefslogtreecommitdiff
path: root/mesonbuild/msubprojects.py
AgeCommit message (Collapse)Author
2021-04-26Add subprojects purge wrap-git coverageTristan Partin
2021-04-26Add 'subprojects purge' commandTristan Partin
This will help facilitate cache busting in certain situations, and replaces hand-rolled solutions of writing a length command to remove various files/folders within the subprojects directory.
2021-03-28msubprojects: wrap-file should be re-extracted with --resetXavier Claessens
When using --reset we should guarantee that next reconfigure will pick the latest code. For wrap-file we have no way to know if the revision changed, so we have to delete the source tree and extract again. It is unlikely that user has local changes in non-git subprojects, and --reset is known to be dangerous.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz
performed by running "pyupgrade --py36-plus" and committing the results
2020-12-07msubprojects: Ignore worktrees when checking outNirbheek Chauhan
Otherwise it's not possible to share git subprojects via worktrees when creating a worktree of a git repository that uses meson subprojects. The downside is that the user needs to be careful while adding commits to each tree's index.
2020-11-20use real pathlib moduleDylan Baker
We added the _pathlib module to work around defeciencies in python 3.5's implementation, since we now rely on 3.6 lets drop this
2020-10-13Merge wraps from subprojects into wraps from main projectXavier Claessens
wraps from subprojects are now merged into the list of wraps from main project, so they can be used to download dependencies of dependencies instead of having to promote wraps manually. If multiple projects provides the same wrap file, the first one to be configured wins. This also fix usage of sub-subproject that don't have wrap files. We can now configure B when its source tree is at `subprojects/A/subprojects/B/`. This has the implication that we cannot assume that subproject "foo" is at `self.subproject_dir / 'foo'` any more.
2020-10-13msubprojects: Handle wrap-file to wrap-git caseXavier Claessens
2020-10-13msubprojects: Handle change of URL in wrap-gitXavier Claessens
2020-10-04pathlib: Fix resolve() by overriding it in Python 3.5Daniel Mensinger
2020-09-18msubprojects: Fix unit tests on WindowsXavier Claessens
2020-09-18msubprojects: Revert back to rev-parse instead of --show-currentXavier Claessens
It is undocumented in manpage, but --show-current is new in git 2.22 which is too recent for distros we want to support like Ubuntu 18.04.
2020-09-18msubprojects: Stop trying to guess subproject typeXavier Claessens
It was done to include them in `meson subprojects foreach` without --types argument, but it's better to special case missing --types and include wraps that have type=None too. It was a bad idea because that was messing them in `meson subprojects update`, now they are ignored by that command.
2020-09-18msubprojects: Avoid useless "no local changes to save" messageXavier Claessens
2020-09-18msubprojects: Fix checkout of new tag/branchXavier Claessens
If revision is a tag that does not exist locally, `git fetch origin <revision>` won't create it and checkout will fail. Using --refmap ensures that references exists locally.
2020-09-18msubprojects: Fix --types default valueXavier Claessens
2020-09-10msubprojects: Allow comma separated list of typesXavier Claessens
2020-09-10msubprojects: Fix review commentsXavier Claessens
2020-09-10git: Use Popen_safe to avoid encoding issuesXavier Claessens
2020-09-10msubprojects: Rework update commandXavier Claessens
Besides refactoring code into smaller functions: - Makes the --rebase behaviour the default for consistency: it was already rebasing when current branch and revision are the same, it is less confusing to rebase when they are different too. - Add --reset mode that checkout the new branch and hard reset that branch to remote commit. This new mode guarantees that every subproject are exactly at the wrap's revision. - Local changes are always stashed first to avoid any data loss. In the worst case scenario the user can always check reflog and stash list to rollback. Fixes: #7526
2020-09-10msubprojects: Return failure if some commands failedXavier Claessens
If the command fails on some subprojects continue with the rest but return non-0 code. This is useful for CI scripts to ensure it tests latest code instead of old cached code in case of network error or something.
2020-09-10msubprojects: Stash changes before checkoutXavier Claessens
2020-09-10msubprojects: Support git subprojects with no wrap fileXavier Claessens
User could have cloned manually a subproject.
2020-09-10msubprojects: Use less cryptic "git branch --show-current" commandXavier Claessens
It describes well what it does, compared to obscure "rev-parse".
2020-09-10msubprojects: Add --type argumentXavier Claessens
It is often desired to only update git repositories and not pull files from wrapdb.
2020-09-10msubprojects: Use wrap.Resolver() to load all PackageDefinitionXavier Claessens
Besides being simpler, it has the advantage of picking directories that don't have a .wrap file assotiated.
2020-03-03Cherry-picking - (rm python2 % add python3 .format) (#6725)Michael Brockus
2020-02-20msubprojects: We return a string from git() nowNirbheek Chauhan
Fixes https://github.com/mesonbuild/meson/issues/6651
2020-01-22Move git helper out into mesonlib for reuseNirbheek Chauhan
Reuse the git helper for `meson wrap` and `meson subprojects` so we don't need to maintain the same git-colors-on-windows workarounds in multiple places.
2020-01-22msubprojects: Rename 'git' to 'git_output'Nirbheek Chauhan
No functional changes. Split out from the next commit for ease of reading.
2019-12-05Fix 'meson subprojects foreach' when command returns non-zero exit codeAntonio Ospite
The 'output' field of the subprocess.CalledProcessError exception is valid only when subprocess.check_output() is called, trying to access it after calling subprocess.check_call() results in an unwanted exception when commands return non-zero exit code, e.g.: ----------------------------------------------------------------------- $ meson subprojects foreach false Executing command in ./subprojects/sqlite-amalgamation-3250100 -> Not downloaded yet Executing command in ./subprojects/gstreamer Traceback (most recent call last): File "/home/ao2/meson/meson/mesonbuild/msubprojects.py", line 177, in foreach subprocess.check_call([options.command] + options.args, cwd=repo_dir) File "/usr/lib/python3.7/subprocess.py", line 363, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['false']' returned non-zero exit status 1. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/ao2/meson/meson/mesonbuild/mesonmain.py", line 129, in run return options.run_func(options) File "/home/ao2/meson/meson/mesonbuild/msubprojects.py", line 248, in run options.subprojects_func(wrap, repo_dir, options) File "/home/ao2/meson/meson/mesonbuild/msubprojects.py", line 180, in foreach out = e.output.decode().strip() AttributeError: 'NoneType' object has no attribute 'decode' ----------------------------------------------------------------------- Use subprocess.check_output() instead and behave more like git commands in handling stderr. This makes it possible to actually run commands on all subprojects allowing them to fail on some subprojects and succeed on others. Also catch the case of missing commands and print an error message in this case as well.
2019-11-28wrap: Redirect stdin to DEVNULL (again)Nirbheek Chauhan
Same fix as e7b25018c4715e538234d4ba51e32194b4757388, was accidentally missed when this code was rewritten.
2019-06-06cmake: moved subprojects into the CMake moduleDaniel Mensinger
2019-06-03subproject: fix update_svnMarkus Theil
Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
2019-04-01Add 'meson subprojects foreach' commandAntonio Ospite
Sometimes it is convenient to run an arbitrary command (e.g. 'git diff') on all subprojects. Add a 'meson subprojects foreach' command to take care of that. For this command the common argument 'subprojects' does not make sense, so only add '--sourcedir' and cover the case of a missing options.subprojects in run().
2019-03-11Fix git wraps with submodulesAndrei Alexeyev
* If clone-recursive is specified, populate submodules only after the specified revision/branch has been checked out. Fixes #4996 * Update submodules recursively on `meson subprojects update`
2018-12-02Add 'meson subprojects download' commandXavier Claessens
2018-12-02Add 'meson subprojects checkout' commandXavier Claessens
2018-12-02Add 'meson subprojects update' commandXavier Claessens
This is inspired by gst-build's git-update script.