Dependencies, missing and superfluous files and pp arguments

Started by obetz, May 19, 2019, 06:07:11 AM

Previous topic - Next topic

obetz

Hi Phil,

Two entries listed in README->DEPENDENCIES are not available in current ActivePerl distributions (build failed):

  • POSIX::strptime -> https://code.activestate.com/ppm/POSIX-strptime/ was never available?
  • Win32::FindFile -> https://code.activestate.com/ppm/Win32-FindFile/ was available until Perl 5.22, but this release isn't available anymore.


Would you mind to share your pp parameters you use to generate the Windows executable? I tried TraceUse and ScanDeps but my results weren't nearly similar to the content of your Windows exiftool.exe distribution.

By some manual checks I might have found unneeded files in the Windows exe distribution:

Image/ExifTool/WriteID3.pl (is not in Image-ExifTool-xxx.tar.gz)

14 dupes in /lib: Writer.pl, WriteExif.pl, QuickTimeStream.pl, XMP2.pl, WriteXMP.pl, WriteQuickTime.pl, XMPStruct.pl, WriteIPTC.pl, WritePostScript.pl, WritePDF.pl, WriteCanonRaw.pl, Shift.pl, WritePNG.pl, WritePhotoshop.pl

Three "CVS" directories

I'm not sure about these modules:

"re" (600KB) only for TAINT mode?. Then, Term::Cap might also be removed.

ActivePerl::Config.pm? If so, likely also Win32::Console (with console.dll)

Oliver

Phil Harvey

Wow.  That is unfortunate that Win32::FindFile is no longer available.  The windows file support in ActivePerl is hideous. :(

Here is a post where I describe how I build the executable.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

obetz

Quote from: Phil Harvey on May 20, 2019, 01:41:29 PM
Wow.  That is unfortunate that Win32::FindFile is no longer available.  The windows file support in ActivePerl is hideous. :(

It might be rather an error in Win32::FindFile. It affects also Strawbery Perl, has been reported in CPAN: https://rt.cpan.org/Public/Dist/Display.html?Name=Win32-FindFile but doesn't seem to get fixed soon. Good that you have a system with a working version.

POSIX::strptime lists 6 bugs, none fixed, and also doesn't compile with Strawberry Perl (no problem since you use also Time::Piece).

Quote from: Phil Harvey on May 20, 2019, 01:41:29 PM
Here is a post where I describe how I build the executable.

Thanks! By adding "-u" and "-M Time::HiRes" to this 2012 version, I could get plausible results.

The 14 duplicates I mentioned in the OP come from the "-M Image/ExifTool/*.pl" lines, putting each file in the /lib dir although they are already in lib/Image/ExifTool. What's the intent? Not a big deal to have these files twice in the exe version, I'm asking just out of curiosity.

I still can't see why Image/ExifTool/WriteID3.pl is in the Windows exe.

Oliver

P.S.: The ActivePerl repository doesn't offer PAR::Packer for Mac and Windows, at least not for currently available versions of ActivePerl. I used Strawberry then.

Phil Harvey

Quote from: obetz on May 21, 2019, 06:34:47 AM
The 14 duplicates I mentioned in the OP come from the "-M Image/ExifTool/*.pl" lines, putting each file in the /lib dir although they are already in lib/Image/ExifTool. What's the intent?

I put in all the files explicitly because I had a problem once when a file either wasn't included in the package, or wasn't being loaded for some reason.  Maybe I should revisit this, but I would rather have duplicates than load errors.

QuoteI still can't see why Image/ExifTool/WriteID3.pl is in the Windows exe.

It really shouldn't be there.

QuoteP.S.: The ActivePerl repository doesn't offer PAR::Packer for Mac and Windows, at least not for currently available versions of ActivePerl. I used Strawberry then.

Let's hope that I'm not forced to update then.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

obetz

Quote from: Phil Harvey on May 25, 2019, 12:14:08 PM
I would rather have duplicates than load errors.

I fully agree.

Quote from: Phil Harvey on May 25, 2019, 12:14:08 PM
QuoteI still can't see why Image/ExifTool/WriteID3.pl is in the Windows exe.
It really shouldn't be there.

Maybe it has something to do with the also included CVS directories? But pp shouldn't look at them.

Quote from: Phil Harvey on May 25, 2019, 12:14:08 PM
QuoteP.S.: The ActivePerl repository doesn't offer PAR::Packer for Mac and Windows, at least not for currently available versions of ActivePerl. I used Strawberry then.
Let's hope that I'm not forced to update then.

Yup, it seems to better to avoid changes. I'm afraid each Perl distribution has it's peculiarities. I remember struggling with a timezone / DST error in ActivePerl long ago.

obetz

Quote from: Phil Harvey on May 20, 2019, 01:41:29 PM
Wow.  That is unfortunate that Win32::FindFile is no longer available.  The windows file support in ActivePerl is hideous. :(

in the mean, I think I found the problem in Win32::FindFile

Automated tests during the installation fail if the machine runs in a DST time zone. To avoid the problem, disable DST. Then you can install Win32::FindFile from CPAN.

It's a long known DST bug in Windows (likely cygwin fixed it, but not the native ports). I was already struggling with this stupidity more than ten years ago.

Look at http://www.cpantesters.org/distro/W/Win32-FindFile.html and you will see that tests usually fail during summer and pass in winter.

Maybe ActiveState has it's build machine configured to DST (stupid), but also the Win32-FindFile developer should fix this bug in the automated test (I reported the issue directly to his mail address).

Edit: The delivery of the e-mail to "grian" (maintainer of Win32::FindFile) failed.

Oliver