This is a workaround for a Meson bug that incorrectly trigger
reconfigure when files change in build directory. This commit can be
reverted once GStreamer depends on Meson >=0.54.0.
See https://github.com/mesonbuild/meson/pull/6770Fixes: #85
When building with -Ddefault_library=static, also build a single library
containing all built plugins. Any external dependencies are still
dynamically linked.
A monolithic library is easier to distribute, and in some envs like
Android is required.
Having vaapi decoders/encoders accidentally available by default often
causes strange test failures or weird behaviour since the plugins are
sometimes buggy or have different behaviour.
The only requirement for the rust plugins is that a rust toolchain be
present on the system. This is problematic:
1. This means gst-build on Windows is broken by default if you have
a Rust toolchain, since glib can't be used uninstalled
2. No output is printed on Windows at all while the rust plugins are
being built. `custom_target()`'s `console:` keyword argument seems
to be broken on some Windows shells.
3. Even on Linux/macOS having this enabled by default is problematic
since it more than doubles the total build time.
4. The biggest issue with having it enabled by default is that it does
not dependency tracking, so we always run `cargo`, which might
update crates. This increases friction when you're working on
unrelated code.
This is useful when you want to create a worktree from let's say master
branch and start a new branch. This basically reproduce git-worktree -b
options.
allow for workflows that don't want the gst scripts to start shells,
this can be awkward for higher-level scripts setting up shells
themselves.
this is especially useful in combination with eval, and mimics the sort
of thing you can do with ssh-agent -s.
So gst-build/prefix/etc/xdg/tizonia/tizonia.conf can be found.
Which one contains path to tizonia plugins. Useful when
compiling tizonia-openmax-il and installing it in gst-build
's prefix location:
autoreconf -ifs
./configure --disable-player
--without-libspotify
--prefix=path_to_gst-build/prefix/
make && make install
Allows the following to work:
gst-launch-1.0 videotestsrc ! vp8enc ! omxvp8dec ! xvimagesink
`add` behaves the same as before. `rm` removes worktrees.
`git worktree remove` on the gst-build worktree will delete the
subproject worktrees inside it, but will not remove the references to
them in the main repository's subproject worktrees. The `rm` command
will.
It's pretty common to have the same branch for a subproject in
multiple worktrees. F.ex., when you want to test a feature branch
common to a few gstreamer subprojects but not the rest.
meson introspect is the wrong approach since it:
* Requires a pre-existing build directory for some branch
* Gives us potentially incorrect information since it tells us
subproject details for the current branch, not the branch we're
checking out.
* Does not allow us to share the git repos for non-gst repos since it
can't tell us the git branches for them.
Instead, parse the wrap files in the branch we're checking out since
they're just INI-style config files.
This is the wrong operator to use, which only seems to work because
`os.name` and `'nt'` happen to be the same object. Python 3.8 also
produces a `SyntaxWarning` when encountering this pattern.
On Linux, the library file is stored in the platform triplet directory under the
lib directory (hence for example
lib/x86_64-linux-gnu/gstreamer-1.0/libgstfoo.so) so the regex needs to take this
into account.
With this change the LD_LIBRARY_PATH on Linux now contains only the directories
with gst libs, ignoring the plugins, as initially intended in
c6613d8da2.
Fixes#56
At least in Meson 0.49, the target['install_name'] is a string, not a list, so
the heuristics declared in the is_library_target_and_not_plugin() can't apply
because Python is actually happy to iterate over a string without any warning.