├── .gitattributes ├── .gitignore ├── Build.PL ├── Changes ├── HelperCA.dll_src ├── HelperCA.sln ├── HelperCA.vcproj └── src │ ├── CheckForSpaces.cpp │ ├── ClearFolder.cpp │ ├── ErrorMsg.cpp │ ├── ErrorMsg.h │ ├── HelperCA.def │ ├── HelperCA.rc │ ├── Relocate.cpp │ ├── SpecialRefresh.cpp │ ├── afxres.h │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── winres.h ├── HelperCAv2.dll_src ├── HelperCA.sln ├── HelperCA.vcproj └── src │ ├── CheckDirName.cpp │ ├── ClearFolder.cpp │ ├── ErrorMsg.cpp │ ├── ErrorMsg.h │ ├── HelperCA.def │ ├── HelperCA.rc │ ├── Relocate.cpp │ ├── SpecialRefresh.cpp │ ├── afxres.h │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── winres.h ├── LICENSE ├── MANIFEST.SKIP ├── README ├── TODO ├── devel.utils ├── _build-5.36.bat ├── _build-5.36_local.bat ├── _build-5.38.bat ├── _build-5.38_local.bat ├── _build-5.39_local_ucrt.bat ├── _build-5.40_local_ucrt.bat ├── build-5.16.bat ├── build-5.18.bat ├── build-5.20.bat ├── build-5.22.bat ├── build-5.24.bat ├── build-5.26.bat ├── build-5.28.bat ├── build-5.30.bat ├── build-5.32.bat ├── build-5.38_32bit_local.bat ├── build-ALL.bat ├── build-mini.bat ├── build-spec.bat ├── diffzipdirs.pl ├── grep_use.pl ├── msi_test.pl ├── relnotes_test.pl ├── shortname.pl ├── shortname_test.pl ├── update_minicpan.bat └── wix_detection.pl ├── lib └── Perl │ └── Dist │ ├── Strawberry.pm │ └── Strawberry │ ├── Step.pm │ └── Step │ ├── BinaryToolsAndLibs.pm │ ├── CreateReleaseNotes.pm │ ├── CreateRelocationFile.pm │ ├── FilesAndDirs.pm │ ├── FixShebang.pm │ ├── InstallModules.pm │ ├── InstallPerlCore.pm │ ├── OutputLogZIP.pm │ ├── OutputMSI.pm │ ├── OutputMSM_MSI.pm │ ├── OutputPdlZIP.pm │ ├── OutputPortableZIP.pm │ ├── OutputReleasesJSONSnippet.pm │ ├── OutputZIP.pm │ ├── SetupPortablePerl.pm │ ├── UninstallModules.pm │ └── UpgradeCpanModules.pm ├── script └── perldist_strawberry ├── share ├── 32bit-5.16.3.1-SPP-min.pp ├── 32bit-5.16.3.1.pp ├── 32bit-5.18.2.1-no64.pp ├── 32bit-5.18.2.1.pp ├── 32bit-5.18.2.2-no64.pp ├── 32bit-5.18.2.2.pp ├── 32bit-5.18.4.1-no64.pp ├── 32bit-5.18.4.1.pp ├── 32bit-5.19.10.pp ├── 32bit-5.19.11.pp ├── 32bit-5.19.9.pp ├── 32bit-5.20.0.1-no64.pp ├── 32bit-5.20.0.1.pp ├── 32bit-5.20.1.1.pp ├── 32bit-5.20.2.1.pp ├── 32bit-5.20.3.1.pp ├── 32bit-5.20.3.2.pp ├── 32bit-5.20.3.3.pp ├── 32bit-5.22.0.1.pp ├── 32bit-5.22.1.1.pp ├── 32bit-5.22.1.2.pp ├── 32bit-5.22.1.3.pp ├── 32bit-5.22.2.1.pp ├── 32bit-5.22.3.1.pp ├── 32bit-5.24.0.1.pp ├── 32bit-5.24.1.1.pp ├── 32bit-5.24.2.1.pp ├── 32bit-5.24.3.1.pp ├── 32bit-5.24.4.1.pp ├── 32bit-5.26.0.1.pp ├── 32bit-5.26.0.2.pp ├── 32bit-5.26.1.1.pp ├── 32bit-5.26.2.1.pp ├── 32bit-5.26.3.1.pp ├── 32bit-5.28.0.1.pp ├── 32bit-5.28.1.1.pp ├── 32bit-5.28.2.1.pp ├── 32bit-5.30.0.1.pp ├── 32bit-5.30.1.1.pp ├── 32bit-5.30.2.1.pp ├── 32bit-5.30.3.1.pp ├── 32bit-5.32.0.1.pp ├── 32bit-5.32.1.1.pp ├── 32bit-5.38.2.1.pp ├── 64bit-5.16.3.1.pp ├── 64bit-5.18.2.1.pp ├── 64bit-5.18.2.2.pp ├── 64bit-5.18.4.1.pp ├── 64bit-5.19.10.pp ├── 64bit-5.19.11.pp ├── 64bit-5.19.9.pp ├── 64bit-5.20.0.1.pp ├── 64bit-5.20.1.1-minimal.pp ├── 64bit-5.20.1.1.pp ├── 64bit-5.20.2.1.pp ├── 64bit-5.20.3.1.pp ├── 64bit-5.20.3.2.pp ├── 64bit-5.20.3.3.pp ├── 64bit-5.22.0.1.pp ├── 64bit-5.22.1.1.pp ├── 64bit-5.22.1.2.pp ├── 64bit-5.22.1.3.pp ├── 64bit-5.22.2.1.pp ├── 64bit-5.22.3.1.pp ├── 64bit-5.24.0.1.pp ├── 64bit-5.24.1.1.pp ├── 64bit-5.24.2.1.pp ├── 64bit-5.24.3.1.pp ├── 64bit-5.24.4.1.pp ├── 64bit-5.26.0.1.pp ├── 64bit-5.26.0.2.pp ├── 64bit-5.26.1.1.pp ├── 64bit-5.26.2.1.pp ├── 64bit-5.26.3.1.pp ├── 64bit-5.28.0.1.pp ├── 64bit-5.28.1.1.pp ├── 64bit-5.28.2.1.pp ├── 64bit-5.30.0.1.pp ├── 64bit-5.30.1.1.pp ├── 64bit-5.30.2.1.pp ├── 64bit-5.30.3.1.pp ├── 64bit-5.32.0.1.pp ├── 64bit-5.32.1.1.pp ├── 64bit-5.36.1.1.pp ├── 64bit-5.36.3.1.pp ├── 64bit-5.38.0.1.pp ├── 64bit-5.38.0.2.pp ├── 64bit-5.38.2.1.pp ├── 64bit-5.38.2.2.pp ├── 64bit-5.39.10.2.pp ├── 64bit-5.39.9.1-msvc.pp ├── 64bit-5.40.0.1.pp ├── config-files │ └── CPAN_Config.pm.tt ├── extra-files │ ├── DISTRIBUTIONS.txt.tt │ ├── README.txt.tt │ ├── licenses │ │ └── License.rtf │ ├── ppm │ │ └── README.txt │ ├── release_notes.html.tt │ ├── relocation.pl.bat │ ├── update_env.pl.bat │ └── win32 │ │ ├── CPAN Module Search.url.tt │ │ ├── Learning Perl (tutorials, examples).url.tt │ │ ├── Live Support (chat).url.tt │ │ ├── MetaCPAN Search Engine.url.tt │ │ ├── Perl Documentation.url.tt │ │ ├── Strawberry Perl Release Notes.url.tt │ │ ├── Strawberry Perl Website.url.tt │ │ ├── Win32 Perl Wiki.url.tt │ │ ├── cpan.ico │ │ ├── metacpan.ico │ │ ├── metacpan.svg │ │ ├── metacpan.xcf │ │ ├── onion.ico │ │ ├── perldoc.ico │ │ ├── perlhelp.ico │ │ ├── strawberry.ico │ │ └── win32.ico ├── msi │ ├── CA-debug │ │ ├── x64 │ │ │ ├── HelperCA.dll │ │ │ └── HelperCAv2.dll │ │ └── x86 │ │ │ ├── HelperCA.dll │ │ │ └── HelperCAv2.dll │ ├── CA-release │ │ ├── x64 │ │ │ ├── HelperCA.dll │ │ │ └── HelperCAv2.dll │ │ └── x86 │ │ │ ├── HelperCA.dll │ │ │ └── HelperCAv2.dll │ ├── MSI_main-v2.wxs.tt │ ├── MSI_main.wxs.tt │ ├── MSI_strings.wxl.tt │ ├── MSM_documentation.html.tt │ ├── MSM_main.wxs.tt │ ├── Variables-v2.wxi.tt │ ├── Variables.wxi.tt │ ├── files │ │ ├── License-short.rtf │ │ ├── StrawberryBanner.bmp │ │ ├── StrawberryDialog.bmp │ │ ├── cpan.ico │ │ ├── metacpan.ico │ │ ├── onion.ico │ │ ├── perldoc.ico │ │ ├── perlexe.ico │ │ └── strawberry.ico │ └── graphics │ │ ├── Bmp_StrawberryBanner.bmp │ │ ├── Bmp_StrawberryDialog.bmp │ │ ├── Ico_Exclam.ico │ │ ├── Ico_Info.ico │ │ ├── Ico_New.ico │ │ └── Ico_Up.ico ├── pdl │ └── perldl2.conf ├── perl-5.16-x86-64int │ ├── diffs_for_info_only │ │ ├── config.gc.diff │ │ ├── config_H.gc.diff │ │ └── makefile.mk.diff │ ├── win32_config.gc.tt │ ├── win32_config_H.gc │ ├── win32_makefile.mk │ └── win32_makefile.mk.5161 ├── perl-5.16 │ ├── NDBM_MSWin32.pl │ ├── ODBM_MSWin32.pl │ ├── diffs_for_info_only │ │ ├── FindExt.pm.diff │ │ ├── config.gc.diff │ │ ├── config.gc64nox.diff │ │ ├── config_H.gc.diff │ │ └── config_H.gc64nox.diff │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ ├── win32_config.gc64nox.tt │ ├── win32_config_H.gc │ ├── win32_config_H.gc64nox │ └── win32_win32.h ├── perl-5.18 │ ├── NDBM_MSWin32.pl │ ├── ODBM_MSWin32.pl │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.20 │ ├── diffs_for_info_only │ │ ├── perl5-maint-5.20_installperl.diff │ │ ├── perl5-maint-5.20_win32_FindExt.pm.diff │ │ ├── perl5-maint-5.20_win32_config.gc.diff │ │ ├── perl5-maint-5.20_win32_config_H.gc.diff │ │ ├── perl5-maint-5.20_win32_perlexe.rc.diff │ │ └── perl5-maint-5.20_win32_win32.h.diff │ ├── installperl │ ├── perl-5.20.3-CVE-2015-8608.patch │ ├── perl-5.20.3-CVE-2016-2381.patch │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ ├── win32_config_H.gc │ ├── win32_makefile.mk │ └── win32_win32.h ├── perl-5.22 │ ├── diffs_for_info_only │ │ ├── win32_FindExt.pm.diff │ │ ├── win32_config.gc.diff │ │ ├── win32_config_H.gc.diff │ │ └── win32_perlexe.rc.diff │ ├── perl-5.22.1-CVE-2015-8608.patch │ ├── perl-5.22.1-CVE-2016-2381.patch │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.24 │ ├── diffs_for_info_only │ │ ├── perl-5.24.4_win32_FindExt.pm.diff │ │ ├── perl-5.24.4_win32_config.gc.diff │ │ ├── perl-5.24.4_win32_config_H.gc.diff │ │ └── perl-5.24.4_win32_perlexe.rc.diff │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.26 │ ├── diffs_for_info_only │ │ ├── perl-5.26.2_win32_FindExt.pm.diff │ │ ├── perl-5.26.2_win32_config.gc.diff │ │ ├── perl-5.26.2_win32_config_H.gc.diff │ │ └── perl-5.26.2_win32_perlexe.rc.diff │ ├── perlexe.rc.tt │ ├── strtoull-fix-perl.h │ ├── strtoull.patch │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.28 │ ├── diffs_for_info_only │ │ ├── perl-5.28.0-RC1_win32_config.gc.diff │ │ ├── perl-5.28.0-RC1_win32_config_H.gc.diff │ │ └── perl-5.28.0-RC1_win32_perlexe.rc.diff │ ├── perlexe.rc.tt │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.30 │ ├── diffs_for_info_only │ │ ├── win32_FindExt.pm.diff │ │ ├── win32_config.gc.diff │ │ ├── win32_config_H.gc.diff │ │ └── win32_perlexe.rc.diff │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.32 │ ├── diffs_for_info_only │ │ ├── win32_FindExt.pm.diff │ │ ├── win32_config.gc.diff │ │ ├── win32_config_H.gc.diff │ │ └── win32_perlexe.rc.diff │ ├── perlexe.rc.tt │ ├── win32_FindExt.pm │ ├── win32_config.gc.tt │ └── win32_config_H.gc ├── perl-5.36 │ ├── 19663.patch │ ├── GNUmakefile │ ├── perl_pr19663.diff │ ├── perl_pr19912_commit1.patch │ ├── perl_pr20008.diff │ ├── perl_pr20136.patch │ ├── perlexe.rc.tt │ └── rt142390.patch ├── perl-5.38 │ ├── GNUmakefile │ └── vmem.patch ├── perl-5.39 │ └── Makefile.patch ├── perl-5.40 │ ├── GNUmakefile │ └── posix_bessel.patch ├── portable │ ├── README.pdl.TXT.tt │ ├── README.portable.TXT.tt │ ├── portable.perl.32 │ ├── portable.perl.32-NEW │ ├── portable.perl.473.32 │ ├── portable.perl.473.64 │ ├── portable.perl.64 │ ├── portable.perl.tt │ ├── portableshell.bat │ └── portableshell.pdl.bat ├── relocation │ ├── perl1.reloc.txt.initial │ ├── perl2.reloc.txt.initial │ └── relocation.txt.initial └── utils │ ├── CPANMINUS_install_module.pl │ ├── CPANPLUS_get_upgrade_list.pl │ ├── CPANPLUS_install_module.pl │ ├── CPANPLUS_list_build_cache.pl │ ├── CPANPLUS_list_distributions.pl │ ├── CPANPLUS_uninstall_module.pl │ ├── CPAN_get_upgrade_list.pl │ ├── CPAN_install_module.pl │ └── cpanm ├── t ├── 001_compile.t └── 002_all_pm.t └── xt ├── common_mistakes.t ├── fixme.t └── meta_json.t /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pm linguist-language=Perl 2 | *.pp linguist-language=Perl 3 | *.t linguist-language=Perl 4 | *.pl linguist-language=Perl 5 | *.h linguist-language=C 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | blib* 2 | Build 3 | Build.bat 4 | _build/* 5 | pm_to_blib* 6 | tmp* 7 | pod.raw* 8 | *.tar.gz 9 | *.old 10 | *.bak 11 | *.o 12 | *.c 13 | *.suo 14 | *.vcxproj.user 15 | _internal 16 | META.yml 17 | MYMETA.yml 18 | MANIFEST 19 | /META.json 20 | /MYMETA.json 21 | 22 | *.iml 23 | /.idea/ 24 | /Perl-Dist-Strawberry-*/ 25 | -------------------------------------------------------------------------------- /Build.PL: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Module::Build; 4 | 5 | warn "For MS Windows only\n" and exit 0 if $^O ne 'MSWin32'; 6 | 7 | my $class = Module::Build->subclass( 8 | class => 'My::Builder', 9 | code => <<'CODE', 10 | sub ACTION_xtest { 11 | my $self = shift; 12 | $self->depends_on(qw[build manifest distmeta]); 13 | $self->test_files(qw[t xt]); 14 | $self->depends_on('test'); 15 | return; 16 | } 17 | CODE 18 | ); 19 | 20 | my $builder = $class->new( 21 | module_name => 'Perl::Dist::Strawberry', 22 | license => 'perl', 23 | dist_author => 'KMX ', 24 | dist_version_from => 'lib/Perl/Dist/Strawberry.pm', 25 | create_license => 1, 26 | create_readme => 1, 27 | share_dir => { dist => 'share' }, 28 | script_files => [ 'script/perldist_strawberry' ], 29 | configure_requires => { 30 | 'Module::Build' => '0.38', 31 | }, 32 | requires => { 33 | 'perl' => '5.014', 34 | 'Module::Build' => '0.38', 35 | }, 36 | build_requires => { 37 | 'Test::More' => '0.86', 38 | 'Archive::Tar' => 0, 39 | 'Archive::Zip' => 0, 40 | 'Data::Dump' => 0, 41 | 'Data::UUID' => 0, 42 | 'Digest::SHA' => 0, 43 | 'ExtUtils::MakeMaker' => 0, 44 | 'File::Basename' => 0, 45 | 'File::Copy' => 0, 46 | 'File::Copy::Recursive' => 0, 47 | 'File::Find::Rule' => 0, 48 | 'File::Glob' => 0, 49 | 'File::Path' => '2.04', 50 | 'File::ShareDir' => 0, 51 | 'File::Slurp' => 0, 52 | 'File::Spec' => '3.2701', 53 | 'File::pushd' => 0, 54 | 'Getopt::Long' => 0, 55 | 'HTML::Entities' => 0, 56 | 'IO::Capture' => 0, 57 | 'IPC::Run3' => 0, 58 | 'JSON::PP' => 0, 59 | 'LWP::UserAgent' => 0, 60 | 'Pod::Usage' => 0, 61 | 'Portable::Dist' => '1.06', 62 | 'Storable' => 0, 63 | 'Syntax::Keyword::Try' => 0, 64 | 'Template' => 0, 65 | 'Text::Diff' => 0, 66 | 'Text::Patch' => 0, 67 | 'URI::file' => 0, 68 | 'Win32::TieRegistry' => 0, 69 | 'Win32::File::Object' => 0, 70 | }, 71 | meta_merge => { 72 | resources => { 73 | homepage => 'http://strawberryperl.com/', 74 | repository => 'https://github.com/StrawberryPerl/Perl-Dist-Strawberry', 75 | bugtracker => 'https://github.com/StrawberryPerl/Perl-Dist-Strawberry/issues', 76 | MailingList => "http://groups.google.com/group/perl.win32.vanilla", 77 | IRC => "irc://irc.perl.org/#win32", 78 | }, 79 | no_index => { 80 | directory => [ 'share', 'HelperCA.dll_src' ], 81 | } 82 | }, 83 | ); 84 | 85 | $builder->create_build_script(); 86 | -------------------------------------------------------------------------------- /HelperCA.dll_src/HelperCA.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual C++ Express 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelperCA", "HelperCA.vcproj", "{2E83A925-62B4-4624-82E4-456BCBCC2203}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Debug|x64 = Debug|x64 10 | Release|Win32 = Release|Win32 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|Win32.Build.0 = Debug|Win32 16 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|x64.ActiveCfg = Debug|x64 17 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|x64.Build.0 = Debug|x64 18 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|Win32.ActiveCfg = Release|Win32 19 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|Win32.Build.0 = Release|Win32 20 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|x64.ActiveCfg = Release|x64 21 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|x64.Build.0 = Release|x64 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | EndGlobal 27 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/CheckForSpaces.cpp: -------------------------------------------------------------------------------- 1 | // CheckForSpaces.cpp : Defines the CheckForSpaces custom action. 2 | // 3 | // Copyright (c) Curtis Jewell 2009, 2010 4 | // 5 | // This code is free software; you can redistribute it and/or modify it 6 | // under the same terms as Perl itself. 7 | 8 | // ##### EXPORTED FUCTIONS: CheckForSpaces 9 | 10 | #include "stdafx.h" 11 | #include "ErrorMsg.h" 12 | 13 | UINT __stdcall CheckForSpaces( 14 | MSIHANDLE hModule) // Handle of MSI being installed. [in] 15 | // Passed to most other routines. 16 | { 17 | TCHAR sInstallDir[MAX_PATH + 1]; 18 | TCHAR sNum[11]; 19 | DWORD dwPropLength; 20 | UINT uiAnswer; 21 | 22 | // Get directory to search. 23 | dwPropLength = 10; 24 | uiAnswer = ::MsiGetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), sNum, &dwPropLength); 25 | if (ERROR_MORE_DATA == uiAnswer) { 26 | uiAnswer = ERROR_SUCCESS; 27 | } 28 | RETURN_ON_ERROR(uiAnswer, hModule, _T("ERROR: CheckForSpaces - MsiGetProperty[WIXUI_INSTALLDIR_VALID] FAILED")); 29 | 30 | if (0 != _tcscmp(sNum, _T("1"))) { 31 | return ERROR_SUCCESS; 32 | } 33 | 34 | // Get directory to check. 35 | dwPropLength = MAX_PATH; 36 | uiAnswer = ::MsiGetProperty(hModule, TEXT("INSTALLDIR"), sInstallDir, &dwPropLength); 37 | RETURN_ON_ERROR(uiAnswer, hModule, _T("ERROR: CheckForSpaces - MsiGetProperty[INSTALLDIR] FAILED")); 38 | 39 | if (NULL != _tcsspnp(sInstallDir, 40 | _T("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&'()+,-.;=@[]^_`{}~:\\"))) { 41 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("-2")); 42 | } 43 | 44 | // Check the "long name" of that directory. 45 | TCHAR sInstallDirWork[MAX_PATH + 1]; 46 | TCHAR sInstallDirLong[MAX_PATH + 1]; 47 | _tcscpy_s(sInstallDirWork, MAX_PATH, sInstallDir); 48 | DWORD dwAnswer = ::GetLongPathName(sInstallDirWork, sInstallDirLong, MAX_PATH); 49 | 50 | TCHAR* pcSlash; 51 | DWORD dwError; 52 | while (0 == dwAnswer) { 53 | 54 | dwError = ::GetLastError(); 55 | if ((ERROR_FILE_NOT_FOUND != dwError) && (ERROR_PATH_NOT_FOUND != dwError)) 56 | break; 57 | 58 | // Keep working backwards until we get it right, or until there are no more backslashes. 59 | pcSlash = _tcsrchr(sInstallDirWork, _T('\\')); 60 | if (NULL == pcSlash) 61 | break; 62 | 63 | *pcSlash = _T('\0'); 64 | dwAnswer = ::GetLongPathName(sInstallDirWork, sInstallDirLong, MAX_PATH); 65 | } 66 | 67 | if (NULL != _tcsspnp(sInstallDirLong, 68 | _T("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&'()+,-.;=@[]^_`{}~:\\"))) { 69 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("-2")); 70 | } 71 | 72 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("1")); 73 | } 74 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/ErrorMsg.h: -------------------------------------------------------------------------------- 1 | #define RETURN_ON_ERROR(x,h,s) \ 2 | if (ERROR_SUCCESS != x) { \ 3 | SimpleLogString1(h,s); \ 4 | return x; \ 5 | } 6 | 7 | #define RETURN_ON_ERROR_FREE(x,y,h,s) \ 8 | if (ERROR_SUCCESS != x) { \ 9 | SimpleLogString1(h,s); \ 10 | free(y); \ 11 | return x; \ 12 | } 13 | 14 | #define RETURN_ON_ERROR_FREE2(x,y,z,h,s) \ 15 | if (ERROR_SUCCESS != x) { \ 16 | SimpleLogString1(h,s); \ 17 | free(y); \ 18 | free(z); \ 19 | return x; \ 20 | } 21 | 22 | #define RETURN_IF_NULL(x,h,s) \ 23 | if (NULL == x) { \ 24 | SimpleLogString1(h,s); \ 25 | return ERROR_INSTALL_FAILURE; \ 26 | } 27 | 28 | #ifdef _DEBUG 29 | #define LOG_DEBUG_DETAILS_IF_NULL(x,h) \ 30 | if (NULL == x) { \ 31 | PrintUINT(h,x); \ 32 | PrintLastErrorDetails(h); \ 33 | } 34 | #define LOG_DEBUG_DETAILS_ON_ERROR(x,h) \ 35 | if (ERROR_SUCCESS != x) { \ 36 | PrintUINT(h,x); \ 37 | PrintLastErrorDetails(h); \ 38 | } 39 | #else 40 | #define LOG_DEBUG_DETAILS_IF_NULL(x,h) 41 | #define LOG_DEBUG_DETAILS_ON_ERROR(x,h) 42 | #endif 43 | 44 | 45 | extern void SimpleLogString1(MSIHANDLE hModule, LPCTSTR s); 46 | extern void SimpleLogString2(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t); 47 | extern void SimpleLogString3(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u); 48 | extern void SimpleLogString4(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u, LPCTSTR v); 49 | extern void PrintLastErrorDetails(MSIHANDLE hModule); 50 | extern void PrintUINT(MSIHANDLE hModule, UINT i); -------------------------------------------------------------------------------- /HelperCA.dll_src/src/HelperCA.def: -------------------------------------------------------------------------------- 1 | ; HelperCA.def: Clear Folder Custom Action for Perl::Dist::WiX 2 | ; 3 | ; Copyright (c) Curtis Jewell 2009. 4 | ; 5 | ; This code is free software; you can redistribute it and/or modify it 6 | ; under the same terms as Perl itself. 7 | 8 | LIBRARY "HelperCA" 9 | VERSION 1.200 ; 1.200_100 10 | EXPORTS 11 | ClearFoldersSlow 12 | ClearFoldersFast 13 | ClearSiteFolder 14 | CheckForSpaces 15 | RelocateMSI 16 | RelocateMSM 17 | SpecialRefresh 18 | 19 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/HelperCA.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | ///////////////////////////////////////////////////////////////////////////// 7 | // 8 | // Generated from the TEXTINCLUDE 2 resource. 9 | // 10 | #include "afxres.h" 11 | 12 | ///////////////////////////////////////////////////////////////////////////// 13 | #undef APSTUDIO_READONLY_SYMBOLS 14 | 15 | ///////////////////////////////////////////////////////////////////////////// 16 | // English (U.S.) resources 17 | 18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 19 | #ifdef _WIN32 20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 21 | #pragma code_page(1252) 22 | #endif //_WIN32 23 | 24 | #ifdef APSTUDIO_INVOKED 25 | ///////////////////////////////////////////////////////////////////////////// 26 | // 27 | // TEXTINCLUDE 28 | // 29 | 30 | 1 TEXTINCLUDE 31 | BEGIN 32 | "resource.h\0" 33 | END 34 | 35 | 2 TEXTINCLUDE 36 | BEGIN 37 | "#include ""afxres.h""\r\n" 38 | "\0" 39 | END 40 | 41 | 3 TEXTINCLUDE 42 | BEGIN 43 | "\r\n" 44 | "\0" 45 | END 46 | 47 | #endif // APSTUDIO_INVOKED 48 | 49 | 50 | ///////////////////////////////////////////////////////////////////////////// 51 | // 52 | // Version 53 | // 54 | 55 | VS_VERSION_INFO VERSIONINFO 56 | FILEVERSION 1,2,0,0 57 | PRODUCTVERSION 1,2,0,0 58 | FILEFLAGSMASK 0x17L 59 | #ifdef _DEBUG 60 | FILEFLAGS 0x1L 61 | #else 62 | FILEFLAGS 0x0L 63 | #endif 64 | FILEOS 0x4L 65 | FILETYPE 0x2L 66 | FILESUBTYPE 0x0L 67 | BEGIN 68 | BLOCK "StringFileInfo" 69 | BEGIN 70 | BLOCK "040904b0" 71 | BEGIN 72 | VALUE "FileDescription", "Helper CustomAction DLL" 73 | VALUE "FileVersion", "1.2" 74 | VALUE "InternalName", "Helper CA" 75 | VALUE "LegalCopyright", "Copyright (C) 2009 Curtis Jewell" 76 | VALUE "LegalTrademarks", "This DLL is free software; you can redistribute it and/or modify its source code under the same terms as Perl itself." 77 | VALUE "OriginalFilename", "HelperCA.dll" 78 | VALUE "ProductName", "Perl::Dist::Strawberry" 79 | VALUE "ProductVersion", "1.2" 80 | END 81 | END 82 | BLOCK "VarFileInfo" 83 | BEGIN 84 | VALUE "Translation", 0x409, 1200 85 | END 86 | END 87 | 88 | #endif // English (U.S.) resources 89 | ///////////////////////////////////////////////////////////////////////////// 90 | 91 | 92 | 93 | #ifndef APSTUDIO_INVOKED 94 | ///////////////////////////////////////////////////////////////////////////// 95 | // 96 | // Generated from the TEXTINCLUDE 3 resource. 97 | // 98 | 99 | 100 | ///////////////////////////////////////////////////////////////////////////// 101 | #endif // not APSTUDIO_INVOKED 102 | 103 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/SpecialRefresh.cpp: -------------------------------------------------------------------------------- 1 | // SpecialRefresh.cpp : broadcast a WM_SETTINGCHANGE message to all windows in the system 2 | // see http://support.microsoft.com/kb/104011 3 | // 4 | // This code is free software; you can redistribute it and/or modify it 5 | // under the same terms as Perl itself. 6 | 7 | // ##### EXPORTED FUCTIONS: SpecialRefresh 8 | 9 | #include "stdafx.h" 10 | #include "ErrorMsg.h" 11 | 12 | UINT __stdcall SpecialRefresh(MSIHANDLE hModule) { 13 | DWORD_PTR dwResult; 14 | SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 15 | (LPARAM) _T("Environment"), SMTO_ABORTIFHUNG, 16 | 5000, &dwResult ); 17 | 18 | return ERROR_SUCCESS; 19 | } 20 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by HelperCA.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // HelperCA.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // Reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | // Modify the following defines if you have to target a platform prior to the ones specified below. 9 | // Refer to MSDN for the latest info on corresponding values for different platforms. 10 | #ifndef WINVER // Allow use of features specific to Windows XP or later. 11 | #define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. 12 | #endif 13 | 14 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 15 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 16 | #endif 17 | 18 | #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. 19 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 20 | #endif 21 | 22 | #ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. 23 | #define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. 24 | #endif 25 | 26 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 27 | // Windows Header Files: 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #pragma comment(lib, "msi.lib") 37 | -------------------------------------------------------------------------------- /HelperCA.dll_src/src/winres.h: -------------------------------------------------------------------------------- 1 | // This is a part of the Microsoft Foundation Classes C++ library. 2 | // Copyright (C) 1992-1998 Microsoft Corporation 3 | // All rights reserved. 4 | // 5 | // This source code is only intended as a supplement to the 6 | // Microsoft Foundation Classes Reference and related 7 | // electronic documentation provided with the library. 8 | // See these sources for detailed information regarding the 9 | // Microsoft Foundation Classes product. 10 | 11 | // winres.h - Windows resource definitions 12 | // extracted from WINUSER.H and COMMCTRL.H 13 | 14 | #ifdef _AFX_MINREBUILD 15 | #pragma component(minrebuild, off) 16 | #endif 17 | 18 | #define VS_VERSION_INFO 1 19 | 20 | #ifdef APSTUDIO_INVOKED 21 | #define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols 22 | #endif 23 | 24 | #ifndef WINVER 25 | #define WINVER 0x0400 // default to Windows Version 4.0 26 | #endif 27 | 28 | #include 29 | 30 | // operation messages sent to DLGINIT 31 | #define LB_ADDSTRING (WM_USER+1) 32 | #define CB_ADDSTRING (WM_USER+3) 33 | 34 | #ifdef APSTUDIO_INVOKED 35 | #undef APSTUDIO_HIDDEN_SYMBOLS 36 | #endif 37 | 38 | #ifdef IDC_STATIC 39 | #undef IDC_STATIC 40 | #endif 41 | #define IDC_STATIC (-1) 42 | 43 | #ifdef _AFX_MINREBUILD 44 | #pragma component(minrebuild, on) 45 | #endif 46 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/HelperCA.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual C++ Express 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelperCA", "HelperCA.vcproj", "{2E83A925-62B4-4624-82E4-456BCBCC2203}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Debug|x64 = Debug|x64 10 | Release|Win32 = Release|Win32 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|Win32.Build.0 = Debug|Win32 16 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|x64.ActiveCfg = Debug|x64 17 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Debug|x64.Build.0 = Debug|x64 18 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|Win32.ActiveCfg = Release|Win32 19 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|Win32.Build.0 = Release|Win32 20 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|x64.ActiveCfg = Release|x64 21 | {2E83A925-62B4-4624-82E4-456BCBCC2203}.Release|x64.Build.0 = Release|x64 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | EndGlobal 27 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/CheckDirName.cpp: -------------------------------------------------------------------------------- 1 | // CheckDirName.cpp : Defines the CheckDirName custom action. 2 | // 3 | // Copyright (c) Curtis Jewell 2009, 2010 4 | // 5 | // This code is free software; you can redistribute it and/or modify it 6 | // under the same terms as Perl itself. 7 | 8 | // ##### EXPORTED FUCTIONS: CheckDirName 9 | 10 | #include "stdafx.h" 11 | #include "ErrorMsg.h" 12 | 13 | UINT __stdcall CheckDirName(MSIHANDLE hModule) 14 | { 15 | TCHAR sInstallDir[MAX_PATH + 1]; 16 | TCHAR sNum[11]; 17 | DWORD dwPropLength; 18 | UINT uiAnswer; 19 | 20 | // Get directory to search. 21 | dwPropLength = 10; 22 | uiAnswer = ::MsiGetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), sNum, &dwPropLength); 23 | if (ERROR_MORE_DATA == uiAnswer) { 24 | uiAnswer = ERROR_SUCCESS; 25 | } 26 | RETURN_ON_ERROR(uiAnswer, hModule, _T("ERROR: CheckDirName - MsiGetProperty[WIXUI_INSTALLDIR_VALID] FAILED")); 27 | 28 | if (0 != _tcscmp(sNum, _T("1"))) { 29 | return ERROR_SUCCESS; 30 | } 31 | 32 | // Get directory to check. 33 | dwPropLength = MAX_PATH; 34 | uiAnswer = ::MsiGetProperty(hModule, TEXT("INSTALLDIR"), sInstallDir, &dwPropLength); 35 | RETURN_ON_ERROR(uiAnswer, hModule, _T("ERROR: CheckDirName - MsiGetProperty[INSTALLDIR] FAILED")); 36 | 37 | if (NULL != _tcsspnp(sInstallDir, 38 | _T("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@!_:+-.[]\\"))) { 39 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("-2")); 40 | } 41 | 42 | // Check the "long name" of that directory. 43 | TCHAR sInstallDirWork[MAX_PATH + 1]; 44 | TCHAR sInstallDirLong[MAX_PATH + 1]; 45 | _tcscpy_s(sInstallDirWork, MAX_PATH, sInstallDir); 46 | DWORD dwAnswer = ::GetLongPathName(sInstallDirWork, sInstallDirLong, MAX_PATH); 47 | 48 | TCHAR* pcSlash; 49 | DWORD dwError; 50 | while (0 == dwAnswer) { 51 | 52 | dwError = ::GetLastError(); 53 | if ((ERROR_FILE_NOT_FOUND != dwError) && (ERROR_PATH_NOT_FOUND != dwError)) 54 | break; 55 | 56 | // Keep working backwards until we get it right, or until there are no more backslashes. 57 | pcSlash = _tcsrchr(sInstallDirWork, _T('\\')); 58 | if (NULL == pcSlash) 59 | break; 60 | 61 | *pcSlash = _T('\0'); 62 | dwAnswer = ::GetLongPathName(sInstallDirWork, sInstallDirLong, MAX_PATH); 63 | } 64 | 65 | if (NULL != _tcsspnp(sInstallDirLong, 66 | _T("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@!_:+-.[]\\"))) { 67 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("-2")); 68 | } 69 | 70 | return ::MsiSetProperty(hModule, TEXT("WIXUI_INSTALLDIR_VALID"), TEXT("1")); 71 | } 72 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/ErrorMsg.h: -------------------------------------------------------------------------------- 1 | #define RETURN_ON_ERROR(x,h,s) \ 2 | if (ERROR_SUCCESS != x) { \ 3 | SimpleLogString1(h,s); \ 4 | return x; \ 5 | } 6 | 7 | #define RETURN_ON_ERROR_FREE(x,y,h,s) \ 8 | if (ERROR_SUCCESS != x) { \ 9 | SimpleLogString1(h,s); \ 10 | free(y); \ 11 | return x; \ 12 | } 13 | 14 | #define RETURN_ON_ERROR_FREE2(x,y,z,h,s) \ 15 | if (ERROR_SUCCESS != x) { \ 16 | SimpleLogString1(h,s); \ 17 | free(y); \ 18 | free(z); \ 19 | return x; \ 20 | } 21 | 22 | #define RETURN_IF_NULL(x,h,s) \ 23 | if (NULL == x) { \ 24 | SimpleLogString1(h,s); \ 25 | return ERROR_INSTALL_FAILURE; \ 26 | } 27 | 28 | #ifdef _DEBUG 29 | #define LOG_DEBUG_DETAILS_IF_NULL(x,h) \ 30 | if (NULL == x) { \ 31 | PrintUINT(h,x); \ 32 | PrintLastErrorDetails(h); \ 33 | } 34 | #define LOG_DEBUG_DETAILS_ON_ERROR(x,h) \ 35 | if (ERROR_SUCCESS != x) { \ 36 | PrintUINT(h,x); \ 37 | PrintLastErrorDetails(h); \ 38 | } 39 | #else 40 | #define LOG_DEBUG_DETAILS_IF_NULL(x,h) 41 | #define LOG_DEBUG_DETAILS_ON_ERROR(x,h) 42 | #endif 43 | 44 | 45 | extern void SimpleLogString1(MSIHANDLE hModule, LPCTSTR s); 46 | extern void SimpleLogString2(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t); 47 | extern void SimpleLogString3(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u); 48 | extern void SimpleLogString4(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u, LPCTSTR v); 49 | extern void PrintLastErrorDetails(MSIHANDLE hModule); 50 | extern void PrintUINT(MSIHANDLE hModule, UINT i); -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/HelperCA.def: -------------------------------------------------------------------------------- 1 | ; HelperCA.def: Clear Folder Custom Action for Perl::Dist::WiX 2 | ; 3 | ; Copyright (c) Curtis Jewell 2009. 4 | ; 5 | ; This code is free software; you can redistribute it and/or modify it 6 | ; under the same terms as Perl itself. 7 | 8 | LIBRARY "HelperCAv2" 9 | VERSION 2.1 10 | EXPORTS 11 | ClearFoldersSlow 12 | ClearFoldersFast 13 | ClearSiteFolder 14 | CheckDirName 15 | RelocateMSI 16 | SpecialRefresh 17 | 18 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/HelperCA.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | ///////////////////////////////////////////////////////////////////////////// 7 | // 8 | // Generated from the TEXTINCLUDE 2 resource. 9 | // 10 | #include "afxres.h" 11 | 12 | ///////////////////////////////////////////////////////////////////////////// 13 | #undef APSTUDIO_READONLY_SYMBOLS 14 | 15 | ///////////////////////////////////////////////////////////////////////////// 16 | // English (U.S.) resources 17 | 18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 19 | #ifdef _WIN32 20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 21 | #pragma code_page(1252) 22 | #endif //_WIN32 23 | 24 | #ifdef APSTUDIO_INVOKED 25 | ///////////////////////////////////////////////////////////////////////////// 26 | // 27 | // TEXTINCLUDE 28 | // 29 | 30 | 1 TEXTINCLUDE 31 | BEGIN 32 | "resource.h\0" 33 | END 34 | 35 | 2 TEXTINCLUDE 36 | BEGIN 37 | "#include ""afxres.h""\r\n" 38 | "\0" 39 | END 40 | 41 | 3 TEXTINCLUDE 42 | BEGIN 43 | "\r\n" 44 | "\0" 45 | END 46 | 47 | #endif // APSTUDIO_INVOKED 48 | 49 | 50 | ///////////////////////////////////////////////////////////////////////////// 51 | // 52 | // Version 53 | // 54 | 55 | VS_VERSION_INFO VERSIONINFO 56 | FILEVERSION 2,1,0,0 57 | PRODUCTVERSION 2,1,0,0 58 | FILEFLAGSMASK 0x17L 59 | #ifdef _DEBUG 60 | FILEFLAGS 0x1L 61 | #else 62 | FILEFLAGS 0x0L 63 | #endif 64 | FILEOS 0x4L 65 | FILETYPE 0x2L 66 | FILESUBTYPE 0x0L 67 | BEGIN 68 | BLOCK "StringFileInfo" 69 | BEGIN 70 | BLOCK "040904b0" 71 | BEGIN 72 | VALUE "FileDescription", "Helper CustomAction DLL" 73 | VALUE "FileVersion", "2.1" 74 | VALUE "InternalName", "Helper CA" 75 | VALUE "LegalCopyright", "Copyright (C) 2009 Curtis Jewell" 76 | VALUE "LegalTrademarks", "This DLL is free software; you can redistribute it and/or modify its source code under the same terms as Perl itself." 77 | VALUE "OriginalFilename", "HelperCA.dll" 78 | VALUE "ProductName", "Perl::Dist::Strawberry" 79 | VALUE "ProductVersion", "2.1" 80 | END 81 | END 82 | BLOCK "VarFileInfo" 83 | BEGIN 84 | VALUE "Translation", 0x409, 1200 85 | END 86 | END 87 | 88 | #endif // English (U.S.) resources 89 | ///////////////////////////////////////////////////////////////////////////// 90 | 91 | 92 | 93 | #ifndef APSTUDIO_INVOKED 94 | ///////////////////////////////////////////////////////////////////////////// 95 | // 96 | // Generated from the TEXTINCLUDE 3 resource. 97 | // 98 | 99 | 100 | ///////////////////////////////////////////////////////////////////////////// 101 | #endif // not APSTUDIO_INVOKED 102 | 103 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/SpecialRefresh.cpp: -------------------------------------------------------------------------------- 1 | // SpecialRefresh.cpp : broadcast a WM_SETTINGCHANGE message to all windows in the system 2 | // see http://support.microsoft.com/kb/104011 3 | // 4 | // This code is free software; you can redistribute it and/or modify it 5 | // under the same terms as Perl itself. 6 | 7 | // ##### EXPORTED FUCTIONS: SpecialRefresh 8 | 9 | #include "stdafx.h" 10 | #include "ErrorMsg.h" 11 | 12 | UINT __stdcall SpecialRefresh(MSIHANDLE hModule) { 13 | DWORD_PTR dwResult; 14 | SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 15 | (LPARAM) _T("Environment"), SMTO_ABORTIFHUNG, 16 | 5000, &dwResult ); 17 | 18 | return ERROR_SUCCESS; 19 | } 20 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by HelperCA.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // HelperCA.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // Reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | // Modify the following defines if you have to target a platform prior to the ones specified below. 9 | // Refer to MSDN for the latest info on corresponding values for different platforms. 10 | #ifndef WINVER // Allow use of features specific to Windows XP or later. 11 | #define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. 12 | #endif 13 | 14 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 15 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 16 | #endif 17 | 18 | #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. 19 | #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. 20 | #endif 21 | 22 | #ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. 23 | #define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. 24 | #endif 25 | 26 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 27 | // Windows Header Files: 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #pragma comment(lib, "msi.lib") 37 | -------------------------------------------------------------------------------- /HelperCAv2.dll_src/src/winres.h: -------------------------------------------------------------------------------- 1 | // This is a part of the Microsoft Foundation Classes C++ library. 2 | // Copyright (C) 1992-1998 Microsoft Corporation 3 | // All rights reserved. 4 | // 5 | // This source code is only intended as a supplement to the 6 | // Microsoft Foundation Classes Reference and related 7 | // electronic documentation provided with the library. 8 | // See these sources for detailed information regarding the 9 | // Microsoft Foundation Classes product. 10 | 11 | // winres.h - Windows resource definitions 12 | // extracted from WINUSER.H and COMMCTRL.H 13 | 14 | #ifdef _AFX_MINREBUILD 15 | #pragma component(minrebuild, off) 16 | #endif 17 | 18 | #define VS_VERSION_INFO 1 19 | 20 | #ifdef APSTUDIO_INVOKED 21 | #define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols 22 | #endif 23 | 24 | #ifndef WINVER 25 | #define WINVER 0x0400 // default to Windows Version 4.0 26 | #endif 27 | 28 | #include 29 | 30 | // operation messages sent to DLGINIT 31 | #define LB_ADDSTRING (WM_USER+1) 32 | #define CB_ADDSTRING (WM_USER+3) 33 | 34 | #ifdef APSTUDIO_INVOKED 35 | #undef APSTUDIO_HIDDEN_SYMBOLS 36 | #endif 37 | 38 | #ifdef IDC_STATIC 39 | #undef IDC_STATIC 40 | #endif 41 | #define IDC_STATIC (-1) 42 | 43 | #ifdef _AFX_MINREBUILD 44 | #pragma component(minrebuild, on) 45 | #endif 46 | -------------------------------------------------------------------------------- /MANIFEST.SKIP: -------------------------------------------------------------------------------- 1 | # Avoid version control files. 2 | \bRCS\b 3 | \bCVS\b 4 | \bSCCS\b 5 | ,v$ 6 | \B\.svn\b 7 | \B\.git\b 8 | \B\.gitignore\b 9 | \B\.hg\b 10 | \B\.hgtags\b 11 | \B\.hgignore\b 12 | \b_darcs\b 13 | 14 | # Avoid Makemaker generated and utility files. 15 | \bMANIFEST\.bak 16 | \bMakefile$ 17 | \bblib/ 18 | \bMakeMaker-\d 19 | \bpm_to_blib\.ts$ 20 | \bpm_to_blib$ 21 | \bblibdirs\.ts$ # 6.18 through 6.25 generated this 22 | \bMANIFEST\.SKIP 23 | 24 | # Avoid Module::Build generated and utility files. 25 | \bBuild$ 26 | \b_build/ 27 | \bBuild.bat$ 28 | \B\.build/ 29 | ^MYMETA\.yml$ 30 | ^MYMETA\.json$ 31 | 32 | # Avoid temp and backup files. 33 | ~$ 34 | \.old$ 35 | \#$ 36 | \b\.# 37 | \.bak$ 38 | \btmp[0-9][0-9][0-9]\b 39 | \bdownload\b 40 | ^tmp 41 | ^devel 42 | ^HelperCA.dll_src/Debug 43 | ^HelperCA.dll_src/Release 44 | ^HelperCAv2.dll_src/Debug 45 | ^HelperCAv2.dll_src/Release 46 | \.ncb$ 47 | \.zip$ 48 | \.gz$ 49 | \.suo$ 50 | \.user$ 51 | 52 | # Avoid Devel::Cover files. 53 | \bcover_db\b 54 | 55 | # Avoid Windows thumbnail files. 56 | \bThumbs\.db$ 57 | 58 | # Avoid our own built files. 59 | \APerl-Dist-Strawberry- 60 | \bfilelist\.txt$ 61 | 62 | # Avoid release files 63 | \breleaserc$ 64 | \bsite_html_config.yaml$ 65 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | NAME 2 | Perl::Dist::Strawberry - Build strawberry-perl-like distribution for MS 3 | Windows 4 | 5 | DESCRIPTION 6 | Strawberry Perl is a binary distribution of Perl for the Windows 7 | operating system. It includes a bundled compiler and pre-installed 8 | modules that offer the ability to install XS CPAN modules directly from 9 | CPAN. 10 | 11 | You can download Strawberry Perl from 12 | 13 | The purpose of the Strawberry Perl series is to provide a practical 14 | Win32 Perl environment for experienced Perl developers to experiment 15 | with and test the installation of various CPAN modules under Win32 16 | conditions, and to provide a useful platform for doing real work. 17 | 18 | Perl::Dist::Strawberry is just a helper module for the main script 19 | perldist_strawberry used for building Strawberry perl release packages 20 | (MSI, ZIP). 21 | 22 | LICENSE 23 | This software is free software; you can redistribute it and/or modify it 24 | under the same terms as Perl itself. 25 | 26 | -------------------------------------------------------------------------------- /devel.utils/_build-5.36.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | set SP=z:\sp532 7 | set PATH=Z:\mingw64\bin;%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;%PATH% 8 | set PERLEXE=%SP%\perl\bin\perl 9 | 10 | :: update blib - requires Build.PL to have been run 11 | set OLD_CD=%cd% 12 | cd .. 13 | call Build 14 | cd %OLD_CD% 15 | 16 | set SKIP_MSI_STEP=1 17 | set SKIP_PDL_STEP=1 18 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.36.1.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 19 | 20 | 21 | -------------------------------------------------------------------------------- /devel.utils/_build-5.36_local.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | subst Z: C:\spbuild 7 | 8 | set SP=d:\berrybrew\5.32.1.1_64bit 9 | set PATH=%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;Z:\sw\wix311;Z:\winlibs\bin;%PATH% 10 | set PERLEXE=%SP%\perl\bin\perl 11 | 12 | :: update blib - requires Build.PL to have been run 13 | ::set OLD_CD=%cd% 14 | ::cd .. 15 | ::call Build 16 | ::cd %OLD_CD% 17 | 18 | call ..\build.bat test 19 | 20 | set MAKEFLAGS=-j8 21 | set TEST_JOBS=8 22 | 23 | 24 | ::set SKIP_MSI_STEP=1 25 | ::set SKIP_PDL_STEP=1 26 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.36.3.1.pp -test_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 27 | 28 | 29 | -------------------------------------------------------------------------------- /devel.utils/_build-5.38.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | set SP=z:\sp532 7 | set PATH=Z:\mingw64\bin;%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;%PATH% 8 | set PERLEXE=%SP%\perl\bin\perl 9 | 10 | :: update blib - requires Build.PL to have been run 11 | set OLD_CD=%cd% 12 | cd .. 13 | call Build 14 | cd %OLD_CD% 15 | 16 | set MAKEFLAGS=-j8 17 | set TEST_JOBS=8 18 | set LC_ALL=C 19 | 20 | ::set SKIP_MSI_STEP=1 21 | ::set SKIP_PDL_STEP=1 22 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.38.0.1.pp -notest_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 23 | 24 | 25 | -------------------------------------------------------------------------------- /devel.utils/_build-5.38_local.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | subst Z: C:\spbuild 7 | 8 | set SP=d:\berrybrew\5.32.1.1_64bit 9 | set PATH=%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;Z:\sw\wix311;Z:\winlibs\bin;%PATH% 10 | set PERLEXE=%SP%\perl\bin\perl 11 | 12 | :: update blib - requires Build.PL to have been run 13 | ::set OLD_CD=%cd% 14 | ::cd .. 15 | ::call Build 16 | ::cd %OLD_CD% 17 | 18 | call ..\build.bat test 19 | 20 | set MAKEFLAGS=-j8 21 | set TEST_JOBS=8 22 | 23 | 24 | ::set SKIP_MSI_STEP=1 25 | ::set SKIP_PDL_STEP=1 26 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.38.2.2.pp -test_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 27 | 28 | 29 | -------------------------------------------------------------------------------- /devel.utils/_build-5.39_local_ucrt.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | subst Z: C:\shawn\sp_repos 7 | 8 | set SP=c:\perls\5.38.2.2_PDL 9 | set PATH=%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;Z:\sw\wix311;Z:\winlibs\bin;%PATH% 10 | set PERLEXE=%SP%\perl\bin\perl 11 | 12 | :: update blib - requires Build.PL to have been run 13 | ::set OLD_CD=%cd% 14 | ::cd .. 15 | ::call Build 16 | ::cd %OLD_CD% 17 | 18 | call ..\build.bat test 19 | 20 | set MAKEFLAGS=-j8 21 | set TEST_JOBS=8 22 | 23 | 24 | ::set SKIP_MSI_STEP=1 25 | ::set SKIP_PDL_STEP=1 26 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.39.10.2.pp -test_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 27 | 28 | 29 | -------------------------------------------------------------------------------- /devel.utils/_build-5.40_local_ucrt.bat: -------------------------------------------------------------------------------- 1 | ::@cls 2 | ::call ..\build.bat test 3 | 4 | ::set PERL_USE_UNSAFE_INC=1 5 | 6 | subst Z: C:\shawn\sp_repos 7 | 8 | set SP=c:\perls\5.38.2.2_PDL 9 | set PATH=%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;Z:\sw\wix311;Z:\winlibs\bin;%PATH% 10 | set PERLEXE=%SP%\perl\bin\perl 11 | 12 | :: update blib - requires Build.PL to have been run 13 | ::set OLD_CD=%cd% 14 | ::cd .. 15 | ::call Build 16 | ::cd %OLD_CD% 17 | 18 | call ..\build.bat test 19 | 20 | set MAKEFLAGS=-j8 21 | set TEST_JOBS=8 22 | 23 | 24 | ::set SKIP_MSI_STEP=1 25 | ::set SKIP_PDL_STEP=1 26 | %PERLEXE% -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.40.0.1.pp -test_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 27 | 28 | 29 | -------------------------------------------------------------------------------- /devel.utils/build-5.16.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.16.3.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 4 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.16.3.1-SPP-min.pp -nointeractive -norestorepoints 5 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\64bit-5.16.3.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 6 | pause 7 | -------------------------------------------------------------------------------- /devel.utils/build-5.18.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.18.4.1.pp -test_core -cpan_url file:///z:/_cpan-mirror/ -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 4 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.18.4.1.pp -test_core -cpan_url file:///z:/_cpan-mirror/ -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 5 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.18.4.1-no64.pp -test_core -cpan_url file:///z:/_cpan-mirror/ -nointeractive -norestorepoints 6 | pause 7 | -------------------------------------------------------------------------------- /devel.utils/build-5.20.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set SKIP_MSI_STEP= 5 | set SKIP_PDL_STEP= 6 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.20.3.3.pp -test_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 7 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.20.3.3.pp -test_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 8 | 9 | set SKIP_MSI_STEP=1 10 | set SKIP_PDL_STEP=1 11 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.20.3.3.pp -test_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 12 | 13 | rem pause 14 | -------------------------------------------------------------------------------- /devel.utils/build-5.22.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set SKIP_MSI_STEP= 5 | set SKIP_PDL_STEP= 6 | set SKIP_LD_TROUBLE_MAKERS= 7 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.22.3.1.pp -test_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 8 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.22.3.1.pp -test_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 9 | 10 | set SKIP_MSI_STEP=1 11 | set SKIP_PDL_STEP=1 12 | set SKIP_LD_TROUBLE_MAKERS= 13 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.22.3.1.pp -test_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 14 | 15 | rem ### EXPERIMENTAL ### 16 | set SKIP_MSI_STEP=1 17 | set SKIP_PDL_STEP= 18 | set SKIP_LD_TROUBLE_MAKERS=1 19 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.22.3.1.pp -test_core -beta=0 -perl_ldouble -app_simplename=strawberry-perl-ld -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 20 | rem perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.22.3.1.pp -test_core -beta=0 -perl_ldouble -noperl_64bitint -app_simplename=strawberry-PDL-ld-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 21 | 22 | rem pause 23 | -------------------------------------------------------------------------------- /devel.utils/build-5.24.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set PERL_USE_UNSAFE_INC=1 5 | 6 | set SKIP_MSI_STEP= 7 | set SKIP_PDL_STEP= 8 | set SKIP_LD_TROUBLE_MAKERS= 9 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.24.4.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 10 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.24.4.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 11 | 12 | set SKIP_MSI_STEP=1 13 | set SKIP_PDL_STEP=1 14 | set SKIP_LD_TROUBLE_MAKERS= 15 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.24.4.1.pp -notest_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 16 | 17 | rem ### no long double build ### 18 | rem ### set SKIP_MSI_STEP=1 19 | rem ### set SKIP_PDL_STEP= 20 | rem ### set SKIP_LD_TROUBLE_MAKERS=1 21 | rem ### perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.24.4.1.pp -notest_core -beta=0 -perl_ldouble -app_simplename=strawberry-perl-ld -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 22 | 23 | rem ### EXPERIMENTAL ### 24 | rem ### perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.24.4.1.pp -test_core -beta=0 -perl_ldouble -noperl_64bitint -app_simplename=strawberry-PDL-ld-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 25 | 26 | rem pause 27 | -------------------------------------------------------------------------------- /devel.utils/build-5.26.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set PERL_USE_UNSAFE_INC=1 5 | 6 | set SKIP_MSI_STEP= 7 | set SKIP_PDL_STEP= 8 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.26.3.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 9 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.26.3.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 10 | 11 | set SKIP_MSI_STEP=1 12 | set SKIP_PDL_STEP=1 13 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.26.3.1.pp -notest_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 14 | 15 | rem ### no long double build ### 16 | rem ### set SKIP_MSI_STEP=1 17 | rem ### set SKIP_PDL_STEP= 18 | rem ### perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.26.3.1.pp -notest_core -beta=0 -perl_ldouble -app_simplename=strawberry-perl-ld -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 19 | -------------------------------------------------------------------------------- /devel.utils/build-5.28.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set PERL_USE_UNSAFE_INC=1 5 | 6 | set SKIP_MSI_STEP= 7 | set SKIP_PDL_STEP= 8 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.28.2.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 9 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.28.2.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 10 | 11 | set SKIP_MSI_STEP=1 12 | set SKIP_PDL_STEP=1 13 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.28.2.1.pp -notest_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 14 | -------------------------------------------------------------------------------- /devel.utils/build-5.30.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set PERL_USE_UNSAFE_INC=1 5 | 6 | set SKIP_MSI_STEP= 7 | set SKIP_PDL_STEP= 8 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.30.3.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 9 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.30.3.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 10 | 11 | set SKIP_MSI_STEP=1 12 | set SKIP_PDL_STEP=1 13 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.30.3.1.pp -notest_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 14 | 15 | -------------------------------------------------------------------------------- /devel.utils/build-5.32.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | set PERL_USE_UNSAFE_INC=1 5 | 6 | set SKIP_MSI_STEP= 7 | set SKIP_PDL_STEP= 8 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.32.1.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 9 | perl -Mblib ..\script\perldist_strawberry -job ..\share\64bit-5.32.1.1.pp -notest_core -beta=0 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 10 | 11 | set SKIP_MSI_STEP=1 12 | set SKIP_PDL_STEP=1 13 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.32.1.1.pp -notest_core -beta=0 -noperl_64bitint -app_simplename=strawberry-perl-no64 -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 -cpan_url file:///z:/_cpan-mirror/ 14 | -------------------------------------------------------------------------------- /devel.utils/build-5.38_32bit_local.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | 4 | subst Z: C:\spbuild 5 | 6 | set SP=d:\berrybrew\5.32.0_64_PDL 7 | set PATH=%SP%\c\bin;%SP%\perl\bin;%SP%\perl\site\bin;Z:\sw\wix311;%PATH% 8 | ::set PERLEXE=%SP%\perl\bin\perl 9 | 10 | 11 | set PERL_USE_UNSAFE_INC=1 12 | 13 | set SKIP_MSI_STEP= 14 | set SKIP_PDL_STEP=1 15 | perl -Mblib ..\script\perldist_strawberry -job ..\share\32bit-5.38.2.1.pp -test_core -beta=0 -interactive -restorepoints -wixbin_dir=z:\sw\wix311 -cpan_url https://cpan.metacpan.org 16 | 17 | -------------------------------------------------------------------------------- /devel.utils/build-ALL.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat test 3 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.19.9.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 4 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\64bit-5.19.9.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 5 | 6 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.16.3.1-SPP-min.pp -nointeractive -norestorepoints 7 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.16.3.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 8 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\64bit-5.16.3.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 9 | 10 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.18.2.1-no64.pp -nointeractive -norestorepoints 11 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\32bit-5.18.2.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 12 | perl -Mblib ..\script\perldist_strawberry -cpan_url file:///z:/_cpan-mirror/ -job ..\share\64bit-5.18.2.1.pp -nointeractive -norestorepoints -wixbin_dir=z:\sw\Wix38 13 | pause 14 | -------------------------------------------------------------------------------- /devel.utils/build-mini.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat 3 | rem perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.17.10.1-minimal.pp -nointeractive -restorepoints 4 | rem perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.17.11.1-minimal.pp -nointeractive -restorepoints 5 | rem perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.18.0.2-minimal.pp -nointeractive -restorepoints 6 | perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.18.0.4-minimal.pp -nointeractive -norestorepoints 7 | pause 8 | -------------------------------------------------------------------------------- /devel.utils/build-spec.bat: -------------------------------------------------------------------------------- 1 | @cls 2 | call ..\build.bat 3 | perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.16.0.1-SPP-debug-64int.pp -nointeractive -restorepoints 4 | rem perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.16.0.1-SPP-64int.pp -nointeractive 5 | rem perl -Mblib ..\script\perldist_strawberry -cpan_url file://z:/strawberry_build/_cpan-mirror/ -job ..\share\32bit-5.16.0.1-SPP-debug.pp -nointeractive 6 | pause 7 | -------------------------------------------------------------------------------- /devel.utils/diffzipdirs.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # 3 | # Copyright 2012 kmx(at)cpan(dot)org 4 | # 5 | # This code is free software; you can redistribute it and/or modify it 6 | # under the same terms as Perl itself. 7 | # 8 | 9 | use strict; 10 | use warnings; 11 | use Getopt::Long; 12 | use File::Temp qw(tempfile tempdir); 13 | 14 | use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); 15 | use Digest::SHA qw(sha1 sha1_hex sha1_base64 sha256 sha256_hex sha256_base64); 16 | use Data::Dump 'pp'; 17 | use File::Glob 'bsd_glob'; 18 | use File::Basename; 19 | use File::Spec::Functions qw(canonpath); 20 | 21 | sub load_zip { 22 | my ($filename) = @_; 23 | my $zip = Archive::Zip->new(); 24 | die 'ZIP read error' unless $zip->read($filename) == AZ_OK; 25 | my $num = $zip->numberOfMembers(); 26 | my @all = $zip->membersMatching('.*'); 27 | my $all_num = scalar(@all); 28 | die sprintf("COUNT ERROR: count=%2d all.count=%2d ZIP='%s'\n",$num,$all_num,basename($filename)) if $num != $all_num; 29 | 30 | my $result = {}; 31 | foreach my $member (@all) { 32 | my $name = $member->fileName(); 33 | my $content = $zip->contents($member); 34 | if ($name =~ m|/$| && !defined $content) { 35 | $result->{$name} = 'DIR'; 36 | } 37 | else { 38 | my $content_len = length($content); 39 | $result->{$name} = sha1_hex($content); 40 | } 41 | } 42 | return $result; 43 | } 44 | 45 | sub compare { 46 | my ($h1, $h2) = @_; 47 | my %tmp = (%$h2); 48 | my @result; 49 | 50 | for my $k (sort keys %$h1) { 51 | my $v = delete $tmp{$k}; 52 | if (!defined $v) { 53 | push @result, "-- $k"; # item was removed from h1 54 | } 55 | elsif ($h1->{$k} ne $v) { 56 | push @result, "!= $k"; # modified item 57 | } 58 | else { 59 | push @result, "== $k"; # identical item 60 | } 61 | } 62 | 63 | for my $k (sort keys %tmp) { 64 | push @result, "++ $k"; # item in new in h2 65 | } 66 | 67 | return \@result; 68 | } 69 | 70 | sub print_diff { 71 | my ($list) = @_; 72 | for (@$list) { 73 | print "$_\n" unless /^.=/; 74 | #print "$_\n" unless /^==/; 75 | } 76 | } 77 | 78 | sub find_pairs { 79 | my ($dir1, $dir2) = @_; 80 | 81 | my @d1 = bsd_glob("$dir1/*.zip"); 82 | my @d2 = bsd_glob("$dir2/*.zip"); 83 | 84 | my %h; 85 | my @result; 86 | 87 | for my $z (@d1) { 88 | $z = canonpath($z); 89 | my $b = basename($z); 90 | $b =~ s/^..bit//; 91 | $b = '_fftw2' if $b =~ /fftw-2\./; 92 | $b = '_fftw3' if $b =~ /fftw-3\./; 93 | $b =~ s/-\d.*$//; 94 | warn "duplicate found for '$b' - using '", basename($z),"'\n" if $h{$b}; 95 | $h{$b} = $z; 96 | } 97 | 98 | for my $new (@d2) { 99 | $new = canonpath($new); 100 | my $b = basename($new); 101 | $b =~ s/^..bit//; 102 | $b = '_fftw2' if $b =~ /fftw-2\./; 103 | $b = '_fftw3' if $b =~ /fftw-3\./; 104 | $b =~ s/-\d.*$//; 105 | my $old = $h{$b}; 106 | if ($old) { 107 | push @result, [$old, $new]; 108 | } 109 | else { 110 | warn "no OLD item found for '$b'\n" and next ; 111 | } 112 | } 113 | 114 | return @result; 115 | } 116 | 117 | die "usage: dir_old dir_new\n" if @ARGV != 2; 118 | 119 | my ($dir_old, $dir_new) = @ARGV; 120 | die "non-existing dir (old) '$dir_old'" unless -d $dir_old; 121 | die "non-existing dir (new) '$dir_new'" unless -d $dir_new; 122 | 123 | my @p = find_pairs($dir_old, $dir_new); 124 | 125 | for my $i (@p) { 126 | my ($arch1, $arch2) = @$i; 127 | my $zip1 = load_zip($arch1); 128 | my $zip2 = load_zip($arch2); 129 | my $list = compare($zip1,$zip2); 130 | warn sprintf("DIFF: OLD='%s' NEW='%s'\n",basename($arch1),basename($arch2)); 131 | print_diff($list); 132 | } 133 | 134 | warn "\nTOTAL: ", scalar(@p), " ZIP pairs compared\n"; 135 | -------------------------------------------------------------------------------- /devel.utils/grep_use.pl: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use File::Find::Rule; 5 | use File::Slurp; 6 | use FindBin; 7 | use Data::Dump 'pp'; 8 | 9 | my $libdir = "$FindBin::Bin/../lib"; 10 | 11 | my @pm_files = File::Find::Rule->file()->name('*.pm')->in($libdir); 12 | 13 | my @all_lines; 14 | 15 | for (@pm_files) { 16 | my @l = read_file($_); 17 | push @all_lines, @l; 18 | } 19 | 20 | @all_lines = grep { /^use / } @all_lines; 21 | @all_lines = map { s/^(use\s*[^\s;]+).*[\r\n]*$/$1/; $_ } @all_lines; 22 | my %uniq = map { $_=> 1 } @all_lines; 23 | @all_lines = sort keys %uniq; 24 | 25 | pp \@all_lines; 26 | -------------------------------------------------------------------------------- /devel.utils/shortname.pl: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Win32; 5 | use File::Basename; 6 | 7 | my $name = 'c:\strawberry\perl\bin\perlthanks.bat'; 8 | my $s = Win32::GetShortPathName($name); 9 | my $r = basename($s);; 10 | 11 | warn "s='$s'\n"; 12 | warn "r='$r'\n"; 13 | 14 | -------------------------------------------------------------------------------- /devel.utils/shortname_test.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/devel.utils/shortname_test.pl -------------------------------------------------------------------------------- /devel.utils/update_minicpan.bat: -------------------------------------------------------------------------------- 1 | call minicpan -l z:\_cpan-mirror -x -f -r http://cpan.metacpan.org/ -c CPAN::Mini::Devel 2 | pause -------------------------------------------------------------------------------- /devel.utils/wix_detection.pl: -------------------------------------------------------------------------------- 1 | use 5.012; 2 | use warnings; 3 | 4 | use Win32::TieRegistry qw( KEY_READ ); 5 | 6 | sub _detect_wix_dir { 7 | my $self = shift; 8 | for my $v (qw/3.0 3.5 3.6/) { 9 | my $WIX_REGISTRY_KEY = "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Installer XML/$v"; 10 | # 0x200 = KEY_WOW64_32KEY 11 | my $r = Win32::TieRegistry->new($WIX_REGISTRY_KEY => { Access => KEY_READ|0x200, Delimiter => q{/} }); 12 | next unless $r; 13 | my $d = $r->TiedRef->{'InstallRoot'}; 14 | next unless $d && -d $d && -f "$d/candle.exe" && -f "$d/light.exe"; 15 | return $d; 16 | } 17 | return; 18 | } 19 | 20 | warn _detect_wix_dir; 21 | 22 | -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/FixShebang.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::FixShebang; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Slurp; 8 | use File::Spec; 9 | use File::Glob 'bsd_glob'; 10 | 11 | sub check { 12 | my $self = shift; 13 | $self->SUPER::check(@_); 14 | die "param 'shebang' not defined" unless defined $self->{config}->{shebang}; 15 | } 16 | 17 | sub run { 18 | my $self = shift; 19 | my $image_dir = $self->global->{image_dir}; 20 | my $sb = $self->{config}->{shebang}; 21 | 22 | $self->boss->message(2, "Gonna fix shebang to '$sb'"); 23 | 24 | for my $full (bsd_glob("$image_dir/perl/bin/*")) { 25 | my ($v, $d, $f) = File::Spec->splitpath($full); 26 | if ($f !~ /\./ || $f =~ /\.pl$/i) { 27 | my $data = read_file($full, binmode => ':raw' ); 28 | my $orig = $data; 29 | $data =~ s{^(#!.*?)( -|\r|\n)}{$sb$2}sgi; 30 | if ($orig ne $data) { 31 | $self->boss->message(3, "Patching '$full'"); 32 | my $r = $self->_unset_ro($full); 33 | write_file($full, {binmode => ':raw'}, $data); 34 | $self->_restore_ro($full, $r); 35 | } 36 | } 37 | } 38 | 39 | } 40 | 41 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/InstallModules.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::InstallModules; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use Data::Dump qw(pp); 8 | use Storable qw(retrieve); 9 | use File::Spec::Functions qw(catfile); 10 | 11 | sub check { 12 | my $self = shift; 13 | $self->SUPER::check(@_); 14 | my $m = $self->{config}->{modules}; 15 | die "param 'modules' not defined" unless defined $m; 16 | die "param 'modules' has to be ARRAYREF" unless ref $m eq 'ARRAY'; 17 | } 18 | 19 | sub run { 20 | my $self = shift; 21 | my @list = @{$self->{config}->{modules}}; 22 | $self->install_modlist(@list) or die "FAILED"; 23 | } 24 | 25 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/OutputLogZIP.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::OutputLogZIP; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Spec::Functions qw(catfile); 8 | 9 | sub run { 10 | my $self = shift; 11 | 12 | my $output_basename = $self->global->{output_basename} // 'perl-output'; 13 | my $zip_file = catfile($self->global->{output_dir}, "$output_basename.LOG.zip"); 14 | 15 | $self->boss->message(2, "gonna create '$zip_file'"); 16 | # backup already existing zip_file; 17 | $self->backup_file($zip_file); 18 | # do zip 19 | $self->boss->zip_dir($self->global->{debug_dir}, $zip_file, 9); # 9 = max. compression 20 | #store results 21 | $self->{data}->{output}->{log_zip} = $zip_file; 22 | $self->{data}->{output}->{log_zip_sha1} = $self->sha1_file($zip_file); 23 | $self->{data}->{output}->{log_zip_sha256} = $self->sha256_file($zip_file); 24 | } 25 | 26 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/OutputPdlZIP.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::OutputPdlZIP; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Spec::Functions qw(catfile); 8 | 9 | sub run { 10 | my $self = shift; 11 | 12 | my $output_basename = ($self->global->{output_basename} // "perl-output") . "-PDL"; 13 | my $zip_file = catfile($self->global->{output_dir}, "$output_basename.zip"); 14 | 15 | $self->boss->message(2, "gonna create '$zip_file'"); 16 | # backup already existing zip_file; 17 | $self->backup_file($zip_file); 18 | # do zip 19 | $self->boss->zip_dir($self->global->{image_dir}, $zip_file, 9); # 9 = max. compression 20 | #store results 21 | $self->{data}->{output}->{pdl_zip} = $zip_file; 22 | $self->{data}->{output}->{pdl_zip_sha1} = $self->sha1_file($zip_file); 23 | $self->{data}->{output}->{pdl_zip_sha256} = $self->sha256_file($zip_file); 24 | } 25 | 26 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/OutputPortableZIP.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::OutputPortableZIP; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Spec::Functions qw(catfile); 8 | 9 | sub run { 10 | my $self = shift; 11 | 12 | my $output_basename = ($self->global->{output_basename} // "perl-output") . "-portable"; 13 | my $zip_file = catfile($self->global->{output_dir}, "$output_basename.zip"); 14 | 15 | $self->boss->message(2, "gonna create '$zip_file'"); 16 | # backup already existing zip_file; 17 | $self->backup_file($zip_file); 18 | # do zip 19 | $self->boss->zip_dir($self->global->{image_dir}, $zip_file, 9); # 9 = max. compression 20 | #store results 21 | $self->{data}->{output}->{portable_zip} = $zip_file; 22 | $self->{data}->{output}->{portable_zip_sha1} = $self->sha1_file($zip_file); 23 | $self->{data}->{output}->{portable_zip_sha256} = $self->sha256_file($zip_file); 24 | } 25 | 26 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/OutputReleasesJSONSnippet.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::OutputReleasesJSONSnippet; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use Time::Piece; 8 | use JSON::PP; 9 | 10 | use File::Spec::Functions qw(catfile); 11 | 12 | sub run { 13 | my $self = shift; 14 | 15 | my $output_basename = $self->global->{output_basename} // 'perl-output'; 16 | my $json_file = catfile($self->global->{output_dir}, "${output_basename}_releases_snippet.json."); 17 | 18 | $self->boss->message(2, "gonna create '$json_file'"); 19 | # backup already existing json_file; 20 | $self->backup_file($json_file); 21 | 22 | use Data::Printer; 23 | #p $self; 24 | my $params = $self->global; 25 | #p $params; 26 | 27 | my $app_version = $params->{app_version}; 28 | my $bits = $params->{bits}; 29 | 30 | my $t = localtime(); 31 | my $year = $t->year; 32 | my $month = $t->month; 33 | my $date_ymd = $t->strftime('%Y-%m-%d'); 34 | 35 | my $name = "$month $year / $app_version / ${bits}bit"; 36 | my $archname = "MSWin32-x${bits}-multi-thread"; 37 | # next two if-blocks are unverified as we have not built these types 38 | if ($params->{perl_64bitint}) { 39 | $name .= ' / with USE_64_BIT_INT'; 40 | $archname .= '-64int'; 41 | } 42 | if ($params->{perl_ldouble}) { 43 | $name .= ' / with USE_LONG_DOUBLE'; 44 | $archname .= '-ld'; 45 | } 46 | 47 | # could use a map but it would be less readable 48 | my @v_parts = split /,/, $params->{app_rc_version}; 49 | my $numver = $v_parts[0] + 1e-3 * $v_parts[1] + 1e-6 * $v_parts[2] + 1e-9 * $v_parts[3]; 50 | 51 | my @editions = grep {$_ =~ /^(zip|portable_zip|msi|pdl_zip)$/} keys %{$params->{output}}; 52 | 53 | my $edition_hash = {}; 54 | EDITION: 55 | foreach my $edition (sort @editions) { 56 | my $f = $params->{output}{$edition}; 57 | if (!$f or !-e $f) { 58 | warn "Unable to locate $edition output $f, cannot add to releases.json snippet."; 59 | next EDITION; 60 | } 61 | 62 | my $size = -s $f; 63 | # could use a proper method... 64 | my $re_sep = qr|[/\\]|; 65 | my @path = split $re_sep, $f; 66 | my $basename = $path[-1]; 67 | 68 | my $hash = { 69 | sha1 => $params->{output}{"${edition}_sha1"} // $self->sha1_file($f), 70 | sha256 => $params->{output}{"${edition}_sha256"} // $self->sha256_file($f), 71 | size => $size, 72 | url => "__XXXX_URL_placeholder__ $basename", 73 | }; 74 | $edition_hash->{$edition} = $hash; 75 | } 76 | 77 | 78 | #build snippet 79 | my $snippet = { 80 | archname => $archname, 81 | date => $date_ymd, 82 | edition => $edition_hash, 83 | name => $name, 84 | numver => $numver, 85 | relnotes => "https://strawberryperl.com/release-notes/$params->{output_basename}.html", 86 | version => $app_version, 87 | }; 88 | 89 | #p $snippet; 90 | my $json_snippet = JSON::PP->new->utf8->pretty->canonical->encode($snippet); 91 | open my $fh, '>', $json_file or die "Unable to open $json_file, $!"; 92 | print {$fh} $json_snippet; 93 | $fh->close; 94 | 95 | } 96 | 97 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/OutputZIP.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::OutputZIP; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Spec::Functions qw(catfile); 8 | 9 | sub run { 10 | my $self = shift; 11 | 12 | my $output_basename = $self->global->{output_basename} // 'perl-output'; 13 | my $zip_file = catfile($self->global->{output_dir}, "$output_basename.zip"); 14 | 15 | $self->boss->message(2, "gonna create '$zip_file'"); 16 | # backup already existing zip_file; 17 | $self->backup_file($zip_file); 18 | # do zip 19 | $self->boss->zip_dir($self->global->{image_dir}, $zip_file, 9); # 9 = max. compression 20 | #store results 21 | $self->{data}->{output}->{zip} = $zip_file; 22 | $self->{data}->{output}->{zip_sha1} = $self->sha1_file($zip_file); 23 | $self->{data}->{output}->{zip_sha256} = $self->sha256_file($zip_file); 24 | } 25 | 26 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/SetupPortablePerl.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::SetupPortablePerl; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use File::Spec::Functions qw(catdir); 8 | use Portable::Dist; 9 | 10 | sub run { 11 | my $self = shift; 12 | 13 | $self->boss->message(2, "Creating Portable::Dist"); 14 | my $portable_dist = Portable::Dist->new( perl_root => catdir($self->global->{image_dir}, 'perl') ) or die "FATAL: Portable::Dist->new() failed"; 15 | 16 | $self->boss->message(2, "Running Portable::Dist"); 17 | $portable_dist->run() or die "FATAL: Portable::Dist->run() failed"; 18 | 19 | $self->boss->message(2, "Completed Portable::Dist"); 20 | } 21 | 22 | 1; -------------------------------------------------------------------------------- /lib/Perl/Dist/Strawberry/Step/UninstallModules.pm: -------------------------------------------------------------------------------- 1 | package Perl::Dist::Strawberry::Step::UninstallModules; 2 | 3 | use 5.012; 4 | use warnings; 5 | use base 'Perl::Dist::Strawberry::Step'; 6 | 7 | use Data::Dump qw(pp); 8 | use Storable qw(retrieve); 9 | use File::Spec::Functions qw(catfile); 10 | 11 | sub check { 12 | my $self = shift; 13 | $self->SUPER::check(@_); 14 | my $m = $self->{config}->{modules}; 15 | die "param 'modules' not defined" unless defined $m; 16 | die "param 'modules' has to be ARRAYREF" unless ref $m eq 'ARRAY'; 17 | } 18 | 19 | sub run { 20 | my $self = shift; 21 | 22 | my $success = 1; 23 | my @list = @{$self->{config}->{modules}}; 24 | my $count = scalar(@list); 25 | my $i = 0; 26 | $self->{data}->{output}->{distributions_removed} = []; 27 | for my $item (@list) { 28 | $i++; 29 | $item = { module=>$item } unless ref $item; # if item is scalar we assume module name 30 | my $name = $item->{module}; 31 | if ($name) { 32 | my @msg; 33 | $self->boss->message(1, sprintf("uninstalling %2d/%d '%s' \t".join(' ',@msg), $i, $count, $name)); 34 | my $rv = $self->_uninstall_module(%$item); 35 | unless(defined $rv && $rv == 0) { 36 | $self->boss->message(1, "WARNING: non-zero exit code '$rv' - gonna continue but overall result of this task will be 'FAILED'"); 37 | $success = 0; 38 | } 39 | else { 40 | push @{$self->{data}->{output}->{distributions_removed}}, $name; 41 | } 42 | } 43 | else { 44 | $self->boss->message(1, sprintf("SKIPPING!! %2d/%d ERROR: invalid item", $i, $count)); 45 | $success = 0; 46 | } 47 | } 48 | 49 | die "FAILED\n" unless $success; 50 | } 51 | 52 | sub _uninstall_module { 53 | my ($self, %args) = @_; 54 | 55 | my $now = time; 56 | my $shortname = $args{module}; 57 | $shortname =~ s|^.*[\\/]||; 58 | $shortname =~ s|:+|_|g; 59 | $shortname =~ s|[\\/]+|_|g; 60 | $shortname =~ s/\.(tar\.gz|tar\.bz2|zip|tar|gz)$//; 61 | 62 | my $script_pl = $self->boss->resolve_name("/utils/CPANPLUS_uninstall_module.pl"); 63 | my $log = catfile($self->global->{debug_dir}, "mod_uninstall_".$now."_".$shortname.".log.txt"); 64 | #my $dumper_file = catfile($self->global->{debug_dir}, "cpan_uninstall.dumper.txt"); 65 | #my $nstore_file = catfile($self->global->{debug_dir}, "cpan_uninstall.nstore.txt"); 66 | 67 | my $env = { 68 | PERL_MM_USE_DEFAULT=>1, AUTOMATED_TESTING=>undef, RELEASE_TESTING=>undef, 69 | PERL5_CPANPLUS_HOME=>$self->global->{build_ENV}->{APPDATA}, #workaround for CPANPLUS 70 | }; 71 | # resolve macros in env{} 72 | if (defined $args{env} && ref $args{env} eq 'HASH') { 73 | for my $var (keys %{$args{env}}) { 74 | $env->{$var} = $self->boss->resolve_name($args{env}->{$var}); 75 | } 76 | } 77 | # resolve macros in module name 78 | $args{module} = $self->boss->resolve_name($args{module}); 79 | my %params; 80 | $params{'--url'} = $self->global->{cpan_url}; 81 | $params{'--module'} = $args{module}; #XXX-TODO multiple modules? 82 | $params{'--verbose'} = $args{verbose} if defined $args{verbose}; 83 | # Execute the module uninstall script 84 | my $rv = $self->execute_special(['perl', $script_pl, %params], $log, $log, $env); 85 | unless(defined $rv && $rv == 0) { 86 | rename $log, catfile($self->global->{debug_dir}, "mod_uninstall_FAIL_".$now."_".$shortname.".log.txt"); 87 | } 88 | return $rv; 89 | } 90 | 91 | 1; -------------------------------------------------------------------------------- /share/extra-files/DISTRIBUTIONS.txt.tt: -------------------------------------------------------------------------------- 1 | [%-IF beta==0 -%] 2 | [%app_fullname%] [%app_version%]-[%bits%]bit includes these distributions 3 | [%-ELSE%] 4 | [%app_fullname%] [%app_version%]-beta[%beta%]-[%bits%]bit includes these distributions 5 | [%-END%] 6 | installed on top of perl [%output.perl_version%]: 7 | 8 | [%-FOREACH item = output.distributions.sort.unique%] 9 | [%loop.count%]/[%loop.size%]: [%item%] 10 | [%-END%] 11 | -------------------------------------------------------------------------------- /share/extra-files/README.txt.tt: -------------------------------------------------------------------------------- 1 | [%-IF beta==0 -%] 2 | === [%app_fullname%] [%app_version%]-[%bits%]bit README === 3 | [%-ELSE%] 4 | === [%app_fullname%] [%app_version%]-beta[%beta%]-[%bits%]bit README === 5 | [%-END%] 6 | 7 | What is Strawberry Perl? 8 | ------------------------ 9 | 10 | * 'Perl' is a programming language suitable for writing simple scripts as well 11 | as complex applications. See https://perldoc.perl.org/perlintro.html 12 | 13 | * 'Strawberry Perl' is a perl environment for Microsoft Windows containing all 14 | you need to run and develop perl applications. It is designed to be as close 15 | as possible to perl environment on UNIX systems. See https://strawberryperl.com/ 16 | 17 | * If you are completely new to perl consider visiting http2://learn.perl.org/ 18 | 19 | Installation instructions: (.ZIP distribution only, not .MSI installer) 20 | ----------------------------------------------------------------------- 21 | 22 | * If installing this version from a .zip file, you MUST extract it to a 23 | directory that does not have spaces in it - e.g. c:\myperl\ 24 | and then run some commands and manually set some environment variables: 25 | 26 | c:\myperl\relocation.pl.bat ... this is REQUIRED! 27 | c:\myperl\update_env.pl.bat ... this is OPTIONAL 28 | 29 | You can specify " --nosystem" after update_env.pl.bat to install Strawberry 30 | Perl's environment variables for the current user only. 31 | 32 | * If having a fixed installation path does not suit you, try "Strawberry Perl 33 | Portable Edition" from https://strawberryperl.com/releases.html 34 | 35 | How to use Strawberry Perl? 36 | --------------------------- 37 | 38 | * In the command prompt window you can: 39 | 40 | 1. run any perl script by launching 41 | 42 | c:\> perl c:\path\to\script.pl 43 | 44 | 2. install additional perl modules (libraries) from https://www.metacpan.org/ by 45 | 46 | c:\> cpanm Module::Name 47 | 48 | 3. run other tools included in Strawberry Perl like: perldoc, gcc, [%maketool || 'dmake'%] ... 49 | 50 | * You'll need a text editor to create perl scripts. One is NOT included with 51 | Strawberry Perl. A few options are Padre (which can be installed by running 52 | "cpan Padre" from the command prompt) and Notepad++ (which is downloadable at 53 | https://notepad-plus-plus.org/ ) which both include syntax highlighting 54 | for perl scripts. You can even use Notepad, if you wish. 55 | -------------------------------------------------------------------------------- /share/extra-files/ppm/README.txt: -------------------------------------------------------------------------------- 1 | This is the temporary working directory for PPM installation 2 | -------------------------------------------------------------------------------- /share/extra-files/win32/CPAN Module Search.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://search.cpan.org/ 4 | IconFile=[%image_dir%]\win32\cpan.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Learning Perl (tutorials, examples).url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://learn.perl.org/ 4 | IconFile=[%image_dir%]\win32\perlhelp.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Live Support (chat).url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://widget.mibbit.com/?server=irc.perl.org&channel=%23win32 4 | IconFile=[%image_dir%]\win32\onion.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/MetaCPAN Search Engine.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://www.metacpan.org/ 4 | IconFile=[%image_dir%]\win32\metacpan.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Perl Documentation.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://perldoc.perl.org/ 4 | IconFile=[%image_dir%]\win32\perldoc.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Strawberry Perl Release Notes.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=https://strawberryperl.com/release-notes/[%app_version%]-[%bits%]bit.html 4 | IconFile=[%image_dir%]\win32\strawberry.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Strawberry Perl Website.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=https://strawberryperl.com/strawberry-perl-5.14.2.1 4 | IconFile=[%image_dir%]\win32\strawberry.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/Win32 Perl Wiki.url.tt: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | 3 | URL=http://win32.perl.org/ 4 | IconFile=[%image_dir%]\win32\win32.ico 5 | IconIndex=1 6 | -------------------------------------------------------------------------------- /share/extra-files/win32/cpan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/cpan.ico -------------------------------------------------------------------------------- /share/extra-files/win32/metacpan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/metacpan.ico -------------------------------------------------------------------------------- /share/extra-files/win32/metacpan.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/metacpan.xcf -------------------------------------------------------------------------------- /share/extra-files/win32/onion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/onion.ico -------------------------------------------------------------------------------- /share/extra-files/win32/perldoc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/perldoc.ico -------------------------------------------------------------------------------- /share/extra-files/win32/perlhelp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/perlhelp.ico -------------------------------------------------------------------------------- /share/extra-files/win32/strawberry.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/strawberry.ico -------------------------------------------------------------------------------- /share/extra-files/win32/win32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/extra-files/win32/win32.ico -------------------------------------------------------------------------------- /share/msi/CA-debug/x64/HelperCA.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-debug/x64/HelperCA.dll -------------------------------------------------------------------------------- /share/msi/CA-debug/x64/HelperCAv2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-debug/x64/HelperCAv2.dll -------------------------------------------------------------------------------- /share/msi/CA-debug/x86/HelperCA.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-debug/x86/HelperCA.dll -------------------------------------------------------------------------------- /share/msi/CA-debug/x86/HelperCAv2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-debug/x86/HelperCAv2.dll -------------------------------------------------------------------------------- /share/msi/CA-release/x64/HelperCA.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-release/x64/HelperCA.dll -------------------------------------------------------------------------------- /share/msi/CA-release/x64/HelperCAv2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-release/x64/HelperCAv2.dll -------------------------------------------------------------------------------- /share/msi/CA-release/x86/HelperCA.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-release/x86/HelperCA.dll -------------------------------------------------------------------------------- /share/msi/CA-release/x86/HelperCAv2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/CA-release/x86/HelperCAv2.dll -------------------------------------------------------------------------------- /share/msi/MSI_strings.wxl.tt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | [ProductName] [%app_version%] Setup 7 | {\WixUI_Font_Bigger}Welcome to the Setup Wizard for [ProductName] [%app_version%] 8 | 9 | 10 | [%- IF msi_debug==0 && beta==0 %] 11 | The Setup Wizard will install [ProductName] on your computer. Click Next to continue or Cancel to exit Setup. 12 | [%- ELSIF msi_debug!=0 && beta==0 %] 13 | The Setup Wizard will install [ProductName] on your computer. Click Next to continue or Cancel to exit Setup. BEWARE: this is MSI_DEBUG build! 14 | [%- ELSIF msi_debug==0 && beta!=0 %] 15 | The Setup Wizard will install [ProductName] on your computer. Click Next to continue or Cancel to exit Setup. BEWARE: this is BETA[%beta%] build! 16 | [%- ELSIF msi_debug!=0 && beta!=0 %] 17 | The Setup Wizard will install [ProductName] on your computer. Click Next to continue or Cancel to exit Setup. BEWARE: this is BETA[%beta%] build! BEWARE: this is MSI_DEBUG build! 18 | [%- END %] 19 | 20 | [ProductName] [%app_version%] Setup 21 | {\WixUI_Font_Bigger}Welcome to the Setup Wizard for [ProductName] [%app_version%] 22 | 23 | 24 | -------------------------------------------------------------------------------- /share/msi/MSM_documentation.html.tt: -------------------------------------------------------------------------------- 1 | 2 | Merge Module Documentation 3 | 4 | 5 |

