> On Jun 9, 2020, at 2:44 AM, Pascal <p....@orange.fr> wrote: > >> >> Le 8 juin 2020 à 18:13, John Ralls <jra...@ceridwen.us> a écrit : >> >> >> >>> On Jun 8, 2020, at 3:03 AM, Pascal <p....@orange.fr> wrote: >>> >>>> >>>> Le 7 juin 2020 à 19:39, Pascal <p....@orange.fr> a écrit : >>>> >>>> Hello, >>>> >>>> I've used gtk-mac-bundler to create my app, but I've some issues with >>>> referenced dylib. >>>> >>>> GTK libs are referenced with absolute path: >>>> <prefix>/lib/libgtk-3.0.dylib >>>> These are changed by gtk-mac-bundler into: >>>> @executable_path/../Resources/lib/libgtk-3.0.dylib >>>> >>>> I've got some messages as: >>>> Cannot find a matching prefix for libxmlada_schema.dylib >>>> These libs are outside <prefix>/lib so I changed them to absolute path. >>>> >>>> However, I have other libs built in <prefix>/lib that are referenced with >>>> relative path, for instance: >>>> @rpath/libadalang.dylib >>>> These are not changed by gtk-mac-bundler so I've added rpath >>>> "@executable_path/../Resources/lib" and I've deleted all rpath with >>>> <prefix>/lib in executable and all libs. >>>> I've checked with otool that the only remaining rpath is >>>> "@executable_path/../Resources/lib". >>>> >>>> But when executing the app I've messages for instance: >>>> objc[45002]: Class GdkQuartzView is implemented in both >>>> /opt/gps-build/osx_bundle/_build/Applications/gnatstudio.app/Contents/Resources/lib/libgdk-3.0.dylib >>>> (0x113f0a960) and /opt/xnadalib-2020/lib/libgdk-3.0.dylib (0x11ed97960). >>>> One of the two will be used. Which one is undefined. >>>> >>>> I do not understand where there are these references to <prefix>/lib >>>> (/opt/xnadalib-2020/lib in my case). >>>> Any idea is welcome. >>> >>> I've gone further, the references of <prefix>/lib are coming from *.so in >>> lib/Python2.7. >>> I had just put in my bungle file: >>> <data> >>> ${prefix}/lib/python2.7 >>> </data> >>> >>> So I changed for: >>> <binary> >>> ${prefix}/lib/python2.7/lib-dynload/*.so >>> </binary> >>> <binary> >>> ${prefix}/lib/python2.7/site-packages/*.so >>> </binary> >>> <binary> >>> ${prefix}/lib/python2.7/site-packages/gi/*.so >>> </binary> >>> <binary> >>> ${prefix}/lib/python2.7/site-packages/cairo/*.so >>> </binary> >>> >>> Side question, I've manually copied the *.py files to prevent to overwrite >>> the modified *.so files, is there a way to do it safely in the bundle file? >>> >>> Then I've a issue with gi: >>> Traceback (most recent call last): >>> File "<string>", line 1, in <module> >>> File >>> "/opt/gps-build/osx_bundle/_build/Applications/gnatstudio.app/Contents/Resources/lib/python2.7/site-packages/gi/__init__.py", >>> line 129, in require_version >>> raise ValueError('Namespace %s not available' % namespace) >>> ValueError: Namespace Gtk not available >>> >>> What could be missing in the bundle file? >> >> The typelibs? >> >> I don't understand what you mean about manually copying the python files to >> prevent overwriting the loadable modules. How would that happen? >> >> You might look at >> https://github.com/gramps-project/gramps/blob/maintenance/gramps51/mac/gramps.bundleto >> see how I bundle Gramps. >> >> Regards, >> John Ralls > > Thanks John for your exemple :-) > > Especially nice tips: recurse="True" and the gir section. > > Now for Python files, I can do: > <binary recurse="True"> > ${prefix}/lib/python2.7/*.so > </binary> > and > <data recurse="True"> > ${prefix}/lib/python2.7/*.py > </data> > > I've got many: > "Error in transformation of /opt/xnadalib-2020/share/gir-1.0/xlib-2.0.gir: > 'encoding' is an invalid keyword argument for this function" > > With traceback in project.py: > TypeError: 'encoding' is an invalid keyword argument for this function > Error in transformation of > /opt/xnadalib-2020/share/gir-1.0/GtkosxApplication-1.0.gir: 'encoding' is an > invalid keyword argument for this function > Traceback (most recent call last): > File "/opt/gtk-mac-bundler.0/bundler/project.py", line 413, in copy_target > typelib_paths.append(transform_file(globbed_source)) > File "/opt/gtk-mac-bundler.0/bundler/project.py", line 389, in transform_file > with open (filename, "r", encoding="utf8") as source: > > Thus, I removed the encoding parameter: > --- ./bundler/project.py.0 2020-06-09 10:25:20.000000000 +0200 > +++ ./bundler/project.py 2020-06-09 10:27:08.000000000 +0200 > @@ -386,11 +386,11 @@ > path, fname = os.path.split(filename) > name, ext = os.path.splitext(fname) > > - with open (filename, "r", encoding="utf8") as source: > + with open (filename, "r") as source: > lines = source.readlines() > gir_file = os.path.join(gir_dest, fname) > typelib = os.path.join(typelib_dest, name + '.typelib') > - with open (gir_file, "w", encoding="utf8") as target: > + with open (gir_file, "w") as target: > for line in lines: > > I also add GI_TYPELIB_PATH and now it works almost fine: > some macOS keyboard shortcuts are not working :-( > Any idea?
Pascal, Something else is wrong. `encoding` *is* a legal parameter to `open`: https://docs.python.org/3/library/functions.html#open As for keyboard shortcuts, it depends on what shortcuts you mean. If it's something like ctrl vs. command make sure that you use GDK_MODIFIER_INTENT_PRIMARY_ACCELERATOR instead of GDK_CONTROL_MASK. If you use accelerator groups other keys can be customized with an accelerator map file; if not you'll have to hand-code them one by one. OTOH if you want to use the keybindings from system preferences you'll have to code that yourself, AFAIK Gtk doesn't do that. Regards, John Ralls _______________________________________________ gtk-osx-users-list mailing list gtk-osx-users-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-osx-users-list