After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 636851 - allow out of source-dir build
allow out of source-dir build
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: common
unspecified
Other Linux
: Normal blocker
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-12-09 09:16 UTC by Stefan Sauer (gstreamer, gtkdoc dev)
Modified: 2011-01-10 14:47 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
out of srcdir build support for api-docs (6.81 KB, patch)
2010-12-09 09:16 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
committed Details | Review

Description Stefan Sauer (gstreamer, gtkdoc dev) 2010-12-09 09:16:21 UTC
Created attachment 176117 [details] [review]
out of srcdir build support for api-docs

Right now it is not possible to do out of srcdir builds for gstreamer due to deficiencies in the api-doc build. For gtk-doc this is tracked as Bug #127049. GStreamer has a copy of the upstream doc-build makefiles, that diverted quite a bit. This is an attemp to resync them and fix the out-of-srcdir build.

To test it:
# do a clean checkout
/autogen.sh --noconfigure
# apply the patch to common
mkdir _debug
cd debug
../configure ....
make && sudo make install

The feature allows you to keep a clean source tree and have multiples configurations ready to be build.
Comment 1 Tim-Philipp Müller 2010-12-09 14:08:35 UTC
I honestly don't think anyone will (be able to) review this, so I'd say push it and see if it breaks stuff :-)

As long as make distcheck still works in my uninstalled setup I'm happy.
Comment 2 Sebastian Dröge (slomo) 2010-12-12 10:44:08 UTC
Yes, please push this and then let's see if something breaks for someone. Also, would it make sense to apply the same changes to gtk-doc-plugins.mak?
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2010-12-13 14:25:00 UTC
I pushed it after testing it in core and base. The gtk-doc-plugin,mak did the copy trick already (instead of making srcdir writable).
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2010-12-13 14:28:33 UTC
Comment on attachment 176117 [details] [review]
out of srcdir build support for api-docs

committed with a small change.

Module: common
Branch: master
Commit: 20742aee033cc7c4aa9a817df005d15d5fa6ba85
URL:    http://cgit.freedesktop.org/gstreamer/common/commit/?id=20742aee033cc7c4aa9a817df005d15d5fa6ba85

Author: Stefan Kost 
Date:   Mon Dec 13 16:15:31 2010 +0200

gtk-doc.mak: allow out of srcdir build

Right now it is not possible to do out of srcdir builds for gstreamer due to
deficiencies in the api-doc build. Instead of making the srcdir writable and
generate files there, copy the needed files to builddir.

Fixes #636851
Comment 5 Tim-Philipp Müller 2011-01-06 23:57:43 UTC
This seems to break my distcheck in -base (I haven't verified that it was indeed this commit, but it seems likely): 


Making all in libs
make[4]: Entering directory `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build/docs/libs'
cp: cannot stat `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build/../docs/libs/gst-plugins-base-libs-overrides.txt': No such file or directory
*** Scanning header files ***
if grep -l '^..*$' gst-plugins-base-libs.types > /dev/null;	\
	then								\
	    GST_PLUGIN_SYSTEM_PATH=`cd ../.. && pwd`		\
	    GST_PLUGIN_PATH=						\
	    GST_REGISTRY=doc-registry.xml				\
	    					\
	    CC="/bin/bash ../../libtool --tag=CC --mode=compile gcc -std=gnu99" LD="/bin/bash ../../libtool --tag=CC --mode=link gcc -std=gnu99"				\
	    CFLAGS="-I../../../gst-libs -I../../gst-libs -pthread -I/home/tpm/gst/git/gstreamer/libs -I/home/tpm/gst/git/gstreamer -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2   -g -O2"				\
	    LDFLAGS="../../gst-libs/gst/interfaces/libgstinterfaces-0.10.la ../../gst-libs/gst/audio/libgstaudio-0.10.la ../../gst-libs/gst/cdda/libgstcdda-0.10.la ../../gst-libs/gst/fft/libgstfft-0.10.la ../../gst-libs/gst/rtp/libgstrtp-0.10.la ../../gst-libs/gst/rtsp/libgstrtsp-0.10.la ../../gst-libs/gst/sdp/libgstsdp-0.10.la ../../gst-libs/gst/tag/libgsttag-0.10.la ../../gst-libs/gst/video/libgstvideo-0.10.la ../../gst-libs/gst/app/libgstapp-0.10.la ../../gst-libs/gst/pbutils/libgstpbutils-0.10.la /home/tpm/gst/git/gstreamer/libs/gst/base/libgstbase-0.10.la /home/tpm/gst/git/gstreamer/gst/libgstreamer-0.10.la -pthread -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lrt -lglib-2.0   "		\
	    gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)"	\
	        --module=gst-plugins-base-libs ;				\
	else								\
	    for i in gst-plugins-base-libs.args gst-plugins-base-libs.hierarchy gst-plugins-base-libs.interfaces gst-plugins-base-libs.prerequisites gst-plugins-base-libs.signals .libs/gst-plugins-base-libs-scan.o ; do			\
	       test -f $i || touch $i ;				\
	    done							\
	fi
