http://qs321.pair.com?node_id=859138


in reply to Re: Packaging Perl Programs (is) Painful
in thread Packaging Perl Programs (is) Painful

Couldn't package Wx application: Others have pointed out that the external wxWidgets libraries need manual treatment. This isn't really a flaw in PAR (or other packagers). The only way to find out about what shared libraries would be needed by an XS module would be to ask the run-time linker. But that would be so utterly platform dependent and probably prone to breakage that nobody has bothered to attempt it.

It is a pita, but I doubt its too fragile (its how I do it). One way is with ldd, another is with sysinternals listdlls.

Better yet is gcc/mingw objdump , ex

$ objdump -p C:\strawberry\perl\site\lib\auto\Wx\Wx.dll |grep "DLL Na +me" DLL Name: KERNEL32.dll DLL Name: msvcrt.dll DLL Name: msvcrt.dll DLL Name: perl510.dll DLL Name: wxbase28_gcc_custom.dll DLL Name: wxmsw28_adv_gcc_custom.dll DLL Name: wxmsw28_core_gcc_custom.dll
or microsofts dumpbin /IMPORTS:msvcrt.dll

or depends.exe /c /f:1 /ot:temp.txt msvcrt.dll

Once you get a list , add each dll with pp -l option

Replies are listed 'Best First'.
Re^3: Packaging Perl Programs (is) Painful
by tsee (Curate) on Sep 07, 2010 at 11:46 UTC

    Just lost my reply due to "Preview" ne "Submit". Oops. I'll keep it short:

    Doing this kind of thing would be fragile if attempted for the "general case". I.e. all elements of the "platform X compiler tool chain" matrix. In particular, we'd need a blacklist of libraries to never package. Maybe an interactive front-end that prompts the user to select which of the detected dependencies he really wants, etc.

    I'd love to have this even just for some platforms, but in a way that doesn't end up with users plastering "PAR is broken on platform X!" all over the internet if this particular bit of functionality is not available for their favourite OS.

      In particular, we'd need a blacklist of libraries to never package.

      Um, yeah, some logic needs to be worked out ... PPM/DEB/RPM... packagers all manage to avoid packing c-runtime... should be able to borrow some ideas/lists from them. On win32 you can filter system dlls by %windir%.

      I'd love to have this even just for some platforms, but in a way that doesn't end up with users plastering "PAR is broken on platform X!" all over the internet if this particular bit of functionality is not available for their favourite OS.

      I don't see how it can get worse than the current situation. PAR needs a one-click-checkout, patents be damned :)