Fri Nov 03 14:06:52 2017: Request 99325 was acted upon.
Transaction: Correspondence added by ralf.neuba...@wido.bv.aok.de
       Queue: Alien-wxWidgets
     Subject: RE: [rt.cpan.org #99325] DLLs not stripped under Windows
   Broken in: (no value)
    Severity: (no value)
       Owner: MDOOTSON
  Requestors: ralf.neuba...@wido.bv.aok.de
      Status: open
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=99325 >


Hi,

because the filesizes of our PAR::Packer-packed executables (many different 
programs in a zip file) i finally came around to implement a-posteriori 
stripping in a nightly refreshed directory of PPM::Make-generated PPMs.

To spare others the effort, here is my Batch-File:


setlocal enabledelayedexpansion

set TARGET=%1

for /F "usebackq" %%v in (`perl -e "$^V =~ /(\d+)\.(\d+)\.(\d+)/ and print 
qq{$1.$2}"`) do set PERLREV=%%v
for /F %%a in ('perl -e "use Config; print $Config{archname}"') do set 
PERLARCH=%%a

set WORK=%TEMP%\strip-dlls-%PERLARCH%-%PERLREV%-%RANDOM%-%RANDOM%

mkdir %WORK%
cd /d %WORK%

if !CD! neq !WORK! exit /b

for %%P in (%TARGET%\Alien-wxWidgets-*.ppd) do (
        set BASE=%%~dpnP
        set PPD=!BASE!.ppd
        set ARCH=!BASE!.tar.gz
        set ARCH_STAMP=!ARCH!.timestamp
        set ARCH_OUT=!BASE!-out.tar.gz
        set ARCH_BAK=!BASE!-orig.tar.gz

        set OLD_STAMP=no old file
        for /F "usebackq tokens=*" %%L in (!ARCH_STAMP!) do set OLD_STAMP=%%L
        echo OLD_STAMP=_!OLD_STAMP!_

        set NEW_STAMP=no new file
        for %%F in (!ARCH!) do set NEW_STAMP=%%~tzF
        echo NEW_STAMP=_!NEW_STAMP!_

        if !OLD_STAMP! neq !NEW_STAMP! (
                call ptar -xzf !ARCH!

                for /R . %%D in (*.dll) do (
                        attrib -r %%D
                        strip %%D
                        attrib +r %%D
                )

                call ptar -czCf !ARCH_OUT! blib

                rem del /S /Q /F blib

                rem Löscht alle Dateien, aber nur eine Verzeichnisebene
                rmdir /S /Q blib
                if exist blib rmdir /S /Q blib
                if exist blib rmdir /S /Q blib
                if exist blib rmdir /S /Q blib
                if exist blib rmdir /S /Q blib
                if exist blib rmdir /S /Q blib

                move /Y !ARCH! !ARCH_BAK!
                move /Y !ARCH_OUT! !ARCH!
                for %%F in (!ARCH!) do (
                        rem Vor dem Größerzeichen darf kein Blank sein
                        echo %%~tzF> !ARCH_STAMP!
                )
        )
)

rem Free in-use reference
cd \

rmdir %WORK%



Ralf

Reply via email to