From: Richard Levitte Date: Wed, 7 Nov 2018 10:05:17 +0000 (+0100) Subject: Build: use attributes to indicate installed script classes X-Git-Tag: openssl-3.0.0-alpha1~2620 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=994e86a9ffd4195f08a7b0ce61bf001e3bebf891;p=oweals%2Fopenssl.git Build: use attributes to indicate installed script classes We have two classes of scripts to be installed, those that are installed as "normal" programs, and those that are installed as "misc" scripts. These classes are installed in different locations, so the build file templates must pay attention. Because we didn't have the tools to indicate what scripts go where, we had these scripts hard coded in the build template files, with the maintenance issues that may cause. Now that we have attributes, those can be used to classify the installed scripts, and have the build file templates simply check the attributes to know what's what. Furthermore, the 'tsget.pl' script exists both as 'tsget.pl' and 'tsget', which is done by installing a symbolic link (or copy). This link name is now given through an attribute, which results in even less hard coding in the Unix Makefile template. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7581) --- diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index f87de15487..c63f4bd5fe 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -60,6 +60,14 @@ our @install_programs = grep { !$unified_info{attributes}->{$_}->{noinst} } @{$unified_info{programs}}; + our @install_bin_scripts = + grep { !$unified_info{attributes}->{$_}->{noinst} + && !$unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}; + our @install_misc_scripts = + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}; # This is a horrible hack, but is needed because recursive inclusion of files # in different directories does not work well with HP C. @@ -134,10 +142,8 @@ INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @install_libs) -} INSTALL_SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @install_shlibs) -} INSTALL_ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @install_engines) -} INSTALL_PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @install_programs) -} -{- output_off() if $disabled{apps}; "" -} -BIN_SCRIPTS=[.tools]c_rehash.pl -MISC_SCRIPTS=[.apps]CA.pl, [.apps]tsget.pl -{- output_on() if $disabled{apps}; "" -} +BIN_SCRIPTS={- join(", ", @install_bin_scripts) -} +MISC_SCRIPTS={- join(", ", @install_misc_scripts) -} APPS_OPENSSL={- use File::Spec::Functions; catfile("apps","openssl") -} diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index e197e1a21f..90f469f302 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -79,10 +79,20 @@ INSTALL_PROGRAMS={- grep { !$unified_info{attributes}->{$_}->{noinst} } @{$unified_info{programs}}) -} -{- output_off() if $disabled{apps}; "" -} -BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash -MISC_SCRIPTS=$(BLDDIR)/apps/CA.pl $(BLDDIR)/apps/tsget.pl:tsget -{- output_on() if $disabled{apps}; "" -} +BIN_SCRIPTS={- + join(" ", map { my $x = $unified_info{attributes}->{$_}->{linkname}; + $x ? "$_:$x" : $_ } + grep { !$unified_info{attributes}->{$_}->{noinst} + && !$unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}) +-} +MISC_SCRIPTS={- + join(" ", map { my $x = $unified_info{attributes}->{$_}->{linkname}; + $x ? "$_:$x" : $_ } + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}) +-} APPS_OPENSSL={- use File::Spec::Functions; catfile("apps","openssl") -} diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index e114d6b279..872ef4b4ef 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -97,10 +97,18 @@ INSTALL_PROGRAMPDBS={- grep { !$unified_info{attributes}->{$_}->{noinst} } @{$unified_info{programs}}) -} -{- output_off() if $disabled{apps}; "" -} -BIN_SCRIPTS="$(BLDDIR)\tools\c_rehash.pl" -MISC_SCRIPTS="$(BLDDIR)\apps\CA.pl" "$(BLDDIR)\apps\tsget.pl" -{- output_on() if $disabled{apps}; "" -} +BIN_SCRIPTS={- + join(" ", map { quotify1($_) } + grep { !$unified_info{attributes}->{$_}->{noinst} + && !$unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}) +-} +MISC_SCRIPTS={- + join(" ", map { quotify1($_) } + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{misc} } + @{$unified_info{scripts}}) +-} APPS_OPENSSL={- use File::Spec::Functions; "\"".catfile("apps","openssl")."\"" -} diff --git a/apps/build.info b/apps/build.info index de356874d8..0577f76c0a 100644 --- a/apps/build.info +++ b/apps/build.info @@ -32,7 +32,10 @@ ENDIF GENERATE[progs.h]=progs.pl $(APPS_OPENSSL) DEPEND[progs.h]=../configdata.pm - SCRIPTS=CA.pl tsget.pl + SCRIPTS{misc}=CA.pl SOURCE[CA.pl]=CA.pl.in + # linkname tells build files that a symbolic link or copy of this script + # without extension must be installed as well. Unix or Unix lookalike only. + SCRIPTS{misc,linkname=tsget}=tsget.pl SOURCE[tsget.pl]=tsget.in ENDIF