diff options
Diffstat (limited to 'sbolint')
-rwxr-xr-x | sbolint | 66 |
1 files changed, 66 insertions, 0 deletions
@@ -214,6 +214,17 @@ If there is a doinst.sh script, the SlackBuild must install it to I<$PKG/install =item - +If there is a doinst.sh script, and it uses the config() function, the function must +be defined before it's used. Also, config files passed to config() must end with +a B<.new> suffix. + +=item - + +If there is a doinst.sh script, and it calls B<gtk-update-icon-cache>, the existence +of the cache must be checked before this command is run. + +=item - + Template boilerplate comments should be removed, e.g. I<"REMOVE THIS ENTIRE BLOCK OF TEXT"> or I<"Automatically determine the architecture we're building on">. @@ -657,6 +668,7 @@ sub run_checks { \&check_slackdesc, \&check_info, \&check_script, + \&check_doinst, \&check_images, \&check_empty_hidden, ); @@ -1464,6 +1476,60 @@ sub check_script { } } +sub check_doinst { + my $file = "doinst.sh"; + return unless -f $file; + my @lines = check_and_read($file); + return unless scalar @lines; + + my $lineno = 0; + my ($config_defined, $icon_theme_check, $pp_defined); + + for(@lines) { + $lineno++; + s,#.*,,; + s,^\s*,,; + s,\s*$,,; + next unless /./; + + if(/^config\(\)/) { + $config_defined = $lineno; + } elsif(/^config\s+/) { + # the [\@\$] is intended to skip stuff like $NEW, or a for loop variable, + # or something intended to be sedded like @PATH@. + if(/^config\s+\//) { + log_error("$file:$lineno: 'config' uses absolute path."); + } + if(!/[\@\$]/ && !/\.new["']?$/) { + log_error("$file:$lineno: 'config' filename missing .new suffix."); + } + if(!$config_defined) { + log_error("$file:$lineno: 'config' function used, but not defined."); + } + } elsif(/^preserve_perms\(\)/) { + $pp_defined = $lineno; + } elsif(/^preserve_perms\s+/) { + if(/^preserve_perms\s+\//) { + log_error("$file:$lineno: 'preserve_perms' uses absolute path."); + } + if(!/[\@\$]/ && !/\.new["']?$/) { + log_error("$file:$lineno: 'preserve_perms' filename missing .new suffix."); + } + if(!$pp_defined) { + log_error("$file:$lineno: 'preserve_perms' function used, but not defined."); + } + } elsif(m,-e\s+usr/share/icons/[^/]*/icon-theme\.cache,) { + $icon_theme_check = $lineno; + } elsif(m,usr/bin/gtk-update-icon-cache.*usr/share/icons,) { + if(!$icon_theme_check) { + log_error("$file:$lineno: icon cache created unconditionally!"); + } + undef $icon_theme_check; # in case there's multiple icon dirs + } + } + +} + sub findem { my ($findcmd, $errmsg) = @_; open my $fh, "-|", "$findcmd"; |