Commit graph

316 commits

Author SHA1 Message Date
Xavier Claessens 7ef372db76 Meson: Fix useless reconfigure when plugins libs change
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/6770

Fixes: #85
2020-03-11 13:49:11 -04:00
Xavier Claessens 7fa292406e Add example using gstreamer-full
It will be used by the CI to verify we can build it.
2020-03-04 08:28:11 -05:00
Xavier Claessens 35285c51b8 Add gstreamer-full library containing all plugins and their deps
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.
2020-03-04 08:23:52 -05:00
Xavier Claessens 7cf00627be Simplify generate_plugins_path.py script
This also fix an empty plugin name being prepended to the list.
2020-03-04 08:18:09 -05:00
Nirbheek Chauhan 6dfcecb16a Disable vaapi feature by default
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.
2020-03-02 11:11:47 +05:30
Nirbheek Chauhan 7f231c2d8a Disable rust feature option by default
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.
2020-03-02 11:05:41 +05:30
Nirbheek Chauhan c67034c529 Remove unused variable in meson.build
We don't use this anywhere. It's confusing.
2020-03-02 11:04:40 +05:30
Seungha Yang 588250eaeb meson: Apply msvc warning level to cpp too
We have c++ code as well.
2020-03-01 19:58:35 +09:00
Xavier Claessens d06b4ffe1e libsoup: Bump subproject version to 2.68.4
Older versions fails to build because the glib dependency was wrong.

Fixes: #75
2020-02-27 13:43:36 +00:00
Stéphane Cerveau bc5c73e651 git-update: fix typo in message 2020-02-27 09:01:57 +01:00
Nirbheek Chauhan 7716ea303a cross-files/android: Update paths and args for latest NDK
-fuse-ld=gold was always needed, but we missed it while adding this.

The rest are new in NDK r21.
2020-02-21 22:25:21 +05:30
Nirbheek Chauhan ee4108a086 cross-files/android: cpu is aarch64, not arm64
Matching the value in glib:
https://gitlab.gnome.org/GNOME/glib/merge_requests/1376#note_719427
2020-02-21 16:44:37 +00:00
Stéphane Cerveau b9acfcace8 git-update: provides a check status option
Add --check-status to git-update python script
to provide the list of subprojects with their
git status (branch and state).
2020-02-19 21:53:05 +01:00
Stéphane Cerveau 631677589c libxml2: update wrap path to 2.9.7-6
This patch allows to fallback on zlib subproject
2020-02-19 13:45:52 +01:00
Nirbheek Chauhan e958c85b37 Nuke setup.py: It doesn't do anything special
It's just confusing for people to see that in the build root, and we
do not even mention this file in the README.
2020-02-12 01:56:23 +05:30
Nicolas Dufresne 32bf9a29f7 gst-worktree.py: Add execution permission
This allow doing ./gst-worktree.py directly.
2020-02-02 17:44:00 -05:00
Nicolas Dufresne c1f9d409b4 gst-worktree: Allow creating a new branch
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.
2020-01-31 13:56:05 -05:00
Thibault Saunier 7d08aef9ed devenv: Fix path handling for gdb support
And enable gdb support only when gdb is avalaible
2020-01-19 11:21:17 +00:00
Nirbheek Chauhan 2f11c43f49 win-flex-bison: Use gstreamer mirror as primary source
Use the gstreamer mirror as the primary source and fallback to
upstream if it's down.
2020-01-18 17:54:48 +05:30
Nirbheek Chauhan 352b838121 win-nasm: Use gstreamer mirror as primary source
nasm.us went down today and broke all our CI. Use the gstreamer mirror
as the primary source and fallback to nasm.us if that's down.
2020-01-18 17:54:48 +05:30
Nirbheek Chauhan 439dfa2955 win-nasm: Error out if accidentally called on non-Windows 2020-01-18 17:54:36 +05:30
Guillaume Desmottes 4720ef8767 fetch wrap patches from github
wrapdb.mesonbuild.com has been down for a few days now.

