Commit Graph

36 Commits

Author SHA1 Message Date
Xavier Claessens dc329f0f04 interpreter: Add support for cargo subproject 2023-10-09 21:13:58 -04:00
Xavier Claessens 49e7e3b9cc Allow to fallback to cmake subproject
The method can be overridden by setting the `method` key in the wrap
file and always defaults to 'meson'. cmake.subproject() is still needed
in case specific cmake options need to be passed.

This also makes it easier to extend to other methods in the future e.g.
cargo.
2023-09-22 15:50:26 -04:00
Xavier Claessens fe9af72684 wrap: Use MESON_PACKAGE_CACHE_DIR as default packagecache path
Allow packagecache to contain already extracted directory to match what
some distro does with Cargo source packages in /usr/share/cargo/registry.

Note that there is no need to lock the cache directory because we
download into a temporary name and atomically rename afterward. It means
we could be downloading the same file twice, but at least integrity is
guaranteed.

Fixes: #12211
2023-09-05 09:05:24 +05:30
Philip Withnall 69131e7242 docs: Suggest using depth=1 by default for wrap-git
It saves bandwidth and disk usage on downloaded subprojects, and people
very rarely need more than the single commit they’re using.

Add `depth=1` to the `[wrap-git]` examples in the rest of the
documentation, to make it more likely that people will copy-and-paste it
into their `.wrap` files.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-07-13 08:14:41 -07:00
Paweł Marczewski 9061c3a52d wrap: Add support for applying a list of patch files
Co-authored-by: Xavier Claessens <xavier.claessens@collabora.com>
2022-06-07 06:43:39 -04:00
Xavier Claessens 3af39a463b Interpreter: Fallback when required is false but forcefallback is true 2021-04-26 17:04:57 +01:00
Jussi Pakkanen 474f4813c4 Capitalize "Meson" consistently as it is a proper name. [skip ci] 2021-01-31 19:49:20 +00:00
Jussi Pakkanen f72ee8e742 Rewrap long text lines in docs. [skip ci] 2021-01-30 16:19:59 +00:00
Antonin Décimo 39ede12aa5 Fix misspells
Signed-off-by: Antonin Décimo <antonin.decimo@gmail.com>
2021-01-13 12:53:10 -05:00
Paolo Bonzini 726b822054 dependency: support boolean argument "allow_fallback"
Sometimes, distros want to configure a project so that it does not
use any bundled library.  In this case, meson.build might want
to do something like this, where slirp is a combo option
with values auto/system/internal:

  slirp = dependency('', required: false)
  if get_option('slirp') != 'internal'
    slirp = dependency('slirp',
                       required: get_option('slirp') == 'system')
  endif
  if not slirp.found()
    slirp = subproject('libslirp', ...) .variable('...')
  endif

and we cannot use "fallback" because the "system" value should never
look for a subproject.

This worked until 0.54.x, but in 0.55.x this breaks because of the
automatic subproject search.  Note that the desired effect here is
backwards compared to the policy of doing an automatic search on
"required: true"; we only want to do the search if "required" is false!

It would be possible to look for the dependency with  `required: false`
and issue the error manually, but it's ugly and it may produce an error
message that looks "different" from Meson's.

Instead, with this change it is possible to achieve this effect in an
even simpler way:

  slirp = dependency('slirp',
                     required: get_option('slirp') != 'auto',
                     allow_fallback: get_option('slirp') == 'system' ? false : ['slirp', 'libslirp_dep'])

The patch also adds support for "allow_fallback: true", which is
simple and enables automatic fallback to a wrap even for non-required
dependencies.
2020-10-08 12:24:07 +02:00
Xavier Claessens f1edb83bb6 doc: Small tweaks to fallback documentation [skip ci] 2020-07-09 01:35:03 +03:00
Xavier Claessens 1993fb602e doc: Improve documentation of [provide] section in wrap files
Explicitly document the behaviour of dependency('foo-1.0', required:
false).
2020-07-05 18:02:20 +03:00
Xavier Claessens 95c3fee47d wrap: Update doc to give dependency_names example first 2020-07-01 09:51:57 -04:00
Xavier Claessens fba796cf13 Fix typo: coma->comma 2020-07-01 09:51:57 -04:00
Xavier Claessens f08eed37cb find_program: Fallback if a wrap file provide the program name
We don't need the legacy variable name system as for dependency()
fallbacks because meson.override_find_program() is largely used already,
so we can just rely on it.
2020-07-01 09:51:57 -04:00
Xavier Claessens 71804e56eb wrap: Add special 'dependency_names' key in [provide] section
The value for that key must be a coma separated list of dependecy names
provided by that subproject, when no variable name is needed because the
subproject uses override_dependency().
2020-07-01 09:51:57 -04:00
Xavier Claessens 2a7f72885f wrap: Add 'provide' section 2020-07-01 09:51:44 -04:00
Xavier Claessens 4a371c97f4 wrap: Apply patch even in VCS cases 2020-06-30 19:42:43 +03:00
Xavier Claessens e353b2e8d4 wrap: Add patch_directory support
Copy a tree instead of extracting an archive.

