3636 broken => [qw(
3737 Archive::Zip@1.65 DBD::mysql@4.050
3838 ) ],
39- extra => [qw( JSON::XS Starman Imager::File::WEBP Plack::Middleware::ReverseProxy Devel::CheckLib ) ],
40- addons => [qw(
39+ # breaking EV, hence AnyEvent
40+ temporary => [qw( ExtUtils::ParseXS@3.51 ) ],
41+ extra => [qw( JSON::XS Starman Imager::File::WEBP Plack::Middleware::ReverseProxy Devel::CheckLib ) ],
42+ addons => [qw(
4143 AnyEvent::FTP::Server Class::Method::Modifiers Capture::Tiny Moo File::chdir
4244 Net::LDAP Linux::Pid Data::Section::Simple
4345 ) ],
7476 broken => [qw(
7577 Archive::Zip@1.65 DBD::mysql@4.050
7678 ) ],
77- extra => [qw( JSON::XS Starman Imager::File::WEBP Plack::Middleware::ReverseProxy Devel::CheckLib ) ],
78- addons => [qw(
79+ # breaking EV, hence AnyEvent
80+ temporary => [qw( ExtUtils::ParseXS@3.51 ) ],
81+ extra => [qw( JSON::XS Starman Imager::File::WEBP Plack::Middleware::ReverseProxy Devel::CheckLib ) ],
82+ addons => [qw(
7983 AnyEvent::FTP::Server Class::Method::Modifiers Capture::Tiny Moo File::chdir
8084 Net::LDAP Linux::Pid Data::Section::Simple
8185 ) ],
185189 base => ' centos' ,
186190 yum => {
187191 _replace => {
188- ' mysql' => ' community-mysql ' ,
189- ' mysql-server' => ' community-mysql-server ' ,
190- ' mysql-devel' => ' community-mysql-devel ' ,
192+ ' mysql' => ' ' ,
193+ ' mysql-server' => ' ' ,
194+ ' mysql-devel' => ' ' ,
191195 ' procps' => ' perl-Unix-Process' ,
192196 ' phpunit' => ' ' ,
193197 },
198202 # https://github.com/DCIT/perl-CryptX/issues/118
199203 no_test => [qw( CryptX App::Prove::Plugin::MySQLPool ) ],
200204 },
201- remove_from_cpanfile => [qw( YAML::Syck ) ],
202- patch => [' Test-mysqld-1.0030' , ' Crypt-DES-2.07' , ' Data-MessagePack-Stream-1.05' ],
203- make_dummy_cert => ' /usr/bin' ,
204- make => {
205+ remove_from_cpanfile => [qw( YAML::Syck ) ],
206+ patch => [' Test-mysqld-1.0030' , ' Crypt-DES-2.07' , ' Data-MessagePack-Stream-1.05' ],
207+ make_dummy_cert => ' /usr/bin' ,
208+ create_make_dummy_cert => 1,
209+ make => {
205210 # package is broken for unknown reason
206211 GraphicsMagick => ' 1.3.43' ,
207212 },
213+ repo => {
214+ mysql84 => [qw( mysql-community-server mysql-community-client mysql-community-libs-compat mysql-community-libs mysql-community-devel) ],
215+ },
216+ mysql84 => {
217+ # taken from https://dev.mysql.com/downloads/repo/yum/
218+ rpm => ' https://dev.mysql.com/get/mysql84-community-release-fc42-1.noarch.rpm' ,
219+ enable => ' mysql-8.4-lts-community' ,
220+ # enable => 'mysql-innovation-community',
221+ no_weak_deps => 1,
222+ fix_release_version => {
223+ version => 42,
224+ repo => ' mysql-community.repo' ,
225+ },
226+ },
208227 installer => ' dnf' ,
209- setcap => 1,
210228 phpunit => 11,
211229 nogpgcheck => 1,
212230 mysql_require_secure_transport => 1,
213231 },
232+ fedora42 => {
233+ from => ' fedora:42' ,
234+ base => ' centos' ,
235+ yum => {
236+ _replace => {
237+ ' mysql' => ' ' ,
238+ ' mysql-server' => ' ' ,
239+ ' mysql-devel' => ' ' ,
240+ ' procps' => ' perl-Unix-Process' ,
241+ ' phpunit' => ' ' ,
242+ },
243+ base => [qw( distribution-gpg-keys glibc-langpack-en glibc-langpack-ja xz ) ],
244+ images => [qw( libomp-devel ) ],
245+ },
246+ cpan => {
247+ # https://github.com/DCIT/perl-CryptX/issues/118
248+ no_test => [qw( CryptX App::Prove::Plugin::MySQLPool ) ],
249+ },
250+ remove_from_cpanfile => [qw( YAML::Syck ) ],
251+ make_dummy_cert => ' /usr/bin' ,
252+ make => {
253+ # package is broken for unknown reason
254+ GraphicsMagick => ' 1.3.43' ,
255+ },
256+ repo => {
257+ mysql84 => [qw( mysql-community-server mysql-community-client mysql-community-libs-compat mysql-community-libs mysql-community-devel) ],
258+ },
259+ mysql84 => {
260+ # taken from https://dev.mysql.com/downloads/repo/yum/
261+ rpm => ' https://dev.mysql.com/get/mysql84-community-release-fc42-1.noarch.rpm' ,
262+ enable => ' mysql-8.4-lts-community' ,
263+ # enable => 'mysql-innovation-community',
264+ no_weak_deps => 1,
265+ },
266+ patch => [' Test-mysqld-1.0030' , ' Crypt-DES-2.07' ],
267+ installer => ' dnf' ,
268+ phpunit => 11,
269+ use_ipv4 => 1,
270+ },
214271 fedora41 => {
215272 from => ' fedora:41' ,
216273 base => ' centos' ,
355412 setcap => 1,
356413 phpunit => 9,
357414 },
358- centos6 => {
359- from => ' centos:6' ,
360- base => ' centos' ,
361- yum => {
362- _replace => {
363- ' php-mysqlnd' => ' php-mysql' ,
364- ' GraphicsMagick' => ' ' ,
365- ' GraphicsMagick-perl' => ' ' ,
366- ' phpunit' => ' ' ,
367- ' libwebp-devel' => ' ' ,
368- ' icc-profiles-openicc' => ' ' ,
369- ' ruby' => ' ' ,
370- ' ruby-devel' => ' ' ,
371- ' clang' => ' ' ,
372- },
373- libs => [qw( perl-XML-Parser ) ],
374- },
375- repo => {
376- epel => [qw( GraphicsMagick-perl GraphicsMagick libwebp-devel clang ) ],
377- },
378- epel => {
379- rpm => ' epel-release' ,
380- },
381- cpan => {
382- no_test => [qw(
383- CryptX
384- ) ],
385- # DBD::SQLite is not broken by itself; SQL::Translator requires newer DBD::SQLite
386- broken => [qw(
387- Test::MockModule@v0.176.0 Data::OptList@0.113 Sub::Exporter@0.990 Data::Section@0.200007 Software::License@0.104004
388- Test::Deep@1.130 Email::MIME::ContentType@1.026 Email::MIME::Encodings@1.315
389- Email::MessageID@1.406 Email::Date::Format@1.005 Email::Simple@2.217 Email::MIME@1.952
390- Data::OptList@0.112 Sub::Exporter@0.987 IO::Socket::IP@0.41 Mixin::Linewise::Readers@0.108 Pod::Eventual@0.094001
391- Pod::Coverage::TrustPod@0.100005
392- Math::GMP@2.22 Mojolicious@8.43 JSON::Validator@4.25
393- Plack@1.0050
394- DBD::SQLite
395- SQL::Translator@1.63
396- HTML::TreeBuilder::LibXML@0.26
397- Mouse@2.5.10
398- ) ],
399- _replace => {
400- ' Imager::File::WEBP' => ' ' , # libwebp for centos6/epel is too old (0.4.3 as of this writing)
401- },
402- },
403- make => {
404- ruby => ' 2.7.8' ,
405- },
406- phpunit => 4,
407- cpanm_opt => ' --no-lwp' ,
408- },
409415 centos7 => {
410416 from => ' centos:7' ,
411417 base => ' centos' ,
9961002 }
9971003 path(" $name /patch/.gitignore" )-> spew(' *' );
9981004 }
1005+ if ($conf -> {create_make_dummy_cert }) {
1006+ my $script = Mojo::Template-> new-> render($templates -> {' make-dummy-cert' });
1007+ path(" $name /patch/make-dummy-cert" )-> spew($script );
1008+ }
9991009}
10001010
10011011sub merge_conf {
@@ -1069,6 +1079,9 @@ sub load_prereqs {
10691079% }
10701080 && apt-get clean && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/* &&\\
10711081 ln -s /usr/sbin/apache2 /usr/sbin/httpd &&\\
1082+ % if ($conf->{create_make_dummy_cert}) {
1083+ cp /root/patch/make-dummy-cert <%= $conf->{make_dummy_cert} %> && chmod +x <%= $conf->{make_dummy_cert} %>/make-dummy-cert &&\\
1084+ % }
10721085% if ($conf->{make}) {
10731086 mkdir src && cd src &&\\
10741087% if ($conf->{make}{perl}) {
@@ -1145,11 +1158,7 @@ sub load_prereqs {
11451158 make-ssl-cert generate-default-snakeoil &&\\
11461159 find /etc/apache2/ | grep '\.conf' | xargs perl -i -pe \\
11471160 's!AllowOverride None!AllowOverride All!g; s!/usr/lib/cgi-bin!/var/www/cgi-bin!g; s!#AddEncoding x-gzip \.gz \.tgz!AddEncoding x-gzip .gz .tgz .svgz!g;' &&\\
1148- perl -e 'my ($inifile) = `php --ini` =~ m!Loaded Configuration File:\s+(/\S+/php.ini)!; \\
1149- my $ini = do { open my $fh, "<", $inifile or die $!; local $/; <$fh> }; \\
1150- $ini =~ s!^;\s*date\.timezone =!date\.timezone = "Asia/Tokyo"!m; \\
1151- open my $fh, ">", $inifile or die $!; print $fh $ini'
1152-
1161+ perl -e 'my ($inifile) = `php --ini` =~ m!Loaded Configuration File:\s+(/\S+/php.ini)!; my $ini = do { open my $fh, "<", $inifile or die $!; local $/; <$fh> }; $ini =~ s!^;\s*date\.timezone =!date\.timezone = "Asia/Tokyo"!m; open my $fh, ">", $inifile or die $!; print $fh $ini'
11531162
11541163ENV LANG=en_US.UTF-8 \\
11551164 LC_ALL=en_US.UTF-8 \\
@@ -1187,7 +1196,7 @@ sub load_prereqs {
11871196 <%= $conf->{installer} // 'yum' %> -y install dnf &&\\
11881197 % $conf->{installer} = 'dnf';
11891198% }
1190- <%= $conf->{installer} // 'yum' %> -y <%= $conf->{nogpgcheck} ? '--nogpgcheck ' : '' %><% if ($conf->{allow_erasing}) { %>--allowerasing<% } %> install\\
1199+ <%= $conf->{installer} // 'yum' %> <%= $conf->{use_ipv4} ? '--setopt=ip_resolve=4 ' : '' %> -y <%= $conf->{nogpgcheck} ? '--nogpgcheck ' : '' %><% if ($conf->{allow_erasing}) { %>--allowerasing<% } %> install\\
11911200% for my $key (sort keys %{ $conf->{yum} }) {
11921201 <%= join " ", @{$conf->{yum}{$key}} %>\\
11931202% }
@@ -1219,7 +1228,10 @@ sub load_prereqs {
12191228 <%= $conf->{installer} // 'yum' %> -y module enable <%= $conf->{$repo}{module}{enable} %> ;\\
12201229 <%= $conf->{installer} // 'yum' %> -y <%= $conf->{nogpgcheck} ? '--nogpgcheck ' : '' %>install\\
12211230% } else {
1222- <%= $conf->{installer} // 'yum' %> -y <%= $conf->{nogpgcheck} ? '--nogpgcheck ' : '' %>--enablerepo=<%= $conf->{$repo}{enable} // $repo %> install\\
1231+ % if (my $fix = $conf->{$repo}{fix_release_version}) {
1232+ sed -i -e 's/\$releasever/<%= $fix->{version} %>/' /etc/yum.repos.d/<%= $fix->{repo} %> &&\
1233+ % }
1234+ <%= $conf->{installer} // 'yum' %> -y <%= $conf->{nogpgcheck} ? '--nogpgcheck ' : '' %>--enablerepo=<%= $conf->{$repo}{enable} // $repo %><%= $conf->{$repo}{no_weak_deps} ? ' --setopt=install_weak_deps=false' : '' %> install\\
12231235% }
12241236 <%= join " ", @{$conf->{repo}{$repo}} %>\\
12251237% if ($conf->{$repo}{enable}) {
@@ -1235,6 +1247,9 @@ sub load_prereqs {
12351247% if ($conf->{use_legacy_policies}) {
12361248 update-crypto-policies --set legacy &&\\
12371249% }
1250+ % if ($conf->{create_make_dummy_cert}) {
1251+ cp /root/patch/make-dummy-cert <%= $conf->{make_dummy_cert} %> && chmod +x <%= $conf->{make_dummy_cert} %>/make-dummy-cert &&\\
1252+ % }
12381253% if ($conf->{make}) {
12391254 mkdir src && cd src &&\\
12401255% if ($conf->{make}{perl}) {
@@ -1334,10 +1349,7 @@ sub load_prereqs {
13341349 perl -i -pe \\
13351350 's!AllowOverride None!AllowOverride All!g; s!#AddEncoding x-gzip \.gz \.tgz!AddEncoding x-gzip .gz .tgz .svgz!g;' \\
13361351 /etc/httpd/conf/httpd.conf &&\\
1337- perl -e 'my ($inifile) = `php --ini` =~ m!Loaded Configuration File:\s+(/\S+/php.ini)!; \\
1338- my $ini = do { open my $fh, "<", $inifile; local $/; <$fh> }; \\
1339- $ini =~ s!^;\s*date\.timezone =!date\.timezone = "Asia/Tokyo"!m; \\
1340- open my $fh, ">", $inifile; print $fh $ini' &&\\
1352+ perl -e 'my ($inifile) = `php --ini` =~ m!Loaded Configuration File:\s+(/\S+/php.ini)!; my $ini = do { open my $fh, "<", $inifile; local $/; <$fh> }; $ini =~ s!^;\s*date\.timezone =!date\.timezone = "Asia/Tokyo"!m; open my $fh, ">", $inifile; print $fh $ini' &&\\
13411353 sed -i -E 's/inet_protocols = all/inet_protocols = ipv4/' /etc/postfix/main.cf
13421354
13431355% # cf https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html
@@ -1475,3 +1487,32 @@ sub load_prereqs {
14751487
14761488exec "$@"
14771489
1490+ @@ make-dummy-cert
1491+ #!/bin/sh
1492+ umask 077
1493+
1494+ answers() {
1495+ echo --
1496+ echo SomeState
1497+ echo SomeCity
1498+ echo SomeOrganization
1499+ echo SomeOrganizationalUnit
1500+ echo localhost.localdomain
1501+ echo root@localhost.localdomain
1502+ }
1503+
1504+ if [ $# -eq 0 ] ; then
1505+ echo $"Usage: `basename $0` filename [...]"
1506+ exit 0
1507+ fi
1508+
1509+ for target in $@ ; do
1510+ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX`
1511+ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX`
1512+ trap "rm -f $PEM1 $PEM2" SIGINT
1513+ answers | /usr/bin/openssl req -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 2> /dev/null
1514+ cat $PEM1 > ${target}
1515+ echo "" >> ${target}
1516+ cat $PEM2 >> ${target}
1517+ rm -f $PEM1 $PEM2
1518+ done
0 commit comments