????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.189.11.177 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/perl5/Debian/Debhelper/Buildsystem/ |
Upload File : |
# A debhelper build system class for building PHP PEAR based # projects. # # Copyright: © 2011 Mathieu Parent # License: GPL-2+ package Debian::Debhelper::Buildsystem::phppear; use strict; use warnings; use Cwd (); use Debian::Debhelper::Dh_Lib qw(error complex_doit); use base "Debian::Debhelper::Buildsystem::autoconf"; sub DESCRIPTION { "PHP PEAR (package.xml)" } sub new { my $class=shift; my $this=$class->SUPER::new(@_); $this->{phppkginfo_path} = '/usr/share/pkg-php-tools/scripts/phppkginfo'; # Out of source tree building is prefered. $this->prefer_out_of_source_building(@_); return $this; } sub check_auto_buildable { my $this=shift; return 1 if -e $this->get_sourcepath("package.xml"); return 1 if -e $this->get_sourcepath("package2.xml"); return 1 if -e $this->get_sourcepath("channel.xml"); return 0; } # Local functions sub _shell_exec { my $command=shift; my $output = `$command`; if ($? == -1) { error("$command failed to execute: $!"); } elsif ($? & 127) { error("$command died with signal ".($? & 127)); } elsif ($? != 0) { error("$command returned exit code ".($? >> 8)); } return $output; } sub _phppkginfo { my $this=shift; return _shell_exec($this->{phppkginfo_path}.' '. shift); } # Get peardir (relative to sourcedir) sub _get_peardir { my $this=shift; return $this->get_sourcedir()."/".$this->{phppkginfo_package}."-".$this->{phppkginfo_version}; } sub _get_mainpackage { my @packages = split("\n", _shell_exec('dh_listpackages')); return $packages[0]; } sub _install_new_files { my $this=shift; my $old_dir = shift; my $new_dir = shift; my $target = shift; my %old_files = {}; if (-d $old_dir) { opendir(my $old_dh, $old_dir) || error("can't opendir $old_dir: $!"); %old_files = map { $_ => 1 } grep( $_ ne "." && $_ ne "..", readdir($old_dh)); closedir $old_dh; } opendir(my $new_dh, $new_dir) || error("can't opendir $new_dir: $!"); my %new_files = map { $_ => 1 } grep( $_ ne "." && $_ ne "..", readdir($new_dh)); closedir $new_dh; for (sort keys %new_files) { my $old = "$old_dir/$_"; my $new = "$new_dir/$_"; my $subtarget = "$target/$_"; if (-d $new) { $this->_install_new_files( $old, $new, $subtarget ); } elsif( !$old_files{$_} ) { if (! -d $new) { $this->doit_in_sourcedir("/usr/bin/install", "-T", "-D", "--mode=0644", $new, $subtarget); } } } } sub _pear_channel_add { my $this=shift; my $destdir=shift; my $builddir=$this->get_builddir() || "."; # Create a new PEAR Registry, without ... $this->doit_in_sourcedir("/usr/bin/pear", "-d", "php_dir=$builddir/without", "list-channels"); # ... and with the channel installed $this->doit_in_sourcedir("/usr/bin/pear", "-c", "$builddir/.pearrc", "-d", "php_dir=$builddir/with", "channel-add", $this->get_sourcedir()."/channel.xml"); # Install channel specific files $this->_install_new_files("$builddir/without", "$builddir/with", "$destdir/usr/share/php") } sub _pear_install { my $this=shift; my $destdir=shift; my @params=@_; $this->doit_in_sourcedir("/usr/bin/pear", "-c", "debian/pearrc", # Allows local override "-d", "download_dir=/tmp", "-d", "include_path=/usr/share/php", "-d", "php_bin=/usr/bin/php", "-d", "bin_dir=/usr/bin", "-d", "php_dir=/usr/share/php", "-d", "data_dir=/usr/share/php/data", "-d", "doc_dir=/usr/share/doc/".$this->_get_mainpackage(), "-d", "test_dir=/usr/share/php/tests", "install", "--offline", "--nodeps", "-P", $destdir, @params, $this->_get_peardir()."/package.xml" ); } sub _set_sourcedir { my $this=shift; my $sourcedir=shift; # Get relative sourcedir abs_path (without symlinks) my $abspath = Cwd::abs_path($sourcedir); if (! -d $abspath || $abspath !~ /^\Q$this->{cwd}\E/) { error("invalid or non-existing path to the source directory: ".$sourcedir); } $this->{sourcedir} = File::Spec->abs2rel($abspath, $this->{cwd}); } sub pre_building_step { my $this=shift; my ($step)=@_; if ( (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) && -e $this->get_sourcepath("channel.xml") ) { error("Package can contain only one of package.xml or channel.xml, got both"); } if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if (!$this->{phppkginfo_package}) { $this->{phppkginfo_package} = $this->_phppkginfo('-d package .'); } if (!$this->{phppkginfo_version}) { $this->{phppkginfo_version} = $this->_phppkginfo('-d version .'); } if (!$this->{phppkginfo_package_type}) { $this->{phppkginfo_package_type} = $this->_phppkginfo('-d package_type .'); } if ($this->{phppkginfo_package_type} !~ /^(php|extsrc)$/) { error('PEAR package type not supported: "'.$this->{phppkginfo_package_type}.'"'); } } } sub configure { my $this=shift; if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if (-e $this->get_sourcepath("package2.xml")) { $this->doit_in_sourcedir("cp", "package2.xml", $this->_get_peardir()."/package.xml"); } else { $this->doit_in_sourcedir("cp", "package.xml", $this->_get_peardir()."/package.xml"); } # Remove md5sums and sha1sums to allow patching $this->doit_in_sourcedir('sed', '-i', '-e', 's/md5sum="[^"]*"//', '-e', 's/sha1sum="[^"]*"//', $this->_get_peardir()."/package.xml"); if ($this->{phppkginfo_package_type} eq 'extsrc') { # PECL $this->_set_sourcedir($this->_get_peardir()); $this->doit_in_sourcedir('phpize'); $this->SUPER::configure(); $this->_set_sourcedir('.'); } } } sub build { my $this=shift; $this->mkdir_builddir(); if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if ($this->{phppkginfo_package_type} eq 'extsrc') { # PECL $this->_set_sourcedir($this->_get_peardir()); $this->SUPER::build(); $this->_set_sourcedir('.'); } } } sub install { my $this=shift; my $destdir=shift; if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if ($this->{phppkginfo_package_type} =~ /^(php|extsrc)$/) { if ($this->{phppkginfo_package_type} eq 'extsrc') { # PECL $ENV{'INSTALL_ROOT'} = $destdir; $this->_pear_install($destdir, '--nobuild'); $this->_set_sourcedir($this->_get_peardir()); $this->SUPER::install($destdir); $this->_set_sourcedir('.'); } else { $this->_pear_install($destdir); } # remove unwanted files $this->doit_in_sourcedir("rm", "-rf", $destdir."/tmp"); $this->doit_in_sourcedir("rm", "-f", $destdir."/usr/share/php/.filemap"); $this->doit_in_sourcedir("rm", "-f", $destdir."/usr/share/php/.lock"); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/php/.channels"); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/php/.depdblock"); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/php/.depdb"); $this->doit_in_sourcedir("rmdir", "--ignore-fail-on-non-empty", $destdir."/usr/share/php/.registry/.channel.pecl.php.net"); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/php/.registry/.channel.doc.php.net"); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/php/.registry/.channel.__uri"); # workaround pear install which will copy docs file into a subdir if (-d $destdir."/usr/share/doc/".$this->_get_mainpackage()."/".$this->{phppkginfo_package}) { $this->doit_in_sourcedir("cp", "-r", $destdir."/usr/share/doc/".$this->_get_mainpackage()."/".$this->{phppkginfo_package}."/.", $destdir."/usr/share/doc/".$this->_get_mainpackage()."/."); $this->doit_in_sourcedir("rm", "-rf", $destdir."/usr/share/doc/".$this->_get_mainpackage()."/".$this->{phppkginfo_package}); } # delete COPYING and LICENSE files and prune empty directories if (-d $destdir."/usr/share/doc/") { $this->doit_in_sourcedir("find", $destdir."/usr/share/doc/", "-type", "f", "-name", "COPYING", "-delete"); $this->doit_in_sourcedir("find", $destdir."/usr/share/doc/", "-type", "f", "-name", "LICENSE", "-delete"); $this->doit_in_sourcedir("find", $destdir."/usr/share/doc/", "-type", "f", "-empty", "-delete"); $this->doit_in_sourcedir("find", $destdir."/usr/share/doc/", "-type", "d", "-empty", "-delete"); } # Remove tests files if (!$ENV{PHPPEAR_KEEP_TESTS}) { $this->doit_in_sourcedir('rm', '-rf', $destdir.'/usr/share/php/tests'); } # add package.xml and changelog to doc dir $this->doit_in_sourcedir("mkdir", "-p", $destdir."/usr/share/doc/".$this->_get_mainpackage()); $this->doit_in_sourcedir("cp", "package.xml", $destdir."/usr/share/doc/".$this->_get_mainpackage()); if (-e $this->get_sourcepath("package2.xml")) { $this->doit_in_sourcedir("cp", "package2.xml", $destdir."/usr/share/doc/".$this->_get_mainpackage()); } complex_doit($this->{phppkginfo_path}." -d changelog ".$this->get_sourcedir()." > ".$destdir."/usr/share/doc/".$this->_get_mainpackage()."/changelog"); } } if (-e $this->get_sourcepath("channel.xml")) { $this->_pear_channel_add($destdir); } } sub test { my $this=shift; if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if ($this->{phppkginfo_package_type} eq 'extsrc') { # PECL $ENV{'NO_INTERACTION'} = '1'; $this->SUPER::test(); } } } sub clean { my $this=shift; if (-e $this->get_sourcepath("package.xml") || -e $this->get_sourcepath("package2.xml")) { if ($this->{phppkginfo_package_type} eq 'extsrc') { # PECL $this->_set_sourcedir($this->_get_peardir()); $this->SUPER::clean(); $this->doit_in_sourcedir('phpize', '--clean'); $this->_set_sourcedir('.'); } $this->doit_in_sourcedir("rm", "-f", $this->_get_peardir()."/package.xml"); } $this->rmdir_builddir(); } 1