LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   gstreamer package in current puts gstconfig.h in /usr/lib64/gstreamer-1.0/include (https://www.linuxquestions.org/questions/slackware-14/gstreamer-package-in-current-puts-gstconfig-h-in-usr-lib64-gstreamer-1-0-include-4175559692/)

akschu 11-23-2015 02:19 PM

gstreamer package in current puts gstconfig.h in /usr/lib64/gstreamer-1.0/include
 
Looks like the -current gstreamer-1.6.1 package puts this one header file in an odd place:

/usr/lib64/gstreamer-1.0/include/gst/gstconfig.h

Adding this to the slackbuild:
Code:

mv usr/lib64/gstreamer-1.0/include/gst/gstconfig.h usr/include/gstreamer-1.0/gst/
Before the makepkg command fixes this which allows me to compile freerdp and probably other software that depends on gstreamer.

Might want to add this fix to -current before release otherwise software linked against gstreamer may not build correctly.

Thanks,
schu

ponce 11-23-2015 02:35 PM

hi akschu, freerdp from SBo here builds fine on current.
to satisfy my own curiosity I've checked the cmake routine it uses to find gstreamer-1.0 (cmake/FindGStreamer_1_0.cmake): it uses pkg-config and the paths it shows are correct
Code:

# pkg-config --cflags-only-I gstreamer-1.0       
-I/usr/include/gstreamer-1.0 -I/usr/lib64/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include


akschu 11-25-2015 03:06 PM

I'm not sure why yours works. If I install the current gstreamer library from: http://mirrors.aptalaska.net/slackwa...1-x86_64-1.txt then the gstconfig.h file gets installed in an odd location:

Code:

$ grep gstconfig.h /var/log/packages/gstreamer-1.6.1-x86_64-1
usr/lib64/gstreamer-1.0/include/gst/gstconfig.h

When I go to compile freerdp from slackbuilds.org I get:

Code:

[ 92%] Building C object channels/tsmf/client/gstreamer/CMakeFiles/tsmf-client-gstreamer-decoder.dir/tsmf_gstreamer.c.o
cd /tmp/SBo/FreeRDP-1.2.0-beta1-android9/build/channels/tsmf/client/gstreamer && /usr/bin/cc  -DHAVE_CONFIG_H -DWITH_XEXT=1 -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/build -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/build/include -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/include -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/winpr/include -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/build/winpr/include -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/channels/tsmf/client/.. -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/tmp/SBo/FreeRDP-1.2.0-beta1-android9/channels/tsmf/client/gstreamer/..  -O2 -fPIC -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -O2 -msse2 -DWINPR_EXPORTS -DFREERDP_EXPORTS -DNDEBUG -Wno-builtin-macro-redefined -D__FILE__='"channels/tsmf/client/gstreamer/tsmf_gstreamer.c"' -fPIC  -o CMakeFiles/tsmf-client-gstreamer-decoder.dir/tsmf_gstreamer.c.o  -c /tmp/SBo/FreeRDP-1.2.0-beta1-android9/channels/tsmf/client/gstreamer/tsmf_gstreamer.c
In file included from /usr/include/gstreamer-1.0/gst/gstbin.h:27:0,
                from /usr/include/gstreamer-1.0/gst/gst.h:35,
                from /tmp/SBo/FreeRDP-1.2.0-beta1-android9/channels/tsmf/client/gstreamer/tsmf_gstreamer.c:34:
/usr/include/gstreamer-1.0/gst/gstelement.h:55:27: fatal error: gst/gstconfig.h: No such file or directory
compilation terminated.

If I download the source and SlackBuild from http://mirrors.aptalaska.net/slackwa...e/l/gstreamer/

Then patch it with this:

Code:

--- gstreamer.SlackBuild.orig  2015-10-27 12:28:56.000000000 -0800
+++ gstreamer.SlackBuild        2015-11-25 12:02:39.836159764 -0900
@@ -125,5 +125,6 @@
 cat $CWD/slack-desc > $PKG/install/slack-desc
 
 cd $PKG
+mv usr/lib64/gstreamer-1.0/include/gst/gstconfig.h usr/include/gstreamer-1.0/gst/
 /sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz

Build, install, then I have gstconfig.h in a more common place:

Code:

$ grep gstconfig.h /var/log/packages/gstreamer-1.6.1-x86_64-1
usr/include/gstreamer-1.0/gst/gstconfig.h

And freerdp builds just fine....

We should be running the same software, I updated -current this morning. Perhaps one difference could be I'm using Eric's multilib stuff, but it seems to me that the header file would be better off in the include directory which is why I suggested this as an update to -current before RC1.

Thanks,
schu

akschu 11-25-2015 03:10 PM

You are right that freerdp should build fine as my system also lists the correct directory in pkg-config:

Code:

$ pkg-config --cflags-only-I gstreamer-1.0       
-I/usr/include/gstreamer-1.0 -I/usr/lib64/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include

But apparently freerdp 1.2.0-beta1+android9.tar.gz makes some spurious assumptions.

I'm not sure what makes more sense, update the gstreamer package to make it use more common/assumed paths for this one header file, or file a bug with freerdp since it's not searching all of the pkg-config paths for every header file. It probably finds the first directory and rolls with it....

Thanks,
schu

chris.willing 11-25-2015 04:18 PM

I see the same problem on a recently rebuilt -current system. I'm not sure how the existing SlackBuild works for others but in my freerdp.SlackBuild, I changed the -DCMAKE_C_FLAGS:STRING definition line to:
Code:

-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS $(pkg-config --cflags-only-I gstreamer-1.0)" \
chris

rworkman 11-26-2015 01:46 AM

As ponce implied, this is a bug with the app trying to include the header - gstreamer did what it was supposed to do in its pkgconfig file:
Code:

Cflags: -I${includedir} -I${libdir}/gstreamer-1.0/include


All times are GMT -5. The time now is 09:29 AM.