summaryrefslogtreecommitdiffstats
path: root/util/pl/unix.pl
diff options
context:
space:
mode:
Diffstat (limited to 'util/pl/unix.pl')
-rw-r--r--util/pl/unix.pl279
1 files changed, 20 insertions, 259 deletions
diff --git a/util/pl/unix.pl b/util/pl/unix.pl
index 40bbe0d842..528d4d0e4f 100644
--- a/util/pl/unix.pl
+++ b/util/pl/unix.pl
@@ -186,267 +186,28 @@ sub which
}
}
-sub fixtests
- {
- my ($str, $tests) = @_;
-
- foreach my $t (keys %$tests)
- {
- $str =~ s/(\.\/)?\$\($t\)/\$(TEST_D)\/$tests->{$t}/g;
- }
-
- return $str;
- }
-
-sub fixdeps
- {
- my ($str, $fakes) = @_;
-
- my @t = split(/\s+/, $str);
- $str = '';
- foreach my $t (@t)
- {
- $str .= ' ' if $str ne '';
- if (exists($fakes->{$t}))
- {
- $str .= $fakes->{$t};
- next;
- }
- if ($t =~ /^[^\/]+$/)
- {
- $str .= '$(TEST_D)/' . $t;
- }
- else
- {
- $str .= $t;
- }
- }
-
- return $str;
- }
-
-sub fixrules
- {
- my ($str) = @_;
-
- # Compatible with -j...
-# $str =~ s/^(\s+@?)/$1cd \$(TEST_D) && /;
-# return $str;
-
- # Compatible with not -j.
- my @t = split("\n", $str);
- $str = '';
- my $prev;
- foreach my $t (@t)
- {
- $t =~ s/^\s+//;
- if (!$prev)
- {
- if ($t =~ /^@/)
- {
- $t =~ s/^@/\@cd \$(TEST_D) && /;
- }
- elsif ($t !~ /^\s*#/ && $t !~ /^echo/)
- {
- $t = 'cd $(TEST_D) && ' . $t;
- }
- }
- $str .= "\t$t\n";
- $prev = $t =~/\\$/;
- }
- return $str;
+sub do_rehash_rule {
+ my ($target, $deps) = @_;
+ my $ret = <<"EOF";
+$target: $deps
+ (OPENSSL="`pwd`/util/opensslwrap.sh"; \\
+ OPENSSL_DEBUG_MEMORY=on; \\
+ export OPENSSL OPENSSL_DEBUG_MEMORY; \\
+ \$(PERL) tools/c_rehash certs/demo)
+EOF
+ return $ret
}
+sub do_test_rule {
+ my ($target, $deps, $test_cmd) = @_;
+ my $ret = <<"EOF";
+$target: $deps force.$target
+ TOP=. BIN_D=\$(BIN_D) TEST_D=\$(TEST_D) \\
+ PERL=\$(PERL) \$(PERL) test/$test_cmd
+force.$target:
-sub copy_scripts
- {
- my ($sed, $src, @targets) = @_;
-
- my $s = '';
- foreach my $t (@targets)
- {
- # Copy first so we get file modes...
- $s .= "\$(TEST_D)/$t: \$(SRC_D)/$src/$t\n\tcp \$(SRC_D)/$src/$t \$(TEST_D)/$t\n";
- $s .= "\tsed -e 's/\\.\\.\\/apps/..\\/\$(OUT_D)/' -e 's/\\.\\.\\/util/..\\/\$(TEST_D)/' < \$(SRC_D)/$src/$t > \$(TEST_D)/$t\n" if $sed;
- $s .= "\n";
- }
- return $s;
- }
-
-sub get_tests
- {
- my ($makefile) = @_;
-
- open(M, $makefile) || die "Can't open $makefile: $!";
- my %targets;
- my %deps;
- my %tests;
- my %alltests;
- my %fakes;
- while (my $line = <M>)
- {
- chomp $line;
- while ($line =~ /^(.*)\\$/)
- {
- $line = $1 . <M>;
- }
-
- if ($line =~ /^alltests:(.*)$/)
- {
- my @t = split(/\s+/, $1);
- foreach my $t (@t)
- {
- $targets{$t} = '';
- $alltests{$t} = undef;
- }
- }
-
- if (($line =~ /^(?<t>\S+):(?<d>.*)$/ && exists $targets{$1})
- || $line =~ /^(?<t>test_(ss|gen) .*):(?<d>.*)/)
- {
- my $t = $+{t};
- my $d = $+{d};
- # If there are multiple targets stupid FreeBSD make runs the
- # rules once for each dependency that matches one of the
- # targets. Running the same rule twice concurrently causes
- # breakage, so replace with a fake target.
- if ($t =~ /\s/)
- {
- ++$fake;
- my @targets = split /\s+/, $t;
- $t = "_fake$fake";
- foreach my $f (@targets)
- {
- $fakes{$f} = $t;
- }
- }
- $deps{$t} = $d;
- $deps{$t} =~ s/#.*$//;
- for (;;)
- {
- $line = <M>;
- chomp $line;
- last if $line eq '';
- $targets{$t} .= "$line\n";
- }
- next;
- }
-
- if ($line =~ /^(\S+TEST)=\s*(\S+)$/)
- {
- $tests{$1} = $2;
- next;
- }
- }
-
- delete $alltests{test_jpake} if $no_jpake;
- delete $targets{test_ige} if $no_ige;
- delete $alltests{test_md2} if $no_md2;
- delete $alltests{test_rc5} if $no_rc5;
-
- my $tests;
- foreach my $t (keys %tests)
- {
- $tests .= "$t = $tests{$t}\n";
- }
-
- my $each;
- foreach my $t (keys %targets)
- {
- next if $t eq '';
-
- my $d = $deps{$t};
- $d =~ s/\.\.\/apps/\$(BIN_D)/g;
- $d =~ s/\.\.\/util/\$(TEST_D)/g;
- $d = fixtests($d, \%tests);
- $d = fixdeps($d, \%fakes);
-
- my $r = $targets{$t};
- $r =~ s/\.\.\/apps/..\/\$(BIN_D)/g;
- $r =~ s/\.\.\/util/..\/\$(TEST_D)/g;
- $r =~ s/\.\.\/(\S+)/\$(SRC_D)\/$1/g;
- $r = fixrules($r);
-
- next if $r eq '';
-
- $t =~ s/\s+/ \$(TEST_D)\//g;
-
- $each .= "$t: test_scripts $d\n\t\@echo '$t test started'\n$r\t\@echo '$t test done'\n\n";
- }
-
- # FIXME: Might be a clever way to figure out what needs copying
- my @copies = ( 'bctest',
- 'testgen',
- 'cms-test.pl',
- 'tx509',
- 'test.cnf',
- 'testenc',
- 'tocsp',
- 'testca',
- 'CAss.cnf',
- 'testtsa',
- 'CAtsa.cnf',
- 'Uss.cnf',
- 'P1ss.cnf',
- 'P2ss.cnf',
- 'tcrl',
- 'tsid',
- 'treq',
- 'tpkcs7',
- 'tpkcs7d',
- 'tkey',
- 'testcrl.pem',
- 'testx509.pem',
- 'v3-cert1.pem',
- 'v3-cert2.pem',
- 'testreq2.pem',
- 'testp7.pem',
- 'pkcs7-1.pem',
- 'trsa',
- 'testdsa.pem',
- 'testdsapub.pem',
- 'testec-p256.pem',
- 'testecpub-p256.pem',
- 'testrsa.pem',
- 'testrsapub.pem',
- 'testsid.pem',
- 'testss',
- 'testssl',
- 'testsslproxy',
- 'serverinfo.pem',
- );
- my $copies = copy_scripts(1, 'test', @copies);
- $copies .= copy_scripts(0, 'test', ('smcont.txt', 'evptests.txt'));
-
-
- my @utils = ( 'shlib_wrap.sh',
- 'opensslwrap.sh',
- );
- $copies .= copy_scripts(1, 'util', @utils);
-
- my @apps = ( 'CA.pl',
- 'openssl.cnf',
- 'server2.pem',
- );
- $copies .= copy_scripts(1, 'apps', @apps);
-
- $scripts = "test_scripts: \$(TEST_D)/CA.pl \$(TEST_D)/opensslwrap.sh \$(TEST_D)/openssl.cnf \$(TEST_D)/shlib_wrap.sh ocsp smime\n";
- $scripts .= "\nocsp:\n\tcp -R test/ocsp-tests \$(TEST_D)\n";
- $scripts .= "\smime:\n\tcp -R test/smime-certs \$(TEST_D)\n";
-
- my $all = 'test:';
- foreach my $t (keys %alltests)
- {
- if (exists($fakes{$t}))
- {
- $all .= " $fakes{$t}";
- }
- else
- {
- $all .= " $t";
- }
- }
+EOF
+ return $ret;
+}
- return "$scripts\n$copies\n$tests\n$all\n\n$each";
- }
1;