Closes: #7216
2020-06-21 23:39:12 +03:00
Daniel Mensinger 5e5895814f
wrap: Updated docs 2020-04-25 16:03:16 +02:00
Xavier Claessens a6239d5100 wrap: Add fallback urls
It can happen that a server is temporaly down, tarballs often have
many mirrors available so we should be able to add at least one fallback
mirror in wrap files.
2020-04-13 13:29:33 +03:00
Vadim Zhukov f3199edaf8 mention lack of up-to-date dependencies explicitly [skip ci]
Requested by scivision@
2020-01-08 13:22:05 +02:00
Vadim Zhukov dd5b374e99 [skip ci] Use more up-to-date wording for package managers
Most of the OSes Meson supports actually do have package managers,
and at least some of them are not harder to use than Linux ones.
2020-01-08 13:22:05 +02:00
Eli Schwartz 1238b16c8e docs: major revamp of the Wrap format description [skip ci]
The current state of this manual can best be described as... confusing.
The flow of the page jumps from one topic to the next without ever
actually telling you what you can do, so it's almost impossible to keep
track of what is supported, while instead going into involved derails
about why you'd want to use a wrap, and scattering some (but not all)
information throughout the promo material.

The most important changes this rewrite does (aside from turning
supported keys into a list of bullet points) is adding documentation for
the lead_directory_missing property, and mentioning that wrap-hg and
wrap-svn exist. I had to find out all of this by reading the source code
implementation, so let's try to save other people the effort.

Other miscellania: as per @jpakkane's comment, take the opportunity to
point out that wrap dependencies are also useful on Linux, in cases
where your distro doesn't have a new enough version of "$dependency".
It's a fairly common problem outside of select rolling-release distros,
so well worth mentioning.
2019-11-08 23:29:54 +02:00
Christoph Weiss 0008b326ff Add support for `depth` option in wrap-git
This allows cloning subprojects shallowly.  It works recursively for a
subproject's submodules in case `clone-recursive` is set to `true`.
2019-09-29 20:47:59 +03:00
Kostiantyn Ponomarenko 1309b47cbb doc: Improve wrap and subproject documentation [skip ci]
Make docs more user friendly, and add missing information.

Signed-off-by: Kostiantyn Ponomarenko <konstantin.ponomarenko@gmail.com>
2018-10-21 23:26:14 +03:00
Xavier Claessens d6fba7f01c wrap: Allow source and patch to be local files
It is sometimes important to be able to build projects offline, in that
case subproject tarballs and patches could be shipped directly within
the project's repository.
2018-10-17 21:56:49 -04:00
Kostiantyn Ponomarenko ddc15e1bba Docs: fix 'Wrap-dependency-system-manual' to be more consistent [skip ci] 2018-09-30 12:22:19 -07:00
Andrei Alexeyev 67cc636e53 Add 'clone-recursive' option for git wraps
This causes Meson to clone the repo with the --recursive flag, pulling
all of the submodules automatically.
2018-09-16 14:57:56 +03:00
Jussi Pakkanen 0af029e08c Wrap-git files can have tags as well as commit ids. [skip ci] 2018-04-25 21:01:59 +03:00
David Pérez-Suárez c647db96d5 Small changes for syntax hightlight 2017-11-06 20:55:46 +02:00
Jussi Pakkanen f19ae54974 Rewrapped lines of a few more files. 2017-08-21 00:08:28 +03:00
Sven Steinbauer 130d75bee5 Fix missing backticks 2017-05-05 23:16:05 +02:00
Elliott Sales de Andrade 40d7704cd5 doc: Use https links wherever possible. 2017-05-03 16:20:53 -04:00
Elliott Sales de Andrade b80d40c287 doc: Capitalize things more consistently.
Upper or lower case depending on the official spelling, or the more
consistent usage.
2017-05-03 16:20:51 -04:00
Thibault Saunier b371875e02 docs: Import the website and wiki and build with hotdoc
This allows us to more easily have the documentation in sync with
the source code as people will have to document new features etc
right at the time where they implement it.
2017-04-26 17:56:33 +03:00