Backport fix of file checker generation
This commit is contained in:
parent
f2cfb928e8
commit
2e2cc55350
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2015-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file build/generate_filecheck_xml.php
|
* \file build/generate_filelist_xml.php
|
||||||
* \ingroup dev
|
* \ingroup dev
|
||||||
* \brief This script create a xml checksum file
|
* \brief This script create a xml checksum file
|
||||||
*/
|
*/
|
||||||
@ -40,55 +40,128 @@ require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
|
|||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$includecustom=0;
|
||||||
|
$includeconstants=array();
|
||||||
|
|
||||||
if (empty($argv[1]))
|
if (empty($argv[1]))
|
||||||
{
|
{
|
||||||
print "Usage: ".$script_file." release=x.y.z\n";
|
print "Usage: ".$script_file." release=auto|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
|
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
}
|
}
|
||||||
parse_str($argv[1]);
|
parse_str($argv[1]);
|
||||||
|
|
||||||
if ($release != DOL_VERSION)
|
$i=0;
|
||||||
|
while ($i < $argc)
|
||||||
{
|
{
|
||||||
print 'Error: release is not version declared into filefunc.in.php.'."\n";
|
if (! empty($argv[$i])) parse_str($argv[$i]);
|
||||||
exit -1;
|
if (preg_match('/includeconstant=/',$argv[$i]))
|
||||||
|
{
|
||||||
|
$tmp=explode(':', $includeconstant, 3);
|
||||||
|
if (count($tmp) != 3)
|
||||||
|
{
|
||||||
|
print "Error: Bad parameter includeconstant ".$includeconstant."\n";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
|
$includeconstants[$tmp[0]][$tmp[1]] = $tmp[2];
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If release is auto, we take current version
|
||||||
|
$tmpver=explode('-', $release, 2);
|
||||||
|
if ($tmpver[0] == 'auto')
|
||||||
|
{
|
||||||
|
$release=DOL_VERSION;
|
||||||
|
if ($tmpver[1]) $release.='-'.$tmpver[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($includecustom))
|
||||||
|
{
|
||||||
|
$tmpver=explode('-', $release, 2);
|
||||||
|
if (DOL_VERSION != $tmpver[0])
|
||||||
|
{
|
||||||
|
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpver[0].')'."\n";
|
||||||
|
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1]\n";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (! preg_match('/'.preg_quote(DOL_VERSION,'/').'-/',$release))
|
||||||
|
{
|
||||||
|
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parmater (ex: '.DOL_VERSION.'-mydistrib).'."\n";
|
||||||
|
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1]\n";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "Release : ".$release."\n";
|
||||||
|
print "Include custom in signature : ".$includecustom."\n";
|
||||||
|
print "Include constants in signature : ";
|
||||||
|
foreach ($includeconstants as $countrycode => $tmp)
|
||||||
|
{
|
||||||
|
foreach($tmp as $constname => $constvalue)
|
||||||
|
{
|
||||||
|
print $constname.'='.$constvalue." ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
|
||||||
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
$outputdir=dirname(dirname(__FILE__)).'/htdocs/install';
|
$outputdir=dirname(dirname(__FILE__)).'/htdocs/install';
|
||||||
print 'Delete current files '.$outputdir.'/filelist*.xml'."\n";
|
print 'Delete current files '.$outputdir.'/filelist*.xml'."\n";
|
||||||
dol_delete_file($outputdir.'/filelist*.xml',0,1,1);
|
dol_delete_file($outputdir.'/filelist*.xml',0,1,1);
|
||||||
|
|
||||||
|
$checksumconcat=array();
|
||||||
|
|
||||||
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
||||||
$fp = fopen($outputfile,'w');
|
$fp = fopen($outputfile,'w');
|
||||||
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now(), 'dayhourrfc').'" generator="'.$script_file.'">'."\n");
|
||||||
|
|
||||||
fputs($fp, '<dolibarr_htdocs_dir>'."\n");
|
foreach ($includeconstants as $countrycode => $tmp)
|
||||||
|
{
|
||||||
|
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
|
||||||
|
foreach($tmp as $constname => $constvalue)
|
||||||
|
{
|
||||||
|
$valueforchecksum=(empty($constvalue)?'0':$constvalue);
|
||||||
|
$checksumconcat[]=$valueforchecksum;
|
||||||
|
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
|
||||||
|
}
|
||||||
|
fputs($fp, '</dolibarr_constants>'."\n");
|
||||||
|
}
|
||||||
|
|
||||||
$checksumconcat=array();
|
fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
|
||||||
|
|
||||||
$dir_iterator1 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
/*$dir_iterator1 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
||||||
$iterator1 = new RecursiveIteratorIterator($dir_iterator1);
|
$iterator1 = new RecursiveIteratorIterator($dir_iterator1);
|
||||||
// need to ignore document custom etc
|
// Need to ignore document custom etc. Note: this also ignore natively symbolic links.
|
||||||
$files = new RegexIterator($iterator1, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
$files = new RegexIterator($iterator1, '#^(?:[A-Z]:)?(?:/(?!(?:'.($includecustom?'':'custom\/|').'documents\/|conf\/|install\/))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
|
*/
|
||||||
|
$regextoinclude='\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
|
||||||
|
$regextoexclude='('.($includecustom?'':'custom|').'documents|conf|install|public\/test|Shared\/PCLZip|nusoap\/lib\/Mail|php\/example|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
|
||||||
|
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
||||||
$dir='';
|
$dir='';
|
||||||
$needtoclose=0;
|
$needtoclose=0;
|
||||||
foreach ($files as $file) {
|
foreach ($files as $filetmp) {
|
||||||
$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
$file = $filetmp['fullname'];
|
||||||
if ($newdir!=$dir) {
|
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
||||||
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose=1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file)=="file") {
|
if (filetype($file)=="file") {
|
||||||
$md5=md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[]=$md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, '<md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
@ -102,28 +175,36 @@ $checksumconcat=array();
|
|||||||
|
|
||||||
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
|
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
|
||||||
|
|
||||||
$dir_iterator2 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../scripts/');
|
// TODO Replace RecursiveDirectoryIterator with dol_dir_list
|
||||||
|
/*$dir_iterator2 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../scripts/');
|
||||||
$iterator2 = new RecursiveIteratorIterator($dir_iterator2);
|
$iterator2 = new RecursiveIteratorIterator($dir_iterator2);
|
||||||
// need to ignore document custom etc
|
// Need to ignore document custom etc. Note: this also ignore natively symbolic links.
|
||||||
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
|
*/
|
||||||
|
$regextoinclude='\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
|
||||||
|
$regextoexclude='(custom|documents|conf|install)$'; // Exclude dirs
|
||||||
|
$files = dol_dir_list(dirname(__FILE__).'/../scripts/', 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
||||||
$dir='';
|
$dir='';
|
||||||
$needtoclose=0;
|
$needtoclose=0;
|
||||||
foreach ($files as $file) {
|
foreach ($files as $filetmp) {
|
||||||
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
$file = $filetmp['fullname'];
|
||||||
|
//$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
|
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
if ($newdir!=$dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose=1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file)=="file") {
|
if (filetype($file)=="file") {
|
||||||
$md5=md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[]=$md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, '<md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '</dolibarr_script_dir>'."\n");
|
fputs($fp, '</dolibarr_script_dir>'."\n");
|
||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user