mirror of
https://github.com/darlinghq/darling-openssl.git
synced 2024-11-23 11:19:50 +00:00
211 lines
4.5 KiB
Perl
Executable File
211 lines
4.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use vars qw(
|
|
$OPENSSL_RELEASE
|
|
$X_EXT_SECT
|
|
$X_EXT_NAME
|
|
$X_POD2MAN
|
|
$MANSUFFIX
|
|
$TMPROOT
|
|
$INSTALL_OWNER
|
|
$INSTALL_GROUP
|
|
%FILE_BLACKLIST
|
|
);
|
|
|
|
$MANSUFFIX = "ssl";
|
|
$TMPROOT = $ENV{'TEMP_FILES_DIR'};
|
|
$INSTALL_OWNER = $ENV{'INSTALL_OWNER'};
|
|
$INSTALL_GROUP = $ENV{'INSTALL_GROUP'};
|
|
%FILE_BLACKLIST = ( );
|
|
|
|
use File::Basename;
|
|
use File::Path;
|
|
|
|
sub make_manpage($$$$$)
|
|
{
|
|
my $manname = shift;
|
|
my $sec = shift;
|
|
my $pfile = shift;
|
|
my $mfile = shift;
|
|
my $mm = shift;
|
|
|
|
qx{$X_POD2MAN -s $sec -c OpenSSL -r $OPENSSL_RELEASE $pfile > "$TMPROOT/$manname"};
|
|
exit 1 if $?;
|
|
|
|
qx{install -o "$INSTALL_OWNER" -g "$INSTALL_GROUP" -m $mm "$TMPROOT/$manname" "$mfile"};
|
|
exit 1 if $?;
|
|
}
|
|
|
|
sub make_link($$)
|
|
{
|
|
my $linkname = shift;
|
|
my $manfile = shift;
|
|
|
|
qx{ln -fs "$linkname" "$manfile"};
|
|
exit 1 if $?;
|
|
}
|
|
|
|
sub do_man($$$)
|
|
{
|
|
my $src = shift;
|
|
my $dst = shift;
|
|
my $sec = shift;
|
|
|
|
my @files = ();
|
|
|
|
chdir($src);
|
|
open(LS, "ls -1 *.pod |");
|
|
while(<LS>)
|
|
{
|
|
chomp;
|
|
push(@files, $_);
|
|
}
|
|
close(LS);
|
|
|
|
printf("Looking for pods: \"%s\":\n", $src);
|
|
foreach my $podfile (@files)
|
|
{
|
|
my ($f_name, $f_path, $f_suffix) = fileparse($podfile, "\.pod");
|
|
my $fn = $f_name.$f_suffix;
|
|
|
|
my @sect_names = qx{perl $X_EXT_NAME < $podfile};
|
|
return -1 if $?;
|
|
my @sect_numbs = qx{perl $X_EXT_SECT $sec < $podfile};
|
|
return -1 if $?;
|
|
|
|
if(defined $FILE_BLACKLIST{uc($f_name)})
|
|
{
|
|
printf("\t%s: blacklisted\n", $f_name);
|
|
next;
|
|
}
|
|
|
|
foreach my $s_numb (@sect_numbs)
|
|
{
|
|
chomp($s_numb);
|
|
|
|
foreach my $s_name (@sect_names)
|
|
{
|
|
chomp($s_name);
|
|
|
|
my $manname = $s_name.".".$s_numb.$MANSUFFIX;
|
|
my $linkname = $f_name.".".$s_numb.$MANSUFFIX;
|
|
my $manfile = $dst."/man".$s_numb."/".$manname;
|
|
my $linkfile = $dst."/man".$s_numb."/".$linkname;
|
|
|
|
my $exists = -e $manfile ? "exists" : "";
|
|
my $issym = -l $manfile ? "symlink" : "";
|
|
|
|
if ( $s_name eq $f_name )
|
|
{
|
|
printf("\t%s(%s): make %s %s %s\n", $f_name, $s_numb, $manname, $exists, $issym);
|
|
&make_manpage($s_name, $s_numb, $podfile, $manfile, "0644");
|
|
} else {
|
|
if ( uc($s_name) ne uc($f_name) )
|
|
{
|
|
printf("\t%s(%s): link %s -> %s %s %s", $f_name, $s_numb, $manname, $linkname, $exists, $issym);
|
|
if( ! -e $linkfile )
|
|
{
|
|
printf("(also generating manpage)");
|
|
&make_manpage($f_name, $s_numb, $podfile, $linkfile, "0644");
|
|
}
|
|
printf("\n");
|
|
|
|
&make_link($linkname, $manfile);
|
|
} else {
|
|
printf("Detected a case-base file name collision: %s\n", $s_name);
|
|
$s_name = lc($s_name);
|
|
$manname = $s_name.".".$s_numb.$MANSUFFIX;
|
|
$manfile = $dst."/man".$s_numb."/".$manname;
|
|
&make_manpage($s_name, $s_numb, $podfile, $manfile, "0644");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
################################################################################
|
|
# MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN #
|
|
################################################################################
|
|
|
|
# Source directory, where tarball was expanded.
|
|
my $srcdir = $ENV{'SRCROOT'}."/src";
|
|
|
|
# Install prefix
|
|
my $dstroot = $ENV{'DSTROOT'};
|
|
|
|
# Release number, i.e. 0.9.8
|
|
$OPENSSL_RELEASE = $ENV{'DYLIB_CURRENT_VERSION'};
|
|
|
|
if (!defined $srcdir || !$srcdir)
|
|
{
|
|
printf("Man source directory not given.\n");
|
|
exit(1);
|
|
} else {
|
|
if( ! -d $srcdir )
|
|
{
|
|
printf("Man source directory incorrect \"%s\"\n", $srcdir);
|
|
exit(1);
|
|
}
|
|
}
|
|
$X_EXT_SECT = $srcdir."/util/extract-section.pl";
|
|
$X_EXT_NAME = $srcdir."/util/extract-names.pl";
|
|
|
|
|
|
if ( !defined $dstroot || !$dstroot )
|
|
{
|
|
printf("Dest directory not given.\n");
|
|
exit(1);
|
|
} else {
|
|
if (! -d $dstroot )
|
|
{
|
|
mkpath($dstroot);
|
|
}
|
|
}
|
|
|
|
if ( !defined $OPENSSL_RELEASE || !$OPENSSL_RELEASE )
|
|
{
|
|
printf("No release given.");
|
|
exit(1);
|
|
}
|
|
|
|
$X_POD2MAN = qx{cd $srcdir/util && perl ./pod2mantest};
|
|
chomp($X_POD2MAN);
|
|
printf("Using pod2man: \"%s\".\n", $X_POD2MAN);
|
|
|
|
# verify all man directories are created, ususally done by B&I
|
|
$dstroot .= "/usr/share/man";
|
|
|
|
my $retval = 0;
|
|
$retval = &do_man($srcdir."/doc/apps", $dstroot, 1);
|
|
exit $retval if $retval;
|
|
|
|
$retval = &do_man($srcdir."/doc/crypto", $dstroot, 3);
|
|
exit $retval if $retval;
|
|
|
|
$retval = &do_man($srcdir."/doc/ssl", $dstroot, 3);
|
|
exit $retval if $retval;
|
|
|
|
|
|
|
|
my @remove_files = (
|
|
"man1/dgst.1ssl",
|
|
"man1/md2.1ssl",
|
|
"man1/md4.1ssl",
|
|
"man1/md5.1ssl",
|
|
"man1/mdc2.1ssl",
|
|
"man1/ripemd160.1ssl",
|
|
"man1/sha.1ssl",
|
|
"man1/sha1.1ssl"
|
|
);
|
|
|
|
foreach my $rf (@remove_files)
|
|
{
|
|
my $rff = $dstroot."/".$rf;
|
|
printf("Removing %s.\n", $rff);
|
|
qx{rm -f "$rff"};
|
|
}
|