I'm answering my own email.....

On 
http://wwwmain.gnustep.org/resources/downloads.php?site=ftp%3A%2F%2Fftp.gnustep.org%2Fpub%2Fgnustep%2F

Do *not* use GNUstep-startup

Download the four individual packages (Make/Base/GUI/Backend) and

#1 : compile / install make
#2 : compile / install libobjc2
#3 : compile / install the three remaining (Base/Gui/Backend)

Enjoy!

It works ;-)

Very happy camper.

-- 
  Laurent


PS/ Only issue I have now is in my code:

Calling [GSMutableSet -enumerateObjectsUsingBlock:] with incorrect signature.  
Method has v12@0:4^{?=^vii^?}8, selector has v12@0:4@?8


This happens when the following runs (and that runs fine on MacOS 10.7.x)

-(float)varOrdering:(id<CPIntVar>)x
{
   __block float h = 0.0;
   NSSet* theConstraints = _cv[[x getId]];   
   [theConstraints enumerateObjectsUsingBlock:^void(id obj, BOOL *stop) {
      if ([obj nbUVars] - 1 > 0)
         h += _w[[obj getId]];
   }];
   return h / [x domsize];
}


That enumerateObjects looks innocuous to me.






On May 18, 2012, at 12:03 PM, Laurent Michel wrote:

