Am 17.10.2011 14:09, schrieb Julian Mayer: >>> >>> Anyway, I've just spent some time trying to make things simpler by >>> providing templates for standalone deployment (will probably need further >>> tweaking, and I haven't documented it yet though) ... >>> >>> I >> I tried further testing with a gui app, and encountered an error in the >> standalone.conf template, which fixed in svn. >> >> cd make >> ./configure --with-layout=standalone >> make install >> . ~/standalone/Makefile/GNUstep.sh >> cd ../base >> ./configure --with-config-file=./ --with-default-config=standalone.conf >> make install >> cd ../gui >> make install >> cd ../back >> make install >> >> that puts the gnustep core packages into ~/standalone ... then you just need >> to copy that wherever you want it inside your app wrapper, and set >> LD_LIBRARY_PATH > > hello richard > > thanks for your help - i definitely didn't know to use the standalone layout > ... the "Relocateable Packages" section in the documentation also didn't > mention it. thanks too for reminding me about GNUSTEP_CONFIG_FILE, i am > ignoring this for now since you said the only thing the binary really should > need is the proper LD_LIBRARY_PATH. > > i've updated and rebuilt gnustep in the way you specified and verified that > it works when used from its installed location. one thing i am curious about, > you previously mentioned to use "--with-config-file=./GNUstep.conf" and now > "--with-config-file=./" ...are they equivalent? > > > nevertheless, launching the rebuilt helloworld app with the standalone folder > contents embedded still doesn't work. i've moved the standalone folder to > another location to be sure it doesn't get picked up, copied its contents to > the rebuilt helloworld app, switched to another terminal to be sure the > environment variables are clean and: > > notroot@ubuntu:~/Desktop/GNUstepTest/HelloWorld.app$ > LD_LIBRARY_PATH=/home/notroot/Desktop/GNUstepTest/HelloWorld.app ./HelloWorld > 2011-10-16 21:32:26.305 HelloWorld[6593] Did not find correct version of > backend (libgnustep-back-021.bundle), falling back to std > (libgnustep-back.bundle). > 2011-10-16 21:32:26.305 HelloWorld[6593] NSApplication.m:304 Assertion > failed in BOOL initialize_gnustep_backend(). Unable to find backend back > ./HelloWorld: Uncaught exception NSInternalInconsistencyException, reason: > NSApplication.m:304 Assertion failed in BOOL initialize_gnustep_backend(). > Unable to find backend back > > of course the backend is there: > notroot@ubuntu:~/Desktop/GNUstepTest/HelloWorld.app$ ls Bundles/ > GSPrinting libgmodel.bundle libgnustep-back-021.bundle TextConverters > > i've tried stuffing a GNUstep.conf file in the helloworld.app bundle as well > - didn't change a thing: > > GNUSTEP_SYSTEM_ROOT=. > GNUSTEP_LOCAL_ROOT=. > GNUSTEP_NETWORK_ROOT=. > [etc] > > do you have an idea here, or should i modify initialize_gnustep_backend() to > print out the path where it is searching for the backend to get more > information? > > > btw when rebuilding gnustep i've encountered this problems: > > i wanted to try out the nonfragile option to make/libobjc2 but building > libobjc2 1.5.1 with the non-fragile option yielded this: > > notroot@ubuntu:~/Desktop/libobjc2-1.5.1$ clang arc.m -c -MMD -MP > -DTYPE_DEPENDENT_DISPATCH -D__OBJC_RUNTIME_INTERNAL__=1 -D_XOPEN_SOURCE=500 > -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing > -fobjc-nonfragile-abi -D_NONFRAGILE_ABI -pthread -fPIC -Wall -DGSWARN > -DGSDIAGNOSE -Wno-import -g -O2 -fgnu-runtime -std=gnu99 -g -fexceptions > -Wno-unused-function -O3 -std=gnu99 -g -fexceptions -Wno-unused-function -O3 > -I. -I/home/notroot/GNUstep/Library/Headers > -I/home/notroot/standalone/include -o obj/libobjc.obj/arc.m.o > In file included from arc.m:400: > In file included from ./hash_table.h:21: > /usr/include/unistd.h:1128:35: error: __block attribute not allowed, only > allowed on local variables > extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1));
That's glibc using __block as a variable name where clang treats it as a storage specifier. Here's the workaround that Quentin came up with for the same issue in gnustep-base: #ifdef HAVE_UNISTD_H #ifdef __block /* Turn off Clang built-in __block */ #undef __block #endif #define __block __gs_unistd_block #include <unistd.h> #undef __block #endif > i wanted to switch to the SVN trunk version of libobjc2 to see if the problem > is gone there, but it doesn't use GNUmakefiles anymore - and unconditionally > installs into /usr/local. thats not fine for me since i need the libobj2 > shipped in the standalone folder since my users won't have it. i think > libobjc2 trunk should still have an option to be deployable - i don't care if > its with an option to just build statically or by still installing into the > gnustep path. Hmm. That odd. For me `PREFIX=/tmp/test make install' installs libobjc2 into /tmp/test. _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
