forked from chregu/build-entropy-php
-
Notifications
You must be signed in to change notification settings - Fork 13
/
build-php.pl
164 lines (133 loc) · 4.89 KB
/
build-php.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Main driver script for the PHP build process
#
# Invoke with
# sudo perl -Ilib build-php.pl
#
use strict;
use warnings;
use Imports;
use Package::php5;
use Package::xdebug;
use Package::uploadprogress;
use Package::libmemcached;
use Package::libevent;
use Package::intl;
use Package::memcached;
use Package::memcache;
use Package::xhprof;
use Package::twig;
use Package::APC;
use Package::solr;
use Package::oauth;
use Package::xslcache;
#use Package::yaml;
use Package::mongo;
use Package::redis;
use Package::propro;
use Package::raphf;
use Package::pecl_http;
use Package::apcu;
use Package::igbinary;
#use Package::phpunit;
use Package::libssh2;
use Package::ssh2;
my $basedir = qx(pwd);
chomp $basedir;
die "you must run this script in the build-entropy-php directory" unless ($basedir =~ m#/build-entropy-php$#);
check_dotpear();
check_arch();
check_ltdl();
# putting cpus to 1 to disable parallel builds because it breaks libxml2 build
my $config = Config->new(
cpus => 2,
basedir => $basedir,
prefix => '/usr/local/php5',
phpsrcdir => undef,
orahome => "$basedir/install",
mysql_install_prefix => undef,
variants => {
apache1 => {
apxs_option => '--with-apxs',
suffix => '',
},
apache2 => {
apxs_option => '--with-apxs2=/usr/sbin/apxs',
suffix => '-apache2',
},
},
version => '5.5.38',
release => 1,
debug => 1,
);
my $php = Package::php5->new(config => $config, variant => 'apache2');
$config->{phpsrcdir} = $php->packagesrcdir();
$php->install();
my $xdebug = Package::xdebug->new(config => $config, variant => 'apache2');
$xdebug->install();
my $upload = Package::uploadprogress->new(config => $config, variant => 'apache2');
$upload->install();
my $intl = Package::intl->new(config => $config, variant => 'apache2');
$intl->install();
my $memcached = Package::memcached->new(config => $config, variant => 'apache2');
$memcached->install();
my $memcache = Package::memcache->new(config => $config, variant => 'apache2');
$memcache->install();
my $xhprof = Package::xhprof->new(config => $config, variant => 'apache2');
$xhprof->install();
my $twig = Package::twig->new(config => $config, variant => 'apache2');
$twig->install();
#my $APC = Package::APC->new(config => $config, variant => 'apache2');
#$APC->install();
my $solr = Package::solr->new(config => $config, variant => 'apache2');
$solr->install();
my $oauth = Package::oauth->new(config => $config, variant => 'apache2');
$oauth->install();
#my $xslcache = Package::xslcache->new(config => $config, variant => 'apache2');
#$xslcache->install();
# Needs libYAML to be integrated as well, left for later
# my $yaml = Package::yaml->new(config => $config, variant => 'apache2');
# $yaml->install();
my $mongo = Package::mongo->new(config => $config, variant => 'apache2');
$mongo->install();
my $redis = Package::redis->new(config => $config, variant => 'apache2');
$redis->install();
my $propro = Package::propro->new(config => $config, variant => 'apache2');
$propro->install();
my $raphf = Package::raphf->new(config => $config, variant => 'apache2');
$raphf->install();
my $pecl_http = Package::pecl_http->new(config => $config, variant => 'apache2');
$pecl_http->install();
my $apcu = Package::apcu->new(config => $config, variant => 'apache2');
$apcu->install();
my $igbinary = Package::igbinary->new(config => $config, variant => 'apache2');
$igbinary->install();
my $libssh2 = Package::libssh2->new(config => $config, variant => 'apache2');
$libssh2->install();
my $ssh2 = Package::ssh2->new(config => $config, variant => 'apache2');
$ssh2->install();
#my $phpunit = Package::phpunit->new(config => $config, variant => 'apache2');
#$phpunit->install();
# If there is a ~/.pear directory, "make install-pear" will not work properly
sub check_dotpear {
if (-e "$ENV{HOME}/.pear" || -e "$ENV{HOME}/.pearrc") {
die "There is a ~/.pear directory and/or ~/.pearrc file, please move it aside temporarily for the build\n";
}
}
# If Xcode is installed then the mcrypt extension build picks up libltdl,
# which will be missing on target systems without Xcode.
sub check_ltdl {
if (glob('/usr/lib/libltdl.*')) {
die "/usr/lib/libltdl.* files are present on this system but will be missing on target systems, please move them aside temporarily for the build:\nsudo mkdir -p /usr/lib/off && sudo mv /usr/lib/libltdl.* /usr/lib/off/\n";
}
if (glob('/usr/local/lib/libltdl.*')) {
die "/usr/local/lib/libltdl.* files are present on this system but will be missing on target systems, please move them aside temporarily for the build\n";
}
}
# if we don't build on x86_64, the resulting mcrypt extension will
# work on i386 but crash on x86_64
sub check_arch {
my $x86_64 = `sysctl -n hw.optional.x86_64`; chomp $x86_64;
unless ($x86_64) {
die "This build process must be run on an x86_64 architecture system\n";
}
}