shithub: opusfile

Download patch

ref: 2b4bc45862cee8ed45a98d7835bebe36bf5318c8
parent: 137d309c0c5217c618f0c51e5cbaa71716dd9bcb
author: Ralph Giles <giles@mozilla.com>
date: Thu Nov 1 14:56:57 EDT 2012

Attempt to fix the autotools linking issue on jenkins.

The jenkins autotools build has never worked because we try to
build against uninstalled versions of the opus and ogg libraries,
whose pkg-config files export a static library. This works fine
for executables, but libtool seemingly can't link a dynamic library
against a static library.

We could change the -uninstalled.pc files to reference the libtool
versions of the libraries, but that breaks the unix makefile builds,
which of course don't use libtool.

As a work around, write out our own versions of the pc files and
use those to reference the file we need.

Also sets -x on both continuous integration scripts so it's more
clear what steps are being applied.

--- a/ci/autotools.sh
+++ b/ci/autotools.sh
@@ -4,18 +4,61 @@
 
 # This is intended to be run from the top-level source directory.
 
+set -x
+
 # WARNING: clobbers outside the current tree!
 rm  -f ../opus
 ln -s /srv/jenkins/jobs/opus/workspace ../opus
+rm  -f ../ogg
+ln -s /srv/jenkins/jobs/libogg/workspace ../ogg
 
+# HACK: libtool can't link a dynamic library to a static
+# library, and the 'unix' makefile build can't link to
+# a libopus.la. As a work around, hack our own pkg-config
+# file for the uninstalled opus library we want to build
+# against.
+cat <<EOF > opus-ininstalled.pc
+# Opus codec uninstalled pkg-config file
+# hacked up for the opusfile autotools build.
+
+libdir=\${pcfiledir}/../opus
+includedir=\${libdir}/include
+
+Name: opus uninstalled for opusfile
+Description: Opus IETF audio codec (not installed)
+Version: 1.0.1
+Requires:
+Conflicts:
+Libs: \${libdir}/libopus.la -lm
+Cflags: -I\${includedir}
+EOF
+
+cat <<EOF > ogg-uninstalled.pc
+# ogg uninstalled pkg-config file
+# hacked up for the opusfile autotools build
+
+libdir=\${pcfiledir}/../ogg/src
+includedir=\${pcfiledir}/../ogg/include
+
+Name: ogg uninstalled for opusfile
+Description: ogg is a library for manipulating ogg bitstreams (not installed)
+Version: 1.3.0
+Requires:
+Conflicts:
+Libs: \${libdir}/libogg.la
+Cflags: -I\${includedir}
+EOF
+
+PKG_CONFIG_PATH=$PWD
+
 # compile
 ./autogen.sh
-./configure PKG_CONFIG_PATH=$PWD/../opus
+./configure PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
 make clean
 make
 
 # verify distribution target
-make distcheck
+make distcheck PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
 
 # build the documentation
 make -C doc/latex
--- a/ci/unix.sh
+++ b/ci/unix.sh
@@ -4,6 +4,8 @@
 
 # This is intended to be run from the top-level source directory.
 
+set -x
+
 # WARNING: clobbers outside the current tree!
 rm  -f ../opus
 ln -s /srv/jenkins/jobs/opus/workspace ../opus