To use this merge module, your Perl::Dist::WiX subclass has to use these parameters to new():

6 | 7 |
...
 8 | msm_to_use           => '<URL location of [% dist.output_base_filename %].msm>',
 9 | msm_zip              => '<URL location of [% dist.output_base_filename %].zip>',
10 | msm_code             => '[% dist.msm_package_id %]',
11 | [% IF dist.relocatable %]
12 | fileid_perl          => '[% dist.fileid_perl %]',
13 | fileid_relocation_pl => '[% dist.fileid_relocation_pl %]',
14 | [% END %]...
15 | 16 |

In addition, your 'tasklist' parameter has to use 'initialize_using_msm' as its second entry (right after 'final_initialization'.)

17 | 18 | 19 | -------------------------------------------------------------------------------- /share/msi/MSM_main.wxs.tt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | [%xml_env-%] 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | [%xml_msm_dirtree-%] 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Relocating ... 38 | 39 | 40 | 41 | 42 | NOT Installed 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /share/msi/Variables-v2.wxi.tt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [%- IF beta==0 %] 5 | 6 | 7 | [%- ELSE %] 8 | 9 | 10 | [%- END %] 11 | 12 | 13 | 14 | 15 | 16 | 17 | [%- IF bits==32 %] 18 | 19 | [%- ELSE %] 20 | 21 | [%- END %] 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | [% IF msi_debug %] 33 | [%- IF 64 == bits -%] 34 | 35 | 36 | [%- ELSE -%] 37 | 38 | 39 | [%- END -%] 40 | [%- ELSE -%] 41 | [%- IF 64 == bits -%] 42 | 43 | 44 | [%- ELSE -%] 45 | 46 | 47 | [%- END -%] 48 | [% END %] 49 | -------------------------------------------------------------------------------- /share/msi/Variables.wxi.tt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [%- IF beta==0 %] 5 | 6 | 7 | [%- ELSE %] 8 | 9 | 10 | [%- END %] 11 | 12 | 13 | 14 | 15 | 16 | 17 | [%- IF bits==32 %] 18 | 19 | [%- ELSE %] 20 | 21 | [%- END %] 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | [% IF msi_debug %] 33 | [%- IF 64 == bits -%] 34 | 35 | 36 | [%- ELSE -%] 37 | 38 | 39 | [%- END -%] 40 | [%- ELSE -%] 41 | [%- IF 64 == bits -%] 42 | 43 | 44 | [%- ELSE -%] 45 | 46 | 47 | [%- END -%] 48 | [% END %] 49 | -------------------------------------------------------------------------------- /share/msi/files/License-short.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\nowidctlpar\b\i\f0\fs28 Licensing:\b0\i0\fs20\par 3 | \par 4 | This distribution is an aggregate of several different projects, licensed under various OSI-compatible Open Source licenses, or given to the public domain.\par 5 | \par 6 | See the license directory after installation for more information.\par 7 | } 8 | -------------------------------------------------------------------------------- /share/msi/files/StrawberryBanner.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/StrawberryBanner.bmp -------------------------------------------------------------------------------- /share/msi/files/StrawberryDialog.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/StrawberryDialog.bmp -------------------------------------------------------------------------------- /share/msi/files/cpan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/cpan.ico -------------------------------------------------------------------------------- /share/msi/files/metacpan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/metacpan.ico -------------------------------------------------------------------------------- /share/msi/files/onion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/onion.ico -------------------------------------------------------------------------------- /share/msi/files/perldoc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/perldoc.ico -------------------------------------------------------------------------------- /share/msi/files/perlexe.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/perlexe.ico -------------------------------------------------------------------------------- /share/msi/files/strawberry.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/files/strawberry.ico -------------------------------------------------------------------------------- /share/msi/graphics/Bmp_StrawberryBanner.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Bmp_StrawberryBanner.bmp -------------------------------------------------------------------------------- /share/msi/graphics/Bmp_StrawberryDialog.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Bmp_StrawberryDialog.bmp -------------------------------------------------------------------------------- /share/msi/graphics/Ico_Exclam.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Ico_Exclam.ico -------------------------------------------------------------------------------- /share/msi/graphics/Ico_Info.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Ico_Info.ico -------------------------------------------------------------------------------- /share/msi/graphics/Ico_New.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Ico_New.ico -------------------------------------------------------------------------------- /share/msi/graphics/Ico_Up.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrawberryPerl/Perl-Dist-Strawberry/ae610a751dd2370f1e28f1f049e96c91d6005d44/share/msi/graphics/Ico_Up.ico -------------------------------------------------------------------------------- /share/perl-5.16-x86-64int/diffs_for_info_only/config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc.backup Wed Apr 25 02:18:36 2012 2 | +++ C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc Wed May 16 12:39:52 2012 3 | @@ -645,7 +645,7 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | #define I_RPCSVC_DBM /**/ 10 | 11 | /* I_DLFCN: 12 | @@ -670,7 +670,7 @@ 13 | * This symbol, if defined, indicates that exists and should 14 | * be included. 15 | */ 16 | -/*#define I_GDBM / **/ 17 | +#define I_GDBM /**/ 18 | 19 | /* I_LIMITS: 20 | * This symbol, if defined, indicates to the C program that it should 21 | @@ -2955,7 +2955,7 @@ 22 | * parameter information. While ANSI C prototypes are supported in C++, 23 | * K&R style function declarations will yield errors. 24 | */ 25 | -/*#define I_NDBM / **/ 26 | +#define I_NDBM /**/ 27 | /*#define I_GDBMNDBM / **/ 28 | /*#define I_GDBM_NDBM / **/ 29 | /*#define NDBM_H_USES_PROTOTYPES / **/ 30 | @@ -4290,8 +4290,8 @@ 31 | * This symbol, if defined, indicates that a variable of type NVTYPE 32 | * stores 0.0 in memory as all bits zero. 33 | */ 34 | -#define IVTYPE long /**/ 35 | -#define UVTYPE unsigned long /**/ 36 | +#define IVTYPE long long /**/ 37 | +#define UVTYPE unsigned long long /**/ 38 | #define I8TYPE char /**/ 39 | #define U8TYPE unsigned char /**/ 40 | #define I16TYPE short /**/ 41 | @@ -4308,8 +4308,8 @@ 42 | # endif 43 | #endif 44 | #define NVTYPE double /**/ 45 | -#define IVSIZE 4 /**/ 46 | -#define UVSIZE 4 /**/ 47 | +#define IVSIZE 8 /**/ 48 | +#define UVSIZE 8 /**/ 49 | #define I8SIZE 1 /**/ 50 | #define U8SIZE 1 /**/ 51 | #define I16SIZE 2 /**/ 52 | @@ -4321,8 +4321,8 @@ 53 | #define U64SIZE 8 /**/ 54 | #endif 55 | #define NVSIZE 8 /**/ 56 | -#define NV_PRESERVES_UV 57 | -#define NV_PRESERVES_UV_BITS 32 58 | +#undef NV_PRESERVES_UV 59 | +#define NV_PRESERVES_UV_BITS 53 60 | #define NV_OVERFLOWS_INTEGERS_AT 256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0 61 | #define NV_ZERO_IS_ALLBITS_ZERO 62 | #if UVSIZE == 8 63 | @@ -4371,11 +4371,11 @@ 64 | * This symbol defines the format string used for printing a Perl NV 65 | * using %g-ish floating point format. 66 | */ 67 | -#define IVdf "ld" /**/ 68 | -#define UVuf "lu" /**/ 69 | -#define UVof "lo" /**/ 70 | -#define UVxf "lx" /**/ 71 | -#define UVXf "lX" /**/ 72 | +#define IVdf "lld" /**/ 73 | +#define UVuf "llu" /**/ 74 | +#define UVof "llo" /**/ 75 | +#define UVxf "llx" /**/ 76 | +#define UVXf "llX" /**/ 77 | #define NVef "e" /**/ 78 | #define NVff "f" /**/ 79 | #define NVgf "g" /**/ 80 | @@ -4459,7 +4459,7 @@ 81 | * you may need at least to reboot your OS to 64-bit mode. 82 | */ 83 | #ifndef USE_64_BIT_INT 84 | -/*#define USE_64_BIT_INT / **/ 85 | +#define USE_64_BIT_INT /**/ 86 | #endif 87 | #ifndef USE_64_BIT_ALL 88 | /*#define USE_64_BIT_ALL / **/ 89 | -------------------------------------------------------------------------------- /share/perl-5.16-x86-64int/diffs_for_info_only/makefile.mk.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.16.0\win32\makefile.mk.backup Mon May 14 21:49:22 2012 2 | +++ C:\strawberry_build\build\perl_core\perl-5.16.0\win32\makefile.mk Wed May 16 14:15:29 2012 3 | @@ -72,6 +72,9 @@ 4 | # 5 | USE_ITHREADS *= define 6 | 7 | +#XXX kmx hack 8 | +USE_64_BIT_INT *= define 9 | + 10 | # 11 | # uncomment to enable the implicit "host" layer for all system calls 12 | # made by perl. This needs USE_MULTI above. 13 | @@ -335,6 +338,10 @@ 14 | 15 | .IF "$(USE_ITHREADS)" == "define" 16 | ARCHNAME !:= $(ARCHNAME)-thread 17 | +.ENDIF 18 | + 19 | +.IF "$(USE_64_BIT_INT)" == "define" 20 | +ARCHNAME !:= $(ARCHNAME)-64int 21 | .ENDIF 22 | 23 | # Visual C++ 98, .NET 2003, 2005/2008/2010 specific. 24 | -------------------------------------------------------------------------------- /share/perl-5.16/NDBM_MSWin32.pl: -------------------------------------------------------------------------------- 1 | # uses GDBM dbm compatibility feature 2 | $self->{LIBS} = ['-lgdbm_compat -lgdbm']; 3 | -------------------------------------------------------------------------------- /share/perl-5.16/ODBM_MSWin32.pl: -------------------------------------------------------------------------------- 1 | # uses GDBM dbm compatibility feature 2 | $self->{LIBS} = ['-lgdbm_compat -lgdbm']; 3 | -------------------------------------------------------------------------------- /share/perl-5.16/diffs_for_info_only/FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.16.0\win32\FindExt.pm.backup Wed Feb 15 05:44:53 2012 2 | +++ C:\strawberry_build\build\perl_core\perl-5.16.0\win32\FindExt.pm Mon May 7 21:28:45 2012 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(DB_File 9 | VMS VMS-DCLsym VMS-Stdio Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.16/diffs_for_info_only/config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc.backup Wed Apr 25 02:18:36 2012 2 | +++ C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc Mon May 7 21:28:44 2012 3 | @@ -645,7 +645,7 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | #define I_RPCSVC_DBM /**/ 10 | 11 | /* I_DLFCN: 12 | @@ -670,7 +670,7 @@ 13 | * This symbol, if defined, indicates that exists and should 14 | * be included. 15 | */ 16 | -/*#define I_GDBM / **/ 17 | +#define I_GDBM /**/ 18 | 19 | /* I_LIMITS: 20 | * This symbol, if defined, indicates to the C program that it should 21 | @@ -2955,7 +2955,7 @@ 22 | * parameter information. While ANSI C prototypes are supported in C++, 23 | * K&R style function declarations will yield errors. 24 | */ 25 | -/*#define I_NDBM / **/ 26 | +#define I_NDBM /**/ 27 | /*#define I_GDBMNDBM / **/ 28 | /*#define I_GDBM_NDBM / **/ 29 | /*#define NDBM_H_USES_PROTOTYPES / **/ 30 | -------------------------------------------------------------------------------- /share/perl-5.16/diffs_for_info_only/config_H.gc64nox.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc64nox.backup Wed Apr 25 02:18:36 2012 2 | +++ C:\strawberry_build\build\perl_core\perl-5.16.0\win32\config_H.gc64nox Mon May 7 21:28:44 2012 3 | @@ -645,7 +645,7 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | #define I_RPCSVC_DBM /**/ 10 | 11 | /* I_DLFCN: 12 | @@ -670,7 +670,7 @@ 13 | * This symbol, if defined, indicates that exists and should 14 | * be included. 15 | */ 16 | -/*#define I_GDBM / **/ 17 | +#define I_GDBM /**/ 18 | 19 | /* I_LIMITS: 20 | * This symbol, if defined, indicates to the C program that it should 21 | @@ -2961,7 +2961,7 @@ 22 | * parameter information. While ANSI C prototypes are supported in C++, 23 | * K&R style function declarations will yield errors. 24 | */ 25 | -/*#define I_NDBM / **/ 26 | +#define I_NDBM /**/ 27 | /*#define I_GDBMNDBM / **/ 28 | /*#define I_GDBM_NDBM / **/ 29 | /*#define NDBM_H_USES_PROTOTYPES / **/ 30 | -------------------------------------------------------------------------------- /share/perl-5.16/win32_FindExt.pm: -------------------------------------------------------------------------------- 1 | package FindExt; 2 | 3 | our $VERSION = '1.02'; 4 | 5 | use strict; 6 | use warnings; 7 | 8 | my $no = join('|',qw(DB_File 9 | VMS VMS-DCLsym VMS-Stdio Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | sub apply_config { 13 | my ($config) = @_; 14 | my @no; 15 | 16 | # duplicates logic from Configure (mostly) 17 | push @no, "DB_File" unless $config->{i_db}; 18 | push @no, "GDBM_File" unless $config->{i_gdbm}; 19 | push @no, "I18N-Langinfo" unless $config->{i_langinfo} && $config->{i_nl_langinfo}; 20 | push @no, "IPC-SysV" unless $config->{d_msg} || $config->{d_sem} || $config->{d_shm}; 21 | push @no, "NDBM_File" unless $config->{d_ndbm}; 22 | push @no, "ODBM_File" 23 | unless ($config->{i_dbm} || $config->{i_rpcsvcdbm}) && !$config->{d_cplusplus}; 24 | push @no, "VMS.*" unless $^O eq "VMS"; 25 | push @no, "Win32.*" unless $^O eq "MSWin32" || $^O eq "cygwin"; 26 | 27 | $no = join('|', @no); 28 | $no = qr/^(?:$no)$/i; 29 | } 30 | 31 | my %ext; 32 | my %static; 33 | 34 | sub set_static_extensions { 35 | # adjust results of scan_ext, and also save 36 | # statics in case scan_ext hasn't been called yet. 37 | # if '*' is passed then all XS extensions are static 38 | # (with possible exclusions) 39 | %static = (); 40 | my @list = @_; 41 | if (@_ and $_[0] eq '*') { 42 | my %excl = map {$_=>1} map {m/^!(.*)$/} @_[1 .. $#_]; 43 | @list = grep {!exists $excl{$_}} keys %ext; 44 | } 45 | for (@list) { 46 | $static{$_} = 1; 47 | $ext{$_} = 'static' if $ext{$_} && $ext{$_} eq 'dynamic'; 48 | } 49 | } 50 | 51 | sub scan_ext 52 | { 53 | my $dir = shift; 54 | find_ext("$dir/"); 55 | extensions(); 56 | } 57 | 58 | sub _ext_eq { 59 | my $key = shift; 60 | sub { 61 | sort grep $ext{$_} eq $key, keys %ext; 62 | } 63 | } 64 | 65 | *dynamic_ext = _ext_eq('dynamic'); 66 | *static_ext = _ext_eq('static'); 67 | *nonxs_ext = _ext_eq('nonxs'); 68 | 69 | sub _ext_ne { 70 | my $key = shift; 71 | sub { 72 | sort grep $ext{$_} ne $key, keys %ext; 73 | } 74 | } 75 | 76 | *extensions = _ext_ne('known'); 77 | # faithfully copy Configure in not including nonxs extensions for the nonce 78 | *known_extensions = _ext_ne('nonxs'); 79 | 80 | sub is_static 81 | { 82 | return $ext{$_[0]} eq 'static' 83 | } 84 | 85 | sub has_xs_or_c { 86 | my $dir = shift; 87 | opendir my $dh, $dir or die "opendir $dir: $!"; 88 | while (defined (my $item = readdir $dh)) { 89 | return 1 if $item =~ /\.xs$/; 90 | return 1 if $item =~ /\.c$/; 91 | } 92 | return 0; 93 | } 94 | 95 | # Function to find available extensions, ignoring DynaLoader 96 | sub find_ext 97 | { 98 | my $ext_dir = shift; 99 | opendir my $dh, "$ext_dir"; 100 | while (defined (my $item = readdir $dh)) { 101 | next if $item =~ /^\.\.?$/; 102 | next if $item eq "DynaLoader"; 103 | next unless -d "$ext_dir$item"; 104 | my $this_ext = $item; 105 | my $leaf = $item; 106 | 107 | $this_ext =~ s!-!/!g; 108 | $leaf =~ s/.*-//; 109 | 110 | # Temporary hack to cope with smokers that are not clearing directories: 111 | next if $ext{$this_ext}; 112 | 113 | if (has_xs_or_c("$ext_dir$item")) { 114 | $ext{$this_ext} = $static{$this_ext} ? 'static' : 'dynamic'; 115 | } else { 116 | $ext{$this_ext} = 'nonxs'; 117 | } 118 | $ext{$this_ext} = 'known' if $ext{$this_ext} && $item =~ $no; 119 | } 120 | } 121 | 122 | 1; 123 | # Local variables: 124 | # cperl-indent-level: 4 125 | # indent-tabs-mode: nil 126 | # End: 127 | # 128 | # ex: set ts=8 sts=4 sw=4 et: 129 | -------------------------------------------------------------------------------- /share/perl-5.18/NDBM_MSWin32.pl: -------------------------------------------------------------------------------- 1 | # uses GDBM dbm compatibility feature 2 | $self->{LIBS} = ['-lgdbm_compat -lgdbm']; 3 | -------------------------------------------------------------------------------- /share/perl-5.18/ODBM_MSWin32.pl: -------------------------------------------------------------------------------- 1 | # uses GDBM dbm compatibility feature 2 | $self->{LIBS} = ['-lgdbm_compat -lgdbm']; 3 | -------------------------------------------------------------------------------- /share/perl-5.18/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2013 Larry Wall, binaries by https://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.18/win32_FindExt.pm: -------------------------------------------------------------------------------- 1 | package FindExt; 2 | 3 | our $VERSION = '1.02'; 4 | 5 | use strict; 6 | use warnings; 7 | 8 | my $no = join('|',qw(DB_File 9 | VMS VMS-DCLsym VMS-Stdio Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | sub apply_config { 13 | my ($config) = @_; 14 | my @no; 15 | 16 | # duplicates logic from Configure (mostly) 17 | push @no, "DB_File" unless $config->{i_db}; 18 | push @no, "GDBM_File" unless $config->{i_gdbm}; 19 | push @no, "I18N-Langinfo" unless $config->{i_langinfo} && $config->{i_nl_langinfo}; 20 | push @no, "IPC-SysV" unless $config->{d_msg} || $config->{d_sem} || $config->{d_shm}; 21 | push @no, "NDBM_File" unless $config->{d_ndbm}; 22 | push @no, "ODBM_File" 23 | unless ($config->{i_dbm} || $config->{i_rpcsvcdbm}) && !$config->{d_cplusplus}; 24 | push @no, "VMS.*" unless $^O eq "VMS"; 25 | push @no, "Win32.*" unless $^O eq "MSWin32" || $^O eq "cygwin"; 26 | 27 | $no = join('|', @no); 28 | $no = qr/^(?:$no)$/i; 29 | } 30 | 31 | my %ext; 32 | my %static; 33 | 34 | sub set_static_extensions { 35 | # adjust results of scan_ext, and also save 36 | # statics in case scan_ext hasn't been called yet. 37 | # if '*' is passed then all XS extensions are static 38 | # (with possible exclusions) 39 | %static = (); 40 | my @list = @_; 41 | if (@_ and $_[0] eq '*') { 42 | my %excl = map {$_=>1} map {m/^!(.*)$/} @_[1 .. $#_]; 43 | @list = grep {!exists $excl{$_}} keys %ext; 44 | } 45 | for (@list) { 46 | $static{$_} = 1; 47 | $ext{$_} = 'static' if $ext{$_} && $ext{$_} eq 'dynamic'; 48 | } 49 | } 50 | 51 | sub scan_ext 52 | { 53 | my $dir = shift; 54 | find_ext("$dir/"); 55 | extensions(); 56 | } 57 | 58 | sub _ext_eq { 59 | my $key = shift; 60 | sub { 61 | sort grep $ext{$_} eq $key, keys %ext; 62 | } 63 | } 64 | 65 | *dynamic_ext = _ext_eq('dynamic'); 66 | *static_ext = _ext_eq('static'); 67 | *nonxs_ext = _ext_eq('nonxs'); 68 | 69 | sub _ext_ne { 70 | my $key = shift; 71 | sub { 72 | sort grep $ext{$_} ne $key, keys %ext; 73 | } 74 | } 75 | 76 | *extensions = _ext_ne('known'); 77 | # faithfully copy Configure in not including nonxs extensions for the nonce 78 | *known_extensions = _ext_ne('nonxs'); 79 | 80 | sub is_static 81 | { 82 | return $ext{$_[0]} eq 'static' 83 | } 84 | 85 | sub has_xs_or_c { 86 | my $dir = shift; 87 | opendir my $dh, $dir or die "opendir $dir: $!"; 88 | while (defined (my $item = readdir $dh)) { 89 | return 1 if $item =~ /\.xs$/; 90 | return 1 if $item =~ /\.c$/; 91 | } 92 | return 0; 93 | } 94 | 95 | # Function to find available extensions, ignoring DynaLoader 96 | sub find_ext 97 | { 98 | my $ext_dir = shift; 99 | opendir my $dh, "$ext_dir"; 100 | while (defined (my $item = readdir $dh)) { 101 | next if $item =~ /^\.\.?$/; 102 | next if $item eq "DynaLoader"; 103 | next unless -d "$ext_dir$item"; 104 | my $this_ext = $item; 105 | my $leaf = $item; 106 | 107 | $this_ext =~ s!-!/!g; 108 | $leaf =~ s/.*-//; 109 | 110 | # Temporary hack to cope with smokers that are not clearing directories: 111 | next if $ext{$this_ext}; 112 | 113 | if (has_xs_or_c("$ext_dir$item")) { 114 | $ext{$this_ext} = $static{$this_ext} ? 'static' : 'dynamic'; 115 | } else { 116 | $ext{$this_ext} = 'nonxs'; 117 | } 118 | $ext{$this_ext} = 'known' if $ext{$this_ext} && $item =~ $no; 119 | } 120 | } 121 | 122 | 1; 123 | # Local variables: 124 | # cperl-indent-level: 4 125 | # indent-tabs-mode: nil 126 | # End: 127 | # 128 | # ex: set ts=8 sts=4 sw=4 et: 129 | -------------------------------------------------------------------------------- /share/perl-5.20/diffs_for_info_only/perl5-maint-5.20_installperl.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl5-maint-5.20\installperl.backup Mon Jul 28 09:31:14 2014 2 | +++ C:\strawberry_build\build\perl_core\perl5-maint-5.20\installperl Mon Apr 7 17:45:05 2014 3 | @@ -260,7 +260,7 @@ 4 | if ($Is_Cygwin) { 5 | $perldll = $libperl; 6 | } else { 7 | - $perldll = 'perl5'.$Config{patchlevel}.'.'.$dlext; 8 | + $perldll = 'perl5'.$Config{patchlevel}.'.'.$so; 9 | } 10 | 11 | if ($dlsrc ne "dl_none.xs") { 12 | -------------------------------------------------------------------------------- /share/perl-5.20/diffs_for_info_only/perl5-maint-5.20_win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\FindExt.pm.backup Mon Jul 28 09:31:14 2014 2 | +++ C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\FindExt.pm Mon Mar 10 20:25:08 2014 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(DB_File 9 | VMS.* Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.20/diffs_for_info_only/perl5-maint-5.20_win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\config_H.gc.backup Mon Jul 28 09:31:14 2014 2 | +++ C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\config_H.gc Mon Apr 7 17:21:06 2014 3 | @@ -645,14 +645,14 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | * This symbol, if defined, indicates that exists and should 13 | * be included. 14 | */ 15 | -#define I_DLFCN /**/ 16 | +/*#define I_DLFCN / **/ 17 | 18 | /* I_FCNTL: 19 | * This manifest constant tells the C program to include . 20 | @@ -670,7 +670,7 @@ 21 | * This symbol, if defined, indicates that exists and should 22 | * be included. 23 | */ 24 | -/*#define I_GDBM / **/ 25 | +#define I_GDBM /**/ 26 | 27 | /* I_LIMITS: 28 | * This symbol, if defined, indicates to the C program that it should 29 | @@ -2786,7 +2786,7 @@ 30 | * parameter information. While ANSI C prototypes are supported in C++, 31 | * K&R style function declarations will yield errors. 32 | */ 33 | -/*#define I_NDBM / **/ 34 | +#define I_NDBM /**/ 35 | /*#define I_GDBMNDBM / **/ 36 | /*#define I_GDBM_NDBM / **/ 37 | /*#define NDBM_H_USES_PROTOTYPES / **/ 38 | -------------------------------------------------------------------------------- /share/perl-5.20/diffs_for_info_only/perl5-maint-5.20_win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\perlexe.rc.backup Mon Jul 28 09:31:14 2014 2 | +++ C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\perlexe.rc Tue Jul 29 07:13:26 2014 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,20,1,1 17 | +#define RCVERSION_STR "5.20.1.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2014 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.20/diffs_for_info_only/perl5-maint-5.20_win32_win32.h.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\win32.h.backup Mon Jul 28 09:31:14 2014 2 | +++ C:\strawberry_build\build\perl_core\perl5-maint-5.20\win32\win32.h Mon May 19 13:58:18 2014 3 | @@ -397,8 +397,8 @@ 4 | 5 | #ifdef MYMALLOC 6 | #define EMBEDMYMALLOC /**/ 7 | -/* #define USE_PERL_SBRK /**/ 8 | -/* #define PERL_SBRK_VIA_MALLOC /**/ 9 | +/* #define USE_PERL_SBRK / **/ 10 | +/* #define PERL_SBRK_VIA_MALLOC / **/ 11 | #endif 12 | 13 | #ifdef PERL_TEXTMODE_SCRIPTS 14 | -------------------------------------------------------------------------------- /share/perl-5.20/perl-5.20.3-CVE-2016-2381.patch: -------------------------------------------------------------------------------- 1 | diff --git a/perl.c b/perl.c 2 | --- a/perl.c 3 | +++ b/perl.c 4 | @@ -4329,23 +4329,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) 5 | } 6 | if (env) { 7 | char *s, *old_var; 8 | + STRLEN nlen; 9 | SV *sv; 10 | + HV *dups = newHV(); 11 | + 12 | for (; *env; env++) { 13 | old_var = *env; 14 | 15 | if (!(s = strchr(old_var,'=')) || s == old_var) 16 | continue; 17 | + nlen = s - old_var; 18 | 19 | #if defined(MSDOS) && !defined(DJGPP) 20 | *s = '\0'; 21 | (void)strupr(old_var); 22 | *s = '='; 23 | #endif 24 | - sv = newSVpv(s+1, 0); 25 | - (void)hv_store(hv, old_var, s - old_var, sv, 0); 26 | + if (hv_exists(hv, old_var, nlen)) { 27 | + const char *name = savepvn(old_var, nlen); 28 | + 29 | + /* make sure we use the same value as getenv(), otherwise code that 30 | + uses getenv() (like setlocale()) might see a different value to %ENV 31 | + */ 32 | + sv = newSVpv(PerlEnv_getenv(name), 0); 33 | + 34 | + /* keep a count of the dups of this name so we can de-dup environ later */ 35 | + if (hv_exists(dups, name, nlen)) 36 | + ++SvIVX(*hv_fetch(dups, name, nlen, 0)); 37 | + else 38 | + (void)hv_store(dups, name, nlen, newSViv(1), 0); 39 | + 40 | + Safefree(name); 41 | + } 42 | + else { 43 | + sv = newSVpv(s+1, 0); 44 | + } 45 | + (void)hv_store(hv, old_var, nlen, sv, 0); 46 | if (env_is_not_environ) 47 | mg_set(sv); 48 | } 49 | + if (HvKEYS(dups)) { 50 | + /* environ has some duplicate definitions, remove them */ 51 | + HE *entry; 52 | + hv_iterinit(dups); 53 | + while ((entry = hv_iternext_flags(dups, 0))) { 54 | + STRLEN nlen; 55 | + const char *name = HePV(entry, nlen); 56 | + IV count = SvIV(HeVAL(entry)); 57 | + IV i; 58 | + SV **valp = hv_fetch(hv, name, nlen, 0); 59 | + 60 | + assert(valp); 61 | + 62 | + /* try to remove any duplicate names, depending on the 63 | + * implementation used in my_setenv() the iteration might 64 | + * not be necessary, but let's be safe. 65 | + */ 66 | + for (i = 0; i < count; ++i) 67 | + my_setenv(name, 0); 68 | + 69 | + /* and set it back to the value we set $ENV{name} to */ 70 | + my_setenv(name, SvPV_nolen(*valp)); 71 | + } 72 | + } 73 | + SvREFCNT_dec_NN(dups); 74 | } 75 | #endif /* USE_ENVIRON_ARRAY */ 76 | #endif /* !PERL_MICRO */ 77 | -------------------------------------------------------------------------------- /share/perl-5.20/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2014 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.22/diffs_for_info_only/win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.22.0-RC1\win32\FindExt.pm.backup Wed May 13 22:19:31 2015 2 | +++ C:\strawberry_build\build\perl_core\perl-5.22.0-RC1\win32\FindExt.pm Thu May 14 19:31:06 2015 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(DB_File 9 | VMS.* Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.22/diffs_for_info_only/win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.22.0-RC2\win32\config_H.gc.backup Fri May 22 00:19:06 2015 2 | +++ C:\strawberry_build\build\perl_core\perl-5.22.0-RC2\win32\config_H.gc Thu May 14 19:35:01 2015 3 | @@ -645,14 +645,14 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | * This symbol, if defined, indicates that exists and should 13 | * be included. 14 | */ 15 | -#define I_DLFCN /**/ 16 | +/*#define I_DLFCN / **/ 17 | 18 | /* I_FCNTL: 19 | * This manifest constant tells the C program to include . 20 | @@ -670,7 +670,7 @@ 21 | * This symbol, if defined, indicates that exists and should 22 | * be included. 23 | */ 24 | -/*#define I_GDBM / **/ 25 | +#define I_GDBM /**/ 26 | 27 | /* I_LIMITS: 28 | * This symbol, if defined, indicates to the C program that it should 29 | @@ -2784,7 +2784,7 @@ 30 | * parameter information. While ANSI C prototypes are supported in C++, 31 | * K&R style function declarations will yield errors. 32 | */ 33 | -/*#define I_NDBM / **/ 34 | +#define I_NDBM /**/ 35 | /*#define I_GDBMNDBM / **/ 36 | /*#define I_GDBM_NDBM / **/ 37 | /*#define NDBM_H_USES_PROTOTYPES / **/ 38 | -------------------------------------------------------------------------------- /share/perl-5.22/diffs_for_info_only/win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.22.0-RC1\win32\perlexe.rc.backup Wed May 13 22:19:31 2015 2 | +++ C:\strawberry_build\build\perl_core\perl-5.22.0-RC1\win32\perlexe.rc Tue May 19 19:20:12 2015 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,22,0,1 17 | +#define RCVERSION_STR "5.22.0.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2015 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.22/perl-5.22.1-CVE-2016-2381.patch: -------------------------------------------------------------------------------- 1 | diff --git a/perl.c b/perl.c 2 | --- a/perl.c 3 | +++ b/perl.c 4 | @@ -4329,23 +4329,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) 5 | } 6 | if (env) { 7 | char *s, *old_var; 8 | + STRLEN nlen; 9 | SV *sv; 10 | + HV *dups = newHV(); 11 | + 12 | for (; *env; env++) { 13 | old_var = *env; 14 | 15 | if (!(s = strchr(old_var,'=')) || s == old_var) 16 | continue; 17 | + nlen = s - old_var; 18 | 19 | #if defined(MSDOS) && !defined(DJGPP) 20 | *s = '\0'; 21 | (void)strupr(old_var); 22 | *s = '='; 23 | #endif 24 | - sv = newSVpv(s+1, 0); 25 | - (void)hv_store(hv, old_var, s - old_var, sv, 0); 26 | + if (hv_exists(hv, old_var, nlen)) { 27 | + const char *name = savepvn(old_var, nlen); 28 | + 29 | + /* make sure we use the same value as getenv(), otherwise code that 30 | + uses getenv() (like setlocale()) might see a different value to %ENV 31 | + */ 32 | + sv = newSVpv(PerlEnv_getenv(name), 0); 33 | + 34 | + /* keep a count of the dups of this name so we can de-dup environ later */ 35 | + if (hv_exists(dups, name, nlen)) 36 | + ++SvIVX(*hv_fetch(dups, name, nlen, 0)); 37 | + else 38 | + (void)hv_store(dups, name, nlen, newSViv(1), 0); 39 | + 40 | + Safefree(name); 41 | + } 42 | + else { 43 | + sv = newSVpv(s+1, 0); 44 | + } 45 | + (void)hv_store(hv, old_var, nlen, sv, 0); 46 | if (env_is_not_environ) 47 | mg_set(sv); 48 | } 49 | + if (HvKEYS(dups)) { 50 | + /* environ has some duplicate definitions, remove them */ 51 | + HE *entry; 52 | + hv_iterinit(dups); 53 | + while ((entry = hv_iternext_flags(dups, 0))) { 54 | + STRLEN nlen; 55 | + const char *name = HePV(entry, nlen); 56 | + IV count = SvIV(HeVAL(entry)); 57 | + IV i; 58 | + SV **valp = hv_fetch(hv, name, nlen, 0); 59 | + 60 | + assert(valp); 61 | + 62 | + /* try to remove any duplicate names, depending on the 63 | + * implementation used in my_setenv() the iteration might 64 | + * not be necessary, but let's be safe. 65 | + */ 66 | + for (i = 0; i < count; ++i) 67 | + my_setenv(name, 0); 68 | + 69 | + /* and set it back to the value we set $ENV{name} to */ 70 | + my_setenv(name, SvPV_nolen(*valp)); 71 | + } 72 | + } 73 | + SvREFCNT_dec_NN(dups); 74 | } 75 | #endif /* USE_ENVIRON_ARRAY */ 76 | #endif /* !PERL_MICRO */ 77 | -------------------------------------------------------------------------------- /share/perl-5.22/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2015 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.24/diffs_for_info_only/perl-5.24.4_win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.24.4\win32\FindExt.pm.backup Thu Mar 1 13:12:36 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.24.4\win32\FindExt.pm Mon May 2 18:34:22 2016 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(Amiga.* GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(Amiga.* DB_File 9 | VMS.* Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.24/diffs_for_info_only/perl-5.24.4_win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.24.4\win32\config_H.gc.backup Fri Mar 23 20:37:53 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.24.4\win32\config_H.gc Mon May 2 18:48:40 2016 3 | @@ -645,14 +645,14 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | * This symbol, if defined, indicates that exists and should 13 | * be included. 14 | */ 15 | -#define I_DLFCN /**/ 16 | +/*#define I_DLFCN / **/ 17 | 18 | /* I_FCNTL: 19 | * This manifest constant tells the C program to include . 20 | @@ -670,7 +670,7 @@ 21 | * This symbol, if defined, indicates that exists and should 22 | * be included. 23 | */ 24 | -/*#define I_GDBM / **/ 25 | +#define I_GDBM /**/ 26 | 27 | /* I_LIMITS: 28 | * This symbol, if defined, indicates to the C program that it should 29 | @@ -2792,7 +2792,7 @@ 30 | * parameter information. While ANSI C prototypes are supported in C++, 31 | * K&R style function declarations will yield errors. 32 | */ 33 | -/*#define I_NDBM / **/ 34 | +#define I_NDBM /**/ 35 | /*#define I_GDBMNDBM / **/ 36 | /*#define I_GDBM_NDBM / **/ 37 | /*#define NDBM_H_USES_PROTOTYPES / **/ 38 | -------------------------------------------------------------------------------- /share/perl-5.24/diffs_for_info_only/perl-5.24.4_win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.24.4\win32\perlexe.rc.backup Thu Mar 1 13:12:36 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.24.4\win32\perlexe.rc Sun Apr 15 17:34:45 2018 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,24,4,1 17 | +#define RCVERSION_STR "5.24.4.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2015 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.24/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2015 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.26/diffs_for_info_only/perl-5.26.2_win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.26.2\win32\FindExt.pm.backup Thu Mar 1 13:19:46 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.26.2\win32\FindExt.pm Mon May 2 18:34:22 2016 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(Amiga.* GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(Amiga.* DB_File 9 | VMS.* Sys-Syslog IPC-SysV I18N-Langinfo)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.26/diffs_for_info_only/perl-5.26.2_win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.26.2\win32\config_H.gc.backup Fri Mar 23 20:34:45 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.26.2\win32\config_H.gc Thu Apr 27 07:55:34 2017 3 | @@ -645,14 +645,14 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | * This symbol, if defined, indicates that exists and should 13 | * be included. 14 | */ 15 | -#define I_DLFCN /**/ 16 | +/*#define I_DLFCN / **/ 17 | 18 | /* I_FCNTL: 19 | * This manifest constant tells the C program to include . 20 | @@ -670,7 +670,7 @@ 21 | * This symbol, if defined, indicates that exists and should 22 | * be included. 23 | */ 24 | -/*#define I_GDBM / **/ 25 | +#define I_GDBM /**/ 26 | 27 | /* I_LIMITS: 28 | * This symbol, if defined, indicates to the C program that it should 29 | @@ -2833,7 +2833,7 @@ 30 | * parameter information. While ANSI C prototypes are supported in C++, 31 | * K&R style function declarations will yield errors. 32 | */ 33 | -/*#define I_NDBM / **/ 34 | +#define I_NDBM /**/ 35 | /*#define I_GDBMNDBM / **/ 36 | /*#define I_GDBM_NDBM / **/ 37 | /*#define NDBM_H_USES_PROTOTYPES / **/ 38 | -------------------------------------------------------------------------------- /share/perl-5.26/diffs_for_info_only/perl-5.26.2_win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.26.2\win32\perlexe.rc.backup Thu Mar 1 13:19:47 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.26.2\win32\perlexe.rc Sun Apr 15 11:47:14 2018 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,26,2,1 17 | +#define RCVERSION_STR "5.26.2.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2017 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.26/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2017 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.26/strtoull.patch: -------------------------------------------------------------------------------- 1 | diff -ru perl-5.26.0/perl.h perl-5.26.0-patched/perl.h 2 | --- perl-5.26.0/perl.h 2017-05-30 11:58:05.000000000 +0200 3 | +++ perl-5.26.0-patched/perl.h 2017-07-16 17:30:33.874268200 +0200 4 | @@ -6261,7 +6261,7 @@ 5 | # ifdef __hpux 6 | # define strtoll __strtoll /* secret handshake */ 7 | # endif 8 | -# ifdef WIN64 9 | +# if defined(WIN64) && defined(_MSC_VER) 10 | # define strtoll _strtoi64 /* secret handshake */ 11 | # endif 12 | # if !defined(Strtol) && defined(HAS_STRTOLL) 13 | @@ -6295,7 +6295,7 @@ 14 | # ifdef __hpux 15 | # define strtoull __strtoull /* secret handshake */ 16 | # endif 17 | -# ifdef WIN64 18 | +# if defined(WIN64) && defined(_MSC_VER) 19 | # define strtoull _strtoui64 /* secret handshake */ 20 | # endif 21 | # if !defined(Strtoul) && defined(HAS_STRTOULL) 22 | -------------------------------------------------------------------------------- /share/perl-5.28/diffs_for_info_only/perl-5.28.0-RC1_win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.28.0-RC1\win32\config_H.gc.backup Mon May 21 12:44:04 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.28.0-RC1\win32\config_H.gc Wed May 23 00:00:28 2018 3 | @@ -600,14 +600,14 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | * This symbol, if defined, indicates that exists and should 13 | * be included. 14 | */ 15 | -#define I_DLFCN /**/ 16 | +/*#define I_DLFCN / **/ 17 | 18 | /* I_FCNTL: 19 | * This manifest constant tells the C program to include . 20 | @@ -618,7 +618,7 @@ 21 | * This symbol, if defined, indicates that exists and should 22 | * be included. 23 | */ 24 | -/*#define I_GDBM / **/ 25 | +#define I_GDBM /**/ 26 | 27 | /* I_LOCALE: 28 | * This symbol, if defined, indicates to the C program that it should 29 | @@ -2091,7 +2091,7 @@ 30 | * parameter information. While ANSI C prototypes are supported in C++, 31 | * K&R style function declarations will yield errors. 32 | */ 33 | -/*#define I_NDBM / **/ 34 | +#define I_NDBM /**/ 35 | /*#define I_GDBMNDBM / **/ 36 | /*#define I_GDBM_NDBM / **/ 37 | /*#define NDBM_H_USES_PROTOTYPES / **/ 38 | -------------------------------------------------------------------------------- /share/perl-5.28/diffs_for_info_only/perl-5.28.0-RC1_win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.28.0-RC1\win32\perlexe.rc.backup Tue Mar 20 21:06:37 2018 2 | +++ C:\strawberry_build\build\perl_core\perl-5.28.0-RC1\win32\perlexe.rc Wed May 23 00:28:14 2018 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,28,0,1 17 | +#define RCVERSION_STR "5.28.0.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2018 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.28/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2018 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.30/diffs_for_info_only/win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.30.1\win32\FindExt.pm.backup Thu Oct 24 22:18:21 2019 2 | +++ C:\strawberry_build\build\perl_core\perl-5.30.1\win32\FindExt.pm Sun Feb 9 14:14:11 2020 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(Amiga.* GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(Amiga.* DB_File 9 | VMS.* Sys-Syslog IPC-SysV)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.30/diffs_for_info_only/win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.30.1\win32\config_H.gc.backup Thu Oct 24 23:27:58 2019 2 | +++ C:\strawberry_build\build\perl_core\perl-5.30.1\win32\config_H.gc Sun May 12 12:10:55 2019 3 | @@ -600,7 +600,7 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | @@ -618,7 +618,7 @@ 13 | * This symbol, if defined, indicates that exists and should 14 | * be included. 15 | */ 16 | -/*#define I_GDBM / **/ 17 | +#define I_GDBM /**/ 18 | 19 | /* I_LOCALE: 20 | * This symbol, if defined, indicates to the C program that it should 21 | @@ -2080,7 +2080,7 @@ 22 | * parameter information. While ANSI C prototypes are supported in C++, 23 | * K&R style function declarations will yield errors. 24 | */ 25 | -/*#define I_NDBM / **/ 26 | +#define I_NDBM /**/ 27 | /*#define I_GDBMNDBM / **/ 28 | /*#define I_GDBM_NDBM / **/ 29 | /*#define NDBM_H_USES_PROTOTYPES / **/ 30 | @@ -2308,8 +2308,8 @@ 31 | * Can we handle GCC builtin for telling that certain values are more 32 | * likely 33 | */ 34 | -/*#define HAS_BUILTIN_EXPECT / **/ 35 | -/*#define HAS_BUILTIN_CHOOSE_EXPR / **/ 36 | +#define HAS_BUILTIN_EXPECT /* we have gcc-8.3 */ 37 | +#define HAS_BUILTIN_CHOOSE_EXPR /* we have gcc-8.3 */ 38 | 39 | /* HAS_C99_VARIADIC_MACROS: 40 | * If defined, the compiler supports C99 variadic macros. 41 | -------------------------------------------------------------------------------- /share/perl-5.30/diffs_for_info_only/win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.30.1\win32\perlexe.rc.backup Thu Oct 24 22:18:22 2019 2 | +++ C:\strawberry_build\build\perl_core\perl-5.30.1\win32\perlexe.rc Sun Feb 9 14:27:00 2020 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,30,2,1 17 | +#define RCVERSION_STR "5.30.2.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2019 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.30/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2019 Larry Wall, binaries by http://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.32/diffs_for_info_only/win32_FindExt.pm.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.32.0\win32\FindExt.pm.backup Mon Jun 15 01:01:25 2020 2 | +++ C:\strawberry_build\build\perl_core\perl-5.32.0\win32\FindExt.pm Sun Feb 9 15:14:11 2020 3 | @@ -5,7 +5,7 @@ 4 | use strict; 5 | use warnings; 6 | 7 | -my $no = join('|',qw(Amiga.* GDBM_File ODBM_File NDBM_File DB_File 8 | +my $no = join('|',qw(Amiga.* DB_File 9 | VMS.* Sys-Syslog IPC-SysV)); 10 | $no = qr/^(?:$no)$/i; 11 | 12 | -------------------------------------------------------------------------------- /share/perl-5.32/diffs_for_info_only/win32_config_H.gc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.32.0\win32\config_H.gc.backup Mon Jun 15 01:01:25 2020 2 | +++ C:\strawberry_build\build\perl_core\perl-5.32.0\win32\config_H.gc Sun Aug 2 16:55:35 2020 3 | @@ -600,7 +600,7 @@ 4 | * This symbol, if defined, indicates that exists and 5 | * should be included. 6 | */ 7 | -/*#define I_DBM / **/ 8 | +#define I_DBM /**/ 9 | /*#define I_RPCSVC_DBM / **/ 10 | 11 | /* I_DLFCN: 12 | @@ -618,7 +618,7 @@ 13 | * This symbol, if defined, indicates that exists and should 14 | * be included. 15 | */ 16 | -/*#define I_GDBM / **/ 17 | +#define I_GDBM /**/ 18 | 19 | /* I_LOCALE: 20 | * This symbol, if defined, indicates to the C program that it should 21 | @@ -2080,7 +2080,7 @@ 22 | * parameter information. While ANSI C prototypes are supported in C++, 23 | * K&R style function declarations will yield errors. 24 | */ 25 | -/*#define I_NDBM / **/ 26 | +#define I_NDBM /**/ 27 | /*#define I_GDBMNDBM / **/ 28 | /*#define I_GDBM_NDBM / **/ 29 | /*#define NDBM_H_USES_PROTOTYPES / **/ 30 | @@ -2308,8 +2308,8 @@ 31 | * Can we handle GCC builtin for telling that certain values are more 32 | * likely 33 | */ 34 | -/*#define HAS_BUILTIN_EXPECT / **/ 35 | -/*#define HAS_BUILTIN_CHOOSE_EXPR / **/ 36 | +#define HAS_BUILTIN_EXPECT /* we have gcc-8.3 */ 37 | +#define HAS_BUILTIN_CHOOSE_EXPR /* we have gcc-8.3 */ 38 | 39 | /* HAS_C99_VARIADIC_MACROS: 40 | * If defined, the compiler supports C99 variadic macros. 41 | -------------------------------------------------------------------------------- /share/perl-5.32/diffs_for_info_only/win32_perlexe.rc.diff: -------------------------------------------------------------------------------- 1 | --- C:\strawberry_build\build\perl_core\perl-5.32.0\win32\perlexe.rc.backup Mon Jun 15 01:01:25 2020 2 | +++ C:\strawberry_build\build\perl_core\perl-5.32.0\win32\perlexe.rc Sun Aug 2 17:07:44 2020 3 | @@ -6,3 +6,44 @@ 4 | #ifdef INCLUDE_MANIFEST 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 6 | #endif 7 | + 8 | +#include 9 | + 10 | +#ifndef DEBUG 11 | +#define RCFLAG 0 12 | +#else 13 | +#define RCFLAG VER_DEBUG 14 | +#endif 15 | + 16 | +#define RCVERSION 5,32,0,1 17 | +#define RCVERSION_STR "5.32.0.1\0" 18 | + 19 | +VS_VERSION_INFO VERSIONINFO 20 | + FILEVERSION RCVERSION 21 | + PRODUCTVERSION RCVERSION 22 | + FILEFLAGS RCFLAG 23 | + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 24 | + FILEOS VOS__WINDOWS32 25 | + FILETYPE VFT_APP 26 | + FILESUBTYPE VFT2_UNKNOWN 27 | +BEGIN 28 | +BLOCK "StringFileInfo" 29 | + BEGIN 30 | + BLOCK "040904E4" 31 | + BEGIN 32 | + VALUE "CompanyName", "strawberryperl.com\0" 33 | + VALUE "FileDescription", "Perl interpreter\0" 34 | + VALUE "FileVersion", RCVERSION_STR 35 | + VALUE "InternalName", "perl.exe\0" 36 | + VALUE "LegalCopyright", "Copyright 1987-2019 Larry Wall, binaries by http://strawberryperl.com\0" 37 | + VALUE "OriginalFilename", "perl.exe\0" 38 | + VALUE "ProductName", "Strawberry Perl\0" 39 | + VALUE "ProductVersion", RCVERSION_STR 40 | + END 41 | + END 42 | + 43 | + BLOCK "VarFileInfo" 44 | + BEGIN 45 | + VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 46 | + END 47 | +END 48 | -------------------------------------------------------------------------------- /share/perl-5.32/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2019 Larry Wall, binaries by https://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.36/19663.patch: -------------------------------------------------------------------------------- 1 | From 11c0968b321f527a61803b68c4b1cb05e2bb78e5 Mon Sep 17 00:00:00 2001 2 | From: sisyphus 3 | Date: Mon, 25 Apr 2022 20:11:28 +1000 4 | Subject: [PATCH 1/3] Fix dist/IO/poll.h for mingw-w64 runtimes 9.0 and later 5 | 6 | --- 7 | dist/IO/poll.h | 9 ++++++++- 8 | 1 file changed, 8 insertions(+), 1 deletion(-) 9 | 10 | diff --git a/dist/IO/poll.h b/dist/IO/poll.h 11 | index 08de2506cdb2..0b025c0ad20d 100644 12 | --- a/dist/IO/poll.h 13 | +++ b/dist/IO/poll.h 14 | @@ -10,7 +10,7 @@ 15 | #ifndef POLL_H 16 | # define POLL_H 17 | 18 | -#if (defined(HAS_POLL) && defined(I_POLL)) || defined(POLLWRBAND) 19 | +#if (defined(HAS_POLL) && defined(I_POLL)) || (defined(POLLWRBAND) && !defined(_WIN32)) 20 | # include 21 | #elif (defined(HAS_POLL) && defined(I_SYS_POLL)) 22 | # include 23 | @@ -22,11 +22,16 @@ 24 | 25 | #define EMULATE_POLL_WITH_SELECT 26 | 27 | +#ifdef _WIN32 28 | +# include 29 | +#endif 30 | + 31 | #ifdef poll 32 | # undef poll 33 | #endif 34 | #define poll Perl_my_poll 35 | 36 | +#if WINVER < 0x0600 37 | typedef struct pollfd { 38 | int fd; 39 | short events; 40 | @@ -48,6 +53,8 @@ typedef struct pollfd { 41 | #define POLLHUP 0x0010 42 | #define POLLNVAL 0x0020 43 | 44 | +#endif 45 | + 46 | int poll (struct pollfd *, unsigned long, int); 47 | 48 | #ifndef HAS_POLL 49 | 50 | From baf5354a4ef7c7c9dc886e9f0eeaebc65833d25d Mon Sep 17 00:00:00 2001 51 | From: sisyphus 52 | Date: Mon, 25 Apr 2022 20:19:38 +1000 53 | Subject: [PATCH 2/3] define d_inetntop and d_inetpton for mingw builds 54 | 55 | --- 56 | win32/config.gc | 4 ++-- 57 | 1 file changed, 2 insertions(+), 2 deletions(-) 58 | 59 | diff --git a/win32/config.gc b/win32/config.gc 60 | index 9d44768f64d1..6005e72bfa60 100644 61 | --- a/win32/config.gc 62 | +++ b/win32/config.gc 63 | @@ -307,8 +307,8 @@ d_ilogbl='define' 64 | d_inc_version_list='undef' 65 | d_index='undef' 66 | d_inetaton='undef' 67 | -d_inetntop='undef' 68 | -d_inetpton='undef' 69 | +d_inetntop='define' 70 | +d_inetpton='define' 71 | d_int64_t='undef' 72 | d_ip_mreq='undef' 73 | d_ip_mreq_source='undef' 74 | 75 | From 75d119e39549ce67ed6c0c8fabfcb943f2187866 Mon Sep 17 00:00:00 2001 76 | From: sisyphus 77 | Date: Mon, 25 Apr 2022 20:22:23 +1000 78 | Subject: [PATCH 3/3] define HAS_INETPTON and HAS_INETNTOP for mingw builds 79 | 80 | --- 81 | win32/config_H.gc | 4 ++-- 82 | 1 file changed, 2 insertions(+), 2 deletions(-) 83 | 84 | diff --git a/win32/config_H.gc b/win32/config_H.gc 85 | index 3644377b7973..2533efd05908 100644 86 | --- a/win32/config_H.gc 87 | +++ b/win32/config_H.gc 88 | @@ -2809,13 +2809,13 @@ 89 | * This symbol, if defined, indicates that the inet_ntop() function 90 | * is available to parse IPv4 and IPv6 strings. 91 | */ 92 | -/*#define HAS_INETNTOP / **/ 93 | +#define HAS_INETNTOP /**/ 94 | 95 | /* HAS_INETPTON: 96 | * This symbol, if defined, indicates that the inet_pton() function 97 | * is available to parse IPv4 and IPv6 strings. 98 | */ 99 | -/*#define HAS_INETPTON / **/ 100 | +#define HAS_INETPTON /**/ 101 | 102 | /* HAS_INT64_T: 103 | * This symbol will defined if the C compiler supports int64_t. 104 | -------------------------------------------------------------------------------- /share/perl-5.36/perl_pr19663.diff: -------------------------------------------------------------------------------- 1 | diff --git a/dist/IO/poll.h b/dist/IO/poll.h 2 | index 08de2506cdb2..0b025c0ad20d 100644 3 | --- a/dist/IO/poll.h 4 | +++ b/dist/IO/poll.h 5 | @@ -10,7 +10,7 @@ 6 | #ifndef POLL_H 7 | # define POLL_H 8 | 9 | -#if (defined(HAS_POLL) && defined(I_POLL)) || defined(POLLWRBAND) 10 | +#if (defined(HAS_POLL) && defined(I_POLL)) || (defined(POLLWRBAND) && !defined(_WIN32)) 11 | # include 12 | #elif (defined(HAS_POLL) && defined(I_SYS_POLL)) 13 | # include 14 | @@ -22,11 +22,16 @@ 15 | 16 | #define EMULATE_POLL_WITH_SELECT 17 | 18 | +#ifdef _WIN32 19 | +# include 20 | +#endif 21 | + 22 | #ifdef poll 23 | # undef poll 24 | #endif 25 | #define poll Perl_my_poll 26 | 27 | +#if WINVER < 0x0600 28 | typedef struct pollfd { 29 | int fd; 30 | short events; 31 | @@ -48,6 +53,8 @@ typedef struct pollfd { 32 | #define POLLHUP 0x0010 33 | #define POLLNVAL 0x0020 34 | 35 | +#endif 36 | + 37 | int poll (struct pollfd *, unsigned long, int); 38 | 39 | #ifndef HAS_POLL 40 | diff --git a/win32/config.gc b/win32/config.gc 41 | index 9d44768f64d1..6005e72bfa60 100644 42 | --- a/win32/config.gc 43 | +++ b/win32/config.gc 44 | @@ -307,8 +307,8 @@ d_ilogbl='define' 45 | d_inc_version_list='undef' 46 | d_index='undef' 47 | d_inetaton='undef' 48 | -d_inetntop='undef' 49 | -d_inetpton='undef' 50 | +d_inetntop='define' 51 | +d_inetpton='define' 52 | d_int64_t='undef' 53 | d_ip_mreq='undef' 54 | d_ip_mreq_source='undef' 55 | diff --git a/win32/config_H.gc b/win32/config_H.gc 56 | index 3644377b7973..2533efd05908 100644 57 | --- a/win32/config_H.gc 58 | +++ b/win32/config_H.gc 59 | @@ -2809,13 +2809,13 @@ 60 | * This symbol, if defined, indicates that the inet_ntop() function 61 | * is available to parse IPv4 and IPv6 strings. 62 | */ 63 | -/*#define HAS_INETNTOP / **/ 64 | +#define HAS_INETNTOP /**/ 65 | 66 | /* HAS_INETPTON: 67 | * This symbol, if defined, indicates that the inet_pton() function 68 | * is available to parse IPv4 and IPv6 strings. 69 | */ 70 | -/*#define HAS_INETPTON / **/ 71 | +#define HAS_INETPTON /**/ 72 | 73 | /* HAS_INT64_T: 74 | * This symbol will defined if the C compiler supports int64_t. 75 | -------------------------------------------------------------------------------- /share/perl-5.36/perl_pr19912_commit1.patch: -------------------------------------------------------------------------------- 1 | diff -wu a/win32/vmem.h b/win32/vmem.h 2 | --- a/win32/vmem.h 2022-06-21 03:57:59.000000000 +1000 3 | +++ b/win32/vmem.h 2022-07-21 02:30:13.000000000 +1000 4 | @@ -69,14 +69,32 @@ 5 | 6 | #ifdef _USE_LINKED_LIST 7 | class VMem; 8 | + 9 | +/* 10 | + * Address an alignment issue with x64 mingw-w64 ports of gcc-12 and 11 | + * (presumably) later. We do the same thing again 16 lines further down. 12 | + * See https://github.com/Perl/perl5/issues/19824 13 | + */ 14 | + 15 | +#if defined(__MINGW64__) && __GNUC__ > 11 16 | +typedef struct _MemoryBlockHeader* PMEMORY_BLOCK_HEADER __attribute__ ((aligned(16))); 17 | +#else 18 | typedef struct _MemoryBlockHeader* PMEMORY_BLOCK_HEADER; 19 | +#endif 20 | + 21 | typedef struct _MemoryBlockHeader { 22 | PMEMORY_BLOCK_HEADER pNext; 23 | PMEMORY_BLOCK_HEADER pPrev; 24 | VMem *owner; 25 | + 26 | +#if defined(__MINGW64__) && __GNUC__ > 11 27 | +} MEMORY_BLOCK_HEADER __attribute__ ((aligned(16))), *PMEMORY_BLOCK_HEADER; 28 | +#else 29 | } MEMORY_BLOCK_HEADER, *PMEMORY_BLOCK_HEADER; 30 | #endif 31 | 32 | +#endif 33 | + 34 | class VMem 35 | { 36 | public: 37 | 38 | -------------------------------------------------------------------------------- /share/perl-5.36/perl_pr20136.patch: -------------------------------------------------------------------------------- 1 | From cc51139c88a245c5942733f231181798cd3b310f Mon Sep 17 00:00:00 2001 2 | From: Kenneth Olwing 3 | Date: Thu, 25 Aug 2022 18:48:26 +0200 4 | Subject: [PATCH] Change optimization level for Win32 builds 5 | 6 | This fixes #20136. 7 | 8 | Building on Windows 11 with the Strawberry 5.32.1 (gcc 8.3.0) toolchain, 9 | multiple errors in the tests are seen. Worse, building on Windows 10 10 | no test errors crop up, but the resulting perl will still crash and die 11 | when run the tests manually on Windows 11. 12 | 13 | Changing the optimization level to -Os as found in #20024, the build now 14 | and tests now succeed. 15 | --- 16 | win32/GNUmakefile | 9 +++++++-- 17 | 1 file changed, 7 insertions(+), 2 deletions(-) 18 | 19 | diff --git a/win32/GNUmakefile b/win32/GNUmakefile 20 | index 7b91d35ab004..81ded707b946 100644 21 | --- a/win32/GNUmakefile 22 | +++ b/win32/GNUmakefile 23 | @@ -608,11 +608,16 @@ LIBFILES += -lquadmath 24 | endif 25 | 26 | ifeq ($(CFG),Debug) 27 | -OPTIMIZE = -g -O2 28 | +# According to https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/Optimize-Options.html 29 | +# -Og should provide some optimizations while still giving convenient debugging 30 | +OPTIMIZE = -g -Og 31 | LINK_DBG = -g 32 | DEFINES += -DDEBUGGING 33 | else 34 | -OPTIMIZE = -O2 35 | +# In https://github.com/Perl/perl5/issues/20081 it is found that the previous 36 | +# optimization level -O2 causes generated code that fails in mysterious ways 37 | +# when run on Win11 (*even* if it was built and successfully tested on Win10!). 38 | +OPTIMIZE = -Os 39 | LINK_DBG = -s 40 | endif 41 | 42 | -------------------------------------------------------------------------------- /share/perl-5.36/perlexe.rc.tt: -------------------------------------------------------------------------------- 1 | PERLEXE ICON perlexe.ico 2 | 3 | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 4 | #define RT_MANIFEST 24 5 | 6 | #ifdef INCLUDE_MANIFEST 7 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "perlexe.manifest" 8 | #endif 9 | 10 | #include 11 | 12 | #ifndef DEBUG 13 | #define RCFLAG 0 14 | #else 15 | #define RCFLAG VER_DEBUG 16 | #endif 17 | 18 | #define RCVERSION [%app_rc_version%] 19 | #define RCVERSION_STR "[%app_version%]\0" 20 | 21 | VS_VERSION_INFO VERSIONINFO 22 | FILEVERSION RCVERSION 23 | PRODUCTVERSION RCVERSION 24 | FILEFLAGS RCFLAG 25 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 26 | FILEOS VOS__WINDOWS32 27 | FILETYPE VFT_APP 28 | FILESUBTYPE VFT2_UNKNOWN 29 | BEGIN 30 | BLOCK "StringFileInfo" 31 | BEGIN 32 | BLOCK "040904E4" 33 | BEGIN 34 | VALUE "CompanyName", "strawberryperl.com\0" 35 | VALUE "FileDescription", "Perl interpreter\0" 36 | VALUE "FileVersion", RCVERSION_STR 37 | VALUE "InternalName", "perl.exe\0" 38 | VALUE "LegalCopyright", "Copyright 1987-2019 Larry Wall, binaries by https://strawberryperl.com\0" 39 | VALUE "OriginalFilename", "perl.exe\0" 40 | VALUE "ProductName", "[%app_fullname%]\0" 41 | VALUE "ProductVersion", RCVERSION_STR 42 | END 43 | END 44 | 45 | BLOCK "VarFileInfo" 46 | BEGIN 47 | VALUE "Translation", 0x409, 0x04E4 /* English 0x409 + Windows ANSI codepage 0x04E4 */ 48 | END 49 | END 50 | -------------------------------------------------------------------------------- /share/perl-5.36/rt142390.patch: -------------------------------------------------------------------------------- 1 | --- perl-5.37.0-20220604/cpan/Socket/Socket.xs_socket_poll 2022-06-04 12:25:26 +1000 2 | +++ perl-5.37.0-20220604/cpan/Socket/Socket.xs 2022-06-04 14:53:08 +1000 3 | @@ -98,6 +98,14 @@ 4 | 5 | #endif 6 | 7 | +/* 8 | + * The Windows implementations of inet_ntop and inet_pton are available 9 | + * whenever (and only when) InetNtopA is defined. 10 | + * Use those implementations whenever they are available. 11 | + * Else use the implementations provided below. 12 | +*/ 13 | +#ifndef InetNtopA 14 | + 15 | static int inet_pton(int af, const char *src, void *dst) 16 | { 17 | struct sockaddr_storage ss; 18 | @@ -146,6 +154,8 @@ 19 | return dst; 20 | } 21 | 22 | +#endif /* InetNtopA not defined */ 23 | + 24 | #define HAS_INETPTON 25 | #define HAS_INETNTOP 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /share/perl-5.38/vmem.patch: -------------------------------------------------------------------------------- 1 | diff --git a/mnt/c/strawberry_build/build/perl_core/perl-5.38.2/win32/vmem.h b/vmem.h 2 | index c425ae1..18289c1 100755 3 | --- a/win32/vmem.h 4 | +++ b/win32/vmem.h 5 | @@ -86,6 +86,7 @@ typedef struct _MemoryBlockHeader { 6 | PMEMORY_BLOCK_HEADER pNext; 7 | PMEMORY_BLOCK_HEADER pPrev; 8 | VMem *owner; 9 | + void *reserved; 10 | 11 | #if defined(__MINGW64__) && __GNUC__ > 11 12 | } MEMORY_BLOCK_HEADER __attribute__ ((aligned(16))), *PMEMORY_BLOCK_HEADER; 13 | 14 | -------------------------------------------------------------------------------- /share/perl-5.39/Makefile.patch: -------------------------------------------------------------------------------- 1 | diff --git a/win32/Makefile b/win32/Makefile 2 | index 91f4103..e3f32c6 100755 3 | --- a/win32/Makefile 4 | +++ b/win32/Makefile 5 | @@ -95,11 +95,11 @@ DEFAULT_INC_EXCLUDES_DOT = define 6 | # 7 | # Uncomment this if you want to disable looking up values from 8 | # HKEY_CURRENT_USER\Software\Perl and HKEY_LOCAL_MACHINE\Software\Perl in 9 | # the Registry. 10 | # 11 | -#USE_NO_REGISTRY = define 12 | +USE_NO_REGISTRY = define 13 | 14 | # 15 | # uncomment exactly one of the following 16 | # 17 | # Visual C++ 2015 (aka Visual C++ 14.0) (full version or Express Edition) 18 | @@ -107,11 +107,11 @@ USE_NO_REGISTRY = define 19 | # Visual C++ 2017 (aka Visual C++ 14.1) (full version or Community Edition) 20 | #CCTYPE = MSVC141 21 | # Visual C++ 2019 (aka Visual C++ 14.2) (full version or Community Edition) 22 | #CCTYPE = MSVC142 23 | # Visual C++ 2022 (aka Visual C++ 14.3) (full version or Community Edition) 24 | -#CCTYPE = MSVC143 25 | +CCTYPE = MSVC143 26 | 27 | # 28 | # If you are using Intel C++ Compiler uncomment this 29 | # 30 | #__ICC = define 31 | -------------------------------------------------------------------------------- /share/portable/README.pdl.TXT.tt: -------------------------------------------------------------------------------- 1 | [%-IF beta==0 -%] 2 | === [%app_fullname%] PDL [%app_version%]-[%bits%]bit README === 3 | [%-ELSE%] 4 | === [%app_fullname%] PDL [%app_version%]-beta[%beta%]-[%bits%]bit README === 5 | [%-END%] 6 | 7 | What is Strawberry Perl PDL? 8 | --------------------------------- 9 | 10 | * 'Perl' is a programming language suitable for writing simple scripts as well 11 | as complex applications. See https://perldoc.perl.org/perlintro.html 12 | 13 | * 'Strawberry Perl' is a perl environment for Microsoft Windows containing all 14 | you need to run and develop perl applications. It is designed to be as close 15 | as possible to perl environment on UNIX systems. See https://strawberryperl.com/ 16 | 17 | * 'Strawberry Perl PDL' is Strawberry Perl with pre-installed Perl Data Language, 18 | related modules and libraries - see http://pdl.perl.org/ 19 | 20 | How to use Strawberry Perl PDL? 21 | ------------------------------------ 22 | 23 | * Extract strawberry portable ZIP into e.g. c:\sw\pdl\ 24 | Note: choose a directory name without spaces and non us-ascii characters 25 | 26 | * Launch c:\sw\pdl\PDL-console.bat - it should open a console window with 2 tabs 27 | - tab "Command prompt" 28 | - tab "PDL console" 29 | 30 | * Or launch c:\sw\pdl\portableshell.bat - it should open a command prompt 31 | 32 | * More info at http://pdl.perl.org/ (start with FAQ) 33 | -------------------------------------------------------------------------------- /share/portable/README.portable.TXT.tt: -------------------------------------------------------------------------------- 1 | [%-IF beta==0 -%] 2 | === [%app_fullname%] Portable [%app_version%]-[%bits%]bit README === 3 | [%-ELSE%] 4 | === [%app_fullname%] Portable [%app_version%]-beta[%beta%]-[%bits%]bit README === 5 | [%-END%] 6 | 7 | What is Strawberry Perl Portable? 8 | --------------------------------- 9 | 10 | * 'Perl' is a programming language suitable for writing simple scripts as well 11 | as complex applications. See https://perldoc.perl.org/perlintro.html 12 | 13 | * 'Strawberry Perl' is a perl environment for Microsoft Windows containing all 14 | you need to run and develop perl applications. It is designed to be as close 15 | as possible to perl environment on UNIX systems. See https://strawberryperl.com/ 16 | 17 | * 'Strawberry Perl Portable' is Strawberry Perl that you do not need to install, 18 | you do not need admin privileges, you just extract provided ZIP on your disk. 19 | 20 | How to use Strawberry Perl Portable? 21 | ------------------------------------ 22 | 23 | * Extract strawberry portable ZIP into e.g. c:\myperl\ 24 | Note: choose a directory name without spaces and non us-ascii characters 25 | 26 | * Launch c:\myperl\portableshell.bat - it should open a command prompt window 27 | 28 | * In the command prompt window you can: 29 | 30 | 1. run any perl script by launching 31 | 32 | c:\> perl c:\path\to\script.pl 33 | 34 | 2. install additional perl modules (libraries) from https://www.metacpan.org/ by 35 | 36 | c:\> cpanm Module::Name 37 | 38 | 3. run other tools included in strawberry like: perldoc, gcc, [%maketool || 'dmake'%] ... 39 | 40 | * If you want to use Strawberry Perl Portable not only from portableshell.bat, 41 | add c:\myperl\perl\site\bin, c:\myperl\perl\bin, and c:\myperl\c\bin 42 | to PATH variable 43 | -------------------------------------------------------------------------------- /share/portable/portable.perl.32: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: c/bin/dmake.exe 9 | make_install_make_command: c/bin/dmake.exe 10 | makepl_arg: '' 11 | patch: c/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installbin: perl/bin 32 | installhtml1dir: '' 33 | installhtml3dir: '' 34 | installhtmldir: '' 35 | installhtmlhelpdir: '' 36 | installman1dir: '' 37 | installman3dir: '' 38 | installprefix: perl 39 | installprefixexp: perl 40 | installprivlib: perl/lib 41 | installscript: perl/bin 42 | installsitearch: perl/site/lib 43 | installsitebin: perl/site/bin 44 | installsitehtml1dir: '' 45 | installsitehtml3dir: '' 46 | installsitelib: perl/site/lib 47 | installsiteman1dir: '' 48 | installsiteman3dir: '' 49 | installsitescript: 'perl/site/bin' 50 | installstyle: perl/lib 51 | installusrbinperl: ~ 52 | installvendorarch: 'perl/vendor/lib' 53 | installvendorbin: 'perl/bin' 54 | installvendorhtml1dir: '' 55 | installvendorhtml3dir: '' 56 | installvendorlib: 'perl/vendor/lib' 57 | installvendorman1dir: '' 58 | installvendorman3dir: '' 59 | installvendorscript: 'perl/bin' 60 | ld: g++.exe 61 | _libpthfix_part1: c/lib 62 | _libpthfix_part2: c/i686-w64-mingw32/lib 63 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 64 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | libpth: $_libpthfix_part1 $_libpthfix_part2 67 | perlpath: perl/bin/perl.exe 68 | prefix: perl 69 | prefixexp: perl 70 | privlib: perl/lib 71 | privlibexp: perl/lib 72 | scriptdir: perl/bin 73 | scriptdirexp: perl/bin 74 | sitearch: perl/site/lib 75 | sitearchexp: perl/site/lib 76 | sitebin: perl/site/bin 77 | sitebinexp: perl/site/bin 78 | sitelib: perl/site/lib 79 | sitelibexp: perl/site/lib 80 | siteprefix: perl/site 81 | siteprefixexp: perl/site 82 | man1dir: '' 83 | man1direxp: '' 84 | man3dir: '' 85 | man3direxp: '' 86 | vendorarch: perl/vendor/lib 87 | vendorarchexp: perl/vendor/lib 88 | vendorbin: perl/bin 89 | vendorbinexp: perl/bin 90 | vendorhtml1dir: '' 91 | vendorhtml3dir: '' 92 | vendorlib: perl/vendor/lib 93 | vendorlibexp: perl/vendor/lib 94 | vendorman1dir: '' 95 | vendorman3dir: '' 96 | vendorprefix: perl/vendor 97 | vendorprefixexp: perl/vendor 98 | vendorscript: perl/bin 99 | sitescript: perl/site/bin 100 | sitescriptexp: perl/site/bin 101 | vendorscriptexp: perl/bin 102 | usrinc: c/include 103 | Env: 104 | PATH: 105 | - c/bin 106 | - perl/bin 107 | -------------------------------------------------------------------------------- /share/portable/portable.perl.32-NEW: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: perl/bin/dmake.exe 9 | make_install_make_command: perl/bin/dmake.exe 10 | makepl_arg: '' 11 | patch: perl/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installbin: perl/bin 32 | installhtml1dir: '' 33 | installhtml3dir: '' 34 | installhtmldir: '' 35 | installhtmlhelpdir: '' 36 | installman1dir: '' 37 | installman3dir: '' 38 | installprefix: perl 39 | installprefixexp: perl 40 | installprivlib: perl/lib 41 | installscript: perl/bin 42 | installsitearch: perl/site/lib 43 | installsitebin: perl/site/bin 44 | installsitehtml1dir: '' 45 | installsitehtml3dir: '' 46 | installsitelib: perl/site/lib 47 | installsiteman1dir: '' 48 | installsiteman3dir: '' 49 | installsitescript: 'perl/site/bin' 50 | installstyle: perl/lib 51 | installusrbinperl: ~ 52 | installvendorarch: 'perl/vendor/lib' 53 | installvendorbin: 'perl/bin' 54 | installvendorhtml1dir: '' 55 | installvendorhtml3dir: '' 56 | installvendorlib: 'perl/vendor/lib' 57 | installvendorman1dir: '' 58 | installvendorman3dir: '' 59 | installvendorscript: 'perl/bin' 60 | ld: g++.exe 61 | _libpthfix_part1: c/lib 62 | _libpthfix_part2: c/i686-w64-mingw32/lib 63 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 64 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | libpth: $_libpthfix_part1 $_libpthfix_part2 67 | perlpath: perl/bin/perl.exe 68 | prefix: perl 69 | prefixexp: perl 70 | privlib: perl/lib 71 | privlibexp: perl/lib 72 | scriptdir: perl/bin 73 | scriptdirexp: perl/bin 74 | sitearch: perl/site/lib 75 | sitearchexp: perl/site/lib 76 | sitebin: perl/site/bin 77 | sitebinexp: perl/site/bin 78 | sitelib: perl/site/lib 79 | sitelibexp: perl/site/lib 80 | siteprefix: perl/site 81 | siteprefixexp: perl/site 82 | man1dir: '' 83 | man1direxp: '' 84 | man3dir: '' 85 | man3direxp: '' 86 | vendorarch: perl/vendor/lib 87 | vendorarchexp: perl/vendor/lib 88 | vendorbin: perl/bin 89 | vendorbinexp: perl/bin 90 | vendorhtml1dir: '' 91 | vendorhtml3dir: '' 92 | vendorlib: perl/vendor/lib 93 | vendorlibexp: perl/vendor/lib 94 | vendorman1dir: '' 95 | vendorman3dir: '' 96 | vendorprefix: perl/vendor 97 | vendorprefixexp: perl/vendor 98 | vendorscript: perl/bin 99 | sitescript: perl/site/bin 100 | sitescriptexp: perl/site/bin 101 | vendorscriptexp: perl/bin 102 | usrinc: c/include 103 | Env: 104 | PATH: 105 | - c/bin 106 | - perl/bin 107 | -------------------------------------------------------------------------------- /share/portable/portable.perl.473.32: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: c/bin/dmake.exe 9 | make_install_make_command: c/bin/dmake.exe 10 | makepl_arg: '' 11 | patch: c/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installbin: perl/bin 32 | installhtml1dir: '' 33 | installhtml3dir: '' 34 | installhtmldir: '' 35 | installhtmlhelpdir: '' 36 | installman1dir: '' 37 | installman3dir: '' 38 | installprefix: perl 39 | installprefixexp: perl 40 | installprivlib: perl/lib 41 | installscript: perl/bin 42 | installsitearch: perl/site/lib 43 | installsitebin: perl/site/bin 44 | installsitehtml1dir: '' 45 | installsitehtml3dir: '' 46 | installsitelib: perl/site/lib 47 | installsiteman1dir: '' 48 | installsiteman3dir: '' 49 | installsitescript: 'perl/site/bin' 50 | installstyle: perl/lib 51 | installusrbinperl: ~ 52 | installvendorarch: 'perl/vendor/lib' 53 | installvendorbin: 'perl/bin' 54 | installvendorhtml1dir: '' 55 | installvendorhtml3dir: '' 56 | installvendorlib: 'perl/vendor/lib' 57 | installvendorman1dir: '' 58 | installvendorman3dir: '' 59 | installvendorscript: 'perl/bin' 60 | ld: g++.exe 61 | _libpthfix_part1: c/lib 62 | _libpthfix_part2: c/i686-w64-mingw32/lib 63 | _libpthfix_part3: c/lib/gcc/i686-w64-mingw32/4.7.3 64 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 67 | libpth: $_libpthfix_part1 $_libpthfix_part2 $_libpthfix_part3 68 | perlpath: perl/bin/perl.exe 69 | prefix: perl 70 | prefixexp: perl 71 | privlib: perl/lib 72 | privlibexp: perl/lib 73 | scriptdir: perl/bin 74 | scriptdirexp: perl/bin 75 | sitearch: perl/site/lib 76 | sitearchexp: perl/site/lib 77 | sitebin: perl/site/bin 78 | sitebinexp: perl/site/bin 79 | sitelib: perl/site/lib 80 | sitelibexp: perl/site/lib 81 | siteprefix: perl/site 82 | siteprefixexp: perl/site 83 | man1dir: '' 84 | man1direxp: '' 85 | man3dir: '' 86 | man3direxp: '' 87 | vendorarch: perl/vendor/lib 88 | vendorarchexp: perl/vendor/lib 89 | vendorbin: perl/bin 90 | vendorbinexp: perl/bin 91 | vendorhtml1dir: '' 92 | vendorhtml3dir: '' 93 | vendorlib: perl/vendor/lib 94 | vendorlibexp: perl/vendor/lib 95 | vendorman1dir: '' 96 | vendorman3dir: '' 97 | vendorprefix: perl/vendor 98 | vendorprefixexp: perl/vendor 99 | vendorscript: perl/bin 100 | sitescript: perl/site/bin 101 | sitescriptexp: perl/site/bin 102 | vendorscriptexp: perl/bin 103 | usrinc: c/include 104 | Env: 105 | PATH: 106 | - c/bin 107 | - perl/bin 108 | -------------------------------------------------------------------------------- /share/portable/portable.perl.473.64: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: c/bin/dmake.exe 9 | make_install_make_command: c/bin/dmake.exe 10 | makepl_arg: '' 11 | patch: c/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installbin: perl/bin 32 | installhtml1dir: '' 33 | installhtml3dir: '' 34 | installhtmldir: '' 35 | installhtmlhelpdir: '' 36 | installman1dir: '' 37 | installman3dir: '' 38 | installprefix: perl 39 | installprefixexp: perl 40 | installprivlib: perl/lib 41 | installscript: perl/bin 42 | installsitearch: perl/site/lib 43 | installsitebin: perl/site/bin 44 | installsitehtml1dir: '' 45 | installsitehtml3dir: '' 46 | installsitelib: perl/site/lib 47 | installsiteman1dir: '' 48 | installsiteman3dir: '' 49 | installsitescript: 'perl/site/bin' 50 | installstyle: perl/lib 51 | installusrbinperl: ~ 52 | installvendorarch: 'perl/vendor/lib' 53 | installvendorbin: 'perl/bin' 54 | installvendorhtml1dir: '' 55 | installvendorhtml3dir: '' 56 | installvendorlib: 'perl/vendor/lib' 57 | installvendorman1dir: '' 58 | installvendorman3dir: '' 59 | installvendorscript: 'perl/bin' 60 | ld: g++.exe 61 | _libpthfix_part1: c/lib 62 | _libpthfix_part2: c/x86_64-w64-mingw32/lib 63 | _libpthfix_part3: c/lib/gcc/x86_64-w64-mingw32/4.7.3 64 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 67 | libpth: $_libpthfix_part1 $_libpthfix_part2 $_libpthfix_part3 68 | perlpath: perl/bin/perl.exe 69 | prefix: perl 70 | prefixexp: perl 71 | privlib: perl/lib 72 | privlibexp: perl/lib 73 | scriptdir: perl/bin 74 | scriptdirexp: perl/bin 75 | sitearch: perl/site/lib 76 | sitearchexp: perl/site/lib 77 | sitebin: perl/site/bin 78 | sitebinexp: perl/site/bin 79 | sitelib: perl/site/lib 80 | sitelibexp: perl/site/lib 81 | siteprefix: perl/site 82 | siteprefixexp: perl/site 83 | man1dir: '' 84 | man1direxp: '' 85 | man3dir: '' 86 | man3direxp: '' 87 | vendorarch: perl/vendor/lib 88 | vendorarchexp: perl/vendor/lib 89 | vendorbin: perl/bin 90 | vendorbinexp: perl/bin 91 | vendorhtml1dir: '' 92 | vendorhtml3dir: '' 93 | vendorlib: perl/vendor/lib 94 | vendorlibexp: perl/vendor/lib 95 | vendorman1dir: '' 96 | vendorman3dir: '' 97 | vendorprefix: perl/vendor 98 | vendorprefixexp: perl/vendor 99 | vendorscript: perl/bin 100 | sitescript: perl/site/bin 101 | sitescriptexp: perl/site/bin 102 | vendorscriptexp: perl/bin 103 | usrinc: c/include 104 | Env: 105 | PATH: 106 | - c/bin 107 | - perl/bin 108 | -------------------------------------------------------------------------------- /share/portable/portable.perl.64: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: c/bin/dmake.exe 9 | make_install_make_command: c/bin/dmake.exe 10 | makepl_arg: '' 11 | patch: c/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installbin: perl/bin 32 | installhtml1dir: '' 33 | installhtml3dir: '' 34 | installhtmldir: '' 35 | installhtmlhelpdir: '' 36 | installman1dir: '' 37 | installman3dir: '' 38 | installprefix: perl 39 | installprefixexp: perl 40 | installprivlib: perl/lib 41 | installscript: perl/bin 42 | installsitearch: perl/site/lib 43 | installsitebin: perl/site/bin 44 | installsitehtml1dir: '' 45 | installsitehtml3dir: '' 46 | installsitelib: perl/site/lib 47 | installsiteman1dir: '' 48 | installsiteman3dir: '' 49 | installsitescript: 'perl/site/bin' 50 | installstyle: perl/lib 51 | installusrbinperl: ~ 52 | installvendorarch: 'perl/vendor/lib' 53 | installvendorbin: 'perl/bin' 54 | installvendorhtml1dir: '' 55 | installvendorhtml3dir: '' 56 | installvendorlib: 'perl/vendor/lib' 57 | installvendorman1dir: '' 58 | installvendorman3dir: '' 59 | installvendorscript: 'perl/bin' 60 | ld: g++.exe 61 | _libpthfix_part1: c/lib 62 | _libpthfix_part2: c/x86_64-w64-mingw32/lib 63 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 64 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | libpth: $_libpthfix_part1 $_libpthfix_part2 67 | perlpath: perl/bin/perl.exe 68 | prefix: perl 69 | prefixexp: perl 70 | privlib: perl/lib 71 | privlibexp: perl/lib 72 | scriptdir: perl/bin 73 | scriptdirexp: perl/bin 74 | sitearch: perl/site/lib 75 | sitearchexp: perl/site/lib 76 | sitebin: perl/site/bin 77 | sitebinexp: perl/site/bin 78 | sitelib: perl/site/lib 79 | sitelibexp: perl/site/lib 80 | siteprefix: perl/site 81 | siteprefixexp: perl/site 82 | man1dir: '' 83 | man1direxp: '' 84 | man3dir: '' 85 | man3direxp: '' 86 | vendorarch: perl/vendor/lib 87 | vendorarchexp: perl/vendor/lib 88 | vendorbin: perl/bin 89 | vendorbinexp: perl/bin 90 | vendorhtml1dir: '' 91 | vendorhtml3dir: '' 92 | vendorlib: perl/vendor/lib 93 | vendorlibexp: perl/vendor/lib 94 | vendorman1dir: '' 95 | vendorman3dir: '' 96 | vendorprefix: perl/vendor 97 | vendorprefixexp: perl/vendor 98 | vendorscript: perl/bin 99 | sitescript: perl/site/bin 100 | sitescriptexp: perl/site/bin 101 | vendorscriptexp: perl/bin 102 | usrinc: c/include 103 | Env: 104 | PATH: 105 | - c/bin 106 | - perl/bin 107 | -------------------------------------------------------------------------------- /share/portable/portable.perl.tt: -------------------------------------------------------------------------------- 1 | --- 2 | CPAN: 3 | build_dir: cpan/build 4 | cpan_home: cpan 5 | ftp: '' 6 | histfile: cpan/histfile 7 | keep_source_where: cpan/sources 8 | make: c/bin/[%maketool || 'dmake'%].exe 9 | make_install_make_command: c/bin/[%maketool || 'dmake'%].exe 10 | makepl_arg: '' 11 | patch: c/bin/patch.exe 12 | prefs_dir: cpan/prefs 13 | minicpan: 14 | local: minicpan 15 | remote: http://cpan.strawberryperl.com/ 16 | force: 1 17 | skip_perl: 1 18 | no_conn_cache: 1 19 | HomeDir: 20 | my_home: data 21 | my_data: data 22 | my_documents: data 23 | Config: 24 | archlib: perl/lib 25 | archlibexp: perl/lib 26 | bin: perl/bin 27 | binexp: perl/bin 28 | incpath: c/include 29 | installarchlib: perl/lib 30 | installbin: perl/bin 31 | installhtml1dir: '' 32 | installhtml3dir: '' 33 | installhtmldir: '' 34 | installhtmlhelpdir: '' 35 | installman1dir: '' 36 | installman3dir: '' 37 | installprefix: perl 38 | installprefixexp: perl 39 | installprivlib: perl/lib 40 | installscript: perl/bin 41 | installsitearch: perl/site/lib 42 | installsitebin: perl/site/bin 43 | installsitehtml1dir: '' 44 | installsitehtml3dir: '' 45 | installsitelib: perl/site/lib 46 | installsiteman1dir: '' 47 | installsiteman3dir: '' 48 | installsitescript: 'perl/site/bin' 49 | installstyle: perl/lib 50 | installusrbinperl: ~ 51 | installvendorarch: 'perl/vendor/lib' 52 | installvendorbin: 'perl/bin' 53 | installvendorhtml1dir: '' 54 | installvendorhtml3dir: '' 55 | installvendorlib: 'perl/vendor/lib' 56 | installvendorman1dir: '' 57 | installvendorman3dir: '' 58 | installvendorscript: 'perl/bin' 59 | ld: g++.exe 60 | _libpthfix_part1: c/lib 61 | _libpthfix_part2: c/[%gcchost%]/lib 62 | _libpthfix_part3: c/lib/gcc/[%gcchost%]/[%gccver%] 63 | lddlflags: '-mdll -s -L"$archlib\CORE" -L"$_libpthfix_part1"' 64 | ldflags: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 65 | ldflags_nolargefiles: '-s -L"$archlib\CORE" -L"$_libpthfix_part1"' 66 | libpth: $_libpthfix_part1 $_libpthfix_part2 $_libpthfix_part3 67 | perlpath: perl/bin/perl.exe 68 | prefix: perl 69 | prefixexp: perl 70 | privlib: perl/lib 71 | privlibexp: perl/lib 72 | scriptdir: perl/bin 73 | scriptdirexp: perl/bin 74 | sitearch: perl/site/lib 75 | sitearchexp: perl/site/lib 76 | sitebin: perl/site/bin 77 | sitebinexp: perl/site/bin 78 | sitelib: perl/site/lib 79 | sitelibexp: perl/site/lib 80 | siteprefix: perl/site 81 | siteprefixexp: perl/site 82 | man1dir: '' 83 | man1direxp: '' 84 | man3dir: '' 85 | man3direxp: '' 86 | vendorarch: perl/vendor/lib 87 | vendorarchexp: perl/vendor/lib 88 | vendorbin: perl/bin 89 | vendorbinexp: perl/bin 90 | vendorhtml1dir: '' 91 | vendorhtml3dir: '' 92 | vendorlib: perl/vendor/lib 93 | vendorlibexp: perl/vendor/lib 94 | vendorman1dir: '' 95 | vendorman3dir: '' 96 | vendorprefix: perl/vendor 97 | vendorprefixexp: perl/vendor 98 | vendorscript: perl/bin 99 | sitescript: perl/site/bin 100 | sitescriptexp: perl/site/bin 101 | vendorscriptexp: perl/bin 102 | usrinc: c/include 103 | Env: 104 | PATH: 105 | - c/bin 106 | - perl/bin 107 | -------------------------------------------------------------------------------- /share/portable/portableshell.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | REM This script may also be set as the "Command line" of a Windows Terminal profile 4 | 5 | if not "%1" == "/SETENV" setlocal 6 | 7 | set PATH=%~dp0perl\site\bin;%~dp0perl\bin;%~dp0c\bin;%PATH% 8 | 9 | set TERM= 10 | set PERL_JSON_BACKEND= 11 | set PERL_YAML_BACKEND= 12 | set PERL5LIB= 13 | set PERL5OPT= 14 | set PERL_MM_OPT= 15 | set PERL_MB_OPT= 16 | 17 | if "%1" == "/SETENV" goto END 18 | 19 | if "%1" == "" goto INTERACTIVE 20 | 21 | REM For non-interactive invocations of this batch file, run Perl with all 22 | REM provided argument and return its exit code. Clear the ERRORLEVEL 23 | REM variable in our local environment to ensure our "exit /b" statement 24 | REM returns the error level from Perl even if there is already an ERRORLEVEL 25 | REM variable in the environment: 26 | REM https://devblogs.microsoft.com/oldnewthing/20080926-00 27 | set ERRORLEVEL= 28 | "%~dp0perl\bin\perl.exe" %* 29 | exit /b %ERRORLEVEL% 30 | 31 | :INTERACTIVE 32 | echo ---------------------------------------------- 33 | echo Welcome to Strawberry Perl Portable Edition! 34 | echo * URL - https://www.strawberryperl.com/ 35 | echo * See README.TXT for more info 36 | echo ---------------------------------------------- 37 | perl -MConfig -e "print(qq{Perl executable: $^X\nPerl version : $^V / $Config{archname}\n\n})" 2>nul 38 | if ERRORLEVEL==1 echo FATAL ERROR: 'perl' does not work; check if your strawberry pack is complete! 39 | 40 | cmd /K 41 | 42 | :ENDLOCAL 43 | endlocal 44 | 45 | :END 46 | -------------------------------------------------------------------------------- /share/portable/portableshell.pdl.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | if not "%1" == "/SETENV" setlocal 4 | 5 | set PATH=%~dp0perl\site\bin;%~dp0perl\bin;%~dp0c\bin;%PATH% 6 | 7 | set TERM= 8 | set HOME=%~dp0data 9 | set PLPLOT_LIB=%~dp0c\share\plplot 10 | set PLPLOT_DRV_DIR=%~dp0c\share\plplot 11 | set PERL_JSON_BACKEND= 12 | set PERL_YAML_BACKEND= 13 | set PERL5LIB= 14 | set PERL5OPT= 15 | set PERL_MM_OPT= 16 | set PERL_MB_OPT= 17 | 18 | if "%1" == "/SETENV" goto END 19 | 20 | if "%1" == "" goto INTERACTIVE 21 | 22 | REM For non-interactive invocations of this batch file, run Perl with all 23 | REM provided argument and return its exit code. Clear the ERRORLEVEL 24 | REM variable in our local environment to ensure our "exit /b" statement 25 | REM returns the error level from Perl even if there is already an ERRORLEVEL 26 | REM variable in the environment: 27 | REM https://devblogs.microsoft.com/oldnewthing/20080926-00 28 | set ERRORLEVEL= 29 | "%~dp0perl\bin\perl.exe" %* 30 | exit /b %ERRORLEVEL% 31 | 32 | :INTERACTIVE 33 | echo ---------------------------------------------- 34 | echo Welcome to Strawberry Perl PDL Edition! 35 | echo * URL - https://strawberryperl.com + http://pdl.perl.org 36 | echo * to launch perl script run: perl c:\my\scripts\pdl-test.pl 37 | echo * to start PDL console run: pdl2 38 | echo * to update PDL run: cpanm PDL 39 | echo * to install extra module run: cpanm PDL::Any::Module 40 | echo or if previous fails: ppm PDL::Any::Module 41 | echo * or you can use dev tools like: gcc, g++, gfortran, gmake 42 | echo * see README.TXT for more info 43 | echo ---------------------------------------------- 44 | perl -MConfig -MPDL -e "print(qq{Perl executable: $^X\nPerl version : $^V / $Config{archname}\nPDL version : $PDL::VERSION\n\n})" 2>nul 45 | if ERRORLEVEL==1 echo FATAL ERROR: 'perl' does not work; check if your strawberry pack is complete! 46 | 47 | cmd /K 48 | 49 | :ENDLOCAL 50 | endlocal 51 | 52 | :END 53 | -------------------------------------------------------------------------------- /share/relocation/perl1.reloc.txt.initial: -------------------------------------------------------------------------------- 1 | perl\lib\Config.pm:doublebackslash 2 | perl\lib\Config_heavy.pl:backslash 3 | perl\lib\CORE\config.h:doublebackslash 4 | perl\lib\CPAN\Config.pm:doublebackslash 5 | perl\lib\CPAN\Config.pm:url 6 | perl\lib\perllocal.pod:backslash 7 | perl\bin\cpandb:backslash 8 | perl\vendor\lib\ppm.xml:backslash 9 | perl\lib\CPANPLUS\Config.pm:backslash 10 | -------------------------------------------------------------------------------- /share/relocation/perl2.reloc.txt.initial: -------------------------------------------------------------------------------- 1 | README.txt:backslash 2 | -------------------------------------------------------------------------------- /share/relocation/relocation.txt.initial: -------------------------------------------------------------------------------- 1 | perl\lib\Config.pm:doublebackslash 2 | perl\lib\Config_heavy.pl:backslash 3 | perl\lib\CORE\config.h:doublebackslash 4 | perl\lib\CPAN\Config.pm:doublebackslash 5 | perl\lib\CPAN\Config.pm:url 6 | perl\lib\perllocal.pod:backslash 7 | perl\bin\cpandb:backslash 8 | perl\vendor\lib\ppm.xml:backslash 9 | perl\lib\CPANPLUS\Config.pm:backslash 10 | README.txt:backslash 11 | -------------------------------------------------------------------------------- /share/utils/CPANPLUS_list_build_cache.pl: -------------------------------------------------------------------------------- 1 | use v5.18; 2 | use warnings; 3 | 4 | use CPANPLUS::Backend; 5 | use File::Glob qw(bsd_glob); 6 | use File::Basename; 7 | use Data::Dumper; 8 | use Storable qw(nstore); 9 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); 10 | 11 | warn ">> started '$0'\n"; 12 | 13 | # parse commandline options 14 | my @spec = ( 15 | 'out_dumper=s', 16 | 'out_nstore=s', 17 | ); 18 | GetOptions(\my %opts, @spec) or die ">> invalid option(s)"; 19 | 20 | # set defaults 21 | $opts{out_dumper} //= 'build-cache-list.dumper.txt'; 22 | $opts{out_nstore} //= 'build-cache-list.nstore.txt'; 23 | 24 | ### SUBROUTINES 25 | 26 | sub save_output { 27 | my ($data, $out_nstore, $out_dumper) = @_; 28 | if ($out_nstore) { 29 | warn ">> storing results via Storable to '$out_nstore'\n"; 30 | nstore($data, $out_nstore) or die ">> store failed";; 31 | } 32 | if ($out_dumper) { 33 | warn ">> storing results via Data::Dumper to '$out_nstore'\n"; 34 | open my $fh, ">", $out_dumper or die ">> open: $!"; 35 | print $fh Dumper($data) or die ">> print: $!"; 36 | close $fh or die ">> close: $!"; 37 | } 38 | } 39 | 40 | ### MAIN 41 | 42 | my $cb = CPANPLUS::Backend->new(); 43 | my $conf = $cb->configure_object(); 44 | my $base = $conf->get_conf('base'); 45 | warn ">> using base='$base'\n"; 46 | my $perl_ver = sprintf "%vd", $^V; 47 | my @dirs = map { basename($_) } grep { -d $_ } bsd_glob("$base/$perl_ver/build/*"); 48 | save_output(\@dirs, $opts{out_nstore}, $opts{out_dumper}); 49 | -------------------------------------------------------------------------------- /share/utils/CPANPLUS_list_distributions.pl: -------------------------------------------------------------------------------- 1 | use v5.18; 2 | use warnings; 3 | 4 | use CPANPLUS::Backend; 5 | use Storable qw(nstore); 6 | use Data::Dumper qw(Dumper); 7 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); 8 | 9 | warn ">> started '$0'\n"; 10 | 11 | # parse commandline options 12 | my @spec = ( 13 | 'url=s', 14 | 'out_dumper=s', 15 | 'out_nstore=s', 16 | 'core!', 17 | ); 18 | GetOptions(\my %opts, @spec) or die ">> invalid option(s)"; 19 | 20 | # set defaults 21 | $opts{url} //= 'http://cpan.strawberryperl.com'; 22 | $opts{out_dumper} //= 'upgrade-list.dumper.txt'; 23 | $opts{out_nstore} //= 'upgrade-list.nstore.txt'; 24 | $opts{core} //= 1; 25 | 26 | ### SUBROUTINES 27 | 28 | sub get_cpanplus_backend { 29 | my %args = @_; 30 | 31 | warn ">> creating CPANPLUS::Backend\n"; 32 | my $cb = CPANPLUS::Backend->new; 33 | my $conf = $cb->configure_object; 34 | 35 | if ($args{url}) { 36 | my $url = $args{url}; 37 | $url = "$url/" unless $url =~ m|/$|; 38 | warn ">> using cpan mirror '$url'\n"; 39 | my ($scheme, $host, $path) = $url =~ m|(.*?)://(.*?)(/.*)|; 40 | $conf->set_conf('hosts', [ {scheme => $scheme, path => $path, host => $host} ]); 41 | } 42 | 43 | return $cb; 44 | } 45 | 46 | sub save_output { 47 | my ($data, $out_nstore, $out_dumper) = @_; 48 | 49 | if ($out_nstore) { 50 | warn ">> storing results via Storable to '$out_nstore'\n"; 51 | nstore($data, $out_nstore) or die ">> store failed";; 52 | } 53 | 54 | if ($out_dumper) { 55 | warn ">> storing results via Data::Dumper to '$out_nstore'\n"; 56 | open my $fh, ">", $out_dumper or die ">> open: $!"; 57 | print $fh Dumper($data) or die ">> print: $!"; 58 | close $fh or die ">> close: $!"; 59 | } 60 | } 61 | 62 | sub modinfo2hash { 63 | my $mod = shift; 64 | return unless $mod && ref $mod eq 'CPANPLUS::Module'; 65 | return { 66 | local_version => $mod->installed_version, 67 | cpan_version => $mod->version, 68 | module => $mod->module, 69 | distribution => $mod->package_name, 70 | cpan_file => $mod->author->cpanid . '/' . $mod->package, 71 | core_module => $mod->module_is_supplied_with_perl_core ? 1 : 0, 72 | }; 73 | } 74 | 75 | sub get_upgrade_list { 76 | my $cb = shift; 77 | die ">> no cpanplus backend" unless $cb; 78 | 79 | # get info about all installed modules 80 | warn ">> loading info about installed modules\n"; 81 | my @all = $cb->installed; 82 | 83 | # select modules that need upgrade 84 | my @to_upgrade = (); 85 | my @trouble_makers = (); 86 | 87 | my %seen; 88 | for my $mod (@all) { 89 | next if $mod->package_is_perl_core; # skip this mod if it's core 90 | next if $mod->module_is_supplied_with_perl_core && !$opts{core}; 91 | next if $seen{$mod->package}; 92 | $seen{$mod->package} = modinfo2hash($mod); 93 | } 94 | 95 | my @uniq; 96 | while (my ($key, $value) = each %seen) { 97 | push @uniq, $value; 98 | } 99 | @uniq = sort { lc($a->{distribution}) cmp lc($b->{distribution}) } @uniq; 100 | warn ">> count of uniq dists = ", scalar(@uniq), "\n"; 101 | warn sprintf(">> * %-25s %s\n", $_->{distribution}, $_->{cpan_file}) for (@uniq); 102 | 103 | return \@uniq; 104 | } 105 | 106 | ### MAIN 107 | 108 | my $cb = get_cpanplus_backend(url => $opts{url}); 109 | my $data = get_upgrade_list($cb); 110 | save_output($data, $opts{out_nstore}, $opts{out_dumper}); 111 | 112 | warn ">> done!\n"; 113 | exit 0; 114 | -------------------------------------------------------------------------------- /share/utils/CPANPLUS_uninstall_module.pl: -------------------------------------------------------------------------------- 1 | use v5.18; 2 | use warnings; 3 | 4 | use CPANPLUS::Backend; 5 | use Storable qw(nstore); 6 | use Data::Dumper qw(Dumper); 7 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); 8 | use File::Spec::Functions qw(catfile); 9 | 10 | warn ">> started '$0'\n"; 11 | 12 | # parse commandline options 13 | my @spec = ( 14 | 'module=s@', 15 | 'url=s', 16 | 'verbose=i', 17 | ); 18 | GetOptions(\my %opts, @spec) or die ">> invalid option(s)"; 19 | 20 | # defaults 21 | $opts{module} //= []; 22 | $opts{url} //= 'http://cpan.strawberryperl.com'; 23 | $opts{verbose} //= 1; 24 | $opts{interactivity} //= 0; # 1 = allow_build_interactivity 25 | 26 | ### SUBROUTINES 27 | 28 | sub get_cpanplus_backend { 29 | my %args = @_; 30 | 31 | warn ">> creating CPANPLUS::Backend\n"; 32 | my $cb = CPANPLUS::Backend->new(); 33 | my $conf = $cb->configure_object(); 34 | 35 | for (keys %args) { 36 | if ($_ eq 'url' && $args{$_}) { 37 | my $url = $args{url}; 38 | $url = "$url/" unless $url =~ m|/$|; 39 | warn ">> using cpan mirror '$url'\n"; 40 | my ($scheme, $host, $path) = $url =~ m|(.*?)://(.*?)(/.*)|; 41 | $conf->set_conf('hosts', [ {scheme => $scheme, path => $path, host => $host} ]); 42 | } 43 | else { 44 | warn">> set_conf('$_' => '$args{$_}')\n"; 45 | $conf->set_conf($_ => $args{$_}); 46 | } 47 | } 48 | 49 | return $cb; 50 | } 51 | 52 | sub save_output { 53 | my ($data, $out_nstore, $out_dumper) = @_; 54 | 55 | if ($out_nstore) { 56 | warn ">> storing results via Storable to '$out_nstore'\n"; 57 | nstore($data, $out_nstore) or die ">> store failed";; 58 | } 59 | 60 | if ($out_dumper) { 61 | warn ">> storing results via Data::Dumper to '$out_nstore'\n"; 62 | open my $fh, ">", $out_dumper or die ">> open: $!"; 63 | print $fh Dumper($data) or die ">> print: $!"; 64 | close $fh or die ">> close: $!"; 65 | } 66 | } 67 | 68 | ### MAIN 69 | 70 | die ">> no modules specified" unless scalar(@{$opts{module}}); 71 | 72 | my %cfg = (verbose => $opts{verbose}); 73 | 74 | my $success = 1; 75 | my $cb = get_cpanplus_backend( url => $opts{url}, %cfg ); 76 | 77 | for my $name (@{$opts{module}}) { 78 | warn ">> Uninstalling '$name'\n"; 79 | warn ">> ########### PARSE\n"; 80 | my $mod_obj = $cb->parse_module(module => $name); 81 | 82 | warn ">> ########### UNINSTALL\n"; 83 | my $rv = $mod_obj->uninstall(type => 'all'); 84 | warn ">> result:uninstall=" . ($rv // 'undef') . "\n"; 85 | $success = 0 unless $rv; 86 | } 87 | 88 | die ">> FAILUE\n" unless $success; 89 | 90 | warn ">> done!\n"; 91 | exit 0; 92 | -------------------------------------------------------------------------------- /share/utils/CPAN_get_upgrade_list.pl: -------------------------------------------------------------------------------- 1 | use v5.18; 2 | use warnings; 3 | 4 | use CPAN; 5 | use Storable qw(nstore); 6 | use Data::Dumper qw(Dumper); 7 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); 8 | require Config; 9 | 10 | warn ">> started '$0'\n"; 11 | 12 | # parse commandline options 13 | my @spec = ( 14 | 'url=s', 15 | 'out_dumper=s', 16 | 'out_nstore=s', 17 | ); 18 | GetOptions(\my %opts, @spec) or die ">> invalid option(s)"; 19 | 20 | my $out_nstore = $opts{out_nstore} // 'upgrade-list.nstore.txt'; 21 | my $out_dumper = $opts{out_dumper} // 'upgrade-list.dumper.txt'; 22 | my $url = $opts{url} // 'http://cpan.strawberryperl.com'; 23 | 24 | warn Dumper($url); 25 | CPAN::HandleConfig->load unless $CPAN::Config_loaded++; 26 | $CPAN::Config->{'urllist'} = [ $url ]; 27 | 28 | warn ">> gonna call CPAN::Shell\n"; 29 | CPAN::Shell->reload('index'); 30 | my @modulelist = CPAN::Shell->expand('Module', '/./'); 31 | 32 | # Schwartzian transform from CPAN.pm. 33 | my @expand = map { 34 | $_->[1] 35 | } sort { 36 | $b->[0] <=> $a->[0] 37 | || 38 | $a->[1]{ID} cmp $b->[1]{ID}, 39 | } map { 40 | [$_->_is_representative_module, 41 | $_ 42 | ] 43 | } @modulelist; 44 | 45 | my $vendorlib = $Config::Config{'installvendorlib'}; 46 | 47 | my (%seen, %need); 48 | my @toget = (); 49 | for my $module (@expand) { 50 | my $file = $module->cpan_file; 51 | 52 | # If there's no file to download, skip it. 53 | next unless defined $file; 54 | 55 | $file =~ s{^./../}{}; 56 | my $latest = $module->cpan_version; 57 | my $inst_file = $module->inst_file; 58 | my $have; 59 | my $next_MODULE; 60 | my $error; 61 | { 62 | local $@; 63 | $error = $@ || 'Error' unless eval { 64 | # version.pm involved! 65 | if ($inst_file and $vendorlib ne substr($inst_file, 0, length($vendorlib))) { 66 | $have = $module->inst_version; 67 | local $^W = 0; 68 | if (CPAN::Version->vgt($latest, $have) && !($have eq "undef" && $latest ne "undef")) { 69 | #warn "UPGRADE NEEDED: '$inst_file' have=$have latest=$latest\n" if "$have" ne "$latest"; 70 | } else { 71 | ++$next_MODULE; 72 | } 73 | # to be pedantic we should probably say: 74 | # && !($have eq "undef" && $latest ne "undef" && $latest gt ""); 75 | # to catch the case where CPAN has a version 0 and we have a version undef 76 | } else { 77 | ++$next_MODULE; 78 | } 79 | 1; 80 | }; 81 | } 82 | next if $error; 83 | 84 | next if $next_MODULE; 85 | 86 | $seen{$file} ||= 0; 87 | next if $seen{$file}++; 88 | 89 | push @toget, { 90 | distribution => $module->distribution->base_id, 91 | cpan_file => $module->cpan_file, 92 | cpan_version => $module->cpan_version, 93 | local_version => $module->inst_version, 94 | }; 95 | $need{$module->id}++; 96 | } 97 | 98 | ##@toget = sort { $a->distribution cmp $b->distribution } @toget; 99 | my $rv = { to_upgrade => \@toget, method => 'CPAN', timestamp => time }; 100 | 101 | if (scalar(@toget) == 0) { 102 | warn ">> All modules are up to date\n"; 103 | } 104 | else { 105 | warn ">> ", scalar(@toget), " module(s) need upgrade\n"; 106 | warn ">> * $_->{cpan_file}\n" for (@toget); 107 | } 108 | 109 | if ($out_nstore) { 110 | #store via Storable 111 | nstore $rv, $out_nstore; 112 | } 113 | 114 | if ($out_dumper) { 115 | #store via Data::Dumper 116 | open my $fh, ">", $out_dumper or die ">> open: $!"; 117 | print $fh Dumper($rv); 118 | close $fh; 119 | } 120 | 121 | warn ">> Done!\n"; 122 | exit 0; 123 | -------------------------------------------------------------------------------- /share/utils/CPAN_install_module.pl: -------------------------------------------------------------------------------- 1 | use v5.18; 2 | use warnings; 3 | 4 | use CPAN; 5 | use File::Spec::Functions qw(catfile); 6 | use Getopt::Long qw(:config gnu_getopt no_ignore_case); 7 | 8 | my @spec = ( 9 | 'module=s@', 10 | 'url=s', 11 | 'dp_dir=s', 12 | 'install_to=s', 13 | 'dist_file=s', 14 | 'output_dir=s', 15 | 'use_sqlite=i', 16 | 'run_tests=i', 17 | 'follow_deps=i', 18 | 'internet=i', 19 | 'assume=i', 20 | ); 21 | GetOptions(\my %opts, @spec) or die ">> invalid option(s)"; 22 | 23 | #defaults 24 | $opts{module} //= []; 25 | $opts{install_to} //= ''; 26 | $opts{url} //= 'http://cpan.strawberryperl.com'; 27 | $opts{run_tests} //= 1, 28 | $opts{follow_deps} //= 1; 29 | 30 | $opts{internet} //= 1; 31 | $opts{assume} //= 0; 32 | $opts{dp_dir} //= 'c:\temp\xxx'; 33 | $opts{dist_file} //= 'c:\temp\xxx.dist.file.txt'; 34 | $opts{output_dir} //= 'c:\temp\xxx'; 35 | $opts{use_sqlite} //= 0; 36 | $opts{force} //= 0; 37 | 38 | my $module_list = ''; 39 | 40 | CPAN::HandleConfig->load unless $CPAN::Config_loaded++; 41 | $CPAN::Config->{'urllist'} = [ $opts{url} ]; 42 | $CPAN::Config->{'use_sqlite'} = $opts{use_sqlite}; 43 | $CPAN::Config->{'prefs_dir'} = $opts{dp_dir}; 44 | $CPAN::Config->{'patches_dir'} = $opts{dp_dir}; 45 | if ($opts{follow_deps}) { 46 | $CPAN::Config->{'prerequisites_policy'} = q[follow]; 47 | } 48 | else { 49 | $CPAN::Config->{'prerequisites_policy'} = q[ignore]; 50 | } 51 | $CPAN::Config->{'connect_to_internet_ok'} = $opts{internet}; 52 | $CPAN::Config->{'ftp'} = q[]; 53 | if ($opts{install_to} =~ /(perl|site|vendor)/) { 54 | my $module_build_dirs = $opts{install_to}; 55 | $module_build_dirs = 'core' if $module_build_dirs eq 'perl'; 56 | $CPAN::Config->{'makepl_arg'} = "INSTALLDIRS=$opts{install_to}"; 57 | $CPAN::Config->{'make_install_arg'} = "INSTALLDIRS=$opts{install_to}"; 58 | $CPAN::Config->{'mbuildpl_arg'} = "--installdirs $module_build_dirs"; 59 | $CPAN::Config->{'mbuild_install_arg'} = "--installdirs $module_build_dirs"; 60 | } 61 | open(my $cpan_fh, '>', $opts{dist_file}) or die ">> open: $!"; 62 | MODULE: 63 | foreach my $name (@{$opts{module}}) { 64 | warn ">> Installing $name from CPAN...\n"; 65 | my $module = CPAN::Shell->expandany($name) or die ">> CPAN.pm couldn't locate $name"; 66 | 67 | if ( $module->uptodate() ) { 68 | unlink $opts{dist_file}; 69 | warn ">> $name is up to date\n"; 70 | say $cpan_fh "$name;;;" or die ">> say: $!"; 71 | next MODULE; 72 | } 73 | 74 | my $error; 75 | { 76 | local $@; 77 | $error = $@ || 'Error' unless eval { 78 | if ($opts{run_tests} == 1) { 79 | CPAN::Shell->install($name); 80 | } 81 | elsif ($opts{run_tests} == 2) { 82 | CPAN::Shell->force('install', $name); 83 | } 84 | elsif ($opts{run_tests} == 0) { 85 | CPAN::Shell->notest('install', $name); 86 | } 87 | else { 88 | die "invalid run_tests"; 89 | } 90 | 1; 91 | }; 92 | } 93 | #XXX-FIXME probably not needed 94 | #my $id = $module->distribution()->pretty_id(); 95 | #my $time = time; 96 | #my $module_id = $name; 97 | #$module_id =~ s{::}{_}gmsx; 98 | #my $filename = catfile('$output_dir', "$time.$module_id.output.txt"); 99 | #write_file($filename, $output); 100 | #die "Installation of $name failed: $error\n" if $error; 101 | #say $cpan_fh "$name;$id;$filename;" or die "say: $!"; 102 | 103 | warn ">> ERROR=$error" if $error; 104 | warn ">> Completed install of '$name'\n"; 105 | die ">> Installation of '$name' appears to have failed\n" unless $opts{assume} or $module->uptodate(); 106 | } 107 | close $cpan_fh or die ">> close: $!"; 108 | exit 0; 109 | -------------------------------------------------------------------------------- /t/001_compile.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Test::More tests => 1; 5 | 6 | diag( "Testing Perl::Dist::Strawberry $Perl::Dist::Strawberry::VERSION, Perl $], $^X" ); 7 | 8 | my $ok; 9 | END { BAIL_OUT "Could not load all modules" unless $ok } 10 | 11 | use Perl::Dist::Strawberry; 12 | use Perl::Dist::Strawberry::Step; 13 | use Perl::Dist::Strawberry::Step::BinaryToolsAndLibs; 14 | use Perl::Dist::Strawberry::Step::CreateReleaseNotes; 15 | use Perl::Dist::Strawberry::Step::CreateRelocationFile; 16 | use Perl::Dist::Strawberry::Step::FilesAndDirs; 17 | use Perl::Dist::Strawberry::Step::InstallModules; 18 | use Perl::Dist::Strawberry::Step::InstallPerlCore; 19 | use Perl::Dist::Strawberry::Step::OutputLogZIP; 20 | use Perl::Dist::Strawberry::Step::OutputMSM_MSI; 21 | use Perl::Dist::Strawberry::Step::OutputPortableZIP; 22 | use Perl::Dist::Strawberry::Step::OutputZIP; 23 | use Perl::Dist::Strawberry::Step::SetupPortablePerl; 24 | use Perl::Dist::Strawberry::Step::UpgradeCpanModules; 25 | 26 | ok 1, 'All modules loaded successfully'; 27 | $ok = 1; 28 | 29 | -------------------------------------------------------------------------------- /t/002_all_pm.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Test::More tests => 1; 5 | use File::Find qw(find); 6 | 7 | my @files; 8 | find({ wanted=>sub { push @files, $_ if /\.pm$/ }, no_chdir=>1 }, 'lib'); 9 | 10 | for my $m (sort @files) { 11 | $m =~ s|[\\/]|::|g; 12 | $m =~ s|^lib::||; 13 | $m =~ s|\.pm$||; 14 | eval "use $m; 1;" or die "ERROR: 'use $m' failed"; 15 | } 16 | 17 | ok 1, 'all done'; 18 | -------------------------------------------------------------------------------- /xt/common_mistakes.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | # Test that all modules have no common misspellings. 4 | 5 | use strict; 6 | use Test::More; 7 | use English qw(-no_match_vars); 8 | 9 | BEGIN { 10 | $OUTPUT_AUTOFLUSH = 1; 11 | $WARNING = 1; 12 | } 13 | 14 | my @MODULES = ( 15 | 'Pod::Spell::CommonMistakes 0.01', 16 | 'Test::Pod::Spelling::CommonMistakes 0.01', 17 | ); 18 | 19 | # Load the testing modules 20 | foreach my $MODULE ( @MODULES ) { 21 | eval "use $MODULE"; 22 | if ( $EVAL_ERROR ) { 23 | BAIL_OUT( "Failed to load required release-testing module $MODULE" ); 24 | } 25 | } 26 | 27 | all_pod_files_ok(); 28 | -------------------------------------------------------------------------------- /xt/fixme.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | # Test that all modules have a version number. 4 | 5 | use strict; 6 | use Test::More; 7 | use English qw(-no_match_vars); 8 | use File::Spec::Functions qw(catdir); 9 | 10 | BEGIN { 11 | $OUTPUT_AUTOFLUSH = 1; 12 | $WARNING = 1; 13 | } 14 | 15 | my @MODULES = ( 16 | 'Test::Fixme 0.04', 17 | ); 18 | 19 | # Load the testing modules 20 | foreach my $MODULE ( @MODULES ) { 21 | eval "use $MODULE"; 22 | if ( $EVAL_ERROR ) { 23 | BAIL_OUT( "Failed to load required release-testing module $MODULE" ); 24 | } 25 | } 26 | 27 | run_tests( 28 | where => catdir(qw(blib lib Perl)), # where to find files to check 29 | match => 'TO' . 'DO', # what to check for 30 | ); 31 | -------------------------------------------------------------------------------- /xt/meta_json.t: -------------------------------------------------------------------------------- 1 | #!perl 2 | 3 | # Test that our META.yml file matches the specification 4 | 5 | use strict; 6 | use Test::More; 7 | 8 | BEGIN { 9 | BAIL_OUT ('Perl version unacceptably old.') if ($] < 5.008001); 10 | use English qw(-no_match_vars); 11 | $OUTPUT_AUTOFLUSH = 1; 12 | $WARNING = 1; 13 | } 14 | 15 | my @MODULES = ( 16 | 'Parse::CPAN::Meta 1.4401', 17 | 'Test::CPAN::Meta::JSON 0.10', 18 | ); 19 | 20 | # Load the testing modules 21 | foreach my $MODULE ( @MODULES ) { 22 | eval "use $MODULE"; 23 | if ( $EVAL_ERROR ) { 24 | BAIL_OUT( "Failed to load required release-testing module $MODULE" ) 25 | } 26 | } 27 | 28 | meta_json_ok(); 29 | 30 | --------------------------------------------------------------------------------