Solved gstreamer USES confusion

I'm trying to port some software that uses gstreamer. The QA stage asks me to add USE_GSTREAMER1+=yes and USE_GSTREAMER1+=bad
But when I do it, the port doesn't build at all, it complains that: "cannot install: unknown gstreamer 1.4 plugin -- bad." (or yes)
How to fix this mess?
 
Have a look in /usr/ports/Mk/bsd.gstreamer.mk:
Code:
# For Gstreamer 0.10:
#   USE_GSTREAMER=      lame faac ffmpeg
#
# For Gstreamer 1.x the same rules apply but instead of
#   USE_GSTREAMER=, USE_GSTREAMER1= is used.
Code:
#       USE_GSTREAMER=yes will always add a dependency to
#               gstreamer-plugins

Don't put them on multiple lines, use only one USE_GSTREAMER1= line.
 
Single line doesn't change anything, still failing due to "unknown plugin -- bad"

Do I need any other uses except USE_GSTREAMER1=yes bad ?
 
Try changing the order:
Code:
USE_GSTREAMER1= bad yes

But if I look at the various *_PLUGINS definitions it looks like bad isn't a valid option to add. It looks like it's implicitly added if you use specific plugins.

Code:
.if defined(USE_GSTREAMER1)
_GSTREAMER_PLUGINS+= \
                aom \
                assrender \
                bs2b \
                chromaprint \
                curl \
                dash \
                dtls \
                dvdread \
                editing-services \
                gtk \
                hls \
                kate \
                kms \
                libav \
                libde265 \
                lv2 \
                mm \
                modplug \
                mpg123 \
                mplex \
                openexr \
                openh264 \
                openjpeg \
                openmpt \
                png \
                qt \
                rsvg \
                rtmp \
                smoothstreaming \
                spandsp \
                srtp \
                ttml \
                vpx \
                vulkan \
                webp \
                webrtcdsp \
                x \
                x265 \
                ximagesrc \
                zbar
# vaapi
.endif # USE_GSTREAMER1
 
If I change the order, the pre-build dependency check complains about "missing plugin -- yes".

If I omit USE_GSTREAMER1 entirely, the QA stage fails because of undeclared dependencies of GStreamer libraries (), and it asks me to insert USE_GSTREAMER1 which causes the aforementioned failure.

My ports tree is at 563106 revision for both Mk/bsd.commands.mk and Mk/Scripts/qa.sh so I don't understand the reasons for the conflict.
 
core, bad, good, ugly and yes are all valid options, that's not the issue. When you see an error message, you should always start diagnosing the problem by looking at the code producing the error message (sounds obvious, isn't it?):
Code:
.if defined(USE_GSTREAMER1)
. for ext in ${USE_GSTREAMER1}
${ext}_GST_PREFIX?=    gstreamer1-plugins-
${ext}_GST_VERSION?=    ${GST1_VERSION}
${ext}_NAME10?=        ${ext}
${ext}_GST_DEPENDS?=    ${${ext}_DEPENDS:S,gstreamer-,gstreamer1-,}
.  if ${_USE_GSTREAMER_ALL:M${ext}}!= "" && exists(${PORTSDIR}/${${ext}_GST_DEPENDS})
_GST_BUILD_DEPENDS+=    ${${ext}_GST_PREFIX}${${ext}_NAME10}>=${${ext}_GST_VERSION}:${${ext}_GST_DEPENDS}
_GST_RUN_DEPENDS+=    ${${ext}_GST_PREFIX}${${ext}_NAME10}>=${${ext}_GST_VERSION}:${${ext}_GST_DEPENDS}
.   if defined(${ext}1_IMPL)
_GST_IMPL_LIST+=    ${${ext}1_IMPL}
.   else
_GST_IMPL_LIST+=    ${${ext}_IMPL}
.   endif
.  else
IGNORE=    cannot install: unknown gstreamer ${GST1_VERSION} plugin -- ${ext}
.  endif
. endfor
The points of interest there are ${_USE_GSTREAMER_ALL:M${ext}}!= "" and exists(${PORTSDIR}/${${ext}_GST_DEPENDS}) checks. So, what does make -v PORTSDIR print?
 
After some debugging, it turned out there should be a directory at /usr/ports/audio/gstreamer1-plugins-bad. Creating it has solved the issue.
 
Back
Top