View Issue Details

IDProjectCategoryView StatusLast Update
0001616SOGoBackend Generalpublic2012-10-25 14:17
Reporterdekkers Assigned Towsourdeau 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version1.3.11 
Fixed in Version2.0.2 
Summary0001616: Correctly link libraries that are used and don't link unused libraries
Description

SOPE and SOGo doesn't link libraries correctly: Libraries that are used aren't linked and some unused libraries are linked. This results in that the shared objects don't have the correct dependencies and that can give a lot of problems. An example is that SOGo doesn't build anymore when SOPE is changed to use GnuTLS: SOGo uses OpenSSL but doesn't link to it directly, the only reason it works is because another dependency (SOPE) does link to OpenSSL. When applying the linking patches to SOGo and SOPE my GnuTLS can also be applied without any problem. Something else that I found out is that xmlrpc was actually linked but not used by any code at all, so that doesn't have to build anymore/can be removed from SOPE if we only want code used by SOGo.

This also gets rid of lots of dpkg-shlibdeps warnings when building debian packages.

TagsNo tags attached.

Relationships

related to 0001615 resolvedwsourdeau Correctly link libraries that are used and don't link unused libraries 

Activities

2012-02-06 15:48

 

0003-link-everything-correctly.patch (3,812 bytes)   
From: Jeroen Dekkers <jeroen@dekkers.ch>
Date: Wed, 7 Dec 2011 21:11:45 +0100
Subject: link-everything-correctly

---
 Main/GNUmakefile.preamble                 |    2 +-
 OGoContentStore/GNUmakefile.preamble      |    4 +++-
 SOPE/GDLContentStore/GNUmakefile.preamble |    3 +--
 SOPE/NGCards/GNUmakefile.preamble         |    3 +--
 SoObjects/SOGo/GNUmakefile.preamble       |    4 ++--
 SoObjects/common.make                     |    2 +-
 UI/SOGoUI/GNUmakefile.preamble            |    4 ++--
 7 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble
index 7614f20..675b591 100644
--- a/Main/GNUmakefile.preamble
+++ b/Main/GNUmakefile.preamble
@@ -25,4 +25,4 @@ $(SOGOD)_TOOL_LIBS += \
 	-lNGObjWeb		\
 	-lNGMime -lNGLdap	\
 	-lNGStreams -lNGExtensions -lEOControl \
-	-lDOM -lXmlRpc -lSaxObjC
+	-lDOM -lSaxObjC
diff --git a/OGoContentStore/GNUmakefile.preamble b/OGoContentStore/GNUmakefile.preamble
index 7a9042c..b2d9374 100644
--- a/OGoContentStore/GNUmakefile.preamble
+++ b/OGoContentStore/GNUmakefile.preamble
@@ -6,7 +6,9 @@ libOGoContentStore_LIBRARIES_DEPEND_UPON += \
 	-lNGCards	\
 	-lNGExtensions	\
 	-lEOControl	\
-	-lSaxObjC
+	-lSaxObjC	\
+	-lgnustep-base	\
+	-lobjc
 
 ADDITIONAL_INCLUDE_DIRS += -I. -I.. -I../SOPE -I../SoObjects
 
diff --git a/SOPE/GDLContentStore/GNUmakefile.preamble b/SOPE/GDLContentStore/GNUmakefile.preamble
index 58c1401..6c900d3 100644
--- a/SOPE/GDLContentStore/GNUmakefile.preamble
+++ b/SOPE/GDLContentStore/GNUmakefile.preamble
@@ -12,8 +12,7 @@ ADDITIONAL_INCLUDE_DIRS += -I. -I..
 libGDLContentStore_LIBRARIES_DEPEND_UPON += \
 	-lGDLAccess			\
 	-lNGExtensions -lEOControl	\
-	-lDOM -lSaxObjC \
-        -lgnustep-base
+        -lgnustep-base -lobjc
 
 GDLContentStore_LIBRARIES_DEPEND_UPON += \
 	-framework GDLAccess	\
diff --git a/SOPE/NGCards/GNUmakefile.preamble b/SOPE/NGCards/GNUmakefile.preamble
index e178ea5..6fc0b52 100644
--- a/SOPE/NGCards/GNUmakefile.preamble
+++ b/SOPE/NGCards/GNUmakefile.preamble
@@ -20,9 +20,8 @@ ADDITIONAL_INCLUDE_DIRS += \
 libNGCards_LIBRARIES_DEPEND_UPON += \
 	-lNGExtensions	\
 	-lEOControl	\
