Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: Packaging Perl Programs (is) Painful

by Anonymous Monk
on Sep 07, 2010 at 10:44 UTC ( [id://859138]=note: print w/replies, xml ) Need Help??


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 :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://859138]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-16 07:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found