source: main/trunk/package-kits/linux/perllib/Greenstone/Package/_pacman.pm

Last change on this file was 29612, checked in by Jeremy Symon, 9 years ago

Got Pacman working (again)

File size: 4.7 KB
RevLine 
[29536]1package Greenstone::Package::_pacman;
2
3use strict;
4use warnings;
5use utf8;
6use parent 'Greenstone::Package';
7use Digest::MD5;
8
9sub replacement_array {
10 my $self = shift;
11 my $array = shift;
12 return join "\n", @{$array};
13}
14
15sub add_md5 {
16 my $self = shift;
17 my $md5 = Digest::MD5->new;
18 for my $source (@_) {
19 open my $MD5FH, '<', "$self->{output}/$source";
20 binmode $MD5FH;
21 $md5->addfile ($MD5FH);
22 push @{$self->{config}->{SOURCE_SUMS}}, $md5->hexdigest;
23 close $MD5FH
24 }
25}
26
27sub add_sources {
28 my $self = shift;
29 $self->SUPER::add_sources;
30 $self->{config}->{SOURCE_SUMS} = [];
31 $self->add_md5 (@{$self->{config}->{SOURCES}});
32}
33
34sub add_makefile {
35 my $self = shift;
36 $self->SUPER::add_makefile;
37 $self->add_md5 ('Makefile');
38}
39
[29546]40sub write_function {
[29595]41 my ($self, $name, $out, @lines) = @_;
[29546]42 print $out $name, "() {\n";
43 for my $line (@lines) {
[29595]44 $self->subst ($line);
[29546]45 print $out "\t", $line, "\n";
46 }
47 print $out "}\n\n";
48}
49
50sub add_install {
51 my $self = shift;
52 if (exists $self->{config}->{PRE_INSTALL} or
53 exists $self->{config}->{POST_INSTALL} or
54 exists $self->{config}->{PRE_REMOVE} or
55 exists $self->{config}->{POST_REMOVE}) {
[29612]56 my $name = "$self->{config}->{NAME}.install";
57 my $file = "$self->{output}/$name";
[29598]58 print " - $file\n";
59 open my $INSTALL, '>', $file;
[29546]60 exists $self->{config}->{PRE_INSTALL} and do {
[29595]61 $self->write_function ("pre_install", $INSTALL, @{$self->{config}->{PRE_INSTALL}});
62 $self->write_function ("pre_upgrade", $INSTALL, @{$self->{config}->{PRE_INSTALL}});
[29546]63 };
64 exists $self->{config}->{POST_INSTALL} and do {
[29595]65 $self->write_function ("post_install", $INSTALL, @{$self->{config}->{POST_INSTALL}});
66 $self->write_function ("post_upgrade", $INSTALL, @{$self->{config}->{POST_INSTALL}});
[29546]67 };
68 exists $self->{config}->{PRE_REMOVE} and
[29595]69 $self->write_function ("pre_remove", $INSTALL, @{$self->{config}->{PRE_REMOVE}});
[29546]70 exists $self->{config}->{POST_REMOVE} and
[29595]71 $self->write_function ("post_remove", $INSTALL, @{$self->{config}->{POST_REMOVE}});
[29546]72 close $INSTALL;
[29612]73 return "install=$name";
[29546]74 } else {
[29595]75 return "";
[29546]76 }
77}
78
[29612]79sub add_package_function {
80 my ($self, $name, $out) = @_;
81 $self->write_function ("package_$name", $out,
82 'pkgdesc=%DESCRIPTION%',
83 'arch=(%ARCHITECTURE%)',
84 'depends=(',
85 '%DEPENDS%',
86 ')',
87 'optdepends=(',
88 '%OPTDEPENDS%',
89 ')',
90 'provides=(',
91 '%PROVIDES%',
92 ')',
93 $self->add_install,
94 "DESTDIR=\${pkgdir} make install_$name",
95 );
96
97}
98
[29595]99sub add_package_impl {
100 my ($self, $packages) = @_;
[29612]101 my $name = $self->{config}->{NAME};
[29611]102 $self->{config}->{NAMES} = $self->{config}->{NAME};
[29595]103 if (defined $packages) {
104 for my $package (@{$packages}) {
[29612]105 $self->{config}->{NAMES} .= " $name-$package->{NAME}";
[29595]106 }
107 }
[29598]108 my $file = "$self->{output}/PKGBUILD";
109 print " - $file\n";
110 open my $PKGBUILD, '>', $file;
[29595]111 for my $line (
112 '# Maintainer: %MAINTAINER_NAME% <%MAINTAINER_EMAIL%>',
[29611]113 'pkgname=(%NAMES%)',
[29595]114 'pkgver=%VERSION%',
115 'pkgrel=%RELEASE%',
116 'url=%HOMEPAGE%',
117 'license=%LICENSE_SHORT%',
[29611]118 'arch=(%ARCHITECTURE%)',
[29595]119 'makedepends=(',
120 '%MAKEDEPENDS%',
121 ')',
122 'source=(',
123 '%SOURCES%',
124 ')',
125 'md5sums=(',
126 '%SOURCE_SUMS%',
127 ')',
128 'build() {',
129 ' cd ${srcdir}',
130 ' make build',
131 '}'
132 ) {
133 my $copy = $line;
134 $self->subst ($copy);
135 print $PKGBUILD $copy, "\n";
136 }
137 if (defined $packages) {
[29611]138 # main package
[29612]139 $self->add_package_function ("$self->{config}->{NAME}", $PKGBUILD);
[29595]140 my $config = $self->{config};
[29611]141 # subpackages
[29595]142 for my $package (@{$packages}) {
143 $self->{config} = $package;
[29612]144 $self->add_package_function ("$name-$package->{NAME}", $PKGBUILD);
[29595]145 }
146 $self->{config} = $config;
147 } else {
[29612]148 for my $line (
149 'arch=(%ARCHITECTURE%)',
150 'depends=(',
151 '%DEPENDS%',
152 ')',
153 'optdepends=(',
154 '%OPTDEPENDS%',
155 ')',
156 'provides=(',
157 '%PROVIDES%',
158 ')',
159 ) {
160 my $copy = $line;
161 $self->subst ($copy);
162 print $PKGBUILD $copy, "\n";
163 }
[29595]164 print $PKGBUILD $self->add_install, "\n";
165 $self->write_function ('package', $PKGBUILD, 'DESTDIR=${pkgdir} make install');
166 }
167 close $PKGBUILD;
168}
169
[29536]1701;
Note: See TracBrowser for help on using the repository browser.