grep: gst-plugins-base-libs.types: No such file or directory
touch setup.stamp
touch: cannot touch `.libs/gst-plugins-base-libs-scan.o': No such file or directory
make[4]: *** [scan-build.stamp] Error 1
make[4]: Leaving directory `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build/docs/libs'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build/docs'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/tpm/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2/_build'
make: *** [distcheck] Error 1

tpm@zingle:~/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2$ ls -lR _build/docs/libs/ docs/libs/
_build/docs/libs/:
total 112
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 gst-plugins-base-libs.args
-r--r--r-- 1 tpm tpm 10089 Dec 15 11:39 gst-plugins-base-libs-docs.sgml
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 gst-plugins-base-libs.hierarchy
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 gst-plugins-base-libs.interfaces
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 gst-plugins-base-libs.prerequisites
-r--r--r-- 1 tpm tpm 50394 Jan  6 23:51 gst-plugins-base-libs-sections.txt
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 gst-plugins-base-libs.signals
-r--r--r-- 1 tpm tpm  1881 Jan  6 23:51 gst-plugins-base-libs.types
-rw-r--r-- 1 tpm tpm 37121 Jan  6 23:52 Makefile
-rw-r--r-- 1 tpm tpm     0 Jan  6 23:54 setup.stamp

docs/libs/:
total 120
-r--r--r-- 1 tpm tpm  1757 Mar 30  2010 compiling.sgml
-r--r--r-- 1 tpm tpm 10089 Dec 15 11:39 gst-plugins-base-libs-docs.sgml
-r--r--r-- 1 tpm tpm 50394 Jan  6 23:51 gst-plugins-base-libs-sections.txt
-r--r--r-- 1 tpm tpm  1881 Jan  6 23:51 gst-plugins-base-libs.types
dr-xr-xr-x 2 tpm tpm  4096 Jan  6 23:51 html
-r--r--r-- 1 tpm tpm  3738 Oct 10 12:21 Makefile.am
-r--r--r-- 1 tpm tpm 33217 Jan  6 23:47 Makefile.in