> Dear Eric (and everybody else reading! ;-)),
> 
> One more question, if I can abuse of your time some more....
> 
> To make a long story short, I apparently failed to get GNUstep compiled with 
> the newer libobjc2 runtime you pointed me at, but my own
> code does compile against that runtime. However, my code does not link 
> succesfully against the GNUstep I cobbled together on Ubuntu. 
> 
> Any attempt to build GNUstep with the gcc tool suite pulls a different 
> (older) libobjc runtime and the two are incompatible. So I eventually decide 
> to remove all the tools that came with ubuntu and try to build GNUstep with 
> clang. 
> 
> Note that I successfully build the libobjc2 you pointed me to. 
> 
> To attempt a build of GNUstep:
> 
> 1. export CC=clang
> 2. ./InstallGNUstep
> 
> Step #2 fails to succesffully configure GNUstep though. Here is the report it 
> produces at the end:
> 
> * Startup configuration report                                      *
> *********************************************************************
> --------------------------------------------------------------
> W107 Warning
> No XML library support was found. The GNUstep uses XML for many basic
> functions, such as reading/writing property lists. XML will automatically
> be disabled, but this is probably not what you want. If possible you should
> stop installation and install an xml library.
> --------------------------------------------------------------
> W125 Warning 
> The OpenSSL package (libcrypto, etc) is needed to access https connections
> with NSURL and for other purposes. This package is optional so you are
> not required to install it.
> --------------------------------------------------------------
> E150 Error
> You do not have the GNU Objective-C compiler installed
> Check to make sure you have a full installation of the GCC
> compiler that includes the Objective-C headers and libraries
> --------------------------------------------------------------
> W272 Warning
> You do not have a recent version of the libobjc library. Startup
> will install one.
> --------------------------------------------------------------
> E281 Error
> I don't seem to be able to use your Objective-C compiler to produce
> working binaries!  Please check your Objective-C compiler installation.
> For gcc-3.0.x make sure that your compiler's libgcc_s and libobjc
> can be found by the dynamic linker - usually that requires you to add
> the directory given by gcc -print-file-name=libobjc.so to your
> LD_LIBRARY_PATH or /etc/ld.so.conf.
> 
> 
> However: 
> 1. I do have libxml2 and libxml2-dev
> 2. I do lhave libopenssl and its dev package as well
> 3. Scrolling up, I can see that the configure invoked by this script did try 
> to use clang. 
> 
> For instance:
> 
> checking for library combo... gnu-gnu-gnu
> checking for prefix... checking for gcc... clang
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables... 
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether clang accepts -g... yes
> checking for clang option to accept ISO C89... none needed
> checking how to run the C preprocessor... clang -E
> configure: Configuring on linux-gnu
> checking compiler version... gcc major version is 4
> checking for apple compiler... no
> checking for ar... ar
> checking for ld... ld
> checking for dlltool... no
> checking for gawk... no
> checking for awk... awk
> checking for patch... patch
> checking for ranlib... ranlib
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether ln -s works... yes
> checking for whoami... /usr/bin/whoami
> checking for gmake... no
> checking for make... make
> checking make version > 3.75... yes GNU Make 3.81
> checking broken make... ok
> checking binutils version > 2.9... yes GNU ld (GNU Binutils for Ubuntu) 2.22
> checking iconv version > 2.1... yes 2.15
> checking iconv support... yes, in libc
> checking for xml2-config... /usr/bin/xml2-config
> checking for libxml - version >= 2.3.0... no
> *** Could not run libxml test program, checking why...
> checking the Objective-C runtime... GNU
> 
> 
> It also says it is going to try to use the GNU version of the objective-C 
> runtime. So I suspect that he can't locate the newer one I gave
> even though I added it in ldconfig:
> 
> root@ubuntu:/usr/local/src/gnustep-startup-0.28.0# ldconfig -p|grep objc
>       libobjcxx.so.4.6.0 (libc6) => /usr/local/lib/libobjcxx.so.4.6.0
>       libobjcxx.so.4.6 (libc6) => /usr/local/lib/libobjcxx.so.4.6
>       libobjcxx.so.4 (libc6) => /usr/local/lib/libobjcxx.so.4
>       libobjcxx.so (libc6) => /usr/local/lib/libobjcxx.so
>       libobjc.so.4.6.0 (libc6) => /usr/local/lib/libobjc.so.4.6.0
>       libobjc.so.4.6 (libc6) => /usr/local/lib/libobjc.so.4.6
>       libobjc.so.4 (libc6) => /usr/local/lib/libobjc.so.4
>       libobjc.so (libc6) => /usr/local/lib/libobjc.so
> 
> 
> So it is present. 
> 
> I checked the header and:
> 
> root@ubuntu:/usr/local/src/gnustep-startup-0.28.0/build# updatedb
> root@ubuntu:/usr/local/src/gnustep-startup-0.28.0/build# locate objc.h
> /usr/local/include/objc/objc.h
> /usr/local/src/libobjc2-1.6/objc/objc.h
> 
> Namely, there is only one objc.h (the good one)
> 
> 
> Looking inside the log, I see:
> 
> configure:6154: checking whether objc has thread support
> configure:6186: clang -o conftest -g -O2 -x objective-c 
> -I/usr/local/src/gnustep-startup-0.28.0 -fgnu-runtime   conftest.c -lobjc 
> -lpthread >&5
> In file included from conftest.c:14:
> /usr/local/src/gnustep-startup-0.28.0/config/config_thread.m:5:10: fatal 
> error: 'objc/NXConstStr.h' file not found
> #include <objc/NXConstStr.h>
>          ^
> 1 error generated.
> configure:6186: $? = 1
> configure: program exited with status 1
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME "GNUstep Setup"
> | #define PACKAGE_TARNAME "gnustep-setup"
> | #define PACKAGE_VERSION "0.20.0"
> | #define PACKAGE_STRING "GNUstep Setup 0.20.0"
> | #define PACKAGE_BUGREPORT "[email protected]"
> | #define PACKAGE_URL ""
> | #define HAVE_ICONV 1
> | #define HAVE_OPENSSL_SSL_H 1
> | #define HAVE_LIBCRYPTO 1
> | #define HAVE_OBJC_OBJC_H 1
> | #define HAVE_CALLBACK_H 1
> | /* end confdefs.h.  */
> | #include "/usr/local/src/gnustep-startup-0.28.0/config/config_thread.m"
> configure:6348: result: no
> 
> and /usr/local/include/objc does not contain anything named NXConstStr.h
> 
> root@ubuntu:/usr/local/src/gnustep-startup-0.28.0/build# ls 
> /usr/local/include/objc/
> Availability.h    capabilities.h  encoding.h  objc-api.h  objc-auto.h  
> Object.h    runtime-deprecated.h  slot.h
> blocks_runtime.h  developer.h     hooks.h     objc-arc.h  objc.h       
> Protocol.h  runtime.h             toydispatch.h
> 
> So... what is going on ? is the configure picking the wrong runtime? 
> 
> Any hint at how to diagnose this? 
> 
> Thanks again!
> 
> 
> 
> (Aside on the XML / openssl issue)
> 
> 
> (For XML:
> I have libxml2 installed (including dev package of course). The configuration 
> fails though with this in the log for libxml2:
> 
> configure:4208: checking for xml2-config
> configure:4226: found /usr/bin/xml2-config
> configure:4239: result: /usr/bin/xml2-config
> configure:4293: checking for libxml - version >= 2.3.0
> configure:4472: gcc -o conftest -g -O2 -I/usr/include/libxml2   conftest.c 
> /i386-linux-gnu -lxml2  >&5
> gcc: error: /i386-linux-gnu: No such file or directory
> 
> The compilation command constructed is clearly incorrect. 
> 
> Then I have a second error related to openssl:
> 
> configure:4989: gcc -o conftest -g -O2   conftest.c -lsocket  -lcrypto  >&5
> /usr/bin/ld: cannot find -lsocket
> 
> There is no socket lib. sockets are part of libc no?
> )
> 
> 
> 
> 
> 
> On May 17, 2012, at 11:09 PM, Eric Wasylishen wrote:
> 
>> Hi Laurent,
>> 
>> To use blocks in GNUstep you need to use the GNUstep Objective-C runtime, 
>> a.k.a. libobjc2, whose releases are available here: 
>> http://download.gna.org/gnustep/  
>> 
>> Unfortunately, I don't think this library is available in debian/ubuntu 
>> (though I could be wrong!). Confusingly, the package called "libobjc2" in 
>> debian/ubuntu is unrelated to the GNUstep Objective-C runtime and doesn't 
>> support blocks.
>> 
>> So, as far as I know, what you'll need to do is remove the Ubuntu packages 
>> for gnustep you installed, then install libobjc2 and GNUstep again from the 
>> source packages. (Latest gnustep releases are at: 
>> http://wwwmain.gnustep.org/resources/downloads.php)
>> 
>> 
>> The Etoile ObjectiveC2 framework no longer exists and isn't something you 
>> need to worry about. IIRC, the initial support in GNUstep for the modern 
>> Objective-C runtime api's was started in that framework in Etoile, but that 
>> code has since been merged into GNUstep and libobjc2.
>> 
>> Hope this helps,
>> 
>> Eric
>> 
>> On 2012-05-17, at 9:27 PM, Laurent Michel wrote:
>> 
>>> Dear All,
>>> 
>>> I develop on MaOS and would love to port my code to Linux. Essentially, I 
>>> use Objective-C 2.0 with clang as a compiler.
>>> I created an Ubuntu 12.04 VM under VMWare and installed GNUStep through 
>>> that channel. I compiled a silly hello world and that worked fine.
>>> My problems started when I tried to compile my own code which makes *heavy* 
>>> use of Objective-C blocks. I always end-up seeing this message:
>>> 
>>> clang -I/usr/GNUstep/System/Library/Headers  -fblocks -fobjc-nonfragile-abi 
>>> -c CPFactory.m 
>>> In file included from CPFactory.m:27:
>>> In file included from ./CPFactory.h:27:
>>> In file included from 
>>> /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h:30:
>>> /usr/GNUstep/System/Library/Headers/GNUstepBase/GSVersionMacros.h:287:14: 
>>> fatal error: 'objc/blocks_runtime.h' file not found
>>> 
>>> 
>>> namely, it cannot find objc/blocks_runtime.h
>>> 
>>> I started googling around and I found lots of conflicting information on 
>>> the topic as well as reference to Etoile, and ObjectiveC2 (a framework) but 
>>> it seems largely incompatible with GNUStep. I'll looking for some 
>>> directions to get going with a simple code that uses blocks. For instance, 
>>> a silly test like:
>>> 
>>> #import <Foundation/NSObject.h>
>>> 
>>> int foo(int (^b)(int)) {
>>>  return b(5);
>>> }
>>> 
>>> int main() {
>>> 
>>>  int y = 10;
>>>  int z = foo(^(int x) {
>>>      return y + x; 
>>>     });
>>>  NSLog(@"result is %d\n",z);
>>> }
>>> 
>>> 
>>> Should compile and run when linked against the Foundation framework. 
>>> 
>>> Any pointer is greatly appreciated.
>>> 
>>> --
>>> Laurent
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Gnustep-dev mailing list
>>> [email protected]
>>> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>> 
> 
> _______________________________________________
> Gnustep-dev mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/gnustep-dev

_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to