Ignore:
Timestamp:
2014-12-11T18:45:10+13:00 (9 years ago)
Author:
Jeremy Symon
Message:

Modifying package generation to use sub-packages in order to avoid compiling the same source multiple times. Currently works for Pacman. Needs testing (and fixing) for other package managers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/package-kits/linux/perllib/Greenstone/Package/_pacman.pm

    r29546 r29595  
    3939
    4040sub write_function {
    41     my ($name, $out, @lines) = @_;
     41    my ($self, $name, $out, @lines) = @_;
    4242    print $out $name, "() {\n";
    4343    for my $line (@lines) {
     44        $self->subst ($line);
    4445        print $out "\t", $line, "\n";
    4546    }
     
    5455        exists $self->{config}->{POST_REMOVE}) {
    5556        my $name = "$self->{config}->{NAME}.install";
    56         open my $INSTALL, '>', "/tmp/$name";
     57        open my $INSTALL, '>', "/tmp/gspkg.$name";
    5758        exists $self->{config}->{PRE_INSTALL} and do {
    58             write_function "pre_install", $INSTALL, @{$self->{config}->{PRE_INSTALL}};
    59             write_function "pre_upgrade", $INSTALL, @{$self->{config}->{PRE_INSTALL}};
     59            $self->write_function ("pre_install", $INSTALL, @{$self->{config}->{PRE_INSTALL}});
     60            $self->write_function ("pre_upgrade", $INSTALL, @{$self->{config}->{PRE_INSTALL}});
    6061        };
    6162        exists $self->{config}->{POST_INSTALL} and do {
    62             write_function "post_install", $INSTALL, @{$self->{config}->{POST_INSTALL}};
    63             write_function "post_upgrade", $INSTALL, @{$self->{config}->{POST_INSTALL}};
     63            $self->write_function ("post_install", $INSTALL, @{$self->{config}->{POST_INSTALL}});
     64            $self->write_function ("post_upgrade", $INSTALL, @{$self->{config}->{POST_INSTALL}});
    6465        };
    6566        exists $self->{config}->{PRE_REMOVE} and
    66             write_function "pre_remove", $INSTALL, @{$self->{config}->{PRE_REMOVE}};
     67            $self->write_function ("pre_remove", $INSTALL, @{$self->{config}->{PRE_REMOVE}});
    6768        exists $self->{config}->{POST_REMOVE} and
    68             write_function "post_remove", $INSTALL, @{$self->{config}->{POST_REMOVE}};
     69            $self->write_function ("post_remove", $INSTALL, @{$self->{config}->{POST_REMOVE}});
    6970        close $INSTALL;
    70         $self->add ("/tmp/$name", "$self->{output}/$name");
    71         $self->{config}->{INSTALL} = "install=$name";
     71        $self->add ("/tmp/gspkg.$name", "$self->{output}/$name");
     72        return "install=$name";
    7273    } else {
    73         $self->{config}->{INSTALL} = "";
     74        return "";
    7475    }
    7576}
    7677
     78sub add_package_impl {
     79    my ($self, $packages) = @_;
     80    if (defined $packages) {
     81        $self->{config}->{NAME} = '';
     82        for my $package (@{$packages}) {
     83            $self->{config}->{NAME} .= " $package->{NAME}";
     84        }
     85    }
     86    open my $PKGBUILD, '>', "/tmp/gspkg.PKGBUILD";
     87    for my $line (
     88        '# Maintainer: %MAINTAINER_NAME% <%MAINTAINER_EMAIL%>',
     89        'pkgname=(%NAME%)',
     90        'pkgver=%VERSION%',
     91        'pkgrel=%RELEASE%',
     92        'url=%HOMEPAGE%',
     93        'license=%LICENSE_SHORT%',
     94        'arch=(any)',
     95        'makedepends=(',
     96        '%MAKEDEPENDS%',
     97        ')',
     98        'source=(',
     99        '%SOURCES%',
     100        ')',
     101        'md5sums=(',
     102        '%SOURCE_SUMS%',
     103        ')',
     104        'build() {',
     105        '  cd ${srcdir}',
     106        '  make build',
     107        '}'
     108    ) {
     109        my $copy = $line;
     110        $self->subst ($copy);
     111        print $PKGBUILD $copy, "\n";
     112    }
     113    if (defined $packages) {
     114        my $config = $self->{config};
     115        for my $package (@{$packages}) {
     116            $self->{config} = $package;
     117            $self->write_function ("package_$package->{NAME}", $PKGBUILD,
     118                'pkgdesc=%DESCRIPTION%',
     119                'arch=(\'%ARCHITECTURE%\')',
     120                'depends=(',
     121                '%DEPENDS%',
     122                ')',
     123                'optdepends=(',
     124                '%OPTDEPENDS%',
     125                ')',
     126                'provides=(',
     127                '%PROVIDES%',
     128                ')',
     129                $self->add_install,
     130                'DESTDIR=${pkgdir} make install_%NAME%',
     131            );
     132        }
     133        $self->{config} = $config;
     134    } else {
     135        print $PKGBUILD $self->add_install, "\n";
     136        $self->write_function ('package', $PKGBUILD, 'DESTDIR=${pkgdir} make install');
     137    }
     138    close $PKGBUILD;
     139    $self->add ("/tmp/gspkg.PKGBUILD", "$self->{output}/PKGBUILD");
     140}
     141
    771421;
Note: See TracChangeset for help on using the changeset viewer.