Re: [gentoo-dev] [PATCH] gstreamer-meson.eclass: New eclass required for gstreamer-1.18.0+

2021-03-17 Thread Mart Raudsepp
Ühel kenal päeval, K, 17.03.2021 kell 10:29, kirjutas Haelwenn
(lanodan) Monnier:
> > My main initial question on this version is:
> > How does it behave with helper libraries from the same tarball?
> 
> It has been in my overlay for a while (haven't included all the
> splitted plugins though).
> 
> ie. 
> https://hacktivis.me/git/overlay/file/media-plugins/gst-plugins-hls/gst-plugins-hls-1.18.4.ebuild.html
> 
> > Basically what gstreamer_system_link function solved in the
> > autotools
> > eclass.
> > E.g., if you build gst-plugins-libvisual, is it building gstreamer-
> > audio, gstreamer-video and gstreamer-pbutils as well again
> > (automatically due to generated ninja dependencies), or picks them
> > up
> > from gst-plugins-base?
> 
> I think this particular one isn't solved yet. Mainly because it
> doesn't
> seems to have caused me issues yet.

I think it would be building it again, and then link it against that
new build, instead of the system version that it'll actually use at
runtime. That sounds like a recipe for hard to track issues down the
line.
But maybe if it works out fine right now, it's worth ignoring it at
first, and solving it later on.

> 
> > * Don't make nls optional
> 
> What's the reason for this? It's the case with gstreamer::gentoo.

OK, I guess we could keep it too - maybe someone needs for very
embedded builds.




Re: [gentoo-dev] [PATCH] gstreamer-meson.eclass: New eclass required for gstreamer-1.18.0+

2021-03-17 Thread Mart Raudsepp
Thanks for working on this, some very initial comments below