Fix #71
2020-01-16 13:21:26 +05:30
Tim-Philipp Müller ef2c97babe meson: bump glib subproject wrap to GLib 2.62 2020-01-13 17:16:52 +00:00
Thibault Saunier 84e01411e4 uninstalled: Add support for GStreamer and GLib gdb scripts 2020-01-13 11:41:40 -03:00
Tim-Philipp Müller 5e6c0b389a meson: add graphene subproject
So we can build all the OpenGL elements.
2020-01-08 17:40:43 +00:00
Charlie Turner c57dca5220 dev environment: allow printing only env without starting a shell
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.
2020-01-06 21:06:42 +00:00
Seungha Yang 7aaa11aa77 gitignore: Ignore libxml2 and sqlite
Add more things to ignore.
2020-01-06 12:19:08 +00:00
Guillaume Desmottes 1e8cdbf137 git-update: try updating cargo deps
May prevent build errors if a newer version gstreamer-rs or
gst-plugins-rs depend on an updated version of a git dependency.
2019-12-24 15:08:02 +05:30
Guillaume Desmottes 20fc4b92b8 add gst-plugins-rs
Fix #63
2019-12-24 09:25:40 +05:30
Julien Isorce cca62a11f5 env: preprend gst-build/prefix/etc/xdg to XDG_CONFIG_DIRS
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
2019-12-23 09:38:59 +00:00
Nirbheek Chauhan b46aa21ed4 gst-env: Automatically set the prompt for zsh too 2019-12-22 20:16:25 +05:30
Philippe Normand 7cbd30eb65 README: Remove now-useless Fish prompt setup docs
After commit e13e6758e3 there's no need to
manually configure the prompt.
2019-12-20 19:34:05 +01:00
Nirbheek Chauhan bc1c337c77 gst-env: Don't put helper binaries in PATH
Check if the executable would be installed into bindir before adding
it to PATH in the uninstalled shell.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/issues/67
2019-12-19 16:24:37 +05:30
Nirbheek Chauhan 245baadbce gst-env: Fix shell name check
We should use `endswith`, not `in`. Else we'll match paths like:

`/home/arbash/.local/bin/fish` as a bash shell, not a fish shell.
2019-12-19 02:45:44 +05:30
Nirbheek Chauhan e13e6758e3 gst-env: Set the prompt for fish to be same as bash 2019-12-19 02:39:01 +05:30
Nirbheek Chauhan 675cec1ed2 gst-env: Ignore SIGINT when using the fish shell
After discussion with fish upstream it looks like it will take some
work to fix this issue.

https://github.com/fish-shell/fish-shell/pull/6426#issuecomment-567174105

In the meantime, this only happens when there's no command running in
the terminal, and in that case the shell just ignores it anyway. So
just do that in `gst-env.py`.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/issues/18
2019-12-19 02:14:30 +05:30
Xavier Claessens 4bf0504e2a Bump libsoup wrap to latest stable release
It contains fix to properly fallback to libxml2 and sqlite subprojects,
as well as using feature options.
2019-12-03 19:41:24 -05:00
Stéphane Cerveau c9a52c7939 dev environment: update documentation
Add gst-dev.py usage with an external script.
2019-11-25 20:40:05 +00:00
Nirbheek Chauhan 769711394e gst-worktree: Add sub-commands: add and rm
`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.
2019-11-24 01:25:38 +05:30
Nirbheek Chauhan 5b77e65d06 Move checkout-branch-worktree to gst-worktree.py
We will add more actions to it than just 'checkout'. Also add
a wrapper shell script that calls gst-worktree.py with the correct
arguments.
2019-11-24 01:25:38 +05:30
Nirbheek Chauhan 85e818947b .gitignore: Ignore subproject package cache 2019-11-23 23:39:54 +05:30
Nirbheek Chauhan dd065f67cf git-worktree: Fix indentation 2019-11-23 17:08:17 +05:30
Nirbheek Chauhan 2138bce2f1 git-worktree: Allow multiple worktrees for subproject branches
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.
2019-11-23 17:08:17 +05:30
Nirbheek Chauhan a950c286ba git-worktree: Parse wrap files instead of meson introspect
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.
2019-11-23 17:08:17 +05:30
Xavier Claessens d72ce5f14e Add sqlite.wrap from wrapdb
This allows building libsoup support on platforms that does not have
sqlite.
2019-11-17 15:47:48 +00:00
Jan Alexander Steffens (heftig) 49fea2520f
python: Avoid using 'is' to compare strings
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.
2019-11-11 12:41:44 +01:00
Philippe Normand 2e6bd1ca8d gst-env: Fix the gst plugin file path regex for Linux platforms
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
2019-11-06 09:33:46 +01:00
Philippe Normand aded9c617f gst-env: Ensure target install filename is a list
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.
2019-11-06 09:33:46 +01:00
Seungha Yang f7ac326d5a meson: Specify encoding as utf-8 for msvc
Some projects does not have this option which causes verbose warnings
2019-11-04 20:43:18 +00:00
Seungha Yang df0808f493 meson: Enable some msvc warnings
Enable following warnings
 - unused variable
 - unhandled enum value in switch/case

Those warnings might cause build error on CI pipeline, but not enabled
by default. For development environment, let's enable them to save
CI (and developer's time) resource.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-build/issues/31
2019-11-04 20:43:18 +00:00