Changeset 29508

Show
Ignore:
Timestamp:
01.12.2014 17:44:17 (4 years ago)
Author:
jts21
Message:

Makefile generater now also generates package manager scripts. Generated scripts are tested and working on Arch

Location:
main/trunk/package-kits/linux
Files:
11 added
3 removed
14 modified
4 copied

Legend:

Unmodified
Added
Removed
  • main/trunk/package-kits/linux/generate

    r29481 r29508  
    1010use File::Basename; 
    1111use File::Path 'make_path'; 
    12 use File::Copy; 
     12use File::Copy 'cp'; 
    1313use Storable 'dclone'; 
     14use Digest::MD5; 
     15 
    1416 
    1517my $USAGE = "Usage: " . basename($0) . " <platforms> <packages> 
    16     platforms: A comma separated list of the platforms defined in pkg.in/platforms 
     18    platforms: A comma separated list of the platforms defined in platforms/ 
    1719               Or 'all' (for all platforms) 
    18     packages:  A comma separated list of the packages defined in pkg.in/packages 
    19                Or 'all' (for all platforms) 
     20    packages:  A comma separated list of the packages defined in packages/ 
     21               Or 'all' (for all packages) 
    2022"; 
    2123 
     
    3234} 
    3335 
     36sub empty { 
     37    /^\s*$/ and return 1; 
     38} 
     39 
     40sub comment { 
     41    /^\s*#/ and return 1; 
     42} 
     43 
     44sub trim { 
     45    for (@_) { 
     46        s/^\s+|\s+$//g; 
     47    } 
     48    return @_; 
     49} 
     50 
     51sub copydir { 
     52    my ($src, $dst, $subst) = @_; 
     53    mkdir $dst; 
     54    opendir my $DIRFH, $src or die "Could not open '$src': $!"; 
     55    while (readdir $DIRFH) { 
     56        next if ($_ eq '.' or $_ eq '..'); 
     57        print "    - $dst/$_\n"; 
     58        if (-d "$src/$_") { 
     59            # copy folder 
     60            copydir ("$src/$_", "$dst/$_", $subst); 
     61        } elsif (-B "$src/$_") { 
     62            # copy binary file 
     63            cp "$src/$_", "$dst/$_" or die "Failed to copy '$_': $!"; 
     64        } else { 
     65            # copy normal file 
     66            my $newFile = "$dst/$_"; 
     67            open OUT, '>', $newFile 
     68                or die "Failed to open '$_' for writing: $!"; 
     69            open IN, '<', "$src/$_" 
     70                or die "Failed to open '$_' for reading: $!"; 
     71            while (<IN>) { 
     72                s/@([\w]+)@/$subst->{$1}/g; 
     73                print OUT; 
     74            } 
     75            my $perms = (stat IN)[2] & 07777; 
     76            close IN; 
     77            close OUT; 
     78            chmod ($perms | 0600, $newFile); 
     79        } 
     80    } 
     81    closedir $DIRFH; 
     82} 
     83 
     84my %escape = ( 
     85    "n" => "\n", 
     86    "\\" => "\\", 
     87    " " => " " 
     88); 
     89 
    3490sub readvar { 
    3591    my ($vars, $line) = @_; 
    36     my ($var, $val) = split "=", $line; 
     92    my ($var, $val) = trim (split ":", $line, 2); 
    3793    defined $var and defined $val or die "Invalid variable assignment: '$line'"; 
    38     $val =~ s/%([\w]+)%/$vars->{$1}/g; 
     94    local $/ = ''; 
     95    $val =~ s/\\([ \\n]|$)/$escape{$1}/g; 
     96    $val =~ s/@([\w]+)@/$vars->{$1}/g; 
    3997    $vars->{$var} = $val; 
    4098} 
    4199 
    42 my @platforms = globbify "pkg.in/platforms", shift; 
    43 my @packages  = globbify "pkg.in/packages",  shift; 
     100sub addsource { 
     101    my ($vars, $source) = @_; 
     102    my $md5 = Digest::MD5->new; 
     103    open my $MD5FH, '<', $source; 
     104    binmode $MD5FH; 
     105    $md5->addfile ($MD5FH); 
     106    my $field_separator = $vars->{'FIELD_SEPARATOR'}; 
     107    $vars->{'SOURCES'} .= $field_separator . basename($source); 
     108    $vars->{'SOURCE_SUMS'} .= $field_separator . $md5->hexdigest; 
     109    close $MD5FH; 
     110} 
     111 
     112my @platforms = globbify "platforms", shift; 
     113my @packages  = globbify "packages",  shift; 
    44114 
    45115for (@platforms) { 
    46     my ($platform) = /^pkg\.in\/platforms\/(.*)$/; 
    47     my %platform_vars = (); 
    48     open FH, '<', $_ or die "Failed to open '$_' for reading: $!"; 
    49     # read platform variable definitons 
    50     while (<FH>) { 
     116    my $platform = basename $_; 
     117    print "$platform\n"; 
     118 
     119    open PLATFORM, '<', $_; 
     120    my %platform_vars; 
     121    while (<PLATFORM>) { 
    51122        chomp; 
     123        (comment or empty) and next; 
    52124        readvar \%platform_vars, $_; 
    53125    } 
    54     close FH; 
     126    close PLATFORM; 
    55127 
    56128    for (@packages) { 
    57         my ($package) = /^pkg\.in\/packages\/(.*)$/; 
     129        my $package = basename $_; 
     130        print " - $package\n"; 
    58131        my $package_path = "build/$platform/$package"; 
    59132        make_path $package_path; 
    60133 
    61         open FH, '<', $_ or die "Failed to open '$_' for reading: $!"; 
    62  
    63         # read package file dependencies 
    64         while (<FH>) { 
     134        open PACKAGE, '<', $_; 
     135        my %package_vars = %{dclone \%platform_vars}; 
     136        while (<PACKAGE>) { 
    65137            chomp; 
    66             /^[\s]*$/ and last; 
    67             -e "pkg.in/files/$_" or die "Could not find '", $_, "'"; 
    68             copy "pkg.in/files/$_", "$package_path/$_" or die "Failed to copy '$_': $!"; 
     138            empty and last; 
     139            comment and next; 
     140            readvar \%package_vars, $_; 
     141        } 
     142        for (keys %package_vars) { 
     143            defined $package_vars{$_} or $package_vars{$_} = ' '; 
     144            # print "$_ = $package_vars{$_}\n"; 
    69145        } 
    70146 
    71         my %package_vars = %{dclone \%platform_vars}; 
    72         # read package variable definitions 
    73         while (<FH>) { 
     147        while (<PACKAGE>) { 
    74148            chomp; 
    75             /^[\s]*$/ and last; 
    76             readvar \%package_vars, $_; 
     149            empty and last; 
     150            comment and next; 
     151            cp "files/$_", "$package_path/$_" or die "Failed to copy '$_': $!"; 
     152            addsource \%package_vars, "$package_path/$_"; 
    77153        } 
    78          
     154 
     155        # write the makefile 
    79156        my $outfile = "$package_path/Makefile"; 
    80         open OUT, '>', $outfile or die "Failed to open '$outfile' for writing: $!"; 
    81         # read package makefile segments 
    82         while (<FH>) { 
     157        print "    - $outfile\n"; 
     158        open MAKEFILE, '>', $outfile 
     159            or die "Failed to open '$outfile' for writing: $!"; 
     160        while (<PACKAGE>) { 
    83161            chomp; 
    84             open SEG, '<', "pkg.in/segments/$_" or die "Failed to open '$_' for reading: $!"; 
    85             # write the makefile 
    86             while (<SEG>) { 
    87                 s/%([\w]+)%/$package_vars{$1}/g; 
    88                 print OUT; 
     162            empty and last; 
     163            comment and next; 
     164            open IN, '<', "segments/$_" 
     165                or die "Failed to open '$_' for reading: $!"; 
     166            while (<IN>) { 
     167                s/@([\w]+)@/$package_vars{$1}/g; 
     168                print MAKEFILE; 
    89169            } 
    90             close SEG; 
     170            close IN; 
    91171        } 
    92         close FH; 
    93         close OUT; 
     172        close MAKEFILE; 
     173        close PACKAGE; 
     174        addsource \%package_vars, $outfile; 
     175 
     176        # write the package manager files 
     177        copydir ("managers/$platform_vars{'MANAGER'}", $package_path, \%package_vars); 
    94178    } 
    95     print "Generated $platform build scripts in build/$platform/\n"; 
    96179} 
  • main/trunk/package-kits/linux/packages/demo

    r29481 r29508  
     1SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3/web/sites/localsite/collect 
     2NAME:                   greenstone-demo 
     3VERSION:                3.06 
     4RELEASE:                1 
     5DESCRIPTION_SHORT:      short description 
     6DESCRIPTION:            description 
     7HOMEPAGE:               http://greenstone.org 
     8ARCHITECTURE:           i686 x86_64 
     9LICENSE_SHORT:          GPL-2 
     10LICENSE:                license 
     11DEPENDS:                @PKG_GREENSTONE@ 
     12OPTDEPENDS:              
     13MAKEDEPENDS:            @PKG_GREENSTONE_TOOLS@ @PKG_SVN@ @PKG_RSYNC@ 
     14PROVIDES:                
     15 
    116build-demo.sh 
    2  
    3 SVN_LOCATION=http://svn.greenstone.org/main/trunk/greenstone3/web/sites/localsite/collect 
    417 
    518base 
  • main/trunk/package-kits/linux/packages/gli

    r29481 r29508  
     1SVN_LOCATION:           http://svn.greenstone.org/main/trunk/gli 
     2NAME:                   greenstone-gli 
     3VERSION:                3.06 
     4RELEASE:                1 
     5DESCRIPTION_SHORT:      short description 
     6DESCRIPTION:            description 
     7HOMEPAGE:               http://greenstone.org 
     8ARCHITECTURE:           any 
     9LICENSE_SHORT:          GPL-2 
     10LICENSE:                license 
     11DEPENDS:                @PKG_JAVA_JRE@ @PKG_GREENSTONE_TOOLS@ 
     12OPTDEPENDS:              
     13MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_RSYNC@ 
     14PROVIDES:                
     15 
    116gli 
    2  
    3 SVN_LOCATION=http://svn.greenstone.org/main/trunk/gli 
    417 
    518base 
  • main/trunk/package-kits/linux/packages/main

    r29481 r29508  
     1SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3 
     2NAME:                   greenstone 
     3VERSION:                3.06 
     4RELEASE:                1 
     5DESCRIPTION_SHORT:      short description 
     6DESCRIPTION:            description 
     7HOMEPAGE:               http://greenstone.org 
     8ARCHITECTURE:           i686 x86_64 
     9LICENSE_SHORT:          GPL-2 
     10LICENSE:                license 
     11DEPENDS:                @PKG_JAVA_JRE@ @PKG_TOMCAT@ 
     12OPTDEPENDS:             @PKG_GREENSTONE_DEMO@ @PKG_GREENSTONE_TOOLS@ 
     13MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_ANT@ @PKG_PATCH@ @PKG_AUTOCONF@ @PKG_GCC@ @PKG_MAKE@ @PKG_RSYNC@ 
     14PROVIDES:                
     15 
    116build.properties 
    217greenstone 
     
    621wvWare 
    722 
    8 SVN_LOCATION=http://svn.greenstone.org/main/trunk/greenstone3 
    9  
    1023base 
    1124src 
  • main/trunk/package-kits/linux/packages/tools

    r29481 r29508  
     1SVN_LOCATION:           http://svn.greenstone.org/main/trunk/greenstone3 
     2NAME:                   greenstone-tools 
     3VERSION:                3.06 
     4RELEASE:                1 
     5DESCRIPTION_SHORT:      short description 
     6DESCRIPTION:            description 
     7HOMEPAGE:               http://greenstone.org 
     8ARCHITECTURE:           i686 x86_64 
     9LICENSE_SHORT:          GPL-2 
     10LICENSE:                license 
     11DEPENDS:                @PKG_WVWARE@ @PKG_PERL@ @PKG_IMAGEMAGICK@ 
     12OPTDEPENDS:             @PKG_GLI@ 
     13MAKEDEPENDS:            @PKG_JAVA_JDK@ @PKG_SVN@ @PKG_ANT@ @PKG_PATCH@ @PKG_AUTOCONF@ @PKG_GCC@ @PKG_MAKE@ @PKG_RSYNC@ 
     14PROVIDES:                
     15 
    116build.properties 
    217greenstone 
     
    621wvWare 
    722 
    8 SVN_LOCATION=http://svn.greenstone.org/main/trunk/greenstone3 
    9  
    1023base 
    1124src 
  • main/trunk/package-kits/linux/platforms/arch

    r29481 r29508  
    1 SYSTEMLIB=/usr/lib 
    2 SYSTEMBIN=/usr/bin 
    3 SYSTEMJAVA=%SYSTEMLIB%/jvm/default 
    4 GSSRV=/srv/gsdl 
    5 TOMCATLIB=/usr/share/java/tomcat7 
    6 TOMCATCONF=/etc/tomcat7/Catalina/localhost 
    7 GSTOOLS=/opt/greenstone 
     1MANAGER:                pacman 
     2FIELD_SEPARATOR:        \n 
     3 
     4SYSTEMLIB:              /usr/lib 
     5SYSTEMBIN:              /usr/bin 
     6SYSTEMJAVA:             @SYSTEMLIB@/jvm/default 
     7GSSRV:                  /srv/gsdl 
     8TOMCATLIB:              /usr/share/java/tomcat7 
     9TOMCATCONF:             /etc/tomcat7/Catalina/localhost 
     10GSTOOLS:                /opt/greenstone 
     11 
     12PKG_GREENSTONE:         'greenstone' 
     13PKG_GREENSTONE_TOOLS:   'greenstone-tools' 
     14PKG_GREENSTONE_DEMO:    'greenstone-demo' 
     15PKG_GLI:                'gli' 
     16PKG_SVN:                'svn' 
     17PKG_JAVA_JRE:           'java-runtime=7' 
     18PKG_TOMCAT:             'tomcat7' 'tomcat-native' 
     19PKG_JAVA_JDK:           'java-environment=7' 
     20PKG_ANT:                'apache-ant' 
     21PKG_PATCH:              'patch' 
     22PKG_AUTOCONF:           'autoconf' 
     23PKG_GCC:                'gcc' 
     24PKG_MAKE:               'make' 
     25PKG_WVWARE:             'wv' 
     26PKG_PERL:               'perl' 'perl-xml-parser' 'perl-text-iconv' 
     27PKG_IMAGEMAGICK:        'imagemagick' 
     28PKG_RSYNC:              'rsync' 
  • main/trunk/package-kits/linux/platforms/fedora

    r29481 r29508  
    1 SYSTEMLIB=/usr/lib 
    2 SYSTEMBIN=/usr/bin 
    3 SYSTEMJAVA=%SYSTEMLIB%/jvm/java 
    4 GSSRV=/srv/gsdl 
    5 TOMCATLIB=/usr/share/tomcat7/lib 
    6 TOMCATCONF=/etc/tomcat7/Catalina/localhost 
    7 GSTOOLS=/opt/greenstone 
     1MANAGER:                rpm 
     2FIELD_SEPARATOR:        , 
     3 
     4SYSTEMLIB:              /usr/lib 
     5SYSTEMBIN:              /usr/bin 
     6SYSTEMJAVA:             @SYSTEMLIB@/jvm/java 
     7GSSRV:                  /srv/gsdl 
     8TOMCATLIB:              /usr/share/tomcat7/lib 
     9TOMCATCONF:             /etc/tomcat7/Catalina/localhost 
     10GSTOOLS:                /opt/greenstone 
     11 
     12PKG_GREENSTONE:         'greenstone' 
     13PKG_GREENSTONE_TOOLS:   'greenstone-tools' 
     14PKG_GREENSTONE_DEMO:    'greenstone-demo' 
     15PKG_GLI:                'gli' 
     16PKG_SVN:                'svn' 
     17PKG_JAVA_JRE:           'java-runtime=7' 
     18PKG_TOMCAT:             'tomcat7' 'tomcat-native' 
     19PKG_JAVA_JDK:           'java-environment=7' 
     20PKG_ANT:                'apache-ant' 
     21PKG_PATCH:              'patch' 
     22PKG_AUTOCONF:           'autoconf' 
     23PKG_GCC:                'gcc' 
     24PKG_MAKE:               'make' 
     25PKG_WVWARE:             'wv' 
     26PKG_PERL:               'perl' 'perl-xml-parser' 'perl-text-iconv' 
     27PKG_IMAGEMAGICK:        'imagemagick' 
     28PKG_RSYNC:              'rsync' 
  • main/trunk/package-kits/linux/platforms/ubuntu

    r29481 r29508  
    1 SYSTEMLIB=/usr/lib 
    2 SYSTEMBIN=/usr/bin 
    3 SYSTEMJAVA=%SYSTEMLIB%/jvm/default-java 
    4 GSSRV=/srv/gsdl 
    5 TOMCATLIB=/usr/share/tomcat7/lib 
    6 TOMCATCONF=/etc/tomcat7/Catalina/localhost 
    7 GSTOOLS=/opt/greenstone 
     1MANAGER:                apt 
     2FIELD_SEPARATOR:        , 
     3 
     4SYSTEMLIB:              /usr/lib 
     5SYSTEMBIN:              /usr/bin 
     6SYSTEMJAVA:             @SYSTEMLIB@/jvm/default-java 
     7GSSRV:                  /srv/gsdl 
     8TOMCATLIB:              /usr/share/tomcat7/lib 
     9TOMCATCONF:             /etc/tomcat7/Catalina/localhost 
     10GSTOOLS:                /opt/greenstone 
     11 
     12PKG_GREENSTONE:         greenstone, 
     13PKG_GREENSTONE_TOOLS:   greenstone-tools, 
     14PKG_GREENSTONE_DEMO:    greenstone-demo, 
     15PKG_GLI:                gli, 
     16PKG_SVN:                subversion, 
     17PKG_JAVA_JRE:           default-jre, 
     18PKG_TOMCAT:             tomcat7, 
     19PKG_JAVA_JDK:           default-jdk, 
     20PKG_ANT:                ant, 
     21PKG_PATCH:              patch, 
     22PKG_AUTOCONF:           autoconf, 
     23PKG_GCC:                gcc, 
     24PKG_MAKE:               make, 
     25PKG_WVWARE:             wv, 
     26PKG_PERL:               perl, 
     27PKG_IMAGEMAGICK:        imagemagick, 
     28PKG_RSYNC:              rsync, 
  • main/trunk/package-kits/linux/segments/base

    r29481 r29508  
    1 systemlib  := %SYSTEMLIB% 
    2 systembin  := %SYSTEMBIN% 
    3 java       := %SYSTEMJAVA% 
    4 gssrv      := %GSSRV% 
    5 tomcatlib  := %TOMCATLIB% 
    6 tomcatconf := %TOMCATCONF% 
    7 gstools    := %GSTOOLS% 
     1systemlib  := @SYSTEMLIB@ 
     2systembin  := @SYSTEMBIN@ 
     3java       := @SYSTEMJAVA@ 
     4gssrv      := @GSSRV@ 
     5tomcatlib  := @TOMCATLIB@ 
     6tomcatconf := @TOMCATCONF@ 
     7gstools    := @GSTOOLS@ 
    88 
    99DESTDIR    ?= / 
  • main/trunk/package-kits/linux/segments/demo

    r29481 r29508  
    44    touch build 
    55 
    6 install: build 
    7     @echo "Building demo collections" 
     6install: 
    87    install -d $(DESTDIR)/$(gssrv)/sites/localsite 
    98    rsync -a --info=STATS --exclude .svn src/ $(DESTDIR)/$(gssrv)/sites/localsite/collect/ 
  • main/trunk/package-kits/linux/segments/gli

    r29481 r29508  
    77    touch build 
    88 
    9 install: build 
     9install: 
    1010    install -d $(DESTDIR)/$(gli) 
    1111    rsync -a --info=STATS --exclude src --exclude .svn src/ $(DESTDIR)/$(gli) 
  • main/trunk/package-kits/linux/segments/main

    r29481 r29508  
    1 install: build 
     1install: 
    22    install -d $(DESTDIR)/$(gssrv) $(DESTDIR)/$(systemlib) $(DESTDIR)/$(tomcatlib) 
    33    install -dm775 $(DESTDIR)/$(tomcatlib) 
  • main/trunk/package-kits/linux/segments/src

    r29481 r29508  
    11svn: 
    22    @echo "Getting latest source" 
    3     svn co %SVN_LOCATION% svn 
     3    svn co @SVN_LOCATION@ svn 
    44 
    55src: svn 
  • main/trunk/package-kits/linux/segments/tools

    r29481 r29508  
    1 install: build 
     1install: 
    22    install -d $(DESTDIR)/$(gstools) 
    33    rsync -a --info=STATS --exclude build-src --exclude common-src --exclude collect/demo --exclude .svn src/gs2build $(DESTDIR)/$(gstools)/