-	-lDOM		\
 	-lSaxObjC \
-        -lgnustep-base
+        -lgnustep-base -lobjc -lm
 
 NGCards_LIBRARIES_DEPEND_UPON += \
 	-framework NGExtensions	-framework EOControl \
diff --git a/SoObjects/SOGo/GNUmakefile.preamble b/SoObjects/SOGo/GNUmakefile.preamble
index ee71f35..55dd2be 100644
--- a/SoObjects/SOGo/GNUmakefile.preamble
+++ b/SoObjects/SOGo/GNUmakefile.preamble
@@ -21,9 +21,9 @@ SOGo_LIBRARIES_DEPEND_UPON += \
 	-lNGCards		\
 	-lNGMime		\
 	-lNGStreams -lNGExtensions -lEOControl \
-	-lXmlRpc -lDOM -lSaxObjC \
+	-lDOM -lSaxObjC \
 	-lNGLdap -lSBJson \
-        -lGDLContentStore
+        -lGDLContentStore -lcrypto -lgnustep-base -lobjc -ldl
 
 ifeq ($(findstring openbsd, $(GNUSTEP_HOST_OS)), openbsd)
 SOGo_LIBRARIES_DEPEND_UPON += -lcrypto
diff --git a/SoObjects/common.make b/SoObjects/common.make
index f28886d..8dc2d8c 100644
--- a/SoObjects/common.make
+++ b/SoObjects/common.make
@@ -31,6 +31,6 @@ BUNDLE_LIBS += \
 	-lNGObjWeb				\
 	-lNGCards -lNGMime -lNGLdap		\
 	-lNGStreams -lNGExtensions -lEOControl	\
-	-lXmlRpc -lDOM -lSaxObjC -lSBJson
+	-lDOM -lSaxObjC -lSBJson
 
 ADDITIONAL_BUNDLE_LIBS += $(BUNDLE_LIBS)
diff --git a/UI/SOGoUI/GNUmakefile.preamble b/UI/SOGoUI/GNUmakefile.preamble
index d54766e..9288140 100644
--- a/UI/SOGoUI/GNUmakefile.preamble
+++ b/UI/SOGoUI/GNUmakefile.preamble
@@ -9,8 +9,8 @@ endif
 libSOGoUI_LIBRARIES_DEPEND_UPON += \
 	-lNGObjWeb	\
 	-lNGMime	\
-	-lNGStreams -lNGExtensions -lEOControl \
-	-lXmlRpc -lDOM -lSaxObjC -lWOExtensions
+	-lNGExtensions -lEOControl \
+	-lSaxObjC -lgnustep-base -lSOGo -lobjc
 
 SYSTEM_LIB_DIR += -L/usr/local/lib -L/usr/lib
 ADDITIONAL_INCLUDE_DIRS += -I../../SoObjects
-- 
Christian Mack

Christian Mack

2012-02-07 05:28

developer   ~0003377

See also Bug 0001615

wsourdeau

wsourdeau

2012-02-07 08:53

viewer   ~0003380

I am a bit surprised that you had to add an explicit link to libgnustep-base and libobjc, as I would expect the GNUstep makefiles to take care of this...

wsourdeau

wsourdeau

2012-10-25 14:16

viewer   ~0004709

Regarding the last comment: it makes sense since the idea is to link against gnustep when libraries are making use of GNUstep symbols, bot not specifically when they provide their own set of symbols.

However, in general, it's very unlikely since most classes in most libraries will be child classes of NSObject.

Issue History

Date Modified Username Field Change
2012-02-06 15:48 dekkers New Issue
2012-02-06 15:48 dekkers File Added: 0003-link-everything-correctly.patch
2012-02-07 05:28 Christian Mack Note Added: 0003377
2012-02-07 08:53 wsourdeau Note Added: 0003380
2012-02-09 03:04 Christian Mack Relationship added related to 0001615
2012-10-25 14:16 wsourdeau Note Added: 0004709
2012-10-25 14:17 wsourdeau Status new => resolved
2012-10-25 14:17 wsourdeau Fixed in Version => 2.0.2
2012-10-25 14:17 wsourdeau Resolution open => fixed
2012-10-25 14:17 wsourdeau Assigned To => wsourdeau