docs/libs/html:
total 3984
-r--r--r-- 1 tpm tpm   3029 Jan  6 23:51 annotation-glossary.html
-r--r--r-- 1 tpm tpm   8205 Jan  6 23:51 api-index-deprecated.html
-r--r--r-- 1 tpm tpm 365395 Jan  6 23:51 api-index-full.html
-r--r--r-- 1 tpm tpm   3214 Jan  6 23:51 compiling.html
-r--r--r-- 1 tpm tpm  38679 Jan  6 23:51 gst-plugins-base-libs-appsink.html
-r--r--r-- 1 tpm tpm  43767 Jan  6 23:51 gst-plugins-base-libs-appsrc.html
-r--r--r-- 1 tpm tpm 166743 Jan  6 23:51 gst-plugins-base-libs.devhelp
-r--r--r-- 1 tpm tpm 235948 Jan  6 23:51 gst-plugins-base-libs.devhelp2
-r--r--r-- 1 tpm tpm 130952 Jan  6 23:51 gst-plugins-base-libs-encoding-profile.html
-r--r--r-- 1 tpm tpm  24606 Jan  6 23:51 gst-plugins-base-libs-gstaudioclock.html
-r--r--r-- 1 tpm tpm   9859 Jan  6 23:51 gst-plugins-base-libs-gstaudiofilter.html
-r--r--r-- 1 tpm tpm  26188 Jan  6 23:51 gst-plugins-base-libs-gstaudio.html
-r--r--r-- 1 tpm tpm  10109 Jan  6 23:51 gst-plugins-base-libs-gstaudiomixerutils.html
-r--r--r-- 1 tpm tpm   9896 Jan  6 23:51 gst-plugins-base-libs-gstaudiosink.html
-r--r--r-- 1 tpm tpm   9620 Jan  6 23:51 gst-plugins-base-libs-gstaudiosrc.html
-r--r--r-- 1 tpm tpm  31116 Jan  6 23:51 gst-plugins-base-libs-gstbaseaudiosink.html
-r--r--r-- 1 tpm tpm  27041 Jan  6 23:51 gst-plugins-base-libs-gstbaseaudiosrc.html
-r--r--r-- 1 tpm tpm  28526 Jan  6 23:51 gst-plugins-base-libs-gstbasertpaudiopayload.html
-r--r--r-- 1 tpm tpm  18177 Jan  6 23:51 gst-plugins-base-libs-gstbasertpdepayload.html
-r--r--r-- 1 tpm tpm  34363 Jan  6 23:51 gst-plugins-base-libs-gstbasertppayload.html
-r--r--r-- 1 tpm tpm  17529 Jan  6 23:51 gst-plugins-base-libs-gstcddabasesrc.html
-r--r--r-- 1 tpm tpm   8534 Jan  6 23:51 gst-plugins-base-libs-gstcolorbalancechannel.html
-r--r--r-- 1 tpm tpm  22322 Jan  6 23:51 gst-plugins-base-libs-gstcolorbalance.html
-r--r--r-- 1 tpm tpm 115978 Jan  6 23:51 gst-plugins-base-libs-gstdiscoverer.html
-r--r--r-- 1 tpm tpm  20917 Jan  6 23:51 gst-plugins-base-libs-gstfftf32.html
-r--r--r-- 1 tpm tpm  20919 Jan  6 23:51 gst-plugins-base-libs-gstfftf64.html
-r--r--r-- 1 tpm tpm   5903 Jan  6 23:51 gst-plugins-base-libs-gstfft.html
-r--r--r-- 1 tpm tpm  20936 Jan  6 23:51 gst-plugins-base-libs-gstffts16.html
-r--r--r-- 1 tpm tpm  20945 Jan  6 23:51 gst-plugins-base-libs-gstffts32.html
-r--r--r-- 1 tpm tpm   4736 Jan  6 23:51 gst-plugins-base-libs-gstfloatcast.html
-r--r--r-- 1 tpm tpm  69502 Jan  6 23:51 gst-plugins-base-libs-gstmixer.html
-r--r--r-- 1 tpm tpm   6049 Jan  6 23:51 gst-plugins-base-libs-gstmixeroptions.html
-r--r--r-- 1 tpm tpm  14546 Jan  6 23:51 gst-plugins-base-libs-gstmixertrack.html
-r--r--r-- 1 tpm tpm  27145 Jan  6 23:51 gst-plugins-base-libs-gstmultichannel.html
-r--r--r-- 1 tpm tpm  87806 Jan  6 23:51 gst-plugins-base-libs-gstnavigation.html
-r--r--r-- 1 tpm tpm  35554 Jan  6 23:51 gst-plugins-base-libs-gstnetbuffer.html
-r--r--r-- 1 tpm tpm  35339 Jan  6 23:51 gst-plugins-base-libs-gstpbutilscodecutils.html
-r--r--r-- 1 tpm tpm  23325 Jan  6 23:51 gst-plugins-base-libs-gstpbutilsdescriptions.html
-r--r--r-- 1 tpm tpm  13852 Jan  6 23:51 gst-plugins-base-libs-gstpbutils.html
-r--r--r-- 1 tpm tpm  49032 Jan  6 23:51 gst-plugins-base-libs-gstpbutilsinstallplugins.html
-r--r--r-- 1 tpm tpm  40390 Jan  6 23:51 gst-plugins-base-libs-gstpbutilsmissingplugins.html
-r--r--r-- 1 tpm tpm  32967 Jan  6 23:51 gst-plugins-base-libs-gstpropertyprobe.html
-r--r--r-- 1 tpm tpm 124546 Jan  6 23:51 gst-plugins-base-libs-gstriff.html
-r--r--r-- 1 tpm tpm  92206 Jan  6 23:51 gst-plugins-base-libs-gstringbuffer.html
-r--r--r-- 1 tpm tpm 147108 Jan  6 23:51 gst-plugins-base-libs-gstrtcpbuffer.html
-r--r--r-- 1 tpm tpm 155894 Jan  6 23:51 gst-plugins-base-libs-gstrtpbuffer.html
-r--r--r-- 1 tpm tpm  18023 Jan  6 23:51 gst-plugins-base-libs-gstrtppayloads.html
-r--r--r-- 1 tpm tpm   7792 Jan  6 23:51 gst-plugins-base-libs-gstrtspbase64.html
-r--r--r-- 1 tpm tpm 115221 Jan  6 23:51 gst-plugins-base-libs-gstrtspconnection.html
-r--r--r-- 1 tpm tpm  43804 Jan  6 23:51 gst-plugins-base-libs-gstrtspdefs.html
-r--r--r-- 1 tpm tpm   4833 Jan  6 23:51 gst-plugins-base-libs-gstrtspextension.html
-r--r--r-- 1 tpm tpm  81142 Jan  6 23:51 gst-plugins-base-libs-gstrtspmessage.html
-r--r--r-- 1 tpm tpm  13857 Jan  6 23:51 gst-plugins-base-libs-gstrtsprange.html
-r--r--r-- 1 tpm tpm  30251 Jan  6 23:51 gst-plugins-base-libs-gstrtsptransport.html
-r--r--r-- 1 tpm tpm  20844 Jan  6 23:51 gst-plugins-base-libs-gstrtspurl.html
-r--r--r-- 1 tpm tpm 210560 Jan  6 23:51 gst-plugins-base-libs-gstsdpmessage.html
-r--r--r-- 1 tpm tpm  21935 Jan  6 23:51 gst-plugins-base-libs-gststreamvolume.html
-r--r--r-- 1 tpm tpm  11687 Jan  6 23:51 gst-plugins-base-libs-gsttagdemux.html
-r--r--r-- 1 tpm tpm  42285 Jan  6 23:51 gst-plugins-base-libs-gsttag.html
-r--r--r-- 1 tpm tpm  16927 Jan  6 23:51 gst-plugins-base-libs-gsttagid3.html
-r--r--r-- 1 tpm tpm  14524 Jan  6 23:51 gst-plugins-base-libs-gsttaglanguagecodes.html
-r--r--r-- 1 tpm tpm  20364 Jan  6 23:51 gst-plugins-base-libs-gsttagvorbis.html
-r--r--r-- 1 tpm tpm   7562 Jan  6 23:51 gst-plugins-base-libs-gsttagxmp.html
-r--r--r-- 1 tpm tpm  14275 Jan  6 23:51 gst-plugins-base-libs-gsttunerchannel.html
-r--r--r-- 1 tpm tpm  52757 Jan  6 23:51 gst-plugins-base-libs-gsttuner.html
-r--r--r-- 1 tpm tpm   5180 Jan  6 23:51 gst-plugins-base-libs-gsttunernorm.html
-r--r--r-- 1 tpm tpm   4663 Jan  6 23:51 gst-plugins-base-libs-gstvideofilter.html
-r--r--r-- 1 tpm tpm 131021 Jan  6 23:51 gst-plugins-base-libs-gstvideo.html
-r--r--r-- 1 tpm tpm  29636 Jan  6 23:51 gst-plugins-base-libs-gstvideoorientation.html
-r--r--r-- 1 tpm tpm  15352 Jan  6 23:51 gst-plugins-base-libs-gstvideosink.html
-r--r--r-- 1 tpm tpm  56139 Jan  6 23:51 gst-plugins-base-libs-gstxoverlay.html
-r--r--r-- 1 tpm tpm   2589 Jan  6 23:51 gstreamer-app.html
-r--r--r-- 1 tpm tpm   4029 Jan  6 23:51 gstreamer-audio.html
-r--r--r-- 1 tpm tpm   3668 Jan  6 23:51 gstreamer-base-utils.html
-r--r--r-- 1 tpm tpm   2314 Jan  6 23:51 gstreamer-cdda.html
-r--r--r-- 1 tpm tpm   3193 Jan  6 23:51 gstreamer-ffft.html
-r--r--r-- 1 tpm tpm   2314 Jan  6 23:51 gstreamer-floatcast.html
-r--r--r-- 1 tpm tpm   5182 Jan  6 23:51 gstreamer-interfaces.html
-r--r--r-- 1 tpm tpm   6008 Jan  6 23:51 gstreamer-libs-hierarchy.html
-r--r--r-- 1 tpm tpm   2335 Jan  6 23:51 gstreamer-netbuffer.html
-r--r--r-- 1 tpm tpm  16896 Jan  6 23:51 gstreamer-plugins-base.html
-r--r--r-- 1 tpm tpm   2283 Jan  6 23:51 gstreamer-riff.html
-r--r--r-- 1 tpm tpm   3290 Jan  6 23:51 gstreamer-rtp.html
-r--r--r-- 1 tpm tpm   3538 Jan  6 23:51 gstreamer-rtsp.html
-r--r--r-- 1 tpm tpm   2293 Jan  6 23:51 gstreamer-sdp.html
-r--r--r-- 1 tpm tpm   3501 Jan  6 23:51 gstreamer-tag.html
-r--r--r-- 1 tpm tpm   2648 Jan  6 23:51 gstreamer-video.html
-r--r--r-- 1 tpm tpm    654 Jan  6 23:51 home.png
-r--r--r-- 1 tpm tpm  16956 Jan  6 23:51 index.html
-r--r--r-- 1 tpm tpm 289623 Jan  6 23:51 index.sgml
-r--r--r-- 1 tpm tpm    459 Jan  6 23:51 left.png
-r--r--r-- 1 tpm tpm    472 Jan  6 23:51 right.png
-r--r--r-- 1 tpm tpm   5166 Jan  6 23:51 style.css
-r--r--r-- 1 tpm tpm    406 Jan  6 23:51 up.png
tpm@zingle:~/gst/git/gst-plugins-base/gst-plugins-base-0.10.31.2$
Comment 6 Tim-Philipp Müller 2011-01-07 01:01:22 UTC
In the same vein, also note the OSX build bot complaining about "cp -a":

