summaryrefslogtreecommitdiffstats
path: root/src/jack-4-install-libs-to-subdir.patch
blob: 6783846d414ab1365dc891093c6f4b032a96abcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
This file is part of MXE.
See index.html for further information.

From f388514f8cba7102eec857aa4c2675d1024cd25c Mon Sep 17 00:00:00 2001
From: Boris Nagaev <bnagaev@gmail.com>
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/<target>/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