Ühel kenal päeval, K, 17.03.2021 kell 01:57, kirjutas Sam James:
> > +# @FUNCTION: gstreamer_multilib_src_install_all
> > +# @DESCRIPTION:
> > +# Installs documentation for requested gstreamer plugin, and
> > removes
> .la
> > +# files.
> > +gstreamer_multilib_src_install_all() {
> > +   local plugin_dir
> > +
> > +   for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
> > +   local dir=$(gstreamer_get_plugin_dir
> > ${plugin_dir})
> > +   [[ -e ${dir}/README ]] && dodoc "${dir}"/README
> > +   done
> > +
> > +   prune_libtool_files --modules
> 
> Deprecated in newer EAPIs, let’s do it manually.

I don't think that ought to be necessary at all, as a meson build
wouldn't be generating libtool files.


My main initial question on this version is:
How does it behave with helper libraries from the same tarball?

Basically what gstreamer_system_link function solved in the autotools
eclass.
E.g., if you build gst-plugins-libvisual, is it building gstreamer-
audio, gstreamer-video and gstreamer-pbutils as well again
(automatically due to generated ninja dependencies), or picks them up
from gst-plugins-base?

Some other quick notes:

* I would prefer this being EAPI-7 only
* Don't make nls optional
* It would be neat if we had a QA warning when a split plugin uses orc,
but doesn't have in IUSE for it (or vice-versa); maybe that's doable by
checking if the plugin meson.build uses orc_dep?


Mart




Re: [gentoo-dev] [PATCH] gstreamer-meson.eclass: New eclass required for gstreamer-1.18.0+

2021-03-17 Thread Haelwenn (lanodan) Monnier
[2021-03-17 11:15:26+0200] Mart Raudsepp:
> Ühel kenal päeval, K, 17.03.2021 kell 01:57, kirjutas Sam James:
> > > +# @FUNCTION: gstreamer_multilib_src_install_all
> > > +# @DESCRIPTION:
> > > +# Installs documentation for requested gstreamer plugin, and
> > > removes
> > .la
> > > +# files.
> > > +gstreamer_multilib_src_install_all() {
> > > + local plugin_dir
> > > +
> > > + for plugin_dir in ${GST_PLUGINS_BUILD_DIR} ; do
> > > + local dir=$(gstreamer_get_plugin_dir
> > > ${plugin_dir})
> > > + [[ -e ${dir}/README ]] && dodoc "${dir}"/README
> > > + done
> > > +
> > > + prune_libtool_files --modules
> > 
> > Deprecated in newer EAPIs, let’s do it manually.
> 
> I don't think that ought to be necessary at all, as a meson build
> wouldn't be generating libtool files.
> 
> 
> My main initial question on this version is:
> How does it behave with helper libraries from the same tarball?

It has been in my overlay for a while (haven't included all the splitted 
plugins though).

ie. 
https://hacktivis.me/git/overlay/file/media-plugins/gst-plugins-hls/gst-plugins-hls-1.18.4.ebuild.html

> Basically what gstreamer_system_link function solved in the autotools
> eclass.
> E.g., if you build gst-plugins-libvisual, is it building gstreamer-
> audio, gstreamer-video and gstreamer-pbutils as well again
> (automatically due to generated ninja dependencies), or picks them up
> from gst-plugins-base?

I think this particular one isn't solved yet. Mainly because it doesn't
seems to have caused me issues yet.

> Some other quick notes:
> 
> * I would prefer this being EAPI-7 only

Yeah, as discussed in #gentoo-dev I'm doing this, pushed a WIP version in my
overlay if you want to take an early look.

> * Don't make nls optional

What's the reason for this? It's the case with gstreamer::gentoo.

> * It would be neat if we had a QA warning when a split plugin uses orc,
> but doesn't have in IUSE for it (or vice-versa); maybe that's doable by
> checking if the plugin meson.build uses orc_dep?

Yeah, orc should be automatically added.



[gentoo-dev] GSoC 2021: Gentoo Accepted as mentor organization

2021-03-17 Thread Alice

Hello,


Also this year Gentoo as been accepted in the Google Summer of Code as a 
mentor organization. We are looking for new project ideas and are always 
open for new mentors.
Google Summer of Code is a big opportunity for making Gentoo project 
more visible and get more people interested to join Gentoo and helping out.


1. Project ideas

GSoC projects should be suitable for 3 months worth of work for
a student, taking into account time required for students to get in
touch with the project, to learn some details, to fix mistakes and
make improvements. Most students are not yet seasoned developers,
so their coding rate will be likely slower than yours.

Usually projects are something more complicated than just writing
some ebuilds, however if non-trivial ebuild related work is
required, e.g. to write new eclasses and adapt existing packages to
use them (or add new ones), this should do too.

Ideas from previous years may be reused, but this should not be
abused, since Gentoo moves forward and we have new stuff to do.

If you have an idea, but can't be a mentor, please still tell us
about it, we'll try to find a mentor later.

Ideas should be put to our wiki: [1].
The page contains ideas adding howto.

2. Mentors

If you want to be a mentor, welcome! It is not necessary to be a
Gentoo developer in order to be a mentor, but project must be
Gentoo related.

Mentoring requires some time. It depends much on a student, but is
usually within 4-10 hours per week. If you don't have that much
time, but still want to help, you may become a backup mentor.
Students often have 2 mentors to eliminate bus factor and to
improve expertise in a project.

Please keep in mind that GSoC is not just about new code, but about
bringing new people to community and we have developers which where
GSoC students in the past. So time invested in students will result
not only in some problems solved, but into bringing new people to
our community and strengthening ties with existing participants.

Mentors should enlist themselves on the wiki: [2].

If you have any questions or proposals, feel free to reply to this
e-mail, or contact us via #gentoo-soc IRC channel on FreeNode[3],
or by writing to project's alias[4].



[1]https://wiki.gentoo.org/wiki/Google_Summer_of_Code/2021/Ideas
[2]https://wiki.gentoo.org/wiki/Google_Summer_of_Code/2021/Mentors
[3]http://webchat.freenode.net/?channels=gentoo-soc
[4]mailto:soc-ment...@gentoo.org


Thanks,
Alice



Re: [gentoo-dev] [PATCH] gstreamer-meson.eclass: New eclass required for gstreamer-1.18.0+

2021-03-17 Thread Alec Warner
On Tue, Mar 16, 2021 at 6:49 PM Haelwenn (lanodan) Monnier
 wrote:
>
> Gstreamer switched to meson in 1.16.0 and removed autotools support in 1.18.0,
> this eclass is an update of gstreamer.eclass.
>
> One significant change between autotools and meson is that in the latter we
> don't have easily extractable semantics in the buildsystem to get a list
> of plugins with extraneous dependencies that we currently split in other
> packages.
> Hence the rather ugly but currently required GST_PLUGINS_DISABLED block.
>
> Fixes: https://bugs.gentoo.org/690468
>
> Signed-off-by: Haelwenn (lanodan) Monnier 
> ---
>  eclass/gstreamer-meson.eclass | 293 ++
>  1 file changed, 293 insertions(+)
>  create mode 100644 eclass/gstreamer-meson.eclass
>
> diff --git a/eclass/gstreamer-meson.eclass b/eclass/gstreamer-meson.eclass
> new file mode 100644
> index 000..263deeb08aa
> --- /dev/null
> +++ b/eclass/gstreamer-meson.eclass
> @@ -0,0 +1,293 @@
> +# Copyright 1999-2021 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# @ECLASS: gstreamer-meson.eclass
> +# @MAINTAINER:
> +# gstrea...@gentoo.org
> +# @AUTHOR:
> +# Michał Górny 
> +# Gilles Dartiguelongue 
> +# Saleem Abdulrasool 
> +# foser 
> +# zaheerm 
> +# Steven Newbury
> +# Haelwenn (lanodan) Monnier 
> +# @SUPPORTED_EAPIS: 5 6
> +# @BLURB: Helps building core & split gstreamer plugins.
> +# @DESCRIPTION:
> +# Eclass to make external gst-plugins emergable on a per-plugin basis
> +# and to solve the problem with gst-plugins generating far too much
> +# unneeded dependencies.
> +#
> +# GStreamer consuming applications should depend on the specific plugins
> +# they need as defined in their source code. Usually you can find that
> +# out by grepping the source tree for 'factory_make'. If it uses playbin
> +# plugin, consider adding media-plugins/gst-plugins-meta dependency, but
> +# also list any packages that provide explicitly requested plugins.
> +
> +inherit eutils multilib meson multilib-minimal toolchain-funcs versionator 
> xdg-utils
> +
> +case "${EAPI:-0}" in
> +   5|6)
> +   ;;
> +   0|1|2|3|4)
> +   die "EAPI=\"${EAPI:-0}\" is not supported anymore"
> +   ;;
> +   *)
> +   die "EAPI=\"${EAPI}\" is not supported yet"
> +   ;;
> +esac
> +
> +# @ECLASS-VARIABLE: GST_PLUGINS_ENABLED
> +# @DESCRIPTION:
> +# Defines the plugins to be built.
> +# May be set by an ebuild and contain more than one indentifier, space
> +# seperated (only src_configure can handle mutiple plugins at this time).
> +: ${GST_PLUGINS_ENABLED:=${PN/gst-plugins-/}}
> +
> +# @ECLASS-VARIABLE: GST_PLUGINS_DISABLED
> +# @DESCRIPTION:
> +# Defines the plugins to not be built, GST_PLUGINS_ENABLED overrides it.
> +# May be set by an ebuild and contain more than one indentifier, space
> +# seperated (only src_configure can handle mutiple plugins at this time).
> +case "${GST_ORG_MODULE}" in
> +   # copied GST_PLUGINS_DISABLED from media-libs/${GST_ORG_MODULE} then 
> added GST_PLUGINS_ENABLED
> +   gst-plugins-bad)
> +   # removed from list: shm ipcpipeline gl
> +   GST_PLUGINS_DISABLED="aom avtp androidmedia applemedia 
> assrender bluez bs2b bz2 chromaprint closedcaption colormanagement curl 
> curl-ssh2 d3dvideosink d3d11 dash dc1394 decklink directfb directsound dtls 
> dts dvb faac faad fbdev fdkaac flite fluidsynth gme gsm iqa kate kms ladspa 
> libde265 libmms lv2 mediafoundation microdns modplug mpeg2enc mplex msdk 
> musepack neon nvcodec ofa openal openexr openh264 openjpeg openmpt openni2 
> opensles opus resindvd rsvg rtmp sbc sctp smoothstreaming sndfile soundtouch 
> spandsp srt srtp svthevcenc teletext tinyalsa transcode ttml uvch264 va 
> voaacenc voamrwbenc vulkan wasapi wasapi2 webp webrtc webrtcdsp wildmidi 
> winks winscreencap x265 zbar zxing wpe magicleap v4l2codecs hls opencv"
> +   GST_PLUGINS_DISABLED="${GST_PLUGINS_DISABLED} accurip 
> adpcmdec adpcmenc aiff asfmux audiobuffersplit audiofxbad audiolatency 
> audiomixmatrix audiovisualizers autoconvert bayer camerabin2 coloreffects deb 
> ugutils dvbsubenc dvbsuboverlay dvdspu faceoverlay festival fieldanalysis 
> freeverb frei0r gaudieffects gdp geometrictransform id3tag inter interlace 
> ivfpars e ivtc jp2kdecimator jpegformat librfb midi mpegdemux mpegpsmux 
> mpegtsdemux mpegtsmux mxf netsim onvif pcapparse pnm proxy rawparse 
> removesilence rist rtmp2 rtp sdp segmentclip siren smooth speed subenc 
> switchbin timecode videofilters videoframe_audiolevel videoparsers 
> videosignal vmnc y4m"
> +   ;;
> +   gst-plugins-base)
> +   GST_PLUGINS_DISABLED="cdparanoia libvisual opus tremor"
> +   GST_PLUGINS_DISABLED="${GST_PLUGINS_DISABLED} adder app 
> audioconvert audiomixer audiorate audioresample audiotestsrc compositor 
> encoding gio gio-typefinder overlaycomposition pbtypes playback