discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Debian and Ubuntu packages - 2015/06/03


From: Ivan Vučica
Subject: Re: Debian and Ubuntu packages - 2015/06/03
Date: Thu, 04 Jun 2015 12:19:50 +0000

On Thu, Jun 4, 2015 at 12:48 PM Philippe Roussel <p.o.roussel@free.fr> wrote:
On recent distributions I had to remove the objc/ include folder
coming from gcc for gnustep-base to compile otherwise it correctly
found libobjc2 but used gcc's libobjc headers. I guess something could
be done on gnustep-base makefile but I didn't take the time to check.

That makes sense. It sounds like what I tried to work around (but it was back in November, and at 1am I was rather too tired to resume investigation).

So this sounds like a good advice. I'll try moving GCC's Objective-C runtime away, or fixing the header search path in [1].
 
[1]: https://bitbucket.org/ivucica/gnustep-ubuntu/src/090850d1fb1cfbc3a0e1eb7ef5d7f34f56bc4f71/phases/26-pack-gnustep-base.sh?at=default at lines 23-28.


What does your patch look like ?


November ivucica accompanied the patch with the following note, so I assume the patch is actually broken:
#### ADDING RUNTIME.H DIDNT HELP FOR SOME REASON
# Maybe HAVE_OBJC_RUNTIME_H is not defined?! Maybe config.h must be 
# included?

I'll know more after I take another look.

Index: Source/Additions/GSObjCRuntime.m
===================================================================
--- Source/Additions/GSObjCRuntime.m    (revision 38165)
+++ Source/Additions/GSObjCRuntime.m    (working copy)
@@ -49,6 +49,10 @@
 
 #import "../GSPrivate.h"
 
+#if HAVE_OBJC_RUNTIME_H
+#include <objc/runtime.h> /* needed for GNUstep's libobjc2 to be detected through __GNUSTEP_RUNTIME__ */
+#endif
+
 #include <objc/Protocol.h>
 
 #include <stdio.h>
@@ -156,10 +160,10 @@
 {
 #if NeXT_RUNTIME
   return sel_getUid(name);
+#elif defined (__GNUSTEP_RUNTIME__)
+  return sel_registerTypedName_np(name, types);
 #elif defined (__GNU_LIBOBJC__) && (__GNU_LIBOBJC__ >= 20110608)
   return sel_registerTypedName(name, types);
-#elif defined (__GNUSTEP_RUNTIME__)
-  return sel_registerTypedName_np(name, types);
 #else
 extern SEL sel_get_any_typed_uid(const char*);
 extern SEL sel_get_typed_uid(const char*, const char*);
@@ -203,10 +207,10 @@
 {
 #if NeXT_RUNTIME
   return 0;
+#elif defined (__GNUSTEP_RUNTIME__)
+  return sel_getType_np(sel);
 #elif defined (__GNU_LIBOBJC__)
   return sel_getTypeEncoding(sel);
-#elif defined (__GNUSTEP_RUNTIME__)
-  return sel_getType_np(sel);
 #else
   if (sel == 0)
     {
Index: Source/NSException.m
===================================================================
--- Source/NSException.m        (revision 38165)
+++ Source/NSException.m        (working copy)
@@ -47,6 +47,10 @@
 #include <objc/objc-exception.h>
 #endif
 
+#ifdef HAVE_UNEXPECTED
+extern void (*_objc_unexpected_exception)(id);
+#endif
+
 #ifdef HAVE_MALLOC_H
 #if !defined(__OpenBSD__)
 #include <malloc.h>

ps : nice work on your build system

Merci beaucoup! :-)

Thank you for your work on packages that actually build properly :-)

n.b. If this build system actually starts to work (it used to work, but IIRC not with Clang), producing packages for additional applications involves providing a .spec file, including Master/deb.make from gnustep-make into GNUmakefile, and running: 
  make debfiles && make deb

Afterwards, pushing source packages to Launchpad (so they can be built by Canonical into binaries for PPAs) will involve something similar to:
  dput ppa:your-launchpad-username/your-launchpad-repository build/gnustep/core/{make,base/obj,gui/obj,back/obj}/debian_dist/*_source.changes

But, it needs to actually work first... :-)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]