Changeset 29536

Show
Ignore:
Timestamp:
05.12.2014 18:12:23 (4 years ago)
Author:
jts21
Message:

Working on a more flexible generation system. Only working for pacman so far, so if you want to generate packages you'll need to check out an old revision. The reason behind this change is that I discovered that the greenstone user database really needs to be owned by the tomcat user rather than root (things such as edit mode don't work properly otherwise), and setting file ownership requires .install files, which was not really possible with the existing system. At this point it would certainly have been faster to just write all the scripts by hand, but this way I get to learn perl.

Location:
main/trunk/package-kits/linux
Files:
10 added
8 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/package-kits/linux/distros/arch

    r29527 r29536  
    11MANAGER:                pacman 
    2 FIELD_SEPARATOR:        \n 
    32 
    43SYSTEMLIB:              /usr/lib 
     
    1110GLI:                    /opt/gli 
    1211 
    13 PKG_GREENSTONE:         'greenstone' 
    14 PKG_GREENSTONE_TOOLS:   'greenstone-tools' 
    15 PKG_GREENSTONE_DEMO:    'greenstone-demo' 
    16 PKG_GLI:                'gli' 
    1712PKG_SVN:                'svn' 
    1813PKG_JAVA_JRE:           'java-runtime=7' 
  • main/trunk/package-kits/linux/distros/fedora

    r29528 r29536  
    11MANAGER:                rpm 
    2 FIELD_SEPARATOR:        , 
    32 
    43SYSTEMLIB:              /usr/lib 
     
    1110GLI:                    /usr/share/gli 
    1211 
    13 PKG_GREENSTONE:         greenstone, 
    14 PKG_GREENSTONE_TOOLS:   greenstone-tools, 
    15 PKG_GREENSTONE_DEMO:    greenstone-demo, 
    16 PKG_GLI:                gli, 
    1712PKG_SVN:                svn, 
    1813PKG_JAVA_JRE:           java >= 7, 
  • main/trunk/package-kits/linux/distros/ubuntu

    r29516 r29536  
    11MANAGER:                apt 
    2 FIELD_SEPARATOR:        , 
    32 
    43SYSTEMLIB:              /usr/lib 
     
    1110GLI:                    /opt/gli 
    1211 
    13 PKG_GREENSTONE:         greenstone, 
    14 PKG_GREENSTONE_TOOLS:   greenstone-tools, 
    15 PKG_GREENSTONE_DEMO:    greenstone-demo, 
    16 PKG_GLI:                gli, 
    1712PKG_SVN:                subversion, 
    1813PKG_JAVA_JRE:           default-jre, 
  • main/trunk/package-kits/linux/generate

    r29526 r29536  
    22 
    33# Generates Makefiles for different systems and packages 
    4 # Uses a hashmap to do config variables  (see readvar for how variables are 
    5 #  read in and an example of how they are resolved / used) 
    64 
    75use strict; 
     
    97use utf8; 
    108use File::Basename; 
    11 use File::Path 'make_path'; 
    12 use File::Copy 'cp'; 
    13 use Storable 'dclone'; 
    14 use Digest::MD5; 
    15  
     9use lib 'perllib'; 
     10use Greenstone::Helpers; 
     11use Greenstone::Package; 
    1612 
    1713my $USAGE = "Usage: " . basename($0) . " <distros> <packages> 
     
    2420$#ARGV == 1 or die $USAGE; 
    2521 
    26 sub globbify { 
    27     my ($dir, $files) = @_; 
    28     $files =~ /^all$/i and return glob "$dir/*"; 
    29     my @list = glob "$dir/{$files}"; 
    30     for (@list) { 
    31         -f or die "Could not find '", $_, "'"; 
    32     } 
    33     return @list; 
    34 } 
     22my @distros  = lsfiles "distros",  shift; 
     23my @packages = lsfiles "packages", shift; 
    3524 
    36 sub empty { 
    37     shift =~ /^\s*$/ and return 1; 
    38 } 
    39  
    40 sub comment { 
    41     shift =~ /^\s*#/ and return 1; 
    42 } 
    43  
    44 sub trim { 
    45     for (@_) { 
    46         s/^\s+|\s+$//g; 
    47     } 
    48     return @_; 
    49 } 
    50  
    51 sub add { 
    52     my ($src, $dst, $subst) = @_; 
    53     $dst =~ s/@([\w]+)@/$subst->{$1}/g; 
    54  
    55     if (-d $src) { 
    56         mkdir $dst; 
    57         opendir my $DIRFH, $src or die "Could not open '$src': $!"; 
    58         while (readdir $DIRFH) { 
    59             next if ($_ eq '.' or $_ eq '..'); 
    60             add ("$src/$_", "$dst/$_", $subst); 
    61         } 
    62         closedir $DIRFH; 
    63     } else { 
    64         print '    - ', $dst, "\n"; 
    65         if (-B $src or $src =~ /\.patch$/i) { 
    66             # copy binary file 
    67             cp $src, $dst or die "Failed to copy '$src': $!"; 
    68         } else { 
    69             # copy normal file 
    70             open IN, '<', $src 
    71                 or die "Failed to open '$src' for reading: $!"; 
    72             open OUT, '>', $dst 
    73                 or die "Failed to open '$dst' for writing: $!"; 
    74             while (<IN>) { 
    75                 s/@([\w]+)@/$subst->{$1}/g; 
    76                 print OUT; 
    77             } 
    78             my $perms = (stat IN)[2] & 07777; 
    79             close IN; 
    80             close OUT; 
    81             chmod ($perms | 0600, $dst); 
    82         } 
     25for my $distro (@distros) { 
     26    print $distro, "\n"; 
     27    for my $package (@packages) { 
     28        print "  - ", $package, "\n"; 
     29        makepkg ( 
     30            package => $package, 
     31            distro  => $distro 
     32        ); 
    8333    } 
    8434} 
    85  
    86 my %escape = ( 
    87     "n" => "\n", 
    88     "\\" => "\\", 
    89     " " => " " 
    90 ); 
    91  
    92 sub readvar { 
    93     my ($vars, $line) = @_; 
    94     my ($var, $val) = trim (split ":", $line, 2); 
    95     defined $var and defined $val or die "Invalid variable assignment: '$line'"; 
    96     local $/ = ''; 
    97     $val =~ s/@([\w]+)@/$vars->{$1}/g; 
    98     $val =~ s/\\([ \\n]|$)/$escape{$1}/g; 
    99     $vars->{$var} = $val; 
    100 } 
    101  
    102 sub addsource { 
    103     my ($vars, $source) = @_; 
    104     my $md5 = Digest::MD5->new; 
    105     open my $MD5FH, '<', $source; 
    106     binmode $MD5FH; 
    107     $md5->addfile ($MD5FH); 
    108     my $field_separator = $vars->{'FIELD_SEPARATOR'}; 
    109     $vars->{'SOURCES'} .= $field_separator . basename($source); 
    110     $vars->{'SOURCE_SUMS'} .= $field_separator . $md5->hexdigest; 
    111     close $MD5FH; 
    112 } 
    113  
    114 my @distros  = globbify "distros",  shift; 
    115 my @packages = globbify "packages", shift; 
    116  
    117 for my $dconf (@distros) { 
    118     my $distro = basename $dconf; 
    119     print "$distro\n"; 
    120  
    121     open DISTRO, '<', $dconf; 
    122     my %distro_vars; 
    123     while (my $var = <DISTRO>) { 
    124         chomp $var; 
    125         (comment $var or empty $var) and next; 
    126         readvar \%distro_vars, $var; 
    127     } 
    128     close DISTRO; 
    129  
    130     for my $pconf (@packages) { 
    131         my $package = basename $pconf; 
    132         print " - $package\n"; 
    133         my $package_path = "build/$distro/$package"; 
    134         make_path $package_path; 
    135  
    136         open PACKAGE, '<', $pconf; 
    137         my %package_vars = %{dclone \%distro_vars}; 
    138         while (my $var = <PACKAGE>) { 
    139             chomp $var; 
    140             empty $var and last; 
    141             comment $var and next; 
    142             readvar \%package_vars, $var; 
    143         } 
    144         for (keys %package_vars) { 
    145             defined $package_vars{$_} or $package_vars{$_} = ' '; 
    146             # print "$_ = $package_vars{$_}\n"; 
    147         } 
    148  
    149         while (my $file = <PACKAGE>) { 
    150             chomp $file; 
    151             empty $file and last; 
    152             comment $file and next; 
    153             add ("files/$file", "$package_path/$file", \%package_vars); 
    154             addsource (\%package_vars, "$package_path/$file"); 
    155         } 
    156  
    157         # write the makefile 
    158         my $outfile = "$package_path/Makefile"; 
    159         print "    - $outfile\n"; 
    160         open MAKEFILE, '>', $outfile 
    161             or die "Failed to open '$outfile' for writing: $!"; 
    162         while (my $segment = <PACKAGE>) { 
    163             chomp $segment; 
    164             empty $segment and last; 
    165             comment $segment and next; 
    166             open IN, '<', "segments/$segment" 
    167                 or die "Failed to open 'segments/$segment' for reading: $!"; 
    168             while (<IN>) { 
    169                 s/@([\w]+)@/$package_vars{$1}/g; 
    170                 print MAKEFILE; 
    171             } 
    172             close IN; 
    173             print MAKEFILE "\n"; 
    174         } 
    175         close PACKAGE; 
    176         # add a target for packaging 
    177         if (open IN, '<', "segments/$distro_vars{'MANAGER'}") { 
    178             while (<IN>) { 
    179                 s/@([\w]+)@/$package_vars{$1}/g; 
    180                 print MAKEFILE; 
    181             } 
    182             close IN; 
    183         } 
    184         close MAKEFILE; 
    185         addsource \%package_vars, $outfile; 
    186  
    187         # write the package manager files 
    188         add ("managers/$distro_vars{'MANAGER'}", $package_path, \%package_vars); 
    189     } 
    190 } 
  • main/trunk/package-kits/linux/packages/demo

    r29526 r29536  
    11SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3/web/sites/localsite/collect 
    2 NAME:                   greenstone-demo 
     2NAME:                   @PKG_GREENSTONE_DEMO@ 
    33VERSION:                3.06 
    44RELEASE:                1 
     
    99LICENSE_SHORT:          GPL-2 
    1010LICENSE:                license 
    11 DEPENDS:                @PKG_GREENSTONE@ 
    12 OPTDEPENDS:              
    13 MAKEDEPENDS:            @PKG_GREENSTONE_TOOLS@ @PKG_SVN@ @PKG_RSYNC@ 
    14 PROVIDES:                
    15 FILES:                  @GSSRV@/sites/localsite/collect/* 
    1611 
    17 build-demo.sh 
     12DEPENDS: 
     13    @PKG_GREENSTONE@ 
    1814 
    19 base 
    20 src 
    21 clean 
    22 demo 
     15OPTDEPENDS: 
     16 
     17MAKEDEPENDS: 
     18    @PKG_GREENSTONE_TOOLS@ 
     19    @PKG_SVN@ 
     20    @PKG_RSYNC@ 
     21 
     22PROVIDES: 
     23 
     24FILES: 
     25    @GSSRV@/sites/localsite/collect/* 
     26 
     27SOURCES: 
     28    build-demo.sh 
     29 
     30MAKEFILE: 
     31    base 
     32    src 
     33    clean 
     34    demo 
  • main/trunk/package-kits/linux/packages/gli

    r29526 r29536  
    11SVN_LOCATION:           http://svn.greenstone.org/main/trunk/gli 
    2 NAME:                   greenstone-gli 
     2NAME:                   @PKG_GLI@ 
    33VERSION:                3.06 
    44RELEASE:                1 
     
    99LICENSE_SHORT:          GPL-2 
    1010LICENSE:                license 
    11 DEPENDS:                @PKG_JAVA_JRE@ @PKG_GREENSTONE_TOOLS@ 
    12 OPTDEPENDS:              
    13 MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_RSYNC@ 
    14 PROVIDES:                
    15 FILES:                  @GLI@\n%{_bindir}/* 
    1611 
    17 gli 
     12DEPENDS: 
     13    @PKG_JAVA_JRE@ 
     14    @PKG_GREENSTONE_TOOLS@ 
    1815 
    19 base 
    20 src 
    21 clean 
    22 gli 
     16OPTDEPENDS: 
     17 
     18MAKEDEPENDS: 
     19    @PKG_JAVA_JDK@ 
     20    @PKG_SVN@ 
     21    @PKG_RSYNC@ 
     22 
     23PROVIDES: 
     24 
     25FILES: 
     26    @GLI@ 
     27    %{_bindir}/* 
     28 
     29SOURCES: 
     30    gli 
     31 
     32MAKEFILE: 
     33    base 
     34    src 
     35    clean 
     36    gli 
  • main/trunk/package-kits/linux/packages/main

    r29526 r29536  
    11SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3 
    2 NAME:                   greenstone 
     2NAME:                   @PKG_GREENSTONE@ 
    33VERSION:                3.06 
    44RELEASE:                1 
     
    99LICENSE_SHORT:          GPL-2 
    1010LICENSE:                license 
    11 DEPENDS:                @PKG_JAVA_JRE@ @PKG_TOMCAT@ 
    12 OPTDEPENDS:             @PKG_GREENSTONE_DEMO@ @PKG_GREENSTONE_TOOLS@ 
    13 MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_ANT@ @PKG_PATCH@ @PKG_AUTOCONF@ @PKG_GCC@ @PKG_MAKE@ @PKG_RSYNC@ 
    14 PROVIDES:                
    15 FILES:                  @GSSRV@\n@TOMCATCONF@/*\n@TOMCATLIB@/*\n%{_libdir}/* 
    1611 
    17 build.properties 
    18 greenstone3.xml 
    19 gs2build.patch 
    20 perl-util.patch 
     12DEPENDS: 
     13    @PKG_JAVA_JRE@ 
     14    @PKG_TOMCAT@ 
    2115 
    22 base 
    23 src 
    24 clean 
    25 build-core 
    26 main 
     16OPTDEPENDS: 
     17    @PKG_GREENSTONE_DEMO@ 
     18    @PKG_GREENSTONE_TOOLS@ 
     19 
     20MAKEDEPENDS: 
     21    @PKG_JAVA_JDK@ 
     22    @PKG_SVN@ 
     23    @PKG_ANT@ 
     24    @PKG_PATCH@ 
     25    @PKG_AUTOCONF@ 
     26    @PKG_GCC@ 
     27    @PKG_MAKE@ 
     28    @PKG_RSYNC@ 
     29 
     30PROVIDES: 
     31 
     32FILES: 
     33    @GSSRV@ 
     34    @TOMCATCONF@/* 
     35    @TOMCATLIB@/* 
     36    %{_libdir}/* 
     37 
     38SOURCES: 
     39    build.properties 
     40    greenstone3.xml 
     41    gs2build.patch 
     42    perl-util.patch 
     43 
     44MAKEFILE: 
     45    base 
     46    src 
     47    clean 
     48    build-core 
     49    main 
  • main/trunk/package-kits/linux/packages/tools

    r29526 r29536  
    11SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3 
    2 NAME:                   greenstone-tools 
     2NAME:                   @PKG_GREENSTONE_TOOLS@ 
    33VERSION:                3.06 
    44RELEASE:                1 
     
    99LICENSE_SHORT:          GPL-2 
    1010LICENSE:                license 
    11 DEPENDS:                @PKG_WVWARE@ @PKG_PERL@ @PKG_IMAGEMAGICK@ 
    12 OPTDEPENDS:             @PKG_GLI@ 
    13 MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_ANT@ @PKG_PATCH@ @PKG_AUTOCONF@ @PKG_GCC@ @PKG_MAKE@ @PKG_RSYNC@ 
    14 PROVIDES:                
    15 FILES:                  @GSTOOLS@\n%{_bindir}/* 
    1611 
    17 build.properties 
    18 greenstone 
    19 greenstone3.xml 
    20 gs2build.patch 
    21 perl-util.patch 
    22 wvWare 
     12DEPENDS: 
     13    @PKG_WVWARE@ 
     14    @PKG_PERL@ 
     15    @PKG_IMAGEMAGICK@ 
    2316 
    24 base 
    25 src 
    26 clean 
    27 build-core 
    28 tools 
     17OPTDEPENDS: 
     18    @PKG_GLI@ 
     19 
     20MAKEDEPENDS: 
     21    @PKG_JAVA_JDK@ 
     22    @PKG_SVN@ 
     23    @PKG_ANT@ 
     24    @PKG_PATCH@ 
     25    @PKG_AUTOCONF@ 
     26    @PKG_GCC@ 
     27    @PKG_MAKE@ 
     28    @PKG_RSYNC@ 
     29 
     30PROVIDES: 
     31 
     32FILES: 
     33    @GSTOOLS@ 
     34    %{_bindir}/* 
     35 
     36SOURCES: 
     37    build.properties 
     38    greenstone 
     39    greenstone3.xml 
     40    gs2build.patch 
     41    perl-util.patch 
     42    wvWare 
     43 
     44MAKEFILE: 
     45    base 
     46    src 
     47    clean 
     48    build-core 
     49    tools