GNOME Bugzilla – Bug 636851
allow out of source-dir build
Last modified: 2011-01-10 14:47:16 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.
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.
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?
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 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
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$
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
I think it's the -jN, but only seems to affect distcheck, so will fix it after the first pre-release.
(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".
replacing cp -p instead of cp -a does fix the issues on macosx.
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