Bernhard, Do you tried to follow the instruction in the repository ?
-- Marco On Sun, May 25, 2014 at 6:10 PM, Bernhard Stegmaier <stegma...@sw-systems.de > wrote: > Hi all, > > played around with making the app bundle portable today, but unfortunately > I ended up just where I gave up some months ago and switched to static > linkage… :( > Back then I tried dylibbundler, now I gave BundleUtilities shipped with > cmake a chance. > > Problem is as follows: > This is what wxWidgets creates as libraries: > -rwxr-xr-x 1 root staff 5435032 20 Nov 2013 > libwx_osx_cocoau_core-3.0.0.0.0.dylib > lrwxr-xr-x 1 root staff 37 24 Mai 21:06 > libwx_osx_cocoau_core-3.0.0.dylib -> libwx_osx_cocoau_core-3.0.0.0.0.dylib > lrwxr-xr-x 1 root staff 33 24 Mai 21:06 > libwx_osx_cocoau_core-3.0.dylib -> libwx_osx_cocoau_core-3.0.0.dy > One “real” lib and a couple of symlinks with less detailed version numbers > pointing to it. > At least quite common in the Linux world... > > pcbnew now e.g. links against my MacPorts …-3.0.dylib wxWidgets library > > /opt/local/Library/Frameworks/wxWidgets.framework/Versions/wxWidgets/3.0/lib/libwx_osx_cocoau_core-3.0.dylib > (compatibility version 1.0.0, current version 1.0.0) > whereas my wxWidgets libwx_osx_cocoau_gl.3.0.dylib links against > /opt/local/Library/Frameworks/wxWidgets.framework/Versions/wxWidgets/3.0/lib/libwx_osx_cocoau_core-3.0.0.0.0.dylib > (compatibility version 1.0.0, current version 1.0.0) > > Both the cmake tool as well as dylibbundler parse/collect (recursive) > dependencies and end up copying two identical instances to the app bundle - > one for …-3.0.dylib and one for …-3.0.0.0.0.dylib. It doesn’t care/check > that one of those is just a symlink. > That doesn’t work for similar reasons than linking wxWidgets statically > doesn’t work with kiface. > I tried to fix this back then in dylibbundler by copying a symlink… but > that also isn’t that easy, because it is not only one indirection, but > probably more of them. So, by just copying a single symlink you might end > up in the middle of nowhere. > > If I change the copies in the app bundle manually to one instance and the > other being a symlink pointing to it > -rwxr-xr-x 1 bstegmaier staff 5435032 25 Mai 16:19 > libwx_osx_cocoau_core-3.0.0.0.0.dylib > lrwxr-xr-x 1 bstegmaier staff 37 25 Mai 16:27 > libwx_osx_cocoau_core-3.0.dylib -> libwx_osx_cocoau_core-3.0.0.0. > everything is fine again... > > In my opinion this version symlinking is quite common, so I am wondering a > bit that both of these common tools obviously don’t handle it correctly. > So, at the moment the only options would be to link kicad apps so that > they reference the most detailed version as wxWidgest does itself, to fix > one of the scripts or to create an own script doing that stuff (that’s what > MacOSXKicadBuilder partly did). > > Maybe I’ll ask on the cmake mailing list if this is a known problem and if > there is a solution for that… > > > Regards, > Bernhard > > PS: > If someone is interested… that’s what I did for pcbnew Makefile: > === modified file 'pcbnew/CMakeLists.txt' > --- pcbnew/CMakeLists.txt 2014-05-12 15:17:51 +0000 > +++ pcbnew/CMakeLists.txt 2014-05-25 14:17:55 +0000 > @@ -599,6 +599,12 @@ > set_target_properties( pcbnew_kiface PROPERTIES > LIBRARY_OUTPUT_DIRECTORY > ${CMAKE_CURRENT_BINARY_DIR}/pcbnew.app/Contents/MacOS/ > ) > + > + # create portable app bundle > + install( CODE " > + include( BundleUtilities ) > + fixup_bundle( ${CMAKE_INSTALL_PREFIX}/bin/pcbnew.app > \"_pcbnew.kiface\" \"\" ) > + ") > else() > install( TARGETS pcbnew_kiface > DESTINATION ${KICAD_BIN} > Additionally, you have to reformat Info.plist to have each element in a > new line, otherwise BundleUtilities won’t parse it correctly and bails out. > > But be careful.. doesn’t work with a MacPorts installed wxWidgets. > MacPorts installs the libs in a …/wxWidgets.framework/… path which makes > BundleUtilities think that this is a framework and not just a dylib. > Don’t know yet if the MacPorts installation violates the Framework concept > of OSX or BundleUtilities just don’t handle such a situation correctly... > > > On 24.05.2014, at 16:55, Adam Wolf <adamw...@feelslikeburning.com> wrote: > > Bernard, > > If you *don't* succeed, would you mind posting back here anyway? > > Thanks! > > Adam Wolf > W&L, LLC > > > On Sat, May 24, 2014 at 9:44 AM, Bernhard Stegmaier < > stegma...@sw-systems.de> wrote: > >> Hi Dick (and others), >> >> thanks for the hint, I will try not to use static linking. >> I did that because in the past dynamic linking didn’t produce portable >> applications. >> That is, they contained a reference to the wxWidgets libs at the place >> when being built and haven’t been copied to the app bundle… and all the >> usual fix-scripts to copy those libs into the bundle failed for me >> (problems with the symlinks)… and I didn’t want to fix every path manually. >> >> I looked around a bit and found some cmake modules that should be able to >> produce portable application bundles… I’ll try to add/change that in the >> cmake files… if I succeed, I will of course propose a patch. >> >> >> Thanks, >> Bernhard >> >> On 24.05.2014, at 04:16, Dick Hollenbeck <d...@softplc.com> wrote: >> >> On 05/23/2014 12:31 PM, Jean-Paul Louis wrote: >> >> Hi Bernhard, >> >> I am attaching my script to this email. >> Some of the stuff in the script might not be needed anymore, but I will >> clean it up when I have time. >> >> After the “make” is finished, I skip the “make install” as it is not yet >> capable to work. >> So I just copy the bundles (*.app) to "/Applications/kicad” (see towards >> the end of the script). >> >> Thanks to the help of Marco, Adam and even more so from Dick of the >> development team, I simplified the script so it build to 100%, and Dick >> modified the Cmake files to create the bundles with the kiface files >> properly copied where they belongs. >> That might by why we have duplicate kiface files (seems to be the cause >> of the error at the end of the “make”. >> >> I will create the files for the ENV variables, and let you know how that >> works. >> >> Regards, >> Jean-Paul >> >> >> On May 23, 2014, at 10:59 AM, Bernhard Stegmaier >> stegma...@sw-systems.de[kicad-users] < >> kicad-us...@yahoogroups.com> wrote: >> >> Hi Jean-Paul, >> >> >> can you tell me what files have to be copied where? >> I remember some discussions about copying/linking/whatever .kiface files >> that on the dev-list, but I didn’t find anything on first glance. >> And yes, let’s try to fix this… >> >> With respect to setting the environment variables I did the following: >> Using Linux-like ~/.profile, etc. files will set the variables only when >> launching from command-line… not from the dock/launcher. >> To set a variable for the launcher I made in >> ~/Library/LaunchAgents >> files named like >> local.kicad.kisys3dmod.plist >> which looks like >> <?xml version="1.0" encoding="UTF-8"?> >> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" >> "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> >> <plist version="1.0"> >> <dict> >> <key>Label</key> >> <string>local.kicad.kisys3dmod</string> >> <key>EnableGlobbing</key> >> <true/> >> <key>ProgramArguments</key> >> <array> >> <string>launchctl</string> >> <string>setenv</string> >> <string>KISYS3DMOD</string> >> <string>~/10 - Projekte/KiCad/Modules</string> >> </array> >> <key>RunAtLoad</key> >> <true/> >> </dict> >> </plist> >> and in the case sets KISYS3DMOD variable. I did the same for the other >> variables I need (I didn’t find any solution to set more than one variable >> in a single file). The files will be loaded automatically on login (as far >> as I remember) or you can test them with “launchctl load …”. >> But caution: those files will only set it for the launcher, not the >> shell… while searching for that I found some shell scripting that can be >> added to e.g., .profile reading the values from launched so that you don’t >> have to maintain it in two places if you need that, but I didn’t need it so >> I don’t have a link at hand. >> >> This solution works well for me both on 10.8 and 10.9. >> >> The KiCadOSXBuilder creates a wrapper-script for setting the variables, >> but I didn’t like that approach, because for me those variables are >> machine-specific (especially the library stuff). >> So, it shouldn’t be hardcoded somewhere in the application bundle, but >> defined by the machine/account itself. >> >> >> Regards, >> Bernhard >> >> On 23.05.2014, at 16:27, Jean-Paul Louis lou...@yahoo.com [kicad-users] < >> kicad-us...@yahoogroups.com> wrote: >> >> Hi Bernhard, >> >> I use OS X 10.9.2 and I keep trying the most recents BZR. I came to the >> same conclusion about some failures due to duplicate work copying files >> into the OS X bundles. >> >> I use a bash script fairly raw to copy the files from the build to the >> /Applications/kicad directory. >> eeschema sort of work, but cannot find kicad.pro template. >> it does complain about a missing power lib twice, then load the project I >> am working on as a test case. >> When I go to the preferences, nothing is loaded there, except a power lib >> (the missing one) that I do not use, and a weird path like /usr/local/share. >> >> My next task is to figure out how to set the proper shell variables like >> KISYSMOD, KIGITHUB, etc.. >> because they are not set at all in my build. >> >> If you are interested, we can work together to fix what we can, as I do >> not get any help from Marco Serantoni who is supposed to be the Mac OS X >> guru. >> >> Regards, >> Jean-Paul >> AC9GH >> >> On May 23, 2014, at 7:24 AM, Bernhard Stegmaier >> stegma...@sw-systems.de[kicad-users] < >> kicad-us...@yahoogroups.com> wrote: >> >> Hi Mac guys, >> >> >> did anyone succeed to build and run a recent version on OSX (most likely >> after the modular kicad changes)? >> >> I tried to build some versions on both 10.8 and 10.9 machines using >> different versions of XCode during the last 2 weeks, but I didn’t succeed… >> :( >> Compilation did work smoothly on all machines (configured with >> -DKICAD_BUILD_STATIC=ON and having disabled scripting and github plugin - >> just as I did with all the previous versions I have built) after a small >> patch of aMakefile (see end of the mail, I think this is just a leftover >> because the file that should be copied by that piece of code is already at >> the right spot…). >> But, all binaries (except kicad) don’t work on any of my machines. >> >> They start and immediately crash with a backtrace like this: >> <<< >> Exception Type: EXC_CRASH (SIGABRT) >> Exception Codes: 0x0000000000000000, 0x0000000000000000 >> >> Application Specific Information: >> abort() called >> *** error for object 0x108e2c0f0: pointer being freed was not allocated >> >> >> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread >> 0 libsystem_kernel.dylib 0x00007fff8ae51866 __pthread_kill + 10 >> 1 libsystem_pthread.dylib 0x00007fff8dbd435c pthread_kill + 92 >> 2 libsystem_c.dylib 0x00007fff8e2c8b1a abort + 125 >> 3 libsystem_malloc.dylib 0x00007fff91e2b07f free + 411 >> 4 org.kicad-eda.pcbnew 0x0000000100008c3e >> wxScopedCharTypeBuffer<char>::DecRef() + 62 >> 5 org.kicad-eda.pcbnew 0x00000001000bbff7 >> wxScopedCharTypeBuffer<char>::MakeOwnedCopyOf(wxScopedCharTypeBuffer<char> >> const&) + 31 >> 6 _pcbnew.kiface 0x00000001082f2275 >> wxMessageOutputStderr::Output(wxString const&) + 97 >> 7 _pcbnew.kiface 0x00000001081ef968 >> ShowAssertDialog(wxString const&, int, wxString const&, wxString const&, >> wxString const&, wxAppTraits*) + 664 >> 8 _pcbnew.kiface 0x00000001081ee6cc >> wxDefaultAssertHandler(wxString const&, int, wxString const&, wxString >> const&, wxString const&) + 188 >> 9 _pcbnew.kiface 0x00000001081eec5f wxOnAssert(char >> const*, int, char const*, char const*, wchar_t const*) + 127 >> 10 _pcbnew.kiface 0x0000000108278d60 >> wxStandardPathsBase::Get() + 80 >> >> >> >> >> Why is this stack trace point showing that function >> wxStandardPathBase::Get() is in the >> module _pcbnew.kiface? >> >> This might be because you are linking with static wx libraries. With the >> advent of >> kiface, this can never work again. >> >> All platforms must link to a shared/dynamic wx library set. No static >> wxWidgets library >> set ever again please. >> >> Start there. Its possible that wxTheApp is not unique. You have a second >> copy because you >> are linking wx into every frickin module. >> >> As to the ::Get() call, here is the source from svn head of wx: >> >> line 59 or so of common/stdpbase.cpp: >> >> wxStandardPaths& wxStandardPathsBase::Get() >> { >> wxAppTraits * const traits = wxTheApp ? wxTheApp->GetTraits() : NULL; >> wxCHECK_MSG( traits, gs_stdPaths, wxT("create wxApp before calling >> this") ); >> >> return traits->GetStandardPaths(); >> } >> >> >> But we only want this to reside in the wx SHARED/DYNAMIC library, not in >> our >> _pcbnew.kiface module. >> >> >> >> 11 _pcbnew.kiface 0x0000000108242677 >> wxFileConfig::GetLocalFile(wxString const&, int) + 27 >> 12 _pcbnew.kiface 0x00000001082429ad >> wxFileConfig::wxFileConfig(wxString const&, wxString const&, wxString >> const&, wxString const&, long, wxMBConv const&) + 497 >> 13 _pcbnew.kiface 0x0000000107e20845 BIN_MOD::Init() + >> 229 >> 14 _pcbnew.kiface 0x0000000107e686d7 >> KIFACE_I::start_common(int) + 39 >> 15 _pcbnew.kiface 0x00000001079141c5 >> PCB::IFACE::OnKifaceStart(PGM_BASE*, int) + 21 >> 16 org.kicad-eda.pcbnew 0x0000000100022609 >> KIWAY::KiFACE(KIWAY::FACE_T, bool) + 441 >> 17 org.kicad-eda.pcbnew 0x0000000100022ca5 >> KIWAY::Player(FRAME_T, bool) + 309 >> 18 org.kicad-eda.pcbnew 0x0000000100006144 >> PGM_SINGLE_TOP::OnPgmInit(wxApp*) + 1428 >> 19 org.kicad-eda.pcbnew 0x0000000100009bed >> APP_SINGLE_TOP::OnInit() + 45 >> 20 org.kicad-eda.pcbnew 0x000000010007912c >> wxApp::CallOnInit() + 78 >> 21 org.kicad-eda.pcbnew 0x0000000100292f3c wxEntry(int&, >> wchar_t**) + 76 >> 22 org.kicad-eda.pcbnew 0x0000000100005b20 main + 48 >> 23 org.kicad-eda.pcbnew 0x0000000100005ab4 start + 52 >> >> >> and messages on console like >> <<< >> objc[17580]: Class wxNSAnimationDelegate is implemented in both >> /Volumes/MacStorage/Temp/KiCad/bin/bin/pcbnew.app/Contents/MacOS/pcbnew and >> /Volumes/MacStorage/Temp/KiCad/bin/bin/pcbnew.app/Contents/MacOS/_pcbnew.kiface. >> One of the two will be used. Which one is undefined. >> ./src/common/stdpbase.cpp(62): assert "traits" failed in Get(): create >> wxApp before calling this >> >> >> After googling a bit at least the messages on console seem to indicate >> that some wxWidgets functions are used before the wxApp is instantiated. >> >> The problem might already be known, I found this comment in the code, but >> one line below where it crashes for me. >> <<< >> m_bm.Init(); >> >> m_bm.m_config->Read( showPageLimitsKey, &g_ShowPageLimits ); >> >> // FIXME OSX Mountain Lion (10.8) >> // Seems that Read doesn't found anything and ColorFromInt >> // Asserts - I'm unable to reproduce on 10.7 >> >> int draw_bg_color = BLACK; // Default for all apps but Eeschema >> >> >> >> Any hints/ideas? >> >> >> Regards, >> Bernhard >> >> === modified file 'pcb_calculator/CMakeLists.txt' >> --- pcb_calculator/CMakeLists.txt 2014-05-12 15:17:51 +0000 >> +++ pcb_calculator/CMakeLists.txt 2014-05-16 09:00:42 +0000 >> @@ -134,15 +134,6 @@ >> ) >> endif() >> >> - if( APPLE ) >> - # copies kiface into the bundle >> - add_custom_target( _pcb_calculator_kiface_copy ALL >> - COMMAND ${CMAKE_COMMAND} -E copy >> ${CMAKE_BINARY_DIR}/pcb_calculator/_pcb_calculator.kiface >> "${CMAKE_BINARY_DIR}/pcb_calculator/pcb_calculator.app/Contents/MacOS/" >> - DEPENDS pcb_calculator_kiface >> - COMMENT "Copying kiface into pcb_calculator" >> - ) >> - endif() >> - >> else() >> >> add_executable( pcb_calculator WIN32 MACOSX_BUNDLE >> >> >> >> >> >> >> ------------------------------------ >> >> ------------------------------------ >> >> Please read the Kicad FAQ in the group files section before posting your >> question. >> Please post your bug reports here. They will be picked up by the creator >> of Kicad. >> Please visit http://www.kicadlib.org for details of how to contribute >> your symbols/modules to the kicad library. >> For building Kicad from source and other development questions visit the >> kicad-devel group athttp://groups.yahoo.com/group/kicad-develYahooGroups >> Links >> >> <*> To visit your group on the web, go to: >> http://groups.yahoo.com/group/kicad-users/ >> >> <*> Your email settings: >> Individual Email | Traditional >> >> <*> To change settings online go to: >> http://groups.yahoo.com/group/kicad-users/join >> (Yahoo! ID required) >> >> <*> To change settings via email: >> kicad-users-dig...@yahoogroups.com >> kicad-users-fullfeatu...@yahoogroups.com >> >> <*> To unsubscribe from this group, send an email to: >> kicad-users-unsubscr...@yahoogroups.com >> >> <*> Your use of Yahoo Groups is subject to: >> https://info.yahoo.com/legal/us/yahoo/utos/terms/ >> >> >> >> __._,_.___ >> Posted by: Bernhard Stegmaier <stegma...@sw-systems.de> >> Reply via web post • Reply to sender • Reply to group • Start a New Topic >> • Messages in this topic (3) >> Please read the Kicad FAQ in the group files section before posting your >> question. >> Please post your bug reports here. They will be picked up by the creator >> of Kicad. >> Please visit http://www.kicadlib.org for details of how to contribute >> your symbols/modules to the kicad library. >> For building Kicad from source and other development questions visit the >> kicad-devel group athttp://groups.yahoo.com/group/kicad-devel >> VISIT YOUR GROUP >> • New Members 14 >> • New Photos 3 >> >> • Privacy • Unsubscribe • Terms of Use >> >> . >> >> >> __,_._,___ >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> >> > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > >
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp