From 779f2c0a12bd3d73223c4e5ca525318555d30bc1 Mon Sep 17 00:00:00 2001 From: Boris Nagaev Date: Fri, 1 Jan 2016 14:24:42 +0300 Subject: jack: consolidate patches --- src/jack-1-fixes.patch | 188 +++++++++++++++++++++ src/jack-1-link-to-libsndfile-deps.patch | 28 --- src/jack-2-disable-sigquit-and-sighup.patch | 45 ----- ...3-add-lreadline-to-linkflags-of-transport.patch | 52 ------ src/jack-4-install-libs-to-subdir.patch | 80 --------- 5 files changed, 188 insertions(+), 205 deletions(-) create mode 100644 src/jack-1-fixes.patch delete mode 100644 src/jack-1-link-to-libsndfile-deps.patch delete mode 100644 src/jack-2-disable-sigquit-and-sighup.patch delete mode 100644 src/jack-3-add-lreadline-to-linkflags-of-transport.patch delete mode 100644 src/jack-4-install-libs-to-subdir.patch diff --git a/src/jack-1-fixes.patch b/src/jack-1-fixes.patch new file mode 100644 index 0000000..dcadf4e --- /dev/null +++ b/src/jack-1-fixes.patch @@ -0,0 +1,188 @@ +This file is part of MXE. +See index.html for further information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Harry Nakos +Date: Tue, 16 Jun 2015 21:55:31 +0300 +Subject: [PATCH] Patch wscript to link to FLAC, vorbis, vorbisenc, and ogg + libraries + +... which libsndfile is dependent on, since libsndfile will most probably +have not been built statically linked to those libraries. + +diff --git a/example-clients/wscript b/example-clients/wscript +index 1111111..2222222 100644 +--- a/example-clients/wscript ++++ b/example-clients/wscript +@@ -41,6 +41,10 @@ def configure(conf): + + if conf.is_defined('HAVE_SNDFILE'): + conf.env['LIB_SNDFILE'] = ['sndfile'] ++ conf.env['LIB_FLAC'] = ['FLAC'] ++ conf.env['LIB_VORBIS'] = ['vorbis'] ++ conf.env['LIB_VORBISENC'] = ['vorbisenc'] ++ conf.env['LIB_OGG'] = ['ogg'] + + conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs', mandatory=False) + +@@ -124,7 +128,7 @@ def build(bld): + if bld.env['IS_SUN']: + prog.use += ['RT', 'SNDFILE'] + if bld.env['IS_WINDOWS']: +- prog.uselib = ['SNDFILE'] ++ prog.uselib = ['SNDFILE', 'FLAC', 'VORBIS', 'VORBISENC', 'OGG'] + prog.target = 'jack_rec' + + if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']: + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Boris Nagaev +Date: Mon, 31 Aug 2015 23:39:35 +0200 +Subject: [PATCH] disable SIGQUIT and SIGHUP + +Windows doesn't have them. + +Fixed error: + + ../example-clients/transport.c: In function 'main': + ../example-clients/transport.c:462:9: error: 'SIGQUIT' undeclared (first use in this function) + signal(SIGQUIT, signal_handler); + ^ + ../example-clients/transport.c:462:9: note: each undeclared identifier is reported only once for each function it appears in + ../example-clients/transport.c:464:9: error: 'SIGHUP' undeclared (first use in this function) + signal(SIGHUP, signal_handler); + ^ + +diff --git a/example-clients/transport.c b/example-clients/transport.c +index 1111111..2222222 100644 +--- a/example-clients/transport.c ++++ b/example-clients/transport.c +@@ -459,9 +459,13 @@ int main(int argc, char *argv[]) + return 1; + } + ++#ifndef _WIN32 + signal(SIGQUIT, signal_handler); ++#endif + signal(SIGTERM, signal_handler); ++#ifndef _WIN32 + signal(SIGHUP, signal_handler); ++#endif + signal(SIGINT, signal_handler); + + jack_on_shutdown(client, jack_shutdown, 0); + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Boris Nagaev +Date: Tue, 1 Sep 2015 22:59:47 +0200 +Subject: [PATCH] link transport.c -lreadline and -ltermcap + +Fixed error: + +src/jack-3-add-lreadline-to-linkflags-of-transport.patch: + + example-clients/transport.c.28.o:transport.c:(.text+0x2e0): undefined reference to `rl_cleanup_after_signal' + example-clients/transport.c.28.o:transport.c:(.text+0xa27): undefined reference to `rl_readline_name' + example-clients/transport.c.28.o:transport.c:(.text+0xa2d): undefined reference to `rl_completion_entry_function' + example-clients/transport.c.28.o:transport.c:(.text+0xa3e): undefined reference to `readline' + example-clients/transport.c.28.o:transport.c:(.text+0xa82): undefined reference to `add_history' + +diff --git a/example-clients/wscript b/example-clients/wscript +index 1111111..2222222 100644 +--- a/example-clients/wscript ++++ b/example-clients/wscript +@@ -49,12 +49,13 @@ def configure(conf): + conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs', mandatory=False) + + e = conf.check_cc(lib='readline', define_name="HAVE_READLINE", mandatory=False) ++ e = conf.check_cc(lib='termcap', define_name="HAVE_TERMCAP", mandatory=False) + + # define_name="HAVE_READLINE" has no effect, LIB_READLINE is defined if readline is available + #if conf.is_defined('HAVE_READLINE'): + # conf.env['LIB_READLINE'] = ['readline'] + +- conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = bool(conf.env['LIB_READLINE']) ++ conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = bool(conf.env['LIB_READLINE']) and bool(conf.env['LIB_TERMCAP']) + + conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE') + +@@ -112,6 +113,7 @@ def build(bld): + if bld.env['IS_MACOSX']: + prog.use += ['READLINE'] + prog.target = 'jack_transport' ++ prog.use += ['READLINE', 'TERMCAP'] + + if bld.env['BUILD_EXAMPLE_CLIENT_REC']: + prog = bld(features = 'c cprogram') + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Boris Nagaev +Date: Tue, 1 Sep 2015 22:23:51 +0200 +Subject: [PATCH] install jack libs to lib/jack/ instead of lib/ + +Some Jack library names collide with other libraries, +namely portaudio. + +When Jack is installed first time, it adds libportaudio.dll.a to +usr/i686-w64-mingw32.static/lib/. Portaudio has library +usr/i686-w64-mingw32.static/lib/libportaudio.a. When Jack is compiled +second time, it uses its own libportaudio.dll.a instead of +libportaudio.a from portaudio. + +Removing usr/i686-w64-mingw32.static/lib/libportaudio.dll.a fixes build of Jack. + +For i686-w64-mingw32.shared, this can't be fixed by just removing +libportaudio.dll.a before building jack, because both portaudio and +jack have file usr/i686-w64-mingw32.shared/lib/libportaudio.dll.a. +Two packages must not have same file. + +jack's libraries should be installed to subdir of usr//lib/. + +Jack uses waf build system, which unpacks itself from file "waf". +Installation path for lib*.dll.a (PREFIX + /lib) is hardcoded in waf: + +waflib/Tools/ccroot.py: + + self.implib_install_task=self.bld.install_as('${PREFIX}/lib/%s'%implib.name,implib,self.env) + +The least ugly way to change subdir I can find is changing +function do_install in InstallContext class. Other approaches +either do not work or require changing contents of waflib +(which is unpacked from "waf" file in run-time). + +This patch replaces paths like "lib/libjack.dll.a" with +"lib/jack/libjack.dll.a", but doesn't replace +"/lib/pkgconfig/jack.pc". + +diff --git a/jack.pc.in b/jack.pc.in +index 1111111..2222222 100644 +--- a/jack.pc.in ++++ b/jack.pc.in +@@ -7,5 +7,5 @@ server_libs=-L@LIBDIR@ -l@SERVERLIB@ + Name: jack + Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server + Version: @JACK_VERSION@ +-Libs: -L@LIBDIR@ -ljack ++Libs: -L@LIBDIR@/jack -ljack + Cflags: -I@INCLUDEDIR@ +diff --git a/wscript b/wscript +index 1111111..2222222 100644 +--- a/wscript ++++ b/wscript +@@ -378,8 +378,13 @@ def configure(conf): + print(Logs.colors.NORMAL, end=' ') + print() + ++class MyInstallContext(InstallContext): ++ def do_install(self, src, tgt, *args, **kvargs): ++ tgt = str(tgt).replace('/lib/lib', '/lib/jack/lib') ++ InstallContext.do_install(self, src, tgt, *args, **kvargs) ++ + def init(ctx): +- for y in (BuildContext, CleanContext, InstallContext, UninstallContext): ++ for y in (BuildContext, CleanContext, MyInstallContext, UninstallContext): + name = y.__name__.replace('Context','').lower() + class tmp(y): + cmd = name + '_' + lib32 diff --git a/src/jack-1-link-to-libsndfile-deps.patch b/src/jack-1-link-to-libsndfile-deps.patch deleted file mode 100644 index 5986ebb..0000000 --- a/src/jack-1-link-to-libsndfile-deps.patch +++ /dev/null @@ -1,28 +0,0 @@ -This file is part of MXE. -See index.html for further information. - -This patch has been taken from: -???? - ---- jack-1.9.10/example-clients/wscript.orig 2015-06-16 15:34:56.407346962 +0300 -+++ jack-1.9.10/example-clients/wscript 2015-06-16 21:15:40.923117183 +0300 -@@ -41,6 +41,10 @@ - - if conf.is_defined('HAVE_SNDFILE'): - conf.env['LIB_SNDFILE'] = ['sndfile'] -+ conf.env['LIB_FLAC'] = ['FLAC'] -+ conf.env['LIB_VORBIS'] = ['vorbis'] -+ conf.env['LIB_VORBISENC'] = ['vorbisenc'] -+ conf.env['LIB_OGG'] = ['ogg'] - - conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs', mandatory=False) - -@@ -124,7 +128,7 @@ - if bld.env['IS_SUN']: - prog.use += ['RT', 'SNDFILE'] - if bld.env['IS_WINDOWS']: -- prog.uselib = ['SNDFILE'] -+ prog.uselib = ['SNDFILE', 'FLAC', 'VORBIS', 'VORBISENC', 'OGG'] - prog.target = 'jack_rec' - - if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']: diff --git a/src/jack-2-disable-sigquit-and-sighup.patch b/src/jack-2-disable-sigquit-and-sighup.patch deleted file mode 100644 index c9df003..0000000 --- a/src/jack-2-disable-sigquit-and-sighup.patch +++ /dev/null @@ -1,45 +0,0 @@ -This file is part of MXE. -See index.html for further information. - -From 2e1760b4bc62715f12e90c1396f839521506db85 Mon Sep 17 00:00:00 2001 -From: Boris Nagaev -Date: Mon, 31 Aug 2015 23:39:35 +0200 -Subject: [PATCH] disable SIGQUIT and SIGHUP - -Windows doesn't have them. - -Fixed error: - - ../example-clients/transport.c: In function 'main': - ../example-clients/transport.c:462:9: error: 'SIGQUIT' undeclared (first use in this function) - signal(SIGQUIT, signal_handler); - ^ - ../example-clients/transport.c:462:9: note: each undeclared identifier is reported only once for each function it appears in - ../example-clients/transport.c:464:9: error: 'SIGHUP' undeclared (first use in this function) - signal(SIGHUP, signal_handler); - ^ ---- - example-clients/transport.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/example-clients/transport.c b/example-clients/transport.c -index 76184df..f0e3924 100644 ---- a/example-clients/transport.c -+++ b/example-clients/transport.c -@@ -460,9 +460,13 @@ int main(int argc, char *argv[]) - return 1; - } - -+#ifndef _WIN32 - signal(SIGQUIT, signal_handler); -+#endif - signal(SIGTERM, signal_handler); -+#ifndef _WIN32 - signal(SIGHUP, signal_handler); -+#endif - signal(SIGINT, signal_handler); - - jack_on_shutdown(client, jack_shutdown, 0); --- -1.7.10.4 - diff --git a/src/jack-3-add-lreadline-to-linkflags-of-transport.patch b/src/jack-3-add-lreadline-to-linkflags-of-transport.patch deleted file mode 100644 index 48d13f1..0000000 --- a/src/jack-3-add-lreadline-to-linkflags-of-transport.patch +++ /dev/null @@ -1,52 +0,0 @@ -This file is part of MXE. -See index.html for further information. - -From cd9319a5a5570aab7cfd6a51630a13e7f9db9658 Mon Sep 17 00:00:00 2001 -From: Boris Nagaev -Date: Tue, 1 Sep 2015 22:59:47 +0200 -Subject: [PATCH] link transport.c -lreadline and -ltermcap - -Fixed error: - -src/jack-3-add-lreadline-to-linkflags-of-transport.patch: - - example-clients/transport.c.28.o:transport.c:(.text+0x2e0): undefined reference to `rl_cleanup_after_signal' - example-clients/transport.c.28.o:transport.c:(.text+0xa27): undefined reference to `rl_readline_name' - example-clients/transport.c.28.o:transport.c:(.text+0xa2d): undefined reference to `rl_completion_entry_function' - example-clients/transport.c.28.o:transport.c:(.text+0xa3e): undefined reference to `readline' - example-clients/transport.c.28.o:transport.c:(.text+0xa82): undefined reference to `add_history' - ---- - example-clients/wscript | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/example-clients/wscript b/example-clients/wscript -index fbf8999..8d6dfb9 100644 ---- a/example-clients/wscript -+++ b/example-clients/wscript -@@ -45,12 +45,13 @@ def configure(conf): - conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs', mandatory=False) - - e = conf.check_cc(lib='readline', define_name="HAVE_READLINE", mandatory=False) -+ e = conf.check_cc(lib='termcap', define_name="HAVE_TERMCAP", mandatory=False) - - # define_name="HAVE_READLINE" has no effect, LIB_READLINE is defined if readline is available - #if conf.is_defined('HAVE_READLINE'): - # conf.env['LIB_READLINE'] = ['readline'] - -- conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = bool(conf.env['LIB_READLINE']) -+ conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = bool(conf.env['LIB_READLINE']) and bool(conf.env['LIB_TERMCAP']) - - conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE') - -@@ -108,6 +109,7 @@ def build(bld): - if bld.env['IS_MACOSX']: - prog.use += ['READLINE'] - prog.target = 'jack_transport' -+ prog.use += ['READLINE', 'TERMCAP'] - - if bld.env['BUILD_EXAMPLE_CLIENT_REC']: - prog = bld(features = 'c cprogram') --- -1.7.10.4 - diff --git a/src/jack-4-install-libs-to-subdir.patch b/src/jack-4-install-libs-to-subdir.patch deleted file mode 100644 index 6783846..0000000 --- a/src/jack-4-install-libs-to-subdir.patch +++ /dev/null @@ -1,80 +0,0 @@ -This file is part of MXE. -See index.html for further information. - -From f388514f8cba7102eec857aa4c2675d1024cd25c Mon Sep 17 00:00:00 2001 -From: Boris Nagaev -Date: Tue, 1 Sep 2015 22:23:51 +0200 -Subject: [PATCH] install jack libs to lib/jack/ instead of lib/ - -Some Jack library names collide with other libraries, -namely portaudio. - -When Jack is installed first time, it adds libportaudio.dll.a to -usr/i686-w64-mingw32.static/lib/. Portaudio has library -usr/i686-w64-mingw32.static/lib/libportaudio.a. When Jack is compiled -second time, it uses its own libportaudio.dll.a instead of -libportaudio.a from portaudio. - -Removing usr/i686-w64-mingw32.static/lib/libportaudio.dll.a fixes build of Jack. - -For i686-w64-mingw32.shared, this can't be fixed by just removing -libportaudio.dll.a before building jack, because both portaudio and -jack have file usr/i686-w64-mingw32.shared/lib/libportaudio.dll.a. -Two packages must not have same file. - -jack's libraries should be installed to subdir of usr//lib/. - -Jack uses waf build system, which unpacks itself from file "waf". -Installation path for lib*.dll.a (PREFIX + /lib) is hardcoded in waf: - -waflib/Tools/ccroot.py: - - self.implib_install_task=self.bld.install_as('${PREFIX}/lib/%s'%implib.name,implib,self.env) - -The least ugly way to change subdir I can find is changing -function do_install in InstallContext class. Other approaches -either do not work or require changing contents of waflib -(which is unpacked from "waf" file in run-time). - -This patch replaces paths like "lib/libjack.dll.a" with -"lib/jack/libjack.dll.a", but doesn't replace -"/lib/pkgconfig/jack.pc". - ---- - jack.pc.in | 2 +- - wscript | 7 ++++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/jack.pc.in b/jack.pc.in -index fbda3a4..c67772b 100644 ---- a/jack.pc.in -+++ b/jack.pc.in -@@ -7,5 +7,5 @@ server_libs=-L@LIBDIR@ -l@SERVERLIB@ - Name: jack - Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server - Version: @JACK_VERSION@ --Libs: -L@LIBDIR@ -ljack -+Libs: -L@LIBDIR@/jack -ljack - Cflags: -I@INCLUDEDIR@ -diff --git a/wscript b/wscript -index aef4bd8..16507e7 100644 ---- a/wscript -+++ b/wscript -@@ -378,8 +378,13 @@ def configure(conf): - print(Logs.colors.NORMAL, end=' ') - print() - -+class MyInstallContext(InstallContext): -+ def do_install(self, src, tgt, *args, **kvargs): -+ tgt = str(tgt).replace('/lib/lib', '/lib/jack/lib') -+ InstallContext.do_install(self, src, tgt, *args, **kvargs) -+ - def init(ctx): -- for y in (BuildContext, CleanContext, InstallContext, UninstallContext): -+ for y in (BuildContext, CleanContext, MyInstallContext, UninstallContext): - name = y.__name__.replace('Context','').lower() - class tmp(y): - cmd = name + '_' + lib32 --- -1.7.10.4 - -- cgit v0.12