> Making all in libs
> cp: illegal option -- a
> usage: cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file
>        cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ... target_directory
> touch setup.stamp
Comment 7 Tim-Philipp Müller 2011-01-07 12:48:58 UTC
I think it's the -jN, but only seems to affect distcheck, so will fix it after the first pre-release.
Comment 8 Stefan Sauer (gstreamer, gtkdoc dev) 2011-01-07 14:01:22 UTC
(In reply to comment #6)
> In the same vein, also note the OSX build bot complaining about "cp -a":
> 
> > Making all in libs
> > cp: illegal option -- a
> > usage: cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file
> >        cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ... target_directory
> > touch setup.stamp


Can someone with access to the macosx machine try changing common/gtk-doc.mak and use "cp -p" instead of "cp -a".
Comment 9 Edward Hervey 2011-01-07 15:22:13 UTC
replacing cp -p instead of cp -a does fix the issues on macosx.
Comment 10 Tim-Philipp Müller 2011-01-10 14:47:16 UTC
commit 68245b857e76d3a10254eb86618276af2588941b
Author: Edward Hervey <edward.hervey@collabora.co.uk>
Date:   Fri Jan 7 16:00:48 2011 +0100

    gtk-doc.mak: use cp -p instead of cp -a
    
    Fixes issues on macosx

commit d8839fe3781b7525d4b9ac3f5027d68dfed051ba
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Mon Jan 10 14:15:18 2011 +0000

    gtk-doc*.mak: use .NOTPARALLEL to avoid distcheck errors with -jN
    
    https://bugzilla.gnome.org/show_bug.cgi?id=636851