diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index e23c86871a0..48fc9cf2dfd 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -109,6 +109,10 @@ jobs: coverage: none # disable xdebug, pcov tools: phpcs + # Install perltidy and perlcritic + - name: Install perltidy and perlcritic + run: sudo apt-get update && sudo apt-get install -y perltidy libperl-critic-perl + # Run all the precommit tools (defined into pre-commit-config.yaml). # We can force exclusion of some of them here. - name: Run pre-commit hooks diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ef5560682ac..91babc17efe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -274,3 +274,21 @@ repos: |htdocs/install/pgsql/functions/functions.*\.sql |htdocs/modulebuilder/template/sql/.*\.sql )$ + + - repo: https://github.com/perltidy/perltidy + rev: '20250105.03' + hooks: + - id: perltidy + # virtualmin excuded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823 + exclude: (?x)^ + (dev/build/perl/virtualmin/dolibarr.pl + )$ + args: [ --tabs, --nola ] + - repo: https://github.com/henryykt/pre-commit-perl + rev: v0.0.5 + hooks: + - id: perlcritic + # virtualmin excuded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823 + exclude: (?x)^ + (dev/build/perl/virtualmin/dolibarr.pl + )$ diff --git a/dev/build/doxygen/dolibarr-doxygen-build.pl b/dev/build/doxygen/dolibarr-doxygen-build.pl index 08deb42d6cd..345a1831075 100755 --- a/dev/build/doxygen/dolibarr-doxygen-build.pl +++ b/dev/build/doxygen/dolibarr-doxygen-build.pl @@ -1,54 +1,94 @@ #!/usr/bin/perl +##no critic (InputOutput::RequireBriefOpen) +use strict; +use warnings; + #-------------------------------------------------------------------- # Start the generation of the development documentation with doxygen #-------------------------------------------------------------------- # Determine the patho of this script -($DIR=$0) =~ s/([^\/\\]+)$//; -$DIR||='.'; +( my $DIR = $0 ) =~ s/([^\/\\]+)$//; +$DIR ||= '.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; -$OPTIONS=""; +my $OPTIONS = ""; + #$OPTIONS="-d Preprocessor"; -$CONFFILE="dolibarr-doxygen.doxyfile"; +my $CONFFILE = "dolibarr-doxygen.doxyfile"; use Cwd; my $dir = getcwd; print "Current dir is: $dir\n"; + #print "Running dir for doxygen must be: $DIR\n"; -if (! -s "dev/build/doxygen/$CONFFILE") -{ - print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n"; - print "\n"; +if ( !-s "dev/build/doxygen/$CONFFILE" ) { + print +"Error: current directory for building Dolibarr doxygen documentation is not correct.\n"; + print "\n"; print "Change your current directory then, to launch the script, run:\n"; - print '> perl .\dolibarr-doxygen-build.pl (on Windows)'."\n"; - print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)'."\n"; - sleep 4; - exit 1; + print '> perl .\dolibarr-doxygen-build.pl (on Windows)' . "\n"; + print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)' . "\n"; + sleep 4; + exit 1; } -$SOURCE="."; +my $SOURCE = "."; # Get version $MAJOR, $MINOR and $BUILD -$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" ); -if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; } -while () { - if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; } +my $result = open( my $IN, "<", $SOURCE . "/htdocs/filefunc.inc.php" ); +if ( !$result ) { + die "Error: Can't open descriptor file " . $SOURCE + . "/htdocs/filefunc.inc.php\n"; } -close IN; -($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3); -if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; } +my $PROJVERSION = ""; +while (<$IN>) { + if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) { + $PROJVERSION = $1; + last; + } +} +close $IN; +if ( $PROJVERSION eq "" ) { + my $DOL_MAJOR_VERSION; + my $DOL_MINOR_VERSION; + my @VERSION_FILES = ( "filefunc.inc.php", "version.inc.php" ); + foreach my $file (@VERSION_FILES) { + $result = open( my $IN, "<", $SOURCE . "/htdocs/$file" ); + if ( !$result ) { + die "Error: Can't open descriptor file " . $SOURCE + . "/htdocs/$file\n"; + } + while (<$IN>) { + if ( $_ =~ /define\('DOL_MAJOR_VERSION', '([\d\.a-z\-]+)'\)/ ) { + $DOL_MAJOR_VERSION = $1; + } + if ( $_ =~ /define\('DOL_MINOR_VERSION', '([\d\.a-z\-]+)'\)/ ) { + $DOL_MINOR_VERSION = $1; + } + } + close $IN; + } + $PROJVERSION = $DOL_MAJOR_VERSION . '.' . $DOL_MINOR_VERSION; +} -$version=$MAJOR.".".$MINOR.".".$BUILD; +( my $MAJOR, my $MINOR, my $BUILD ) = split( /\./, $PROJVERSION, 3 ); +if ( !defined($MINOR) || $MINOR eq '' ) { + die "Error can't detect version from " . $SOURCE + . "/htdocs/filefunc.inc.php"; +} +my $version = $MAJOR . "." . $MINOR . "." . $BUILD; -print "Running doxygen for version ".$version.", please wait...\n"; -print "cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n"; -$result=`cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`; +print "Running doxygen for version " . $version . ", please wait...\n"; +print "cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/" . $version + . "/' | doxygen $OPTIONS - 2>&1\n"; +$result = +`cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`; print $result; diff --git a/dev/build/doxygen/dolibarr-doxygen-filter.pl b/dev/build/doxygen/dolibarr-doxygen-filter.pl index 9233bd9e77d..1c7f27569e0 100755 --- a/dev/build/doxygen/dolibarr-doxygen-filter.pl +++ b/dev/build/doxygen/dolibarr-doxygen-filter.pl @@ -4,85 +4,79 @@ # on PHP source files before running Doxygen. # \author Laurent Destailleur #-------------------------------------------------------------------- +## no critic (InputOutput::RequireBriefOpen) + +use strict; +use warnings; # Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot -$file=$ARGV[0]; -if (! $file) -{ +my $file = $ARGV[0]; +if ( !$file ) { print "Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot\n"; exit; } -open(FILE,$file) || die "Failed to open file $file"; -while () -{ - if ($_ =~ /\\version\s/i) - { +open( my $fh, "<", $file ) || die "Failed to open file $file"; +while (<$fh>) { + if ( $_ =~ /\\version\s/i ) { $_ =~ s/\$Id://i; $_ =~ s/(Exp|)\s\$$//i; $_ =~ s/(\\version\s+)[^\s]+\s/$1/i; $_ =~ s/(\w)\s(\w)/$1_$2/g; } $_ =~ s/exit\s*;/exit(0);/i; - $i=0; - $len=length($_); - $s=""; - $insidequote=0; - $insidedquote=0; - $ignore=""; - while ($i < $len) - { - $c=substr($_,$i,1); - if ($c eq "\\") - { - if ($insidequote) { $ignore="'"; }; - if ($insidedquote) { $ignore="\""; }; + my $i = 0; + my $len = length($_); + my $s = ""; + my $insidequote = 0; + my $insidedquote = 0; + my $ignore = ""; + + while ( $i < $len ) { + my $c = substr( $_, $i, 1 ); + if ( $c eq "\\" ) { + if ($insidequote) { $ignore = "'"; } + if ($insidedquote) { $ignore = "\""; } } - else - { - if ($c eq "'") - { - if (! $insidedquote) - { - $c="\""; + else { + if ( $c eq "'" ) { + if ( !$insidedquote ) { + $c = "\""; + #print "X".$ignore; - if ($ignore ne "'") - { + if ( $ignore ne "'" ) { + #print "Z".$ignore; $insidequote++; - if ($insidequote == 2) - { - $insidequote=0; + if ( $insidequote == 2 ) { + $insidequote = 0; } } } + #print "X".$insidequote; } - elsif ($c eq "\"") - { + elsif ( $c eq "\"" ) { + #print "Y".$insidequote; - if ($insidequote) - { - $c="'"; + if ($insidequote) { + $c = "'"; } - else - { - if ($ignore ne "\"") - { + else { + if ( $ignore ne "\"" ) { $insidedquote++; - if ($insidedquote == 2) - { - $insidedquote=0; + if ( $insidedquote == 2 ) { + $insidedquote = 0; } } } } - $ignore=""; + $ignore = ""; } - $s.=$c; + $s .= $c; $i++; } print $s; } -close(FILE); +close($fh); diff --git a/dev/build/doxygen/dolibarr-doxygen-getversion.pl b/dev/build/doxygen/dolibarr-doxygen-getversion.pl index 31c52434d1f..3c98835ff22 100755 --- a/dev/build/doxygen/dolibarr-doxygen-getversion.pl +++ b/dev/build/doxygen/dolibarr-doxygen-getversion.pl @@ -1,4 +1,7 @@ #!/usr/bin/perl +use strict; +use warnings; + #-------------------------------------------------------------------- # Script to get version of a source file # Does not work with cygwin cvs command on Windows. @@ -7,15 +10,18 @@ # Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot -$file=$ARGV[0]; -if (! $file) -{ +$file = $ARGV[0]; +if ( !$file ) { print "Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot\n"; exit; } -$commande='cvs status "'.$file.'" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\''; +$commande = + 'cvs status "' + . $file + . '" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\''; + #print $commande; -$result=`$commande 2>&1`; +$result = `$commande 2>&1`; print $result; diff --git a/dev/build/gource/getavatars.pl b/dev/build/gource/getavatars.pl index 1f9b2ceffd5..e82ba51be65 100755 --- a/dev/build/gource/getavatars.pl +++ b/dev/build/gource/getavatars.pl @@ -1,4 +1,5 @@ #!/usr/bin/perl +## no critic (InputOutput::RequireBriefOpen) #fetch Gravatars use strict; @@ -10,39 +11,44 @@ use Digest::MD5 qw(md5_hex); my $size = 90; my $output_dir = './avatars'; -die("no .git/ directory found in current path\n") unless -d './avatars'; +die("no .git repository found in current path\n") unless -r './.git'; mkdir($output_dir) unless -d $output_dir; -open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $!\n"); +open( my $GITLOG, '-|', q/git log --pretty=format:"%ae|%an" --reverse/ ) + or die("failed to read git-log: $!\n"); my %processed_authors; -while() { - chomp; - my($email, $author) = split(/\|/, $_); +while (<$GITLOG>) { + chomp; + my ( $email, $author ) = split( /\|/, $_ ); - next if $processed_authors{$author}++; + next if $processed_authors{$author}++; - my $author_image_file = $output_dir . '/' . $author . '.png'; + my $author_image_file = $output_dir . '/' . $author . '.png'; - #skip images we have - next if -e $author_image_file; + #skip images we have + next if -e $author_image_file; - #try and fetch image + #try and fetch image - my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size; + my $grav_url = + "https://www.gravatar.com/avatar/" + . md5_hex( lc $email ) + . "?d=404&size=" + . $size; - warn "fetching image for '$author' $email ($grav_url)...\n"; + warn "fetching image for '$author' $email ($grav_url)...\n"; - my $rc = getstore($grav_url, $author_image_file); + my $rc = getstore( $grav_url, $author_image_file ); - sleep(1); + sleep(1); - if($rc != 200) { - unlink($author_image_file); - next; - } + if ( $rc != 200 ) { + unlink($author_image_file); + next; + } } -close GITLOG; +close $GITLOG; diff --git a/dev/build/makepack-dolibarr.pl b/dev/build/makepack-dolibarr.pl index a9f8eaee9c9..6aa331f050d 100755 --- a/dev/build/makepack-dolibarr.pl +++ b/dev/build/makepack-dolibarr.pl @@ -12,77 +12,88 @@ #DESTIDOLIMEDMODULES='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/modules' #DESTIDOLIMEDSTABLE='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/stable' #---------------------------------------------------------------------------- +## no critic (InputOutput::ProhibitExplicitStdin,InputOutput::RequireBriefOpen) +use strict; +use warnings; use Cwd; use Term::ANSIColor; # Change this to defined target for option 98 and 99 -$PROJECT="dolibarr"; +$PROJECT = "dolibarr"; -$PUBLISHBETARC="$ENV{'DESTIASSOLOGIN'}\@vmprod1.dolibarr.org:/home/dolibarr/asso.dolibarr.org/dolibarr_documents/website/www.dolibarr.org/files"; -$PUBLISHSTABLE="$ENV{'DESTISFLOGIN'}\@frs.sourceforge.net:/home/frs/project/dolibarr"; +$PUBLISHBETARC = +"$ENV{'DESTIASSOLOGIN'}\@vmprod1.dolibarr.org:/home/dolibarr/asso.dolibarr.org/dolibarr_documents/website/www.dolibarr.org/files"; +$PUBLISHSTABLE = + "$ENV{'DESTISFLOGIN'}\@frs.sourceforge.net:/home/frs/project/dolibarr"; # due to implicit origin on git commands, example: implicit origin, lionel upstream, eric dolibarr -$GITREMOTENAME="$ENV{'GITREMOTENAME'}"; +$GITREMOTENAME = "$ENV{'GITREMOTENAME'}"; + #@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","EXEDOLIWAMP","SNAPSHOT"); # Possible packages -@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","EXEDOLIWAMP","SNAPSHOT"); # Possible packages -%REQUIREMENTPUBLISH=( -"SF"=>"git ssh rsync", -"ASSO"=>"git ssh rsync" +@LISTETARGET = ( + "TGZ", "ZIP", "RPM_GENERIC", "RPM_FEDORA", + "RPM_MANDRIVA", "RPM_OPENSUSE", "DEB", "EXEDOLIWAMP", + "SNAPSHOT" +); # Possible packages +%REQUIREMENTPUBLISH = ( + "SF" => "git ssh rsync", + "ASSO" => "git ssh rsync" ); -%REQUIREMENTTARGET=( # Tool requirement for each package -"TGZ"=>"tar", -"ZIP"=>"7z", -"XZ"=>"xz", -"RPM_GENERIC"=>"rpmbuild", -"RPM_FEDORA"=>"rpmbuild", -"RPM_MANDRIVA"=>"rpmbuild", -"RPM_OPENSUSE"=>"rpmbuild", -"DEB"=>"dpkg,po2debconf", # need also debhelper -"FLATPACK"=>"flatpack", -"EXEDOLIWAMP"=>"ISCC.exe", -"SNAPSHOT"=>"tar" +%REQUIREMENTTARGET = ( # Tool requirement for each package + "TGZ" => "tar", + "ZIP" => "7z", + "XZ" => "xz", + "RPM_GENERIC" => "rpmbuild", + "RPM_FEDORA" => "rpmbuild", + "RPM_MANDRIVA" => "rpmbuild", + "RPM_OPENSUSE" => "rpmbuild", + "DEB" => "dpkg,po2debconf", # need also debhelper + "FLATPACK" => "flatpack", + "EXEDOLIWAMP" => "ISCC.exe", + "SNAPSHOT" => "tar" ); -%ALTERNATEPATH=( -"7z"=>"7-ZIP", -"makensis.exe"=>"NSIS" +%ALTERNATEPATH = ( + "7z" => "7-ZIP", + "makensis.exe" => "NSIS" ); -$RPMSUBVERSION="auto"; # auto use value found into BUILD -if (-d "/usr/src/redhat") { $RPMDIR="/usr/src/redhat"; } # redhat -if (-d "/usr/src/packages") { $RPMDIR="/usr/src/packages"; } # opensuse -if (-d "/usr/src/RPM") { $RPMDIR="/usr/src/RPM"; } # mandrake - +$RPMSUBVERSION = "auto"; # auto use value found into BUILD +if ( -d "/usr/src/redhat" ) { $RPMDIR = "/usr/src/redhat"; } # redhat +if ( -d "/usr/src/packages" ) { $RPMDIR = "/usr/src/packages"; } # opensuse +if ( -d "/usr/src/RPM" ) { $RPMDIR = "/usr/src/RPM"; } # mandrake use vars qw/ $REVISION $VERSION /; -$VERSION="4.0"; - - +$VERSION = "4.0"; #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ -($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; -$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; +( $DIR = $0 ) =~ s/([^\/\\]+)$//; +( $PROG = $1 ) =~ s/\.([^\.]*)$//; +$Extension = $1; +$DIR ||= '.'; +$DIR =~ s/([^\/\\])[\\\/]+$/$1/; -$SOURCE="$DIR/../.."; -$DESTI="$SOURCE/build"; -if ($SOURCE !~ /^\// && $SOURCE !~ /^[a-z]:/i) -{ - print "Error: Launch the script $PROG.$Extension with its full path from /.\n"; +$SOURCE = "$DIR/../.."; +$DESTI = "$SOURCE/build"; +if ( $SOURCE !~ /^\// && $SOURCE !~ /^[a-z]:/i ) { + print + "Error: Launch the script $PROG.$Extension with its full path from /.\n"; print "$PROG.$Extension aborted.\n"; sleep 2; exit 1; } -if (! $ENV{"DESTIASSOLOGIN"} || ! $ENV{"DESTISFLOGIN"}) -{ +if ( !$ENV{"DESTIASSOLOGIN"} || !$ENV{"DESTISFLOGIN"} ) { print "Error: Missing environment variables.\n"; - print "You must define the environment variable DESTIASSOLOGIN and DESTISFLOGIN to define your login to connect to the dolibarr foundation server and/or mirrors servers.\n"; + print +"You must define the environment variable DESTIASSOLOGIN and DESTISFLOGIN to define your login to connect to the dolibarr foundation server and/or mirrors server.\n"; print "$PROG.$Extension aborted.\n"; print "\n"; print "You can set them with\n"; print "On Linux:\n"; - print "export DESTIASSOLOGIN='mylogin'; export DESTISFLOGIN='mylogin,project';\n"; + print +"export DESTIASSOLOGIN='mylogin'; export DESTISFLOGIN='mylogin,project';\n"; print "On Windows:\n"; print "set DESTIASSOLOGIN=mylogin\n"; print "set DESTISFLOGIN=mylogin,project\n"; @@ -93,10 +104,10 @@ if (! $ENV{"DESTIASSOLOGIN"} || ! $ENV{"DESTISFLOGIN"}) sleep 2; exit 1; } -if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"}) -{ +if ( !$ENV{"DESTIBETARC"} || !$ENV{"DESTISTABLE"} ) { print "Error: Missing environment variables.\n"; - print "You must define the environment variable DESTIBETARC and DESTISTABLE to point to the\ndirectories where you want to save the generated packages.\n"; + print +"You must define the environment variable DESTIBETARC and DESTISTABLE to point to the\ndirectories where you want to save the generated packages.\n"; print "$PROG.$Extension aborted.\n"; print "\n"; print "You can set them with\n"; @@ -107,21 +118,24 @@ if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"}) print "set DESTISTABLE=c:/tmp\n"; print "\n"; print "Example in .bashrc:\n"; - print "export DESTIBETARC='/mnt/HDDATA1_LD/Mes Archives/Doli/dolibarr/lastbuild'\n"; - print "export DESTISTABLE='/mnt/HDDATA1_LD/Mes Archives/Doli/dolibarr/stable'\n"; + print +"export DESTIBETARC='/mnt/HDDATA1_LD/Mes Archives/Doli/dolibarr/lastbuild'\n"; + print +"export DESTISTABLE='/mnt/HDDATA1_LD/Mes Archives/Doli/dolibarr/stable'\n"; sleep 2; exit 1; } -if (! -d $ENV{"DESTIBETARC"} || ! -d $ENV{"DESTISTABLE"}) -{ - print "Error: Directory of environment variable DESTIBETARC ($ENV{'DESTIBETARC'}) or DESTISTABLE ($ENV{'DESTISTABLE'}) does not exist.\n"; +if ( !-d $ENV{"DESTIBETARC"} || !-d $ENV{"DESTISTABLE"} ) { + print +"Error: Directory of environment variable DESTIBETARC ($ENV{'DESTIBETARC'}) or DESTISTABLE ($ENV{'DESTISTABLE'}) does not exist.\n"; print "$PROG.$Extension aborted.\n"; sleep 2; exit 1; } -if (! $ENV{"GITREMOTENAME"}) { - print "Error: environment variable GITREMOTENAME does not exist. You can set it to 'origin' or any other git remote name.\n"; +if ( !$ENV{"GITREMOTENAME"} ) { + print +"Error: environment variable GITREMOTENAME does not exist. You can set it to 'origin' or any other git remote name.\n"; print "$PROG.$Extension aborted.\n"; sleep 2; exit 1; @@ -129,10 +143,16 @@ if (! $ENV{"GITREMOTENAME"}) { # Detect OS type # -------------- -if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; } -elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } -elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i || "$^O" =~ /msys/i) { $OS='windows'; $CR="\r"; } -if (! $OS) { +if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) { + $OS = 'linux'; + $CR = ''; +} +elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; } +elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i || "$^O" =~ /msys/i ) { + $OS = 'windows'; + $CR = "\r"; +} +if ( !$OS ) { print "Error: Can't detect your OS.\n"; print "Can't continue.\n"; print "$PROG.$Extension aborted.\n"; @@ -142,43 +162,52 @@ if (! $OS) { # Define buildroot # ---------------- -if ($OS =~ /linux/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /linux/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /macos/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /macos/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /windows/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp"; - $PROGPATH=$ENV{"ProgramFiles"}; +if ( $OS =~ /windows/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp"; + $PROGPATH = $ENV{"ProgramFiles"}; } -if (! $TEMP || ! -d $TEMP) { +if ( !$TEMP || !-d $TEMP ) { print "Error: A temporary directory can not be find.\n"; print "Check that TEMP or TMP environment variable is set correctly.\n"; print "$PROG.$Extension aborted.\n"; sleep 2; exit 2; } -$BUILDROOT="$TEMP/buildroot"; - +$BUILDROOT = "$TEMP/buildroot"; # Get version $MAJOR, $MINOR and $BUILD -$result = open( IN, "<" . $SOURCE . "/htdocs/version.inc.php" ); -if ( !$result ) { die "Error: Can't open version file " . $SOURCE . "/htdocs/version.inc.php\n"; } -while () { - if ( $_ =~ /define\('DOL_MAJOR_VERSION',\s*'([\d\.a-z\-]+)'\)/ ) { $MAJORVERSION = $1; break; } +open( my $IN, "<", $SOURCE . "/htdocs/version.inc.php" ) + or die "Error: Can't open version file " + . $SOURCE + . "/htdocs/version.inc.php\n"; +while (<$IN>) { + if ( $_ =~ /define\('DOL_MAJOR_VERSION',\s*'([\d\.a-z\-]+)'\)/ ) { + $MAJORVERSION = $1; + break; + } } -close IN; -$result = open( IN, "<" . $SOURCE . "/htdocs/filefunc.inc.php" ); -if ( !$result ) { die "Error: Can't open version file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; } -while () { - if ( $_ =~ /define\('DOL_MINOR_VERSION',\s*'([\d\.a-z\-]+)'\)/ ) { $MINORVERSION = $1; break; } +close $IN; +open( my $IN2, "<", $SOURCE . "/htdocs/filefunc.inc.php" ) + or die "Error: Can't open version file " + . $SOURCE + . "/htdocs/filefunc.inc.php\n"; +while (<$IN2>) { + if ( $_ =~ /define\('DOL_MINOR_VERSION',\s*'([\d\.a-z\-]+)'\)/ ) { + $MINORVERSION = $1; + break; + } } -close IN; -$PROJVERSION=$MAJORVERSION.".".$MINORVERSION; +close $IN2; +$PROJVERSION = $MAJORVERSION . "." . $MINORVERSION; -($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3); -if ($MINOR eq '') { die "Error can't detect version"; } +( $MAJOR, $MINOR, $BUILD ) = split( /\./, $PROJVERSION, 3 ); +if ( $MINOR eq '' ) { die "Error can't detect version"; } # Set vars for packaging $FILENAME = "$PROJECT"; @@ -188,324 +217,415 @@ $FILENAMEZIP = "$PROJECT-$MAJOR.$MINOR.$BUILD"; $FILENAMEXZ = "$PROJECT-$MAJOR.$MINOR.$BUILD"; $FILENAMEDEB = "see later"; $FILENAMEEXEDOLIWAMP = "DoliWamp-$MAJOR.$MINOR.$BUILD"; + # For RPM -$ARCH='noarch'; +$ARCH = 'noarch'; $newbuild = $BUILD; -$newbuild =~ s/(dev|alpha)/0.1.a/gi; # dev (fedora) -$newbuild =~ s/beta(.?)/0.2.beta/gi; # beta (fedora) (we want beta1, beta2, betax to be same package name) -$newbuild =~ s/rc(.?)/0.3.rc/gi; # rc (fedora) (we want rc1, rc2, rcx to be same package name) -if ($newbuild !~ /-/) { $newbuild.='-0.4'; } # finale (fedora) +$newbuild =~ s/(dev|alpha)/0.1.a/gi; # dev (fedora) +$newbuild =~ s/beta(.?)/0.2.beta/gi + ; # beta (fedora) (we want beta1, beta2, betax to be same package name) +$newbuild =~ s/rc(.?)/0.3.rc/gi + ; # rc (fedora) (we want rc1, rc2, rcx to be same package name) +if ( $newbuild !~ /-/ ) { $newbuild .= '-0.4'; } # finale (fedora) + #$newbuild =~ s/(dev|alpha)/0/gi; # dev #$newbuild =~ s/beta/1/gi; # beta #$newbuild =~ s/rc./2/gi; # rc #if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale -$REL1 = $newbuild; $REL1 =~ s/-.*$//gi; -if ($RPMSUBVERSION eq 'auto') { $RPMSUBVERSION = $newbuild; $RPMSUBVERSION =~ s/^.*-//gi; } -$FILENAMETGZ2="$PROJECT-$MAJOR.$MINOR.$REL1"; -$FILENAMERPM=$FILENAMETGZ2."-".$RPMSUBVERSION.".".$ARCH.".rpm"; -$FILENAMERPMSRC=$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm"; +$REL1 = $newbuild; +$REL1 =~ s/-.*$//gi; +if ( $RPMSUBVERSION eq 'auto' ) { + $RPMSUBVERSION = $newbuild; + $RPMSUBVERSION =~ s/^.*-//gi; +} +$FILENAMETGZ2 = "$PROJECT-$MAJOR.$MINOR.$REL1"; +$FILENAMERPM = $FILENAMETGZ2 . "-" . $RPMSUBVERSION . "." . $ARCH . ".rpm"; +$FILENAMERPMSRC = $FILENAMETGZ2 . "-" . $RPMSUBVERSION . ".src.rpm"; + # For Deb $newbuild = $BUILD; -$newbuild =~ s/(dev|alpha)/1/gi; # dev -$newbuild =~ s/beta(.?)/2/gi; # beta (we want beta1, beta2, betax to be same package name) -$newbuild =~ s/rc(.?)/3/gi; # rc (we want rc1, rc2, rcx to be same package name) -if ($newbuild !~ /-/) { $newbuild.='-4'; } # finale is same than rc. +$newbuild =~ s/(dev|alpha)/1/gi; # dev +$newbuild =~ s/beta(.?)/2/gi + ; # beta (we want beta1, beta2, betax to be same package name) +$newbuild =~ + s/rc(.?)/3/gi; # rc (we want rc1, rc2, rcx to be same package name) +if ( $newbuild !~ /-/ ) { $newbuild .= '-4'; } # finale is same than rc. + # now newbuild is 0-1 or 0-4 for example. Note that for native package (see debian/source/format), we should not use a dash part but to get a better version management $build = $newbuild; $build =~ s/-.*$//g; + # now build is 0 for example # $build .= '+nmu1'; # now build is 0+nmu1 for example -$FILENAMEDEBNATIVE="${PROJECT}_${MAJOR}.${MINOR}.${build}"; -$FILENAMEDEB="${PROJECT}_${MAJOR}.${MINOR}.${newbuild}"; -$FILENAMEDEBSHORT="${PROJECT}_${MAJOR}.${MINOR}.${build}"; +$FILENAMEDEBNATIVE = "${PROJECT}_${MAJOR}.${MINOR}.${build}"; +$FILENAMEDEB = "${PROJECT}_${MAJOR}.${MINOR}.${newbuild}"; +$FILENAMEDEBSHORT = "${PROJECT}_${MAJOR}.${MINOR}.${build}"; - -my $copyalreadydone=0; -my $batch=0; -for (0..@ARGV-1) { - if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; } - if ($ARGV[$_] =~ /^-*desti=(.+)/i) { $DESTI=$1; } - if ($ARGV[$_] =~ /^-*prefix=(.+)/i) { - $PREFIX=$1; - $FILENAMESNAPSHOT.="-".$PREFIX; +my $copyalreadydone = 0; +my $batch = 0; +for ( 0 .. @ARGV - 1 ) { + if ( $ARGV[$_] =~ /^-*target=(\w+)/i ) { $target = $1; $batch = 1; } + if ( $ARGV[$_] =~ /^-*desti=(.+)/i ) { $DESTI = $1; } + if ( $ARGV[$_] =~ /^-*prefix=(.+)/i ) { + $PREFIX = $1; + $FILENAMESNAPSHOT .= "-" . $PREFIX; } } -if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTIBETARC is defined -if ($ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/) { $DESTI = $ENV{"DESTISTABLE"}; } # Force output dir if env DESTISTABLE is defined -if ($ENV{"PUBLISHBETARC"} && $BUILD =~ /[a-z]/i) { $PUBLISHBETARC = $ENV{"PUBLISHBETARC"}; } # Force target site for publishing if env PUBLISHBETARC is defined -if ($ENV{"PUBLISHSTABLE"} && $BUILD =~ /^[0-9]+$/) { $PUBLISHSTABLE = $ENV{"PUBLISHSTABLE"}; } # Force target site for publishing if env PUBLISHSTABLE is defined +if ( $ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i ) { + $DESTI = $ENV{"DESTIBETARC"}; +} # Force output dir if env DESTIBETARC is defined +if ( $ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/ ) { + $DESTI = $ENV{"DESTISTABLE"}; +} # Force output dir if env DESTISTABLE is defined +if ( $ENV{"PUBLISHBETARC"} && $BUILD =~ /[a-z]/i ) { + $PUBLISHBETARC = $ENV{"PUBLISHBETARC"}; +} # Force target site for publishing if env PUBLISHBETARC is defined +if ( $ENV{"PUBLISHSTABLE"} && $BUILD =~ /^[0-9]+$/ ) { + $PUBLISHSTABLE = $ENV{"PUBLISHSTABLE"}; +} # Force target site for publishing if env PUBLISHSTABLE is defined print "Makepack version $VERSION\n"; print "Building/publishing package name: $PROJECT\n"; print "Building/publishing package version: $MAJOR.$MINOR.$BUILD\n"; print "Source directory (SOURCE): $SOURCE\n"; print "Target directory (DESTI) : $DESTI\n"; -#print "Publishing target (PUBLISH): $PUBLISH\n"; +#print "Publishing target (PUBLISH): $PUBLISH\n"; # Choose package targets #----------------------- if ($target) { - if ($target eq "ALL") { + if ( $target eq "ALL" ) { foreach my $key (@LISTETARGET) { - if ($key ne 'SNAPSHOT' && $key ne 'SF' && $key ne 'ASSO') { $CHOOSEDTARGET{$key}=1; } + if ( $key ne 'SNAPSHOT' && $key ne 'SF' && $key ne 'ASSO' ) { + $CHOOSEDTARGET{$key} = 1; + } } } - if ($target ne "ALL" && $target ne "SF" && $target ne "ASSO") { $CHOOSEDTARGET{uc($target)}=1; } - if ($target eq "SF") { $CHOOSEDPUBLISH{"SF"}=1; } - if ($target eq "ASSO") { $CHOOSEDPUBLISH{"ASSO"}=1; } + if ( $target ne "ALL" && $target ne "SF" && $target ne "ASSO" ) { + $CHOOSEDTARGET{ uc($target) } = 1; + } + if ( $target eq "SF" ) { $CHOOSEDPUBLISH{"SF"} = 1; } + if ( $target eq "ASSO" ) { $CHOOSEDPUBLISH{"ASSO"} = 1; } } else { - my $found=0; + my $found = 0; my $NUM_SCRIPT; - my $cpt=0; - while (! $found) { - $cpt=0; - printf(" %2d - %-14s (%s)\n",$cpt,"ALL (1..10)","Need ".join(",",values %REQUIREMENTTARGET)); + my $cpt = 0; + while ( !$found ) { + $cpt = 0; + printf( " %2d - %-14s (%s)\n", + $cpt, "ALL (1..10)", + "Need " . join( ",", values %REQUIREMENTTARGET ) ); $cpt++; - printf(" %2d - %-14s\n",$cpt,"Generate check file"); + printf( " %2d - %-14s\n", $cpt, "Generate check file" ); foreach my $target (@LISTETARGET) { $cpt++; - printf(" %2d - %-14s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target}); + printf( " %2d - %-14s (%s)\n", + $cpt, $target, "Need " . $REQUIREMENTTARGET{$target} ); } - $cpt=98; - printf(" %2d - %-14s (%s)\n",$cpt,"ASSO (publish)","Need ".$REQUIREMENTPUBLISH{"ASSO"}); - $cpt=99; - printf(" %2d - %-14s (%s)\n",$cpt,"SF (publish)","Need ".$REQUIREMENTPUBLISH{"SF"}); + $cpt = 98; + printf( + " %2d - %-14s (%s)\n", + $cpt, + "ASSO (publish)", + "Need " . $REQUIREMENTPUBLISH{"ASSO"} + ); + $cpt = 99; + printf( " %2d - %-14s (%s)\n", + $cpt, "SF (publish)", "Need " . $REQUIREMENTPUBLISH{"SF"} ); # Ask which target to build - print "Choose one target number or several separated with space (0 - ".$cpt."): "; - $NUM_SCRIPT=; + print "Choose one target number or several separated with space (0 - " + . $cpt . "): "; + $NUM_SCRIPT = ; chomp($NUM_SCRIPT); - if ($NUM_SCRIPT !~ /^[0-9\s]+$/) - { + if ( $NUM_SCRIPT !~ /^[0-9\s]+$/ ) { print "This is not a valid package number list.\n"; $found = 0; } - else - { + else { $found = 1; } } print "\n"; - if ($NUM_SCRIPT eq "98") { - $CHOOSEDPUBLISH{"ASSO"}=1; + if ( $NUM_SCRIPT eq "98" ) { + $CHOOSEDPUBLISH{"ASSO"} = 1; } - elsif ($NUM_SCRIPT eq "99") { - $CHOOSEDPUBLISH{"SF"}=1; + elsif ( $NUM_SCRIPT eq "99" ) { + $CHOOSEDPUBLISH{"SF"} = 1; } - elsif ($NUM_SCRIPT eq "0") { - $CHOOSEDTARGET{"-CHKSUM"}=1; + elsif ( $NUM_SCRIPT eq "0" ) { + $CHOOSEDTARGET{"-CHKSUM"} = 1; foreach my $key (@LISTETARGET) { - if ($key ne 'SNAPSHOT' && $key ne 'ASSO' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; } + if ( $key ne 'SNAPSHOT' && $key ne 'ASSO' && $key ne 'SF' ) { + $CHOOSEDTARGET{$key} = 1; + } } } - elsif ($NUM_SCRIPT eq "1") { - $CHOOSEDTARGET{"-CHKSUM"}=1 + elsif ( $NUM_SCRIPT eq "1" ) { + $CHOOSEDTARGET{"-CHKSUM"} = 1; } else { - foreach my $num (split(/\s+/,$NUM_SCRIPT)) { - $CHOOSEDTARGET{$LISTETARGET[$num-2]}=1; + foreach my $num ( split( /\s+/, $NUM_SCRIPT ) ) { + $CHOOSEDTARGET{ $LISTETARGET[ $num - 2 ] } = 1; } } } - # Test if requirement is ok #-------------------------- -$atleastonerpm=0; -foreach my $target (sort keys %CHOOSEDTARGET) { - if ($target =~ /RPM/i) - { - if ($atleastonerpm && ($DESTI eq "$SOURCE/build")) - { - print "Error: You asked creation of several rpms. Because all rpm have same name, you must defined an environment variable DESTI to tell packager where it can create subdirs for each generated package.\n"; +$atleastonerpm = 0; +foreach my $target ( sort keys %CHOOSEDTARGET ) { + if ( $target =~ /RPM/i ) { + if ( $atleastonerpm && ( $DESTI eq "$SOURCE/build" ) ) { + print +"Error: You asked creation of several rpms. Because all rpm have same name, you must defined an environment variable DESTI to tell packager where it can create subdirs for each generated package.\n"; exit; } - $atleastonerpm=1; + $atleastonerpm = 1; } - foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) - { + foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) { + # Test print "Test requirement for target $target: Search '$req'... "; - $newreq=$req; $newparam=''; - if ($newreq eq 'zip') { $newparam.='-h'; } - if ($newreq eq 'xz') { $newparam.='-h'; } - $cmd="\"$newreq\" $newparam 2>&1"; - print "Test command ".$cmd."... "; - $ret=`$cmd`; - $coderetour=$?; $coderetour2=$coderetour>>8; - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) { + $newreq = $req; + $newparam = ''; + if ( $newreq eq 'zip' ) { $newparam .= '-h'; } + if ( $newreq eq 'xz' ) { $newparam .= '-h'; } + $cmd = "\"$newreq\" $newparam 2>&1"; + print "Test command " . $cmd . "... "; + $ret = `$cmd`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + + if ( + $coderetour != 0 + && ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) ) + && $PROGPATH + ) + { # Not found error, we try in PROGPATH - $ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; - $coderetour=$?; $coderetour2=$coderetour>>8; - $REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req"; + $ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + $REQUIREMENTTARGET{$target} = "$PROGPATH/$ALTERNATEPATH{$req}/$req"; } - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) { + if ( + $coderetour != 0 + && ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) ) + ) + { # Not found error - print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; - $CHOOSEDTARGET{$target}=-1; + print +"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; + $CHOOSEDTARGET{$target} = -1; last; - } else { + } + else { # Pas erreur ou erreur autre que programme absent - print " Found ".$req."\n"; + print " Found " . $req . "\n"; } } } print "\n"; - #print join(',',sort keys %CHOOSEDTARGET)."\n"; # Check if there is at least one target to build #---------------------------------------------- -$nboftargetok=0; -$nboftargetneedbuildroot=0; -$nbofpublishneedtag=0; -$nbofpublishneedchangelog=0; +$nboftargetok = 0; +$nboftargetneedbuildroot = 0; +$nbofpublishneedtag = 0; +$nbofpublishneedchangelog = 0; -foreach my $target (sort keys %CHOOSEDTARGET) { - if ($target eq '-CHKSUM') { $nbofpublishneedchangelog++; } - if ($CHOOSEDTARGET{$target} < 0) { next; } - if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM') +foreach my $target ( sort keys %CHOOSEDTARGET ) { + if ( $target eq '-CHKSUM' ) { $nbofpublishneedchangelog++; } + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } + if ( $target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM' ) { $nboftargetneedbuildroot++; } $nboftargetok++; } -foreach my $target (sort keys %CHOOSEDPUBLISH) { - if ($CHOOSEDPUBLISH{$target} < 0) { next; } - if ($target eq 'ASSO') { $nbofpublishneedchangelog++; } - if ($target eq 'SF') { $nbofpublishneedchangelog++; $nbofpublishneedtag++; } +foreach my $target ( sort keys %CHOOSEDPUBLISH ) { + if ( $CHOOSEDPUBLISH{$target} < 0 ) { next; } + if ( $target eq 'ASSO' ) { $nbofpublishneedchangelog++; } + if ( $target eq 'SF' ) { + $nbofpublishneedchangelog++; + $nbofpublishneedtag++; + } $nboftargetok++; } - if ($nboftargetok) { # Check Changelog #---------------- - if ($nbofpublishneedchangelog) - { + if ($nbofpublishneedchangelog) { + # Test that the ChangeLog is ok - $TMPBUILDTOCHECKCHANGELOG=$BUILD; + $TMPBUILDTOCHECKCHANGELOG = $BUILD; $TMPBUILDTOCHECKCHANGELOG =~ s/\-rc\d*//; $TMPBUILDTOCHECKCHANGELOG =~ s/\-beta\d*//; $TMPBUILDTOCHECKCHANGELOG =~ s/\-alpha\d*//; - print "\nCheck if ChangeLog is ok for version $MAJOR.$MINOR\.$TMPBUILDTOCHECKCHANGELOG\n"; - $ret=`grep "ChangeLog for $MAJOR.$MINOR\.$TMPBUILDTOCHECKCHANGELOG" "$SOURCE/ChangeLog" 2>&1`; - if (! $ret) - { - print color("yellow"), "Error: The ChangeLogFile was not updated. Run the following command before building package for $MAJOR.$MINOR.$BUILD:\n", color('reset'); + print +"\nCheck if ChangeLog is ok for version $MAJOR.$MINOR\.$TMPBUILDTOCHECKCHANGELOG\n"; + $ret = +`grep "ChangeLog for $MAJOR.$MINOR\.$TMPBUILDTOCHECKCHANGELOG" "$SOURCE/ChangeLog" 2>&1`; + if ( !$ret ) { + print color("yellow"), +"Error: The ChangeLogFile was not updated. Run the following command before building package for $MAJOR.$MINOR.$BUILD:\n", + color('reset'); } - else - { - print "ChangeLog for $MAJOR.$MINOR\.$BUILD was found into '$SOURCE/ChangeLog'. But you can regenerate it with command:\n"; + else { + print +"ChangeLog for $MAJOR.$MINOR\.$BUILD was found into '$SOURCE/ChangeLog'. But you can regenerate it with command:\n"; } - if (! $BUILD || $BUILD eq '0-alpha' || $BUILD eq '0-beta' || $BUILD eq '0-rc') # For a major or future version + if ( !$BUILD + || $BUILD eq '0-alpha' + || $BUILD eq '0-beta' + || $BUILD eq '0-rc' ) # For a major or future version { print "Building changeLog file for a major version:\n"; print 'cd ~/git/dolibarr_dev; '; - #print 'git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' | sed \'s/^* //g\' > /tmp/aaa'; - print 'git log `diff -u <(git rev-list --first-parent '.($MAJOR - 1).'.0) <(git rev-list --first-parent develop) | sed -ne \'s/^ //p\' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/changelogtocopy' + +#print 'git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' | sed \'s/^* //g\' > /tmp/aaa'; + print 'git log `diff -u <(git rev-list --first-parent ' + . ( $MAJOR - 1 ) + . '.0) <(git rev-list --first-parent develop) | sed -ne \'s/^ //p\' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/changelogtocopy'; } - else # For a maintenance release + else # For a maintenance release { print "Building changeLog file for a maintenance version:\n"; - #print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa'; - print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' | sed \'s/^* //g\' > /tmp/aaa'; + +#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa'; + print 'cd ~/git/dolibarr_' + . $MAJOR . '.' + . $MINOR + . '; git log ' + . $MAJOR . '.' + . $MINOR . '.' + . ( $BUILD - 1 ) + . '.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' | sed \'s/^* //g\' > /tmp/aaa'; } print "\n"; - if (! $ret) { - print "\nPress F to force and continue anyway (or other key to stop)... "; - my $WAITKEY=; + if ( !$ret ) { + print +"\nPress F to force and continue anyway (or other key to stop)... "; + my $WAITKEY = ; chomp($WAITKEY); - if ($WAITKEY ne 'F') - { + if ( $WAITKEY ne 'F' ) { print "Canceled.\n"; exit; } - } else { + } + else { print "\nPress a key to continue (or CTRL+C to stop)... "; - my $WAITKEY=; + my $WAITKEY = ; chomp($WAITKEY); } } # Build xml check file #----------------------- - if ($CHOOSEDTARGET{'-CHKSUM'}) - { + if ( $CHOOSEDTARGET{'-CHKSUM'} ) { print "Go to directory $SOURCE\n"; - $olddir=getcwd(); + $olddir = getcwd(); chdir("$SOURCE"); print "Clean $SOURCE/htdocs/includes/autoload.php\n"; - $ret=`rm -f $SOURCE/htdocs/includes/autoload.php`; + $ret = `rm -f $SOURCE/htdocs/includes/autoload.php`; - $ret=`git ls-files . --exclude-standard --others`; - if ($ret) - { - print "Some files exists in source directory and are not indexed neither excluded in .gitignore.\n"; - print $ret; - print "Canceled.\n"; - exit; + $ret = `git ls-files . --exclude-standard --others`; + if ($ret) { + print +"Some files exists in source directory and are not indexed neither excluded in .gitignore.\n"; + print $ret; + print "Canceled.\n"; + exit; } - print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/dev/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n"; - $ret=`php $SOURCE/dev/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`; - my $retcode=$?; - if ($retcode!=0) - { - print "Error running generate_filelist_xml.php please check\n"; - print $ret; - print "Canceled.\n"; - exit; + print 'Create xml check file with md5 checksum with command php ' + . $SOURCE + . '/dev/build/generate_filelist_xml.php release=' + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD . "\n"; + $ret = +`php $SOURCE/dev/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`; + my $retcode = $?; + if ( $retcode != 0 ) { + print "Error running generate_filelist_xml.php please check\n"; + print $ret; + print "Canceled.\n"; + exit; } - print $ret."\n"; - # Copy to final dir - $NEWDESTI=$DESTI; + print $ret. "\n"; + + # Copy to final dir + $NEWDESTI = $DESTI; if ( !-d "$NEWDESTI/signatures" ) { use File::Path qw( make_path ); - make_path "$NEWDESTI/signatures" or die "Failed to create path: $NEWDESTI/signatures"; + make_path "$NEWDESTI/signatures" + or die "Failed to create path: $NEWDESTI/signatures"; } - print "Copy \"$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml\" to $NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml\n"; - use File::Copy qw(copy); - copy "$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml", "$NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"; + print +"Copy \"$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml\" to $NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml\n"; + use File::Copy qw(copy); + copy "$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml", + "$NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"; } # Update GIT tag if required #--------------------------- - if ($nbofpublishneedtag) - { + if ($nbofpublishneedtag) { print "Go to directory $SOURCE\n"; - $olddir=getcwd(); + $olddir = getcwd(); chdir("$SOURCE"); - print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n"; - $ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`; - if ($ret =~ /(already exists|existe déjà)/) - { - print "WARNING: Tag ".$MAJOR.'.'.$MINOR.'.'.$BUILD." already exists. Overwrite (y/N) ? "; - $QUESTIONOVERWRITETAG=; + print 'Run git tag -a -m "' + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD . '" "' + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD . '"' . "\n"; + $ret = + `git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`; + if ( $ret =~ /(already exists|existe déjà)/ ) { + print "WARNING: Tag " . $MAJOR . '.' . $MINOR . '.' . $BUILD + . " already exists. Overwrite (y/N) ? "; + $QUESTIONOVERWRITETAG = ; chomp($QUESTIONOVERWRITETAG); - if ($QUESTIONOVERWRITETAG =~ /(o|y)/) - { - print 'Run git tag -a -f -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n"; - $ret=`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`; - print 'Run git push '.$GITREMOTENAME.' -f "$MAJOR.$MINOR.$BUILD"'."\n"; - $ret=`git push $GITREMOTENAME -f -"$MAJOR.$MINOR.$BUILD"`; + if ( $QUESTIONOVERWRITETAG =~ /(o|y)/ ) { + print 'Run git tag -a -f -m "' + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD . '" "' + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD . '"' . "\n"; + $ret = +`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`; + print 'Run git push ' + . $GITREMOTENAME + . ' -f "$MAJOR.$MINOR.$BUILD"' . "\n"; + $ret = `git push $GITREMOTENAME -f -"$MAJOR.$MINOR.$BUILD"`; + #$ret=`git push -f origin "$MAJOR.$MINOR.$BUILD"`; } } - else - { + else { print "Run git push $GITREMOTENAME --tags\n"; - $ret=`git push $GITREMOTENAME --tags`; + $ret = `git push $GITREMOTENAME --tags`; + #$ret=`git push origin "$MAJOR.$MINOR.$BUILD"`; } chdir("$olddir"); @@ -513,443 +633,546 @@ if ($nboftargetok) { # Update buildroot if required #----------------------------- - if ($nboftargetneedbuildroot) - { - if (! $copyalreadydone) { + if ($nboftargetneedbuildroot) { + if ( !$copyalreadydone ) { print "Creation of a buildroot used for all packages\n"; print "Delete directory $BUILDROOT\n"; - $ret=`rm -fr "$BUILDROOT"`; + $ret = `rm -fr "$BUILDROOT"`; mkdir "$BUILDROOT"; mkdir "$BUILDROOT/$PROJECT"; print "Copy $SOURCE into $BUILDROOT/$PROJECT\n"; - $ret=`cp -pr "$SOURCE" "$BUILDROOT/$PROJECT"`; + $ret = `cp -pr "$SOURCE" "$BUILDROOT/$PROJECT"`; - #print "Copy $SOURCE/dev/build/debian/apache/.htaccess into $BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess\n"; - #$ret=`cp -pr "$SOURCE/dev/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess"`; +#print "Copy $SOURCE/dev/build/debian/apache/.htaccess into $BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess\n"; +#$ret=`cp -pr "$SOURCE/dev/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess"`; } print "Clean $BUILDROOT\n"; - $ret=`rm -f $BUILDROOT/$PROJECT/.buildpath`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.cache`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.codeclimate.yml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.externalToolBuilders`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.git*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.mailmap`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.phpunit.result.cache`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.project`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.pydevproject`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.settings`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.scrutinizer.yml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.stickler.yml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.travis.yml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.tx`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.pre-commit-config.yaml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.phan`; - $ret=`rm -f $BUILDROOT/$PROJECT/build.xml`; - $ret=`rm -f $BUILDROOT/$PROJECT/phpstan.neon`; - $ret=`rm -fr $BUILDROOT/$PROJECT/phpstan.neon.dist`; - $ret=`rm -f $BUILDROOT/$PROJECT/pom.xml`; - $ret=`rm -f $BUILDROOT/$PROJECT/README-*.md`; + $ret = `rm -f $BUILDROOT/$PROJECT/.buildpath`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.cache`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.codeclimate.yml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.externalToolBuilders`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.git*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.mailmap`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.phpunit.result.cache`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.project`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.pydevproject`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.settings`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.scrutinizer.yml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.stickler.yml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.travis.yml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.tx`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.pre-commit-config.yaml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/.phan`; + $ret = `rm -f $BUILDROOT/$PROJECT/build.xml`; + $ret = `rm -f $BUILDROOT/$PROJECT/phpstan.neon`; + $ret = `rm -fr $BUILDROOT/$PROJECT/phpstan.neon.dist`; + $ret = `rm -f $BUILDROOT/$PROJECT/pom.xml`; + $ret = `rm -f $BUILDROOT/$PROJECT/README-*.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/build/html`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/Doli*-*`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.deb`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.dsc`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.tar.gz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.tar.xz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.deb`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.rpm`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar.gz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar.xz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tgz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.xz`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.zip`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/build/doxygen/doxygen_warnings.log`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/build/phpstan/phpstan`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/cache.manifest`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.mysql`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.nova*`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.old`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.pgsql`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf*sav*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/build/html`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/Doli*-*`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.deb`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.dsc`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.tar.gz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr_*.tar.xz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.deb`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.rpm`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar.gz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tar.xz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.tgz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.xz`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/build/dolibarr-*.zip`; + $ret = + `rm -f $BUILDROOT/$PROJECT/dev/build/doxygen/doxygen_warnings.log`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/build/phpstan/phpstan`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/cache.manifest`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.mysql`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.nova*`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.old`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.pgsql`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf*sav*`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/mssql/README`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/mysql/README`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/pgsql/README`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/install/mssql/README`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/install/mysql/README`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/install/pgsql/README`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/install/mssql`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/install/sqlite3`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/install/mssql`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/install/sqlite3`; - $ret=`rm -fr $BUILDROOT/$PROJECT/node_modules`; + $ret = `rm -fr $BUILDROOT/$PROJECT/node_modules`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/ansible`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/codesniffer`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/codetemplates`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/examples/ldap`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/examples/zapier`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/initdata`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/initdemo`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/resources/dbmodel`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/resources/iso-normes`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/resources/licence`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/mail`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/multitail`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/phpcheckstyle`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/phpunit`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/security`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/spec`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/test`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/tools/php-cs-fixer/vendor`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/tools/rector/vendor`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/uml`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/vagrant`; - $ret=`rm -fr $BUILDROOT/$PROJECT/dev/xdebug`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/dolibarr_changes.txt`; - $ret=`rm -f $BUILDROOT/$PROJECT/dev/README`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot2.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot3.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot4.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot5.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot6.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot7.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot8.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot9.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot10.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot11.png`; - $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot12.png`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/ansible`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/codesniffer`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/codetemplates`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/examples/ldap`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/examples/zapier`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/initdata`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/initdemo`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/resources/dbmodel`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/resources/iso-normes`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/resources/licence`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/mail`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/multitail`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/phpcheckstyle`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/phpunit`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/security`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/spec`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/test`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/tools/php-cs-fixer/vendor`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/tools/rector/vendor`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/uml`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/vagrant`; + $ret = `rm -fr $BUILDROOT/$PROJECT/dev/xdebug`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/dolibarr_changes.txt`; + $ret = `rm -f $BUILDROOT/$PROJECT/dev/README`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot2.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot3.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot4.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot5.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot6.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot7.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot8.png`; + $ret = `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot9.png`; + $ret = + `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot10.png`; + $ret = + `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot11.png`; + $ret = + `rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot12.png`; # Security to avoid to package data files - print "Remove documents dir\n"; - $ret=`rm -fr $BUILDROOT/$PROJECT/document`; - $ret=`rm -fr $BUILDROOT/$PROJECT/documents`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`; + print "Remove documents dir\n"; + $ret = `rm -fr $BUILDROOT/$PROJECT/document`; + $ret = `rm -fr $BUILDROOT/$PROJECT/documents`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/document`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/documents`; - print "Remove subdir of custom dir\n"; - print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n"; - $ret=`find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\; >/dev/null 2>&1`; # For custom we want to remove all subdirs but not files - print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\;\n"; - $ret=`find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\; >/dev/null 2>&1`; # For custom we want to remove all subdirs, even symbolic links, but not files + print "Remove subdir of custom dir\n"; + print +"find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n"; + $ret = +`find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\; >/dev/null 2>&1` + ; # For custom we want to remove all subdirs but not files + print +"find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\;\n"; + $ret = +`find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\; >/dev/null 2>&1` + ; # For custom we want to remove all subdirs, even symbolic links, but not files - # Removed known external modules to avoid any error when packaging from env where external modules are tested - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/abricot*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/accountingexport*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/allscreens*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/dolimed*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/dolimod*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/forceproject*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/langs/*/README.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nomenclature*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/of/`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/oscim*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/webmail*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/common/fontawesome-5/svgs`; +# Removed known external modules to avoid any error when packaging from env where external modules are tested + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/abricot*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/accountingexport*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/allscreens*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/dolimed*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/dolimod*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/forceproject*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/langs/*/README.md`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/management*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/nomenclature*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/of/`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/oscim*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/webmail*`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/theme/common/fontawesome-5/svgs`; # Removed other test files - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`; - $ret=`rm -fr $BUILDROOT/$PROJECT/test`; - $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; - $ret=`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`; - $ret=`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`; + $ret = `rm -fr $BUILDROOT/$PROJECT/test`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; + $ret = +`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`; + $ret = +`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`; # Removed files installed by the awful composer - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/bin`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/ckeditor/adapters`; # Keep this removal in case we embed libraries - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/ckeditor/samples`; # Keep this removal in case we embed libraries - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/_source`; # _source must be kept into tarball for official debian, not for the rest - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/composer`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/doctrine`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/multiselect/MIT-LICENSE.txt`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/select2/release.sh`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/doc`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/example`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/test`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/docs`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/.github`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/docs`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/samples`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/scripts`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/src`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/test`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/tests`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/tests`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/freefont-*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/ae_fonts_*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/examples`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/bin`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/ckeditor/adapters` + ; # Keep this removal in case we embed libraries + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/ckeditor/samples` + ; # Keep this removal in case we embed libraries + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/_source` + ; # _source must be kept into tarball for official debian, not for the rest + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/composer`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/doctrine`; + $ret = +`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/multiselect/MIT-LICENSE.txt`; + $ret = +`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/select2/release.sh`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/doc`; + $ret = +`rm -f $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/example`; + $ret = + `rm -f $BUILDROOT/$PROJECT/htdocs/includes/mike42/escpos-php/test`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/.gitmodules`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/mobiledetect/mobiledetectlib/docs`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/.github`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/docs`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/samples`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/scripts`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/src`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/test`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/tests`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/tests`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-*`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/freefont-*`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/ae_fonts_*`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`; + $ret = +`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/examples`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`; + $ret = `rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/bin`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/bin`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/bin`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/bin`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/*/bin`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/bin`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/bin`; + $ret = `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/bin`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/bin`; + $ret = + `rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/*/bin`; } # Build package for each target #------------------------------ - foreach my $target (sort keys %CHOOSEDTARGET) - { - if ($CHOOSEDTARGET{$target} < 0) { next; } - if ($target eq '-CHKSUM') { next; } + foreach my $target ( sort keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } + if ( $target eq '-CHKSUM' ) { next; } print "\nBuild package for target $target\n"; - if ($target eq 'SNAPSHOT') - { - $NEWDESTI=$DESTI; + if ( $target eq 'SNAPSHOT' ) { + $NEWDESTI = $DESTI; print "Remove target $FILENAMESNAPSHOT.tgz...\n"; unlink("$NEWDESTI/$FILENAMESNAPSHOT.tgz"); #rmdir "$BUILDROOT/$FILENAMESNAPSHOT"; - $ret=`rm -fr $BUILDROOT/$FILENAMESNAPSHOT`; + $ret = `rm -fr $BUILDROOT/$FILENAMESNAPSHOT`; print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMESNAPSHOT\n"; - $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMESNAPSHOT\""; - $ret=`$cmd`; + $cmd = + "cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMESNAPSHOT\""; + $ret = `$cmd`; print "Compress $BUILDROOT into $FILENAMESNAPSHOT.tgz...\n"; - $cmd="tar --exclude doli*.tgz --exclude doli*.deb --exclude doli*.exe --exclude doli*.xz --exclude doli*.zip --exclude doli*.rpm --exclude .cache --exclude .settings --exclude conf.php --exclude conf.php.mysql --exclude conf.php.old --exclude conf.php.postgres --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMESNAPSHOT.tgz\" $FILENAMESNAPSHOT"; - print $cmd."\n"; - $ret=`$cmd`; + $cmd = +"tar --exclude doli*.tgz --exclude doli*.deb --exclude doli*.exe --exclude doli*.xz --exclude doli*.zip --exclude doli*.rpm --exclude .cache --exclude .settings --exclude conf.php --exclude conf.php.mysql --exclude conf.php.old --exclude conf.php.postgres --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMESNAPSHOT.tgz\" $FILENAMESNAPSHOT"; + print $cmd. "\n"; + $ret = `$cmd`; # Move to final dir - print "Move $FILENAMESNAPSHOT.tgz to $NEWDESTI/$FILENAMESNAPSHOT.tgz\n"; - $ret=`mv "$FILENAMESNAPSHOT.tgz" "$NEWDESTI/$FILENAMESNAPSHOT.tgz"`; + print + "Move $FILENAMESNAPSHOT.tgz to $NEWDESTI/$FILENAMESNAPSHOT.tgz\n"; + $ret = + `mv "$FILENAMESNAPSHOT.tgz" "$NEWDESTI/$FILENAMESNAPSHOT.tgz"`; next; } - if ($target eq 'TGZ') - { - $NEWDESTI=$DESTI; - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/standard'); - if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } + if ( $target eq 'TGZ' ) { + $NEWDESTI = $DESTI; + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/standard' ); + if ( -d $DESTI . '/standard' ) { + $NEWDESTI = $DESTI . '/standard'; + } } print "Remove target $FILENAMETGZ.tgz...\n"; unlink("$NEWDESTI/$FILENAMETGZ.tgz"); #rmdir "$BUILDROOT/$FILENAMETGZ"; - $ret=`rm -fr $BUILDROOT/$FILENAMETGZ`; + $ret = `rm -fr $BUILDROOT/$FILENAMETGZ`; print "Copy $BUILDROOT/$PROJECT/ to $BUILDROOT/$FILENAMETGZ\n"; - $cmd="cp -pr \"$BUILDROOT/$PROJECT/\" \"$BUILDROOT/$FILENAMETGZ\""; - $ret=`$cmd`; + $cmd = + "cp -pr \"$BUILDROOT/$PROJECT/\" \"$BUILDROOT/$FILENAMETGZ\""; + $ret = `$cmd`; - $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/dev/build/exe`; - $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages + $ret = `rm -fr $BUILDROOT/$FILENAMETGZ/dev/build/exe`; + $ret = + `rm -fr $BUILDROOT/$FILENAMETGZ/htdocs/includes/ckeditor/_source` + ; # We can't remove it with exclude file, we need it for some tarball packages print "Compress $FILENAMETGZ into $FILENAMETGZ.tgz...\n"; - $cmd="tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/dev/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMETGZ.tgz\" $FILENAMETGZ"; + $cmd = +"tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/dev/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMETGZ.tgz\" $FILENAMETGZ"; print "$cmd\n"; - $ret=`$cmd`; + $ret = `$cmd`; # Move to final dir - print "Move $BUILDROOT/$FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n"; - $ret=`mv "$BUILDROOT/$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; + print +"Move $BUILDROOT/$FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n"; + $ret = + `mv "$BUILDROOT/$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; next; } - if ($target eq 'XZ') - { - $NEWDESTI=$DESTI; - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/standard'); - if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } + if ( $target eq 'XZ' ) { + $NEWDESTI = $DESTI; + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/standard' ); + if ( -d $DESTI . '/standard' ) { + $NEWDESTI = $DESTI . '/standard'; + } } print "Remove target $FILENAMEXZ.xz...\n"; unlink("$NEWDESTI/$FILENAMEXZ.xz"); #rmdir "$BUILDROOT/$FILENAMEXZ"; - $ret=`rm -fr $BUILDROOT/$FILENAMEXZ`; + $ret = `rm -fr $BUILDROOT/$FILENAMEXZ`; print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMEXZ\n"; - $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEXZ\""; - $ret=`$cmd`; + $cmd = "cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEXZ\""; + $ret = `$cmd`; - $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/dev/build/exe`; - $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages + $ret = `rm -fr $BUILDROOT/$FILENAMEXZ/dev/build/exe`; + $ret = + `rm -fr $BUILDROOT/$FILENAMEXZ/htdocs/includes/ckeditor/_source` + ; # We can't remove it with exclude file, we need it for some tarball packages print "Compress $FILENAMEXZ into $FILENAMEXZ.xz...\n"; print "Go to directory $BUILDROOT\n"; - $olddir=getcwd(); + $olddir = getcwd(); chdir("$BUILDROOT"); - $cmd= "xz -9 -r $BUILDROOT/$FILENAMEXZ.xz \*"; - print $cmd."\n"; - $ret= `$cmd`; + $cmd = "xz -9 -r $BUILDROOT/$FILENAMEXZ.xz \*"; + print $cmd. "\n"; + $ret = `$cmd`; chdir("$olddir"); # Move to final dir print "Move $FILENAMEXZ.xz to $NEWDESTI/$FILENAMEXZ.xz\n"; - $ret=`mv "$BUILDROOT/$FILENAMEXZ.xz" "$NEWDESTI/$FILENAMEXZ.xz"`; + $ret = `mv "$BUILDROOT/$FILENAMEXZ.xz" "$NEWDESTI/$FILENAMEXZ.xz"`; next; } - if ($target eq 'ZIP') - { - $NEWDESTI=$DESTI; - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/standard'); - if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } + if ( $target eq 'ZIP' ) { + $NEWDESTI = $DESTI; + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/standard' ); + if ( -d $DESTI . '/standard' ) { + $NEWDESTI = $DESTI . '/standard'; + } } print "Remove target $FILENAMEZIP.zip...\n"; unlink("$NEWDESTI/$FILENAMEZIP.zip"); #rmdir "$BUILDROOT/$FILENAMEZIP"; - $ret=`rm -fr $BUILDROOT/$FILENAMEZIP`; + $ret = `rm -fr $BUILDROOT/$FILENAMEZIP`; print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMEZIP\n"; - $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEZIP\""; - $ret=`$cmd`; + $cmd = "cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEZIP\""; + $ret = `$cmd`; - $ret=`rm -fr $BUILDROOT/$FILENAMEZIP/dev/build/exe`; - $ret=`rm -fr $BUILDROOT/$FILENAMEZIP/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages + $ret = `rm -fr $BUILDROOT/$FILENAMEZIP/dev/build/exe`; + $ret = + `rm -fr $BUILDROOT/$FILENAMEZIP/htdocs/includes/ckeditor/_source` + ; # We can't remove it with exclude file, we need it for some tarball packages print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n"; print "Go to directory $BUILDROOT\n"; - $olddir=getcwd(); + $olddir = getcwd(); chdir("$BUILDROOT"); - $cmd= "7z a -r -tzip -xr\@\"$BUILDROOT\/$FILENAMEZIP\/dev\/build\/zip\/zip_exclude.txt\" -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMEZIP\/*"; - print $cmd."\n"; - $ret= `$cmd`; + $cmd = +"7z a -r -tzip -xr\@\"$BUILDROOT\/$FILENAMEZIP\/dev\/build\/zip\/zip_exclude.txt\" -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMEZIP\/*"; + print $cmd. "\n"; + $ret = `$cmd`; chdir("$olddir"); # Move to final dir print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n"; - $ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`; + $ret = + `mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`; next; } - if ($target =~ /RPM/) # Linux only + if ( $target =~ /RPM/ ) # Linux only { - $NEWDESTI=$DESTI; - $subdir="package_rpm_generic"; - if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; } - if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; } - if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; } - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/'.$subdir); - if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; } + $NEWDESTI = $DESTI; + $subdir = "package_rpm_generic"; + if ( $target =~ /FEDO/i ) { $subdir = "package_rpm_redhat-fedora"; } + if ( $target =~ /MAND/i ) { $subdir = "package_rpm_mandriva"; } + if ( $target =~ /OPEN/i ) { $subdir = "package_rpm_opensuse"; } + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/' . $subdir ); + if ( -d $DESTI . '/' . $subdir ) { + $NEWDESTI = $DESTI . '/' . $subdir; + } } - if ($RPMDIR eq "") { $RPMDIR=$ENV{'HOME'}."/rpmbuild"; } + if ( $RPMDIR eq "" ) { $RPMDIR = $ENV{'HOME'} . "/rpmbuild"; } print "Version is $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n"; - print "Remove target ".$FILENAMERPM."...\n"; - unlink("$NEWDESTI/".$FILENAMERPM); - print "Remove target ".$FILENAMERPMSRC."...\n"; - unlink("$NEWDESTI/".$FILENAMERPMSRC); + print "Remove target " . $FILENAMERPM . "...\n"; + unlink( "$NEWDESTI/" . $FILENAMERPM ); + print "Remove target " . $FILENAMERPMSRC . "...\n"; + unlink( "$NEWDESTI/" . $FILENAMERPMSRC ); print "Create directory $BUILDROOT/$FILENAMETGZ2\n"; - $ret=`rm -fr $BUILDROOT/$FILENAMETGZ2`; + $ret = `rm -fr $BUILDROOT/$FILENAMETGZ2`; print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMETGZ2\n"; - $cmd="cp -pr '$BUILDROOT/$PROJECT' '$BUILDROOT/$FILENAMETGZ2'"; - $ret=`$cmd`; + $cmd = "cp -pr '$BUILDROOT/$PROJECT' '$BUILDROOT/$FILENAMETGZ2'"; + $ret = `$cmd`; - # Removed files we don't need (already removed before) - #$ret=`rm -fr $BUILDROOT/$FILENAMETGZ2/htdocs/includes/ckeditor/_source`; + # Removed files we don't need (already removed before) + #$ret=`rm -fr $BUILDROOT/$FILENAMETGZ2/htdocs/includes/ckeditor/_source`; print "Set permissions on files/dir\n"; - $ret=`chmod -R 755 $BUILDROOT/$FILENAMETGZ2`; - $cmd="find $BUILDROOT/$FILENAMETGZ2 -type f -exec chmod 644 {} \\; "; - $ret=`$cmd`; + $ret = `chmod -R 755 $BUILDROOT/$FILENAMETGZ2`; + $cmd = + "find $BUILDROOT/$FILENAMETGZ2 -type f -exec chmod 644 {} \\; "; + $ret = `$cmd`; # Build tgz print "Compress $FILENAMETGZ2 into $FILENAMETGZ2.tgz...\n"; - $ret=`tar --exclude-from "$SOURCE/dev/build/tgz/tar_exclude.txt" --directory "$BUILDROOT" -czvf "$BUILDROOT/$FILENAMETGZ2.tgz" $FILENAMETGZ2`; + $ret = +`tar --exclude-from "$SOURCE/dev/build/tgz/tar_exclude.txt" --directory "$BUILDROOT" -czvf "$BUILDROOT/$FILENAMETGZ2.tgz" $FILENAMETGZ2`; - print "Move $BUILDROOT/$FILENAMETGZ2.tgz to $RPMDIR/SOURCES/$FILENAMETGZ2.tgz\n"; - $cmd="mv $BUILDROOT/$FILENAMETGZ2.tgz $RPMDIR/SOURCES/$FILENAMETGZ2.tgz"; - $ret=`$cmd`; + print +"Move $BUILDROOT/$FILENAMETGZ2.tgz to $RPMDIR/SOURCES/$FILENAMETGZ2.tgz\n"; + $cmd = +"mv $BUILDROOT/$FILENAMETGZ2.tgz $RPMDIR/SOURCES/$FILENAMETGZ2.tgz"; + $ret = `$cmd`; - $BUILDFIC="${FILENAME}.spec"; - $BUILDFICSRC="${FILENAME}_generic.spec"; - if ($target =~ /FEDO/i) { $BUILDFICSRC="${FILENAME}_fedora.spec"; } - if ($target =~ /MAND/i) { $BUILDFICSRC="${FILENAME}_mandriva.spec"; } - if ($target =~ /OPEN/i) { $BUILDFICSRC="${FILENAME}_opensuse.spec"; } + $BUILDFIC = "${FILENAME}.spec"; + $BUILDFICSRC = "${FILENAME}_generic.spec"; + if ( $target =~ /FEDO/i ) { + $BUILDFICSRC = "${FILENAME}_fedora.spec"; + } + if ( $target =~ /MAND/i ) { + $BUILDFICSRC = "${FILENAME}_mandriva.spec"; + } + if ( $target =~ /OPEN/i ) { + $BUILDFICSRC = "${FILENAME}_opensuse.spec"; + } use Date::Language; - $lang=Date::Language->new('English'); - $datestring = $lang->time2str("%a %b %e %Y", time); - $changelogstring="* ".$datestring." Laurent Destailleur (eldy) $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n- Upstream release\n"; + $lang = Date::Language->new('English'); + $datestring = $lang->time2str( "%a %b %e %Y", time ); + $changelogstring = "* " + . $datestring + . " Laurent Destailleur (eldy) $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n- Upstream release\n"; - print "Generate file $BUILDROOT/$BUILDFIC from $SOURCE/dev/build/rpm/${BUILDFICSRC}\n"; - open (SPECFROM,"<$SOURCE/dev/build/rpm/${BUILDFICSRC}") || die "Error"; - open (SPECTO,">$BUILDROOT/$BUILDFIC") || die "Error"; - while () { + print +"Generate file $BUILDROOT/$BUILDFIC from $SOURCE/dev/build/rpm/${BUILDFICSRC}\n"; + open( my $SPECFROM, "<", "$SOURCE/dev/build/rpm/${BUILDFICSRC}" ) + or die "Error"; + open( my $SPECTO, ">", "$BUILDROOT/$BUILDFIC" ) or die "Error"; + while (<$SPECFROM>) { $_ =~ s/__FILENAMETGZ__/$FILENAMETGZ/; $_ =~ s/__VERSION__/$MAJOR.$MINOR.$REL1/; $_ =~ s/__RELEASE__/$RPMSUBVERSION/; - $_ =~ s/__CHANGELOGSTRING__/$changelogstring/; - print SPECTO $_; + $_ =~ s/__CHANGELOGSTRING__/$changelogstring/; + print $SPECTO $_; } - close SPECFROM; - close SPECTO; + close $SPECFROM; + close $SPECTO; print "Copy patch file to $RPMDIR/SOURCES\n"; - $ret=`cp "$SOURCE/dev/build/rpm/dolibarr-forrpm.patch" "$RPMDIR/SOURCES"`; - $ret=`chmod 644 $RPMDIR/SOURCES/dolibarr-forrpm.patch`; + $ret = +`cp "$SOURCE/dev/build/rpm/dolibarr-forrpm.patch" "$RPMDIR/SOURCES"`; + $ret = `chmod 644 $RPMDIR/SOURCES/dolibarr-forrpm.patch`; + + print +"Launch RPM build (rpmbuild --clean -ba $BUILDROOT/${BUILDFIC})\n"; - print "Launch RPM build (rpmbuild --clean -ba $BUILDROOT/${BUILDFIC})\n"; #$ret=`rpmbuild -vvvv --clean -ba $BUILDROOT/${BUILDFIC}`; - $ret=`rpmbuild --clean -ba $BUILDROOT/${BUILDFIC}`; + $ret = `rpmbuild --clean -ba $BUILDROOT/${BUILDFIC}`; # Move to final dir - print "Move $RPMDIR/RPMS/".$ARCH."/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm into $NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm\n"; - $cmd="mv $RPMDIR/RPMS/".$ARCH."/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm \"$NEWDESTI/\""; - $ret=`$cmd`; - print "Move $RPMDIR/SRPMS/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm into $NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm\n"; - $cmd="mv $RPMDIR/SRPMS/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm \"$NEWDESTI/\""; - $ret=`$cmd`; - print "Move $RPMDIR/SOURCES/".$FILENAMETGZ2.".tgz into $NEWDESTI/".$FILENAMETGZ2.".tgz\n"; - $cmd="mv \"$RPMDIR/SOURCES/".$FILENAMETGZ2.".tgz\" \"$NEWDESTI/".$FILENAMETGZ2.".tgz\""; + print "Move $RPMDIR/RPMS/" + . $ARCH . "/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION . "*." + . $ARCH + . ".rpm into $NEWDESTI/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION . "*." + . $ARCH + . ".rpm\n"; + $cmd = + "mv $RPMDIR/RPMS/" + . $ARCH . "/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION . "*." + . $ARCH + . ".rpm \"$NEWDESTI/\""; + $ret = `$cmd`; + print "Move $RPMDIR/SRPMS/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION + . "*.src.rpm into $NEWDESTI/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION + . "*.src.rpm\n"; + $cmd = + "mv $RPMDIR/SRPMS/" + . $FILENAMETGZ2 . "-" + . $RPMSUBVERSION + . "*.src.rpm \"$NEWDESTI/\""; + $ret = `$cmd`; + print "Move $RPMDIR/SOURCES/" + . $FILENAMETGZ2 + . ".tgz into $NEWDESTI/" + . $FILENAMETGZ2 + . ".tgz\n"; + $cmd = + "mv \"$RPMDIR/SOURCES/" + . $FILENAMETGZ2 + . ".tgz\" \"$NEWDESTI/" + . $FILENAMETGZ2 + . ".tgz\""; + #$ret=`$cmd`; next; } - if ($target eq 'DEB') - { - $NEWDESTI=$DESTI; - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/package_debian-ubuntu'); - if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; } + if ( $target eq 'DEB' ) { + $NEWDESTI = $DESTI; + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/package_debian-ubuntu' ); + if ( -d $DESTI . '/package_debian-ubuntu' ) { + $NEWDESTI = $DESTI . '/package_debian-ubuntu'; + } } - $olddir=getcwd(); + $olddir = getcwd(); print "Remove target ${FILENAMEDEB}_all.deb...\n"; unlink("$NEWDESTI/${FILENAMEDEB}_all.deb"); @@ -966,365 +1189,496 @@ if ($nboftargetok) { print "Remove target ${FILENAMEDEBNATIVE}.orig.tar.gz...\n"; unlink("$NEWDESTI/${FILENAMEDEBNATIVE}.orig.tar.gz"); - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp`; - $ret=`rm -fr $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp`; + $ret = `rm -fr $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build`; print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$PROJECT.tmp\n"; - $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$PROJECT.tmp\""; - $ret=`$cmd`; - $cmd="cp -pr \"$BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess\" \"$BUILDROOT/$PROJECT.tmp/dev/build/debian/apache/.htaccess\""; - $ret=`$cmd`; + $cmd = "cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$PROJECT.tmp\""; + $ret = `$cmd`; + $cmd = +"cp -pr \"$BUILDROOT/$PROJECT/dev/build/debian/apache/.htaccess\" \"$BUILDROOT/$PROJECT.tmp/dev/build/debian/apache/.htaccess\""; + $ret = `$cmd`; print "Remove other files\n"; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/README-FR.md`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/README`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/README-FR`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/aps`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/dmg`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/pad/README`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/tgz/README`; - #$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian/po`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian/source`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/changelog`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/compat`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/control*`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/copyright`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.config`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.desktop`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.docs`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.install`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.lintian-overrides`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.postrm`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.postinst`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.templates`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.templates.futur`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/rules`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/README.Debian`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/README.howto`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/watch`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/doap`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/exe`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/launchpad`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/live`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/patch`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/perl`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/rpm`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/zip`; - # Removed duplicate license files - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/plugins/scayt/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/plugins/wsc/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/plugins/scayt/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/plugins/wsc/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/php-iban/LICENSE`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/flot/LICENSE.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/ColReorder/License.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/ColVis/License.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/FixedColumns/License.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/Responsive/License.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/license.txt`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/select2/LICENSE`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mike42/escpos-php/LICENSE.md`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/README-FR.md`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/README`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/README-FR`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/aps`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/dmg`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/pad/README`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/tgz/README`; - # Removed files we don't need (already removed) - #$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/.codeclimate.yml`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/.pre-commit-config.yaml`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/.vscode`; - $ret=`find $BUILDROOT/$PROJECT.tmp/ -type f -name '.editorconfig' -exec rm {} \\;`; - $ret=`find $BUILDROOT/$PROJECT.tmp/ -type f -name '.travis.yml' -exec rm {} \\;`; + #$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian/po`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/debian/source`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/changelog`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/compat`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/control*`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/copyright`; + $ret = + `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.config`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.desktop`; + $ret = + `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.docs`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.install`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.lintian-overrides`; + $ret = + `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.postrm`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.postinst`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.templates`; + $ret = +`rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/dolibarr.templates.futur`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/rules`; + $ret = + `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/README.Debian`; + $ret = + `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/README.howto`; + $ret = `rm -f $BUILDROOT/$PROJECT.tmp/dev/build/debian/watch`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/doap`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/exe`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/launchpad`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/live`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/patch`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/perl`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/rpm`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/dev/build/zip`; + + # Removed duplicate license files + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/plugins/scayt/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source/plugins/wsc/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/plugins/scayt/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/plugins/wsc/LICENSE.md`; + $ret = + `rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/php-iban/LICENSE`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/flot/LICENSE.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/ColReorder/License.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/ColVis/License.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/FixedColumns/License.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/extensions/Responsive/License.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/datatables/license.txt`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/select2/LICENSE`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mike42/escpos-php/LICENSE.md`; + $ret = +`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt`; + +# Removed files we don't need (already removed) +#$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/.codeclimate.yml`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/.pre-commit-config.yaml`; + $ret = `rm -fr $BUILDROOT/$PROJECT.tmp/.vscode`; + $ret = +`find $BUILDROOT/$PROJECT.tmp/ -type f -name '.editorconfig' -exec rm {} \\;`; + $ret = +`find $BUILDROOT/$PROJECT.tmp/ -type f -name '.travis.yml' -exec rm {} \\;`; # Rename upstream changelog to match debian rules - $ret=`mv $BUILDROOT/$PROJECT.tmp/ChangeLog $BUILDROOT/$PROJECT.tmp/changelog`; + $ret = +`mv $BUILDROOT/$PROJECT.tmp/ChangeLog $BUILDROOT/$PROJECT.tmp/changelog`; # Prepare source package (init debian dir) print "Create directory $BUILDROOT/$PROJECT.tmp/debian\n"; - $ret=`mkdir "$BUILDROOT/$PROJECT.tmp/debian"`; - print "Copy $SOURCE/dev/build/debian/xxx to $BUILDROOT/$PROJECT.tmp/debian\n"; - # Add files for dpkg-source (changelog) - #$ret=`cp -f "$SOURCE/dev/build/debian/changelog" "$BUILDROOT/$PROJECT.tmp/debian"`; - open (SPECFROM,"<$SOURCE/dev/build/debian/changelog") || die "Error"; - open (SPECTO,">$BUILDROOT/$PROJECT.tmp/debian/changelog") || die "Error"; - while () { + $ret = `mkdir "$BUILDROOT/$PROJECT.tmp/debian"`; + print +"Copy $SOURCE/dev/build/debian/xxx to $BUILDROOT/$PROJECT.tmp/debian\n"; + +# Add files for dpkg-source (changelog) +#$ret=`cp -f "$SOURCE/dev/build/debian/changelog" "$BUILDROOT/$PROJECT.tmp/debian"`; + open( my $SPECFROM2, "<", "$SOURCE/dev/build/debian/changelog" ) + or die "Error"; + open( my $SPECTO2, ">", "$BUILDROOT/$PROJECT.tmp/debian/changelog" ) + or die "Error"; + while (<$SPECFROM2>) { $_ =~ s/__VERSION__/$MAJOR.$MINOR.$newbuild/; - print SPECTO $_; + print $SPECTO2 $_; } - close SPECFROM; - close SPECTO; + close $SPECFROM2; + close $SPECTO2; + # Add files for dpkg-source - $ret=`cp -f "$SOURCE/dev/build/debian/compat" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/control" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/copyright" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.desktop" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.docs" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.install" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.lintian-overrides" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.xpm" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/rules" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/watch" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -fr "$SOURCE/dev/build/debian/patches" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -fr "$SOURCE/dev/build/debian/po" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -fr "$SOURCE/dev/build/debian/source" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -fr "$SOURCE/dev/build/debian/apache" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; - $ret=`cp -f "$SOURCE/dev/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; - $ret=`cp -fr "$SOURCE/dev/build/debian/lighttpd" "$BUILDROOT/$PROJECT.tmp/debian/lighttpd"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/compat" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/control" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/copyright" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.desktop" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.docs" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.install" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.lintian-overrides" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.xpm" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/rules" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/watch" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -fr "$SOURCE/dev/build/debian/patches" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -fr "$SOURCE/dev/build/debian/po" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -fr "$SOURCE/dev/build/debian/source" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -fr "$SOURCE/dev/build/debian/apache" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; + $ret = +`cp -fr "$SOURCE/dev/build/debian/lighttpd" "$BUILDROOT/$PROJECT.tmp/debian/lighttpd"`; + # Add files also required to build binary package - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.config" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.postinst" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.postrm" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/dolibarr.templates" "$BUILDROOT/$PROJECT.tmp/debian"`; - $ret=`cp -f "$SOURCE/dev/build/debian/install.forced.php.install" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.config" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.postinst" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.postrm" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/dolibarr.templates" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret = +`cp -f "$SOURCE/dev/build/debian/install.forced.php.install" "$BUILDROOT/$PROJECT.tmp/debian"`; # Set owners and permissions #print "Set owners on files/dir\n"; #$ret=`chown -R root.root $BUILDROOT/$PROJECT.tmp`; print "Set permissions on files/dir\n"; - $ret=`chmod -R 755 $BUILDROOT/$PROJECT.tmp`; - $cmd="find $BUILDROOT/$PROJECT.tmp -type f -exec chmod 644 {} \\; "; - $ret=`$cmd`; - $cmd="find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.php' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - $cmd="find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.dpatch' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - $cmd="find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.pl' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - $cmd="find $BUILDROOT/$PROJECT.tmp/dev -name '*.php' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - $ret=`chmod 755 $BUILDROOT/$PROJECT.tmp/debian/rules`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/translation/autotranslator.class.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/actions_mymodule.class.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/api_mymodule.class.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/myobject.class.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/core/modules/modMyModule.class.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/mymoduleindex.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_card.php`; - $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_list.php`; - $ret=`chmod -R 755 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/scripts/mymodule.php`; - $cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.php' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - $cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; "; - $ret=`$cmd`; - - - print "Rename directory $BUILDROOT/$PROJECT.tmp into $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; - $cmd="mv $BUILDROOT/$PROJECT.tmp $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"; - $ret=`$cmd`; + $ret = `chmod -R 755 $BUILDROOT/$PROJECT.tmp`; + $cmd = + "find $BUILDROOT/$PROJECT.tmp -type f -exec chmod 644 {} \\; "; + $ret = `$cmd`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.php' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.dpatch' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/dev/build -name '*.pl' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/dev -name '*.php' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + $ret = `chmod 755 $BUILDROOT/$PROJECT.tmp/debian/rules`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/translation/autotranslator.class.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/actions_mymodule.class.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/api_mymodule.class.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/class/myobject.class.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/core/modules/modMyModule.class.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/mymoduleindex.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_card.php`; + $ret = +`chmod -R 644 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/myobject_list.php`; + $ret = +`chmod -R 755 $BUILDROOT/$PROJECT.tmp/htdocs/modulebuilder/template/scripts/mymodule.php`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/scripts -name '*.php' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + $cmd = +"find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; "; + $ret = `$cmd`; + print +"Rename directory $BUILDROOT/$PROJECT.tmp into $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; + $cmd = +"mv $BUILDROOT/$PROJECT.tmp $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"; + $ret = `$cmd`; print "Go into directory $BUILDROOT\n"; chdir("$BUILDROOT"); - # We need a tarball to be able to build "quilt" debian package (not required for native but we need patch so it is not a native) - print "Compress $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build into $BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz...\n"; - $cmd="tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/dev/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz\" $PROJECT-$MAJOR.$MINOR.$build"; - print $cmd."\n"; - $ret=`$cmd`; +# We need a tarball to be able to build "quilt" debian package (not required for native but we need patch so it is not a native) + print +"Compress $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build into $BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz...\n"; + $cmd = +"tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/dev/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz\" $PROJECT-$MAJOR.$MINOR.$build"; + print $cmd. "\n"; + $ret = `$cmd`; # Creation of source package - print "Go into directory $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; + print + "Go into directory $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; chdir("$BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"); + #$cmd="dpkg-source -b $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"; - $cmd="dpkg-buildpackage -us -uc --compression=gzip"; + $cmd = "dpkg-buildpackage -us -uc --compression=gzip"; print "Launch DEB build ($cmd)\n"; - $ret=`$cmd 2>&1 3>&1`; - print $ret."\n"; + $ret = `$cmd 2>&1 3>&1`; + print $ret. "\n"; chdir("$olddir"); - print "You can check bin package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}_all.deb\"\n"; - print "You can check src package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}.dsc\"\n"; + print +"You can check bin package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}_all.deb\"\n"; + print +"You can check src package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}.dsc\"\n"; # Move to final dir print "Move *_all.deb *.dsc *.orig.tar.gz *.changes to $NEWDESTI\n"; - $ret=`mv $BUILDROOT/*_all.deb "$NEWDESTI/"`; - $ret=`mv $BUILDROOT/*.dsc "$NEWDESTI/"`; - $ret=`mv $BUILDROOT/*.orig.tar.gz "$NEWDESTI/"`; - #$ret=`mv $BUILDROOT/*.debian.tar.xz "$NEWDESTI/"`; # xz file is generated when build/debian/sources/option - $ret=`mv $BUILDROOT/*.debian.tar.gz "$NEWDESTI/"`; - $ret=`mv $BUILDROOT/*.changes "$NEWDESTI/"`; + $ret = `mv $BUILDROOT/*_all.deb "$NEWDESTI/"`; + $ret = `mv $BUILDROOT/*.dsc "$NEWDESTI/"`; + $ret = `mv $BUILDROOT/*.orig.tar.gz "$NEWDESTI/"`; + +#$ret=`mv $BUILDROOT/*.debian.tar.xz "$NEWDESTI/"`; # xz file is generated when build/debian/sources/option + $ret = `mv $BUILDROOT/*.debian.tar.gz "$NEWDESTI/"`; + $ret = `mv $BUILDROOT/*.changes "$NEWDESTI/"`; next; } - if ($target eq 'EXEDOLIWAMP') - { - $NEWDESTI=$DESTI; - if ($NEWDESTI =~ /stable/) - { - mkdir($DESTI.'/package_windows'); - if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; } + if ( $target eq 'EXEDOLIWAMP' ) { + $NEWDESTI = $DESTI; + if ( $NEWDESTI =~ /stable/ ) { + mkdir( $DESTI . '/package_windows' ); + if ( -d $DESTI . '/package_windows' ) { + $NEWDESTI = $DESTI . '/package_windows'; + } } - print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n"; - unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"; + print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n"; + unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"; - if ($OS eq 'windows') { - print "Check that ISCC.exe is in your PATH.\n"; - } else { - print "Check that in your Wine setup, you have created a Z: drive that point to your / directory.\n"; + if ( $OS eq 'windows' ) { + print "Check that ISCC.exe is in your PATH.\n"; + } + else { + print +"Check that in your Wine setup, you have created a Z: drive that point to your / directory.\n"; } - $SOURCEBACK=$SOURCE; - $SOURCEBACK =~ s/\//\\/g; + $SOURCEBACK = $SOURCE; + $SOURCEBACK =~ s/\//\\/g; - print "Prepare file \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" from \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.iss\"\n"; + print +"Prepare file \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" from \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.iss\"\n"; - #$ret=`cat "$SOURCE/dev/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; - open(IN, '<' . $SOURCE."/dev/build/exe/doliwamp/doliwamp.iss") or die $!; - open(OUT, '>' . "$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss") or die $!; - while() - { - $_ =~ s/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g; - print OUT $_; +#$ret=`cat "$SOURCE/dev/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; + open( my $IN3, '<', + $SOURCE . "/dev/build/exe/doliwamp/doliwamp.iss" ) + or die $!; + open( my $OUT, '>', + "$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss" ) + or die $!; + while (<$IN3>) { + $_ =~ s/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g; + print $OUT $_; } - close(IN); - close(OUT); + close($IN3); + close($OUT); - print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" on OS $OS\n"; + print +"Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" on OS $OS\n"; - if ($OS eq 'windows') { - $cmd= "ISCC.exe \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; - } else { - #$cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; - } + if ( $OS eq 'windows' ) { + $cmd = +"ISCC.exe \"$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + } + else { +#$cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\dev\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + } print "$cmd\n"; - $ret= `$cmd`; + $ret = `$cmd`; print "ret=$ret\n"; # Move to final dir - print "Move \"$SOURCE\\dev\\build\\$FILENAMEEXEDOLIWAMP.exe\" to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; - rename("$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe","$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"); - print "Move $SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; + print +"Move \"$SOURCE\\dev\\build\\$FILENAMEEXEDOLIWAMP.exe\" to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; + rename( + "$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe", + "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe" + ); + print +"Move $SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; - use File::Copy; + use File::Copy; - #$ret=`mv "$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe" "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"`; - $ret=move("$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe", "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"); +#$ret=`mv "$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe" "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"`; + $ret = move( + "$SOURCE/dev/build/$FILENAMEEXEDOLIWAMP.exe", + "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe" + ); - print "Remove tmp file $SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss\n"; - #$ret=`rm "$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss"`; - $ret=unlink("$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss"); + print +"Remove tmp file $SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss\n"; - next; - } - } + #$ret=`rm "$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss"`; + $ret = unlink("$SOURCE/dev/build/exe/doliwamp/doliwamp.tmp.iss"); + + next; + } + } # Publish package for each target #-------------------------------- - foreach my $target (sort keys %CHOOSEDPUBLISH) - { - if ($CHOOSEDPUBLISH{$target} < 0) { next; } + foreach my $target ( sort keys %CHOOSEDPUBLISH ) { + if ( $CHOOSEDPUBLISH{$target} < 0 ) { next; } print "\nList of files to publish (BUILD=$BUILD)\n"; - %filestoscansf=( - "$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"=>'none', # none means it won't be published on SF - "$DESTI/package_rpm_generic/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)', - "$DESTI/package_rpm_generic/$FILENAMERPMSRC"=>'none', # none means it won't be published on SF - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)', - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_amd64.changes"=>'none', # none means it won't be published on SF - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.dsc"=>'none', # none means it won't be published on SF - #"$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.xz"=>'none', # none means it won't be published on SF - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.gz"=>'none', # none means it won't be published on SF - "$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'none', # none means it won't be published on SF - "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe"=>'Dolibarr installer for Windows (DoliWamp)', - "$DESTI/standard/$FILENAMETGZ.tgz"=>'Dolibarr ERP-CRM', - "$DESTI/standard/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM' + %filestoscansf = ( + "$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml" => + 'none', # none means it won't be published on SF + "$DESTI/package_rpm_generic/$FILENAMERPM" => +'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)', + "$DESTI/package_rpm_generic/$FILENAMERPMSRC" => + 'none', # none means it won't be published on SF + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb" => + 'Dolibarr installer for Debian-Ubuntu (DoliDeb)', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_amd64.changes" => + 'none', # none means it won't be published on SF + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.dsc" => + 'none', # none means it won't be published on SF + #"$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.xz"=>'none', # none means it won't be published on SF + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.gz" => + 'none', # none means it won't be published on SF + "$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz" => + 'none', # none means it won't be published on SF + "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe" => + 'Dolibarr installer for Windows (DoliWamp)', + "$DESTI/standard/$FILENAMETGZ.tgz" => 'Dolibarr ERP-CRM', + "$DESTI/standard/$FILENAMETGZ.zip" => 'Dolibarr ERP-CRM' ); - %filestoscanstableasso=( - "$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"=>'signatures', - "$DESTI/package_rpm_generic/$FILENAMERPM"=>'package_rpm_generic', - "$DESTI/package_rpm_generic/$FILENAMERPMSRC"=>'package_rpm_generic', - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'package_debian-ubuntu', - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_amd64.changes"=>'package_debian-ubuntu', - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.dsc"=>'package_debian-ubuntu', - #"$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.xz"=>'package_debian-ubuntu', - "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.gz"=>'package_debian-ubuntu', - "$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'package_debian-ubuntu', - "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe"=>'package_windows', - "$DESTI/standard/$FILENAMETGZ.tgz"=>'standard', - "$DESTI/standard/$FILENAMETGZ.zip"=>'standard' + %filestoscanstableasso = ( + "$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml" => + 'signatures', + "$DESTI/package_rpm_generic/$FILENAMERPM" => 'package_rpm_generic', + "$DESTI/package_rpm_generic/$FILENAMERPMSRC" => + 'package_rpm_generic', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb" => + 'package_debian-ubuntu', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_amd64.changes" => + 'package_debian-ubuntu', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.dsc" => + 'package_debian-ubuntu', + +#"$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.xz"=>'package_debian-ubuntu', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}.debian.tar.gz" => + 'package_debian-ubuntu', + "$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz" => + 'package_debian-ubuntu', + "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe" => + 'package_windows', + "$DESTI/standard/$FILENAMETGZ.tgz" => 'standard', + "$DESTI/standard/$FILENAMETGZ.zip" => 'standard' ); - if ($target eq 'ASSO' && $BUILD =~ /[a-z]/i) { # Not stable - %filestoscansf=( - "$DESTI/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)', - "$DESTI/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)', - "$DESTI/$FILENAMEEXEDOLIWAMP.exe"=>'Dolibarr installer for Windows (DoliWamp)', - "$DESTI/$FILENAMETGZ.tgz"=>'Dolibarr ERP-CRM', - "$DESTI/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM' + if ( $target eq 'ASSO' && $BUILD =~ /[a-z]/i ) { # Not stable + %filestoscansf = ( + "$DESTI/$FILENAMERPM" => +'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)', + "$DESTI/${FILENAMEDEB}_all.deb" => + 'Dolibarr installer for Debian-Ubuntu (DoliDeb)', + "$DESTI/$FILENAMEEXEDOLIWAMP.exe" => + 'Dolibarr installer for Windows (DoliWamp)', + "$DESTI/$FILENAMETGZ.tgz" => 'Dolibarr ERP-CRM', + "$DESTI/$FILENAMETGZ.zip" => 'Dolibarr ERP-CRM' ); - %filestoscanstableasso=( - "$DESTI/$FILENAMERPM"=>'', - "$DESTI/${FILENAMEDEB}_all.deb"=>'', - "$DESTI/$FILENAMEEXEDOLIWAMP.exe"=>'', - "$DESTI/$FILENAMETGZ.tgz"=>'', - "$DESTI/$FILENAMETGZ.zip"=>'' + %filestoscanstableasso = ( + "$DESTI/$FILENAMERPM" => '', + "$DESTI/${FILENAMEDEB}_all.deb" => '', + "$DESTI/$FILENAMEEXEDOLIWAMP.exe" => '', + "$DESTI/$FILENAMETGZ.tgz" => '', + "$DESTI/$FILENAMETGZ.zip" => '' ); } use POSIX qw/strftime/; - foreach my $file (sort keys %filestoscansf) - { - $found=0; + foreach my $file ( sort keys %filestoscansf ) { + $found = 0; my $filesize = -s $file; - my $filedate = (stat $file)[9]; - print $file." ".($filesize?"(found)":"(not found)"); - print ($filesize?" - ".$filesize:""); - print ($filedate?" - ".strftime("%Y-%m-%d %H:%M:%S",localtime($filedate)):""); + my $filedate = ( stat $file )[9]; + print $file. " " . ( $filesize ? "(found)" : "(not found)" ); + print( $filesize? " - " . $filesize : "" ); + print( $filedate + ? " - " . strftime( "%Y-%m-%d %H:%M:%S", localtime($filedate) ) + : "" + ); print "\n"; } - if ($target eq 'SF' || $target eq 'ASSO') - { + if ( $target eq 'SF' || $target eq 'ASSO' ) { print "\n"; - if ($target eq 'SF') { $PUBLISH = $PUBLISHSTABLE; } - if ($target eq 'ASSO' && $BUILD =~ /[a-z]/i) { $PUBLISH = $PUBLISHBETARC.'/lastbuild'; } - if ($target eq 'ASSO' && $BUILD =~ /^[0-9]+$/) { $PUBLISH = $PUBLISHBETARC.'/stable'; } + if ( $target eq 'SF' ) { $PUBLISH = $PUBLISHSTABLE; } + if ( $target eq 'ASSO' && $BUILD =~ /[a-z]/i ) { + $PUBLISH = $PUBLISHBETARC . '/lastbuild'; + } + if ( $target eq 'ASSO' && $BUILD =~ /^[0-9]+$/ ) { + $PUBLISH = $PUBLISHBETARC . '/stable'; + } - $NEWPUBLISH=$PUBLISH; + $NEWPUBLISH = $PUBLISH; print "Publish to target $NEWPUBLISH. Click enter or CTRL+C...\n"; # Ask which target to build - $NUM_SCRIPT=; + $NUM_SCRIPT = ; chomp($NUM_SCRIPT); - print "Create empty dir /tmp/emptydir. We need it to create target dir using rsync.\n"; - $ret=`mkdir -p "/tmp/emptydir/"`; + print +"Create empty dir /tmp/emptydir. We need it to create target dir using rsync.\n"; + $ret = `mkdir -p "/tmp/emptydir/"`; - %filestoscan=%filestoscansf; + %filestoscan = %filestoscansf; - foreach my $file (sort keys %filestoscan) - { - $found=0; + foreach my $file ( sort keys %filestoscan ) { + $found = 0; my $filesize = -s $file; - if (! $filesize) { next; } + if ( !$filesize ) { next; } - if ($target eq 'SF') { - if ($filestoscan{$file} eq 'none') { - next; - } - $destFolder="$NEWPUBLISH/$filestoscan{$file}/".$MAJOR.'.'.$MINOR.'.'.$BUILD; - } - elsif ($target eq 'ASSO' and $NEWPUBLISH =~ /stable/) { - $destFolder="$NEWPUBLISH/$filestoscanstableasso{$file}"; - } - elsif ($target eq 'ASSO' and $NEWPUBLISH !~ /stable/) { - $destFolder="$NEWPUBLISH"; - } - else # No more used - { - $dirnameonly=$file; - $dirnameonly =~ s/.*\/([^\/]+)\/[^\/]+$/$1/; - $filenameonly=$file; - $filenameonly =~ s/.*\/[^\/]+\/([^\/])+$/$1/; - $destFolder="$NEWPUBLISH/$dirnameonly"; - } + if ( $target eq 'SF' ) { + if ( $filestoscan{$file} eq 'none' ) { + next; + } + $destFolder = + "$NEWPUBLISH/$filestoscan{$file}/" + . $MAJOR . '.' + . $MINOR . '.' + . $BUILD; + } + elsif ( $target eq 'ASSO' and $NEWPUBLISH =~ /stable/ ) { + $destFolder = "$NEWPUBLISH/$filestoscanstableasso{$file}"; + } + elsif ( $target eq 'ASSO' and $NEWPUBLISH !~ /stable/ ) { + $destFolder = "$NEWPUBLISH"; + } + else # No more used + { + $dirnameonly = $file; + $dirnameonly =~ s/.*\/([^\/]+)\/[^\/]+$/$1/; + $filenameonly = $file; + $filenameonly =~ s/.*\/[^\/]+\/([^\/])+$/$1/; + $destFolder = "$NEWPUBLISH/$dirnameonly"; + } print "\n"; - print "Publish file ".$file." to ".$destFolder."\n"; + print "Publish file " . $file . " to " . $destFolder . "\n"; # mkdir #my $ssh = Net::SSH::Perl->new("frs.sourceforge.net"); @@ -1332,21 +1686,23 @@ if ($nboftargetok) { #use String::ShellQuote qw( shell_quote ); #$ssh->cmd('mkdir '.shell_quote($destFolder).' && exit'); - #use Net::SFTP::Foreign; - #my $sftp = Net::SFTP::Foreign->new($ip, user => $user, password => $pass, autodie => 1); - #$sftp->mkdir($destFolder) +#use Net::SFTP::Foreign; +#my $sftp = Net::SFTP::Foreign->new($ip, user => $user, password => $pass, autodie => 1); +#$sftp->mkdir($destFolder) - #$command="ssh eldy,dolibarr\@frs.sourceforge.net mkdir -p \"$destFolder\""; - #print "$command\n"; - #my $ret=`$command 2>&1`; + #$command="ssh eldy,dolibarr\@frs.sourceforge.net mkdir -p \"$destFolder\""; + #print "$command\n"; + #my $ret=`$command 2>&1`; - $command="rsync -s -e 'ssh' --recursive /tmp/emptydir/ \"".$destFolder."\""; + $command = "rsync -s -e 'ssh' --recursive /tmp/emptydir/ \"" + . $destFolder . "\""; print "$command\n"; - my $ret=`$command 2>&1`; + my $ret = `$command 2>&1`; - $command="rsync -s -e 'ssh' \"$file\" \"".$destFolder."\""; + $command = + "rsync -s -e 'ssh' \"$file\" \"" . $destFolder . "\""; print "$command\n"; - my $ret2=`$command 2>&1`; + my $ret2 = `$command 2>&1`; print "$ret2\n"; } } @@ -1354,18 +1710,19 @@ if ($nboftargetok) { } print "\n----- Summary -----\n"; -foreach my $target (sort keys %CHOOSEDTARGET) { - if ($target eq '-CHKSUM') { print "Checksum was generated\n"; next; } - if ($CHOOSEDTARGET{$target} < 0) { +foreach my $target ( sort keys %CHOOSEDTARGET ) { + if ( $target eq '-CHKSUM' ) { print "Checksum was generated\n"; next; } + if ( $CHOOSEDTARGET{$target} < 0 ) { print "Package $target not built (bad requirement).\n"; - } else { + } + else { print "Package $target built successfully in $DESTI\n"; } } -if (! $batch) { +if ( !$batch ) { print "\nPress key to finish..."; - my $WAITKEY=; + my $WAITKEY = ; } 0; diff --git a/dev/build/makepack-dolibarrmodule.pl b/dev/build/makepack-dolibarrmodule.pl index 11c12c3ea89..653c26aca3e 100755 --- a/dev/build/makepack-dolibarrmodule.pl +++ b/dev/build/makepack-dolibarrmodule.pl @@ -5,223 +5,288 @@ # \author (c)2005-2014 Laurent Destailleur # \contributor (c)2017 Nicolas ZABOURI #---------------------------------------------------------------------------- +## no critic (InputOutput::ProhibitExplicitStdin,InputOutput::RequireBriefOpen) +use strict; +use warnings; use Cwd; use Term::ANSIColor; -$OWNER="ldestailleur"; -$GROUP="ldestailleur"; +$OWNER = "ldestailleur"; +$GROUP = "ldestailleur"; - -@LISTETARGET=("ZIP"); # Possible packages -%REQUIREMENTTARGET=( # Tool requirement for each package -"TGZ"=>"tar", -"ZIP"=>"7z" +@LISTETARGET = ("ZIP"); # Possible packages +%REQUIREMENTTARGET = ( # Tool requirement for each package + "TGZ" => "tar", + "ZIP" => "7z" ); -%ALTERNATEPATH=( -); - +%ALTERNATEPATH = (); use vars qw/ $REVISION $VERSION /; -$REVISION='1.0'; -$VERSION="3.5 (build $REVISION)"; - - +$REVISION = '1.0'; +$VERSION = "3.5 (build $REVISION)"; #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ -($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; -$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; +( $DIR = $0 ) =~ s/([^\/\\]+)$//; +( $PROG = $1 ) =~ s/\.([^\.]*)$//; +$Extension = $1; +$DIR ||= '.'; +$DIR =~ s/([^\/\\])[\\\/]+$/$1/; # Detect OS type # -------------- -if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; } -elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } -elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } -if (! $OS) { - print "$PROG.$Extension was not able to detect your OS.\n"; +if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) { + $OS = 'linux'; + $CR = ''; +} +elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; } +elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) { + $OS = 'windows'; + $CR = "\r"; +} +if ( !$OS ) { + print "$PROG.$Extension was not able to detect your OS.\n"; print "Can't continue.\n"; print "$PROG.$Extension aborted.\n"; - sleep 2; + sleep 2; exit 1; } # Define buildroot # ---------------- -if ($OS =~ /linux/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /linux/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /macos/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /macos/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /windows/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp"; - $PROGPATH=$ENV{"ProgramFiles"}; +if ( $OS =~ /windows/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp"; + $PROGPATH = $ENV{"ProgramFiles"}; } -if (! $TEMP || ! -d $TEMP) { - print "Error: A temporary directory can not be find.\n"; - print "Check that TEMP or TMP environment variable is set correctly.\n"; +if ( !$TEMP || !-d $TEMP ) { + print "Error: A temporary directory can not be find.\n"; + print "Check that TEMP or TMP environment variable is set correctly.\n"; print "$PROG.$Extension aborted.\n"; - sleep 2; - exit 2; + sleep 2; + exit 2; } -$BUILDROOT="$TEMP/dolibarr-buildroot"; +$BUILDROOT = "$TEMP/dolibarr-buildroot"; +my $copyalreadydone = 0; +my $batch = 0; -my $copyalreadydone=0; -my $batch=0; - -for (0..@ARGV-1) { - if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; } - if ($ARGV[$_] =~ /^-*desti=(.+)/i) { $DESTI=$1; } - if ($ARGV[$_] =~ /^-*prefix=(.+)/i) { - $PREFIX=$1; - $FILENAMESNAPSHOT.="-".$PREFIX; - } +for ( 0 .. @ARGV - 1 ) { + if ( $ARGV[$_] =~ /^-*target=(\w+)/i ) { $target = $1; $batch = 1; } + if ( $ARGV[$_] =~ /^-*desti=(.+)/i ) { $DESTI = $1; } + if ( $ARGV[$_] =~ /^-*prefix=(.+)/i ) { + $PREFIX = $1; + $FILENAMESNAPSHOT .= "-" . $PREFIX; + } } -$SOURCE="$DIR/../.."; -$DESTI="$SOURCE/dev/build"; -if ($ENV{"DESTIMODULES"}) { $DESTI = $ENV{"DESTIMODULES"}; } # Force output dir if env DESTIMODULES is defined -$NEWDESTI=$DESTI; - +$SOURCE = "$DIR/../.."; +$DESTI = "$SOURCE/dev/build"; +if ( $ENV{"DESTIMODULES"} ) { + $DESTI = $ENV{"DESTIMODULES"}; +} # Force output dir if env DESTIMODULES is defined +$NEWDESTI = $DESTI; print "Makepack for modules version $VERSION\n"; print "Source directory: $SOURCE\n"; print "Target directory: $NEWDESTI\n"; - # Ask module -print "Enter name for your module (mymodule, mywonderfulmondule, ... or 'all') : "; -$PROJECTINPUT=; +print + "Enter name for your module (mymodule, mywonderfullmodule, ... or 'all') : "; +my $PROJECTINPUT = ; chomp($PROJECTINPUT); -print "Move to ".$DIR." directory.\n"; +print "Move to " . $DIR . " directory.\n"; chdir($DIR); - -my @PROJECTLIST=(); -if ($PROJECTINPUT eq "all") -{ - opendir(DIR, $DIR) || return; - local @rv = grep { /^makepack\-(.*)\.conf$/ } sort readdir(DIR); - closedir(DIR); - foreach my $xxx (0..@rv-1) { - if ($rv[$xxx] =~ /^makepack\-(.*)\.conf$/) - { - @PROJECTLIST[$xxx]=$1; - } - } +my @PROJECTLIST = (); +if ( $PROJECTINPUT eq "all" ) { + opendir( my $DIR, $DIR ) or return; + local @rv = grep { /^makepack\-(.*)\.conf$/ } sort readdir($DIR); + closedir($DIR); + foreach my $xxx ( 0 .. @rv - 1 ) { + if ( $rv[$xxx] =~ /^makepack\-(.*)\.conf$/ ) { + @PROJECTLIST[$xxx] = $1; + } + } } -else -{ - @PROJECTLIST=($PROJECTINPUT); +else { + @PROJECTLIST = ($PROJECTINPUT); } - # Loop on each projects foreach my $PROJECT (@PROJECTLIST) { - $PROJECTLC=lc($PROJECT); + $PROJECTLC = lc($PROJECT); - if (! -f "makepack-".$PROJECT.".conf") - { - print "Error: can't open conf file makepack-".$PROJECT.".conf\n"; + if ( !-f "makepack-" . $PROJECT . ".conf" ) { + print "Error: can't open conf file makepack-" . $PROJECT . ".conf\n"; print "\n"; print "For help on building a module package, see web page\n"; - print "http://wiki.dolibarr.org/index.php/Module_development#Create_a_package_to_distribute_and_install_your_module\n"; + print +"http://wiki.dolibarr.org/index.php/Module_development#Create_a_package_to_distribute_and_install_your_module\n"; print "makepack-dolibarrmodule.pl aborted.\n"; - sleep 2; - exit 2; + sleep 2; + exit 2; } # Get version $MAJOR, $MINOR and $BUILD - print "Version detected for module ".$PROJECT." in file ".$SOURCE."/htdocs/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php"; - $result=open(IN,"<".$SOURCE."/htdocs/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php"); - $custom=false; - if (! $result) { - $result=open(IN,"<".$SOURCE."/htdocs/custom/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php"); - if (! $result) { - die "Error: Can't open descriptor file ".$SOURCE."/htdocs/(or /htdocs/custom/)".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php for reading.\n"; - }else{ - $custom = true; - } - } - while() - { - if ($_ =~ /this->version\s*=\s*'([\d\.]+)'/) { $PROJVERSION=$1; break; } - } - close IN; - print $PROJVERSION."\n"; + print "Version detected for module " + . $PROJECT + . " in file " + . $SOURCE + . "/htdocs/" + . $PROJECTLC + . "/core/modules/mod" + . ucfirst($PROJECT) + . ".class.php"; + $result = open( + my $IN, + "<", + $SOURCE + . "/htdocs/" + . $PROJECTLC + . "/core/modules/mod" + . ucfirst($PROJECT) + . ".class.php" + ); + $custom = false; + if ( !$result ) { + $result = open( + my $IN, + "<", + $SOURCE + . "/htdocs/custom/" + . $PROJECTLC + . "/core/modules/mod" + . ucfirst($PROJECT) + . ".class.php" + ); + if ( !$result ) { + die "Error: Can't open descriptor file " + . $SOURCE + . "/htdocs/(or /htdocs/custom/)" + . $PROJECTLC + . "/core/modules/mod" + . ucfirst($PROJECT) + . ".class.php for reading.\n"; + } + } + else { + $custom = true; + } + while (<$IN>) { + if ( $_ =~ /this->version\s*=\s*'([\d\.]+)'/ ) { + $PROJVERSION = $1; + break; + } + } + close $IN; + print $PROJVERSION. "\n"; - ($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3); - if ($MINOR eq '') - { - print "Enter value for minor version for module ".$PROJECT.": "; - $MINOR=; - chomp($MINOR); + ( $MAJOR, $MINOR, $BUILD ) = split( /\./, $PROJVERSION, 3 ); + if ( $MINOR eq '' ) { + print "Enter value for minor version for module " . $PROJECT . ": "; + $MINOR = ; + chomp($MINOR); } - $FILENAME="$PROJECTLC"; - $FILENAMETGZ="module_$PROJECTLC-$MAJOR.$MINOR".($BUILD ne ''?".$BUILD":""); - $FILENAMEZIP="module_$PROJECTLC-$MAJOR.$MINOR".($BUILD ne ''?".$BUILD":""); - if (-d "/usr/src/redhat") { - # redhat - $RPMDIR="/usr/src/redhat"; - } - if (-d "/usr/src/RPM") { - # mandrake - $RPMDIR="/usr/src/RPM"; - } + $FILENAME = "$PROJECTLC"; + $FILENAMETGZ = + "module_$PROJECTLC-$MAJOR.$MINOR" . ( $BUILD ne '' ? ".$BUILD" : "" ); + $FILENAMEZIP = + "module_$PROJECTLC-$MAJOR.$MINOR" . ( $BUILD ne '' ? ".$BUILD" : "" ); + if ( -d "/usr/src/redhat" ) { + # redhat + $RPMDIR = "/usr/src/redhat"; + } + if ( -d "/usr/src/RPM" ) { + + # mandrake + $RPMDIR = "/usr/src/RPM"; + } # Choose package targets #----------------------- - $target="ZIP"; # Dolibarr modules are this format - $CHOOSEDTARGET{uc($target)}=1; - + $target = "ZIP"; # Dolibarr modules are this format + $CHOOSEDTARGET{ uc($target) } = 1; # Test if requirement is ok #-------------------------- - foreach my $target (keys %CHOOSEDTARGET) { - foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) { - # Test - print "Test requirement for target $target: Search '$req'... "; - $ret=`"$req" 2>&1`; - $coderetour=$?; $coderetour2=$coderetour>>8; - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) { - # Not found error, we try in PROGPATH - $ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; - $coderetour=$?; $coderetour2=$coderetour>>8; - $REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req"; - } + foreach my $target ( keys %CHOOSEDTARGET ) { + foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) { - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) { - # Not found error - print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; - $CHOOSEDTARGET{$target}=-1; - last; - } else { - # Pas erreur ou erreur autre que programme absent - print " Found ".$REQUIREMENTTARGET{$target}."\n"; - } - } + # Test + print "Test requirement for target $target: Search '$req'... "; + $ret = `"$req" 2>&1`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + if ( + $coderetour != 0 + && ( + ( + $coderetour2 == 1 + && $OS =~ /windows/ + && $ret !~ /Usage/i + ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) + ) + && $PROGPATH + ) + { + # Not found error, we try in PROGPATH + $ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + $REQUIREMENTTARGET{$target} = + "$PROGPATH/$ALTERNATEPATH{$req}/$req"; + } + + if ( + $coderetour != 0 + && ( + ( + $coderetour2 == 1 + && $OS =~ /windows/ + && $ret !~ /Usage/i + ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) + ) + ) + { + # Not found error + print +"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; + $CHOOSEDTARGET{$target} = -1; + last; + } + else { + # Pas erreur ou erreur autre que programme absent + print " Found " . $REQUIREMENTTARGET{$target} . "\n"; + } + } } print "\n"; - # Check if there is at least on target to build + # Check if there is at least one target to build #---------------------------------------------- - $nboftargetok=0; - $nboftargetneedbuildroot=0; - $nboftargetneedcvs=0; - foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { next; } - if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP') - { + $nboftargetok = 0; + $nboftargetneedbuildroot = 0; + $nboftargetneedcvs = 0; + foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } + if ( $target ne 'EXE' && $target ne 'EXEDOLIWAMP' ) { $nboftargetneedbuildroot++; } - if ($target eq 'SNAPSHOT') - { + if ( $target eq 'SNAPSHOT' ) { $nboftargetneedcvs++; } $nboftargetok++; @@ -229,178 +294,211 @@ foreach my $PROJECT (@PROJECTLIST) { if ($nboftargetok) { - # Update CVS if required - #----------------------- - if ($nboftargetneedcvs) - { - print "Go to directory $SOURCE\n"; - $olddir=getcwd(); - chdir("$SOURCE"); - print "Run cvs update -P -d\n"; - $ret=`cvs update -P -d 2>&1`; - chdir("$olddir"); + # Update CVS if required + #----------------------- + if ($nboftargetneedcvs) { + print "Go to directory $SOURCE\n"; + $olddir = getcwd(); + chdir("$SOURCE"); + print "Run cvs update -P -d\n"; + $ret = `cvs update -P -d 2>&1`; + chdir("$olddir"); } - # Update buildroot if required - #----------------------------- - if ($nboftargetneedbuildroot) - { - if (! $copyalreadydone) { - print "Delete directory $BUILDROOT\n"; - $ret=`rm -fr "$BUILDROOT"`; + # Update buildroot if required + #----------------------------- + if ($nboftargetneedbuildroot) { + if ( !$copyalreadydone ) { + print "Delete directory $BUILDROOT\n"; + $ret = `rm -fr "$BUILDROOT"`; - mkdir "$BUILDROOT"; - mkdir "$BUILDROOT/$PROJECTLC"; + mkdir "$BUILDROOT"; + mkdir "$BUILDROOT/$PROJECTLC"; - print "Now, we will copy all files declared in the makepack-".$PROJECT.".conf into the directory $BUILDROOT\n"; + print "Now, we will copy all files declared in the makepack-" + . $PROJECT + . ".conf into the directory $BUILDROOT\n"; - $result=open(IN,") - { - $entry=$_; + open( my $IN2, "<", "makepack-" . $PROJECT . ".conf" ) + or die "Error: Can't open conf file makepack-" + . $PROJECT + . ".conf for reading.\n"; + while (<$IN2>) { + $entry = $_; - if ($entry =~ /^#/) { next; } # Do not process comments + if ( $entry =~ /^#/ ) { next; } # Do not process comments $entry =~ s/\n//; - if ($entry =~ /^!(.*)$/) # Exclude so remove file/dir - { - print "Remove $BUILDROOT/$PROJECTLC/$1\n"; - $ret=`rm -fr "$BUILDROOT/$PROJECTLC/"$1`; - if ($? != 0) { die "Failed to delete a file to exclude declared into makepack-".$PROJECT.".conf file (Failed on the line ".$entry.")\n"; } - next; - } + if ( $entry =~ /^!(.*)$/ ) # Exclude so remove file/dir + { + print "Remove $BUILDROOT/$PROJECTLC/$1\n"; + $ret = `rm -fr "$BUILDROOT/$PROJECTLC/"$1`; + if ( $? != 0 ) { + die +"Failed to delete a file to exclude declared into makepack-" + . $PROJECT + . ".conf file (Failed on the line " + . $entry . ")\n"; + } + next; + } $entry =~ /^(.*)\/[^\/]+/; - print "Create directory $BUILDROOT/$PROJECTLC/$1\n"; - $ret=`mkdir -p "$BUILDROOT/$PROJECTLC/$1"`; - if ($entry !~ /version\-/) - { - print "Copy $SOURCE/$entry into $BUILDROOT/$PROJECTLC/$entry\n"; - $ret=`cp -pr "$SOURCE/$entry" "$BUILDROOT/$PROJECTLC/$entry"`; - if ($? != 0) { die "Failed to make copy of a file declared into makepack-".$PROJECT.".conf file (Failed on the line '".$entry."')\n"; } - } + print "Create directory $BUILDROOT/$PROJECTLC/$1\n"; + $ret = `mkdir -p "$BUILDROOT/$PROJECTLC/$1"`; + if ( $entry !~ /version\-/ ) { + print +"Copy $SOURCE/$entry into $BUILDROOT/$PROJECTLC/$entry\n"; + $ret = +`cp -pr "$SOURCE/$entry" "$BUILDROOT/$PROJECTLC/$entry"`; + if ( $? != 0 ) { + die +"Failed to make copy of a file declared into makepack-" + . $PROJECT + . ".conf file (Failed on the line '" + . $entry . "')\n"; + } + } } - close IN; + close $IN2; - @timearray=localtime(time()); - $fulldate=($timearray[5]+1900).'-'.($timearray[4]+1).'-'.$timearray[3].' '.$timearray[2].':'.$timearray[1]; - #open(VF,">$BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt"); - #print "Create version file $BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt with date ".$fulldate."\n"; - #$ret=`mkdir -p "$BUILDROOT/$PROJECTLC/dev/build"`; - #print VF "Version: ".$MAJOR.".".$MINOR.($BUILD ne ''?".$BUILD":"")."\n"; - #print VF "Build : ".$fulldate."\n"; - #close VF; - } - print "Clean $BUILDROOT\n"; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/.cache`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/.git`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/.project`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/.settings`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/index.php`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/dev/build/html`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/documents`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/document`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.mysql`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.old`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.postgres`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf*sav*`; - if ($custom) { - $ret=`cp -r $BUILDROOT/$PROJECTLC/htdocs/custom/* $BUILDROOT/$PROJECTLC/htdocs/.`; - } - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom2`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/test`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/Thumbs.db $BUILDROOT/$PROJECTLC/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/*/Thumbs.db`; - $ret=`rm -fr $BUILDROOT/$PROJECTLC/CVS* $BUILDROOT/$PROJECTLC/*/CVS* $BUILDROOT/$PROJECTLC/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/*/CVS*`; + @timearray = localtime( time() ); + $fulldate = + ( $timearray[5] + 1900 ) . '-' + . ( $timearray[4] + 1 ) . '-' + . $timearray[3] . ' ' + . $timearray[2] . ':' + . $timearray[1]; + +#open(VF,">$BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt"); +#print "Create version file $BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt with date ".$fulldate."\n"; +#$ret=`mkdir -p "$BUILDROOT/$PROJECTLC/dev/build"`; +#print VF "Version: ".$MAJOR.".".$MINOR.($BUILD ne ''?".$BUILD":"")."\n"; +#print VF "Build : ".$fulldate."\n"; +#close VF; + } + print "Clean $BUILDROOT\n"; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/.cache`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/.git`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/.project`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/.settings`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/index.php`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/dev/build/html`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/documents`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/document`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.mysql`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.old`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.postgres`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf*sav*`; + + if ($custom) { + $ret = +`cp -r $BUILDROOT/$PROJECTLC/htdocs/custom/* $BUILDROOT/$PROJECTLC/htdocs/.`; + } + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom2`; + $ret = `rm -fr $BUILDROOT/$PROJECTLC/test`; + $ret = +`rm -fr $BUILDROOT/$PROJECTLC/Thumbs.db $BUILDROOT/$PROJECTLC/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/*/Thumbs.db`; + $ret = +`rm -fr $BUILDROOT/$PROJECTLC/CVS* $BUILDROOT/$PROJECTLC/*/CVS* $BUILDROOT/$PROJECTLC/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/*/CVS*`; } - # Build package for each target - #------------------------------ - foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { next; } + # Build package for each target + #------------------------------ + foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } - print "\nBuild package for target $target\n"; + print "\nBuild package for target $target\n"; - if ($target eq 'TGZ') { - $NEWDESTI=$DESTI; - if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; } + if ( $target eq 'TGZ' ) { + $NEWDESTI = $DESTI; + if ( -d $DESTI . '/../modules' ) { + $NEWDESTI = $DESTI . '/../modules'; + } - print "Remove target $FILENAMETGZ.tgz...\n"; - unlink("$NEWDESTI/$FILENAMETGZ.tgz"); - print "Compress $BUILDROOT/* into $FILENAMETGZ.tgz...\n"; - $cmd="tar --exclude-vcs --exclude *.tgz --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" ."; - $ret=`$cmd`; - if ($OS =~ /windows/i) { - print "Move $FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n"; - $ret=`mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; - } - else - { - $ret=`mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; - } - next; - } + print "Remove target $FILENAMETGZ.tgz...\n"; + unlink("$NEWDESTI/$FILENAMETGZ.tgz"); + print "Compress $BUILDROOT/* into $FILENAMETGZ.tgz...\n"; + $cmd = +"tar --exclude-vcs --exclude *.tgz --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" ."; + $ret = `$cmd`; + if ( $OS =~ /windows/i ) { + print + "Move $FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n"; + $ret = `mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; + } + else { + $ret = `mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`; + } + next; + } - if ($target eq 'ZIP') { - $NEWDESTI=$DESTI; - if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; } + if ( $target eq 'ZIP' ) { + $NEWDESTI = $DESTI; + if ( -d $DESTI . '/../modules' ) { + $NEWDESTI = $DESTI . '/../modules'; + } - print "Remove target $FILENAMEZIP.zip...\n"; - unlink "$NEWDESTI/$FILENAMEZIP.zip"; - print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n"; + print "Remove target $FILENAMEZIP.zip...\n"; + unlink "$NEWDESTI/$FILENAMEZIP.zip"; + print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n"; - print "Go to directory $BUILDROOT/$PROJECTLC\n"; - $olddir=getcwd(); - chdir("$BUILDROOT/$PROJECTLC"); - $cmd= "7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip *"; - print $cmd."\n"; - $ret= `$cmd`; - chdir("$olddir"); + print "Go to directory $BUILDROOT/$PROJECTLC\n"; + $olddir = getcwd(); + chdir("$BUILDROOT/$PROJECTLC"); + $cmd = "7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip *"; + print $cmd. "\n"; + $ret = `$cmd`; + chdir("$olddir"); - print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n"; - $ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`; - $ret=`chown $OWNER:$GROUP "$NEWDESTI/$FILENAMEZIP.zip"`; - next; - } + print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n"; + $ret = +`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`; + $ret = `chown $OWNER:$GROUP "$NEWDESTI/$FILENAMEZIP.zip"`; + next; + } - if ($target eq 'EXE') { - $NEWDESTI=$DESTI; - if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; } + if ( $target eq 'EXE' ) { + $NEWDESTI = $DESTI; + if ( -d $DESTI . '/../modules' ) { + $NEWDESTI = $DESTI . '/../modules'; + } - print "Remove target $FILENAMEEXE.exe...\n"; - unlink "$NEWDESTI/$FILENAMEEXE.exe"; - print "Compress into $FILENAMEEXE.exe by $FILENAMEEXE.nsi...\n"; - $command="\"$REQUIREMENTTARGET{$target}\" /DMUI_VERSION_DOT=$MAJOR.$MINOR.$BUILD /X\"SetCompressor bzip2\" \"$SOURCE\\dev\\build\\exe\\$FILENAME.nsi\""; - print "$command\n"; - $ret=`$command`; - print "Move $FILENAMEEXE.exe to $NEWDESTI\n"; - rename("$SOURCE\\dev\\build\\exe\\$FILENAMEEXE.exe","$NEWDESTI/$FILENAMEEXE.exe"); - next; - } + print "Remove target $FILENAMEEXE.exe...\n"; + unlink "$NEWDESTI/$FILENAMEEXE.exe"; + print "Compress into $FILENAMEEXE.exe by $FILENAMEEXE.nsi...\n"; + $command = +"\"$REQUIREMENTTARGET{$target}\" /DMUI_VERSION_DOT=$MAJOR.$MINOR.$BUILD /X\"SetCompressor bzip2\" \"$SOURCE\\dev\\build\\exe\\$FILENAME.nsi\""; + print "$command\n"; + $ret = `$command`; + print "Move $FILENAMEEXE.exe to $NEWDESTI\n"; + rename( "$SOURCE\\dev\\build\\exe\\$FILENAMEEXE.exe", + "$NEWDESTI/$FILENAMEEXE.exe" ); + next; + } - } + } } print "\n----- Summary -----\n"; - foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { - print "Package $target not built (bad requirement).\n"; - } else { - print "Package $target built successfully in $NEWDESTI\n"; - } + foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { + print "Package $target not built (bad requirement).\n"; + } + else { + print "Package $target built successfully in $NEWDESTI\n"; + } } - } - -if (! $batch) { - print "\nPress key to finish..."; - my $WAITKEY=; +if ( !$batch ) { + print "\nPress key to finish..."; + my $WAITKEY = ; } 0; diff --git a/dev/build/makepack-dolibarrtheme.pl b/dev/build/makepack-dolibarrtheme.pl index 7a6c31fb0f8..ff7adf1fad5 100755 --- a/dev/build/makepack-dolibarrtheme.pl +++ b/dev/build/makepack-dolibarrtheme.pl @@ -4,268 +4,294 @@ # \brief Script to build a theme Package for Dolibarr # \author (c)2005-2009 Laurent Destailleur #----------------------------------------------------------------------------- +## no critic (InputOutput::ProhibitExplicitStdin) +use strict; +use warnings; use Cwd; use Term::ANSIColor; -$PROJECT="dolibarr"; +$PROJECT = "dolibarr"; -@LISTETARGET=("TGZ"); # Possible packages -%REQUIREMENTTARGET=( # Tool requirement for each package -"TGZ"=>"tar", -"ZIP"=>"7z", -"RPM"=>"rpmbuild", -"DEB"=>"dpkg-buildpackage", -"EXE"=>"makensis.exe" +@LISTETARGET = ("TGZ"); # Possible packages +%REQUIREMENTTARGET = ( # Tool requirement for each package + "TGZ" => "tar", + "ZIP" => "7z", + "RPM" => "rpmbuild", + "DEB" => "dpkg-buildpackage", + "EXE" => "makensis.exe" ); -%ALTERNATEPATH=( -"7z"=>"7-ZIP", -"makensis.exe"=>"NSIS" +%ALTERNATEPATH = ( + "7z" => "7-ZIP", + "makensis.exe" => "NSIS" ); - use vars qw/ $REVISION $VERSION /; -$REVISION='1.11'; -$VERSION="1.0 (build $REVISION)"; - - +$REVISION = '1.11'; +$VERSION = "1.0 (build $REVISION)"; #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ -($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; -$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; +( $DIR = $0 ) =~ s/([^\/\\]+)$//; +( $PROG = $1 ) =~ s/\.([^\.]*)$//; +$Extension = $1; +$DIR ||= '.'; +$DIR =~ s/([^\/\\])[\\\/]+$/$1/; # Detect OS type # -------------- -if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; } -elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } -elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } -if (! $OS) { - print "$PROG.$Extension was not able to detect your OS.\n"; +if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) { + $OS = 'linux'; + $CR = ''; +} +elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; } +elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) { + $OS = 'windows'; + $CR = "\r"; +} +if ( !$OS ) { + print "$PROG.$Extension was not able to detect your OS.\n"; print "Can't continue.\n"; print "$PROG.$Extension aborted.\n"; - sleep 2; + sleep 2; exit 1; } # Define buildroot # ---------------- -if ($OS =~ /linux/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /linux/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /macos/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp"; +if ( $OS =~ /macos/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp"; } -if ($OS =~ /windows/) { - $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp"; - $PROGPATH=$ENV{"ProgramFiles"}; +if ( $OS =~ /windows/ ) { + $TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp"; + $PROGPATH = $ENV{"ProgramFiles"}; } -if (! $TEMP || ! -d $TEMP) { - print "Error: A temporary directory can not be find.\n"; - print "Check that TEMP or TMP environment variable is set correctly.\n"; +if ( !$TEMP || !-d $TEMP ) { + print "Error: A temporary directory can not be find.\n"; + print "Check that TEMP or TMP environment variable is set correctly.\n"; print "makepack-dolibarrtheme.pl aborted.\n"; - sleep 2; - exit 2; + sleep 2; + exit 2; } -$BUILDROOT="$TEMP/dolibarr-buildroot"; +$BUILDROOT = "$TEMP/dolibarr-buildroot"; - -my $copyalreadydone=0; -my $batch=0; +my $copyalreadydone = 0; +my $batch = 0; print "Makepack theme version $VERSION\n"; print "Enter name of theme(s) to package (separated with space): "; -$PROJECT=; +$PROJECT = ; chomp($PROJECT); -@PROJECTLIST=split(/ /,$PROJECT); -$PROJECT=join('',@PROJECTLIST); - +@PROJECTLIST = split( / /, $PROJECT ); +$PROJECT = join( '', @PROJECTLIST ); # Ask and set version $MAJOR and $MINOR print "Enter value for version: "; -$PROJVERSION=; +$PROJVERSION = ; chomp($PROJVERSION); -($MAJOR,$MINOR)=split(/\./,$PROJVERSION,2); -if ($MINOR eq '') -{ +( $MAJOR, $MINOR ) = split( /\./, $PROJVERSION, 2 ); +if ( $MINOR eq '' ) { print "Enter value for minor version: "; - $MINOR=; + $MINOR = ; chomp($MINOR); } +$FILENAME = "$PROJECT"; +$FILENAMETGZ = "theme_$PROJECT-$MAJOR.$MINOR"; +$FILENAMEZIP = "theme_$PROJECT-$MAJOR.$MINOR"; -$FILENAME="$PROJECT"; -$FILENAMETGZ="theme_$PROJECT-$MAJOR.$MINOR"; -$FILENAMEZIP="theme_$PROJECT-$MAJOR.$MINOR"; +if ( -d "/usr/src/redhat" ) { -if (-d "/usr/src/redhat") { - # redhat - $RPMDIR="/usr/src/redhat"; + # redhat + $RPMDIR = "/usr/src/redhat"; } -if (-d "/usr/src/RPM") { - # mandrake - $RPMDIR="/usr/src/RPM"; +if ( -d "/usr/src/RPM" ) { + + # mandrake + $RPMDIR = "/usr/src/RPM"; } -$SOURCE="$DIR/../.."; -$DESTI="$SOURCE/build"; - +$SOURCE = "$DIR/../.."; +$DESTI = "$SOURCE/build"; # Choose package targets #----------------------- -$target="ZIP"; # Packages uses this format +$target = "ZIP"; # Packages uses this format if ($target) { - $CHOOSEDTARGET{uc($target)}=1; + $CHOOSEDTARGET{ uc($target) } = 1; } else { - my $found=0; - my $NUM_SCRIPT; - while (! $found) { - my $cpt=0; - printf(" %d - %3s (%s)\n",$cpt,"All","Need ".join(",",values %REQUIREMENTTARGET)); - foreach my $target (@LISTETARGET) { - $cpt++; - printf(" %d - %3s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target}); - } + my $found = 0; + my $NUM_SCRIPT; + while ( !$found ) { + my $cpt = 0; + printf( " %d - %3s (%s)\n", + $cpt, "All", "Need " . join( ",", values %REQUIREMENTTARGET ) ); + foreach my $target (@LISTETARGET) { + $cpt++; + printf( " %d - %3s (%s)\n", + $cpt, $target, "Need " . $REQUIREMENTTARGET{$target} ); + } - # Are asked to select the file to move - print "Choose one package number or several separated with space: "; - $NUM_SCRIPT=; - chomp($NUM_SCRIPT); - if ($NUM_SCRIPT =~ s/-//g) { - # Do not do copy - $copyalreadydone=1; - } - if ($NUM_SCRIPT !~ /^[0-$cpt\s]+$/) - { - print "This is not a valid package number list.\n"; - $found = 0; - } - else - { - $found = 1; - } - } - print "\n"; - if ($NUM_SCRIPT) { - foreach my $num (split(/\s+/,$NUM_SCRIPT)) { - $CHOOSEDTARGET{$LISTETARGET[$num-1]}=1; - } - } - else { - foreach my $key (@LISTETARGET) { - $CHOOSEDTARGET{$key}=1; - } - } + # Are asked to select the file to move + print "Choose one package number or several separated with space: "; + $NUM_SCRIPT = ; + chomp($NUM_SCRIPT); + if ( $NUM_SCRIPT =~ s/-//g ) { + + # Do not do copy + $copyalreadydone = 1; + } + if ( $NUM_SCRIPT !~ /^[0-$cpt\s]+$/ ) { + print "This is not a valid package number list.\n"; + $found = 0; + } + else { + $found = 1; + } + } + print "\n"; + if ($NUM_SCRIPT) { + foreach my $num ( split( /\s+/, $NUM_SCRIPT ) ) { + $CHOOSEDTARGET{ $LISTETARGET[ $num - 1 ] } = 1; + } + } + else { + foreach my $key (@LISTETARGET) { + $CHOOSEDTARGET{$key} = 1; + } + } } # Test if requirement is ok #-------------------------- -foreach my $target (keys %CHOOSEDTARGET) { - foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) { - # Test - print "Test requirement for target $target: Search '$req'... "; - $ret=`"$req" 2>&1`; - $coderetour=$?; $coderetour2=$coderetour>>8; - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) { - # Not found error, we try in PROGPATH - $ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; - $coderetour=$?; $coderetour2=$coderetour>>8; - $REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req"; - } +foreach my $target ( keys %CHOOSEDTARGET ) { + foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) { - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) { - # Not found error - print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; - $CHOOSEDTARGET{$target}=-1; - last; - } else { - # Pas erreur ou erreur autre que programme absent - print " Found ".$REQUIREMENTTARGET{$target}."\n"; - } - } + # Test + print "Test requirement for target $target: Search '$req'... "; + $ret = `"$req" 2>&1`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + if ( + $coderetour != 0 + && ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) ) + && $PROGPATH + ) + { + # Not found error, we try in PROGPATH + $ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; + $coderetour = $?; + $coderetour2 = $coderetour >> 8; + $REQUIREMENTTARGET{$target} = "$PROGPATH/$ALTERNATEPATH{$req}/$req"; + } + + if ( + $coderetour != 0 + && ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i ) + || ( $coderetour2 == 127 && $OS !~ /windows/ ) ) + ) + { + # Not found error + print +"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; + $CHOOSEDTARGET{$target} = -1; + last; + } + else { + # Pas erreur ou erreur autre que programme absent + print " Found " . $REQUIREMENTTARGET{$target} . "\n"; + } + } } print "\n"; # Check if there is at least on target to build #---------------------------------------------- -$nboftargetok=0; -foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { next; } - $nboftargetok++; +$nboftargetok = 0; +foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } + $nboftargetok++; } if ($nboftargetok) { - # Update buildroot - #----------------- - if (! $copyalreadydone) { - print "Delete directory $BUILDROOT\n"; - $ret=`rm -fr "$BUILDROOT"`; - mkdir "$BUILDROOT"; - mkdir "$BUILDROOT/htdocs"; - mkdir "$BUILDROOT/htdocs/theme"; + # Update buildroot + #----------------- + if ( !$copyalreadydone ) { + print "Delete directory $BUILDROOT\n"; + $ret = `rm -fr "$BUILDROOT"`; + mkdir "$BUILDROOT"; + mkdir "$BUILDROOT/htdocs"; + mkdir "$BUILDROOT/htdocs/theme"; - print "Copy $SOURCE into $BUILDROOT\n"; - mkdir "$BUILDROOT"; - foreach my $tmp (@PROJECTLIST) - { - $ret=`cp -pr "$SOURCE/htdocs/theme/$tmp" "$BUILDROOT/htdocs/theme"`; + print "Copy $SOURCE into $BUILDROOT\n"; + mkdir "$BUILDROOT"; + foreach my $tmp (@PROJECTLIST) { + $ret = + `cp -pr "$SOURCE/htdocs/theme/$tmp" "$BUILDROOT/htdocs/theme"`; } - } - print "Clean $BUILDROOT\n"; - $ret=`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/Thumbs.db`; - $ret=`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/*/CVS*`; + } + print "Clean $BUILDROOT\n"; + $ret = +`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/Thumbs.db`; + $ret = +`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/*/CVS*`; + # Build package for each target + #------------------------------ + foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { next; } - # Build package for each target - #------------------------------ - foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { next; } + print "\nBuild package for target $target\n"; - print "\nBuild package for target $target\n"; + if ( $target eq 'TGZ' ) { + unlink $FILENAMETGZ . tgz; + print "Compress $BUILDROOT/htdocs into $FILENAMETGZ.tgz...\n"; + $cmd = +"tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" htdocs"; + $ret = `$cmd`; + if ( $OS =~ /windows/i ) { + print "Move $FILENAMETGZ.tgz to $DESTI/$FILENAMETGZ.tgz\n"; + $ret = `mv "$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`; + } + next; + } - if ($target eq 'TGZ') { - unlink $FILENAMETGZ.tgz; - print "Compress $BUILDROOT/htdocs into $FILENAMETGZ.tgz...\n"; - $cmd="tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" htdocs"; - $ret=`$cmd`; - if ($OS =~ /windows/i) { - print "Move $FILENAMETGZ.tgz to $DESTI/$FILENAMETGZ.tgz\n"; - $ret=`mv "$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`; - } - next; - } - - if ($target eq 'ZIP') { - unlink $FILENAMEZIP.zip; - print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n"; - chdir("$BUILDROOT"); - $ret=`7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip htdocs`; + if ( $target eq 'ZIP' ) { + unlink $FILENAMEZIP . zip; + print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n"; + chdir("$BUILDROOT"); + $ret = `7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip htdocs`; print "Move $FILENAMEZIP.zip to $DESTI\n"; - $ret=`mv "$FILENAMEZIP.zip" "$DESTI/$FILENAMEZIP.zip"`; - next; - } + $ret = `mv "$FILENAMEZIP.zip" "$DESTI/$FILENAMEZIP.zip"`; + next; + } - } + } } print "\n----- Summary -----\n"; -foreach my $target (keys %CHOOSEDTARGET) { - if ($CHOOSEDTARGET{$target} < 0) { - print "Package $target not built (bad requirement).\n"; - } else { - print "Package $target built successfully in $DESTI\n"; - } +foreach my $target ( keys %CHOOSEDTARGET ) { + if ( $CHOOSEDTARGET{$target} < 0 ) { + print "Package $target not built (bad requirement).\n"; + } + else { + print "Package $target built successfully in $DESTI\n"; + } } -if (! $btach) { - print "\nPress key to finish..."; - my $WAITKEY=; +if ( !$btach ) { + print "\nPress key to finish..."; + my $WAITKEY = ; } 0; diff --git a/dev/tools/dolibarr-mysql2pgsql.pl b/dev/tools/dolibarr-mysql2pgsql.pl index 5e7d87d1234..2d04c872499 100755 --- a/dev/tools/dolibarr-mysql2pgsql.pl +++ b/dev/tools/dolibarr-mysql2pgsql.pl @@ -11,351 +11,386 @@ # Pour les cles autoincrement: rowid integer AUTO_INCREMENT PRIMARY KEY, # Mettre les index dans fichier.key.sql #------------------------------------------------------------------------------ +## no critic (InputOutput::ProhibitExplicitStdin,InputOutput::RequireBriefOpen) use Data::Dumper; use Getopt::Long; use strict; +use warnings; use vars qw/ $DIR $PROG $Extension $SOURCE $DESTI %filelist $stop /; # command line options -my( $opt_debug, $opt_help); +my ( $opt_debug, $opt_help ); + # general values -my ($out, $size); +my ( $out, $size ); + # variables for constructing pre-create-table entities -my $create_sql=''; # if empty we are not making a create statement -my $create_index=''; # if empty we are not making a create statement -my %enum_datafield=(); # holds enumeration choices -my (@column_values,$enum_column, $seq); -my $table=""; - - +my $create_sql = ''; # if empty we are not making a create statement +my $create_index = ''; # if empty we are not making a create statement +my %enum_datafield = (); # holds enumeration choices +my ( @column_values, $enum_column, $seq ); +my $table = ""; #------------------------------------------------------------------------------ # MAIN #------------------------------------------------------------------------------ -($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; -$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; +( $DIR = $0 ) =~ s/([^\/\\]+)$//; +( $PROG = $1 ) =~ s/\.([^\.]*)$//; +$Extension = $1; +$DIR ||= '.'; +$DIR =~ s/([^\/\\])[\\\/]+$/$1/; -$SOURCE="$DIR/install/mysql/tables"; -$DESTI="$DIR/install/pgsql/tables"; +$SOURCE = "$DIR/install/mysql/tables"; +$DESTI = "$DIR/install/pgsql/tables"; # Recherche tous les fichiers .sql -opendir(DIR, $SOURCE); - foreach my $file (readdir(DIR)) { - if ($file =~ /\.sql$/ && -f "$SOURCE/$file") { - print "Found file $file\n"; - $filelist{$file}=1; - } - } -closedir(DIR); - +opendir( my $dir, $SOURCE ); +foreach my $file ( readdir($dir) ) { + if ( $file =~ /\.sql$/ && -f "$SOURCE/$file" ) { + print "Found file $file\n"; + $filelist{$file} = 1; + } +} +closedir($dir); # Boucle sur tous les fichiers de SOURCE #--------------------------------------- -foreach my $file (keys %filelist) { +foreach my $file ( keys %filelist ) { - $ARGV[0]="$SOURCE/$file"; - $ARGV[1]="$DESTI/$file"; + local $ARGV[0] = "$SOURCE/$file"; + local $ARGV[1] = "$DESTI/$file"; - print "Convert file $ARGV[0] into $ARGV[1]\n"; + print "Convert file $ARGV[0] into $ARGV[1]\n"; - # MySQL to PostgreSQL dump file converter - # - # For usage: perl mysql2pgsql.perl --help - # - # homepage: http://www.rot13.org/~dpavlin/projects.html - # 1999-12-15 DbP -- Dobrica Pavlinusic - # 1999-12-26 DbP don't make serial from auto_increment, create all manually - # (to set start value right) - # 2000-01-11 DbP now creates sequences with correct value - # 2000-04-25 DbP import into CVS (at cvs.linux.hr) - # 2001-01-29 tpo -- Tomas Pospisek : - # 1) make script comply to usage: - # 2) make script output to STDOUT instead of STERR - # 3) change verbosity behaveour - # 4) add debug option - # see rest of changelog at http://cvs.linux.hr/cvsweb.cgi/sql/mysql2pgsql - # 2003-12-16 jsp -- Joe Speigle : - # converts: s/\) *Type=MyISAM;/);/i, enum data type -> references, - # auto_increment->sequences - # 2004-01-13 jsp -- moved project to gborg; both the above declined ownership - # 2004-06-29 converts: year(4), year(2) - # homepage: gborg.postgresql.org + # MySQL to PostgreSQL dump file converter + # + # For usage: perl mysql2pgsql.perl --help + # + # homepage: http://www.rot13.org/~dpavlin/projects.html + # 1999-12-15 DbP -- Dobrica Pavlinusic + # 1999-12-26 DbP don't make serial from auto_increment, create all manually + # (to set start value right) + # 2000-01-11 DbP now creates sequences with correct value + # 2000-04-25 DbP import into CVS (at cvs.linux.hr) + # 2001-01-29 tpo -- Tomas Pospisek : + # 1) make script comply to usage: + # 2) make script output to STDOUT instead of STERR + # 3) change verbosity behaveour + # 4) add debug option + # see rest of changelog at http://cvs.linux.hr/cvsweb.cgi/sql/mysql2pgsql + # 2003-12-16 jsp -- Joe Speigle : + # converts: s/\) *Type=MyISAM;/);/i, enum data type -> references, + # auto_increment->sequences + # 2004-01-13 jsp -- moved project to gborg; both the above declined ownership + # 2004-06-29 converts: year(4), year(2) + # homepage: gborg.postgresql.org - GetOptions("debug", "help"); + GetOptions( "debug", "help" ); - my $DEBUG = $opt_debug || 0; - my $HELP = $opt_help || 0; + my $DEBUG = $opt_debug || 0; + my $HELP = $opt_help || 0; + if ( ($HELP) || !defined( $ARGV[0] ) || !defined( $ARGV[1] ) ) { + print +"Usage: perl $0 {--verbose|--help|--debug} mysql_dump_file.sql pg_dump_file.sql\n"; + print "\t* OPTIONS\n"; + print + "\t--verbose tees to pg_dump_file.sql and STDOUT during conversion\n"; + print "\t--debug does ?? \n"; + print "\t--help prints this message \n"; + print "\t* REQUIRED ARGUMENTS\n"; + if ( defined( $ARGV[0] ) ) { + print "\tmysql_dump_file.sql ($ARGV[0])\n"; + } + else { + print "\tmysql_dump_file.sql (undefined)\n"; + } + if ( defined( $ARGV[1] ) ) { + print "\tpg_dump_file.sql ($ARGV[1])\n"; + } + else { + print "\tpg_dump_file.sql (undefined)\n"; + } + exit 1; + } - if (($HELP) || ! defined($ARGV[0]) || ! defined($ARGV[1])) { - print "Usage: perl $0 {--verbose|--help|--debug} mysql_dump_file.sql pg_dump_file.sql\n"; - print "\t* OPTIONS\n"; - print "\t--verbose tees to pg_dump_file.sql and STDOUT during conversion\n"; - print "\t--debug does ?? \n"; - print "\t--help prints this message \n"; - print "\t* REQUIRED ARGUMENTS\n"; - if (defined ($ARGV[0])) { - print "\tmysql_dump_file.sql ($ARGV[0])\n"; - } else { - print "\tmysql_dump_file.sql (undefined)\n"; - } - if (defined ($ARGV[1])) { - print "\tpg_dump_file.sql ($ARGV[1])\n"; - } else { - print "\tpg_dump_file.sql (undefined)\n"; - } - exit 1; - } + open( my $in, "<", "$ARGV[0]" ) + || die "can't open mysql dump file $ARGV[0]"; + open( my $out, ">", "$ARGV[1]" ) || die "can't open pg dump file $ARGV[1]"; + print $out "-- Generated by $PROG\n"; + print $out "-- (c) 2004, PostgreSQL Inc.\n"; + print $out "-- (c) 2005, Laurent Destailleur.\n"; + print $out "\n"; - open(IN,"<$ARGV[0]") || die "can't open mysql dump file $ARGV[0]"; - open(OUT,">$ARGV[1]") || die "can't open pg dump file $ARGV[1]"; - print OUT "-- Generated by $PROG\n"; - print OUT "-- (c) 2004, PostgreSQL Inc.\n"; - print OUT "-- (c) 2005, Laurent Destailleur.\n"; - print OUT "\n"; + # Output for create table and create index + sub output_create { - # Output for create table and create index - sub output_create { - # If command ends with "xxx,);", we change to "xxx);" - $create_sql =~ s/,(\s*)\);/$1\);/m; - # If command ends with "xxx, -- yyy );", we change to "xxx -- yyy);" - $create_sql =~ s/,(\s*\-\-[^\)\n]*)(\s*)\);/$1\n\);/m; + # If command ends with "xxx,);", we change to "xxx);" + $create_sql =~ s/,(\s*)\);/$1\);/m; - print OUT $create_sql; - if ($create_index) { - print OUT "\n"; - print OUT $create_index; - } - } + # If command ends with "xxx, -- yyy );", we change to "xxx -- yyy);" + $create_sql =~ s/,(\s*\-\-[^\)\n]*)(\s*)\);/$1\n\);/m; - # Reset when moving from each "create table" to "insert" part of dump - sub reset_vars() { - $create_sql=""; - $create_index=""; - %enum_datafield=(); - $enum_column=''; - } + print $out $create_sql; + if ($create_index) { + print $out "\n"; + print $out $create_index; + } + return; + } + # Reset when moving from each "create table" to "insert" part of dump + sub reset_vars() { + $create_sql = ""; + $create_index = ""; + %enum_datafield = (); + $enum_column = ''; + return; + } - # Boucle sur contenu fichier source - #---------------------------------- - while() { + # Boucle sur contenu fichier source + #---------------------------------- + while (<$in>) { # comments or empty lines - if (/^-- \$Id/) { - $_ =~ s/\$//g; - print OUT $_; + if (/^-- \$Id/) { + $_ =~ s/\$//g; + print $out $_; next; } + # comments or empty lines - if (/^#/ || /^$/ || /^--/) { - print OUT $_; - next; - } - if (/^USE\s*([^;]*);/) { - print OUT "\\c ". $1; - next; - } - if ($create_sql ne "") { # we are inside create table statement so let's process datatypes + if ( /^#/ || /^$/ || /^--/ ) { + print $out $_; + next; + } + if (/^USE\s*([^;]*);/) { + print $out "\\c " . $1; + next; + } + if ( $create_sql ne "" ) + { # we are inside create table statement so let's process datatypes - if (/\);/i) { # end of create table sequence - $create_sql =~ s/,$//g; # strip last , inside create table - &output_create; - &reset_vars(); - next; - # LDR Added "innodb" and "engine" - } - elsif (/(ISAM|innodb)/i) { # end of create table sequence - s/\) *type=(MyISAM|innodb);/);/i; - s/\) *engine=(MyISAM|innodb);/);/i; - $create_sql =~ s/,$//g; # strip last , inside create table - $create_sql .= $_; - &output_create; - &reset_vars(); - next; - } + if (/\);/i) { # end of create table sequence + $create_sql =~ s/,$//g; # strip last , inside create table + &output_create; + &reset_vars(); + next; - # enum -> check - if (/([\w\"]*)\s+enum\s*\(((?:['"][\?\w]+['"]\s*,)+['"][\?\w]+['"])\)(.*)$/i) { - $enum_column=$1; - $enum_datafield{$enum_column}=$2; # 'abc','def', ... - my $suite=$3; - my $maxlength=0; - foreach my $enum (split(',',$enum_datafield{$enum_column})) { - $enum =~ s/[\"\']//g; - if ($maxlength serial - } elsif (/^[\s\t]*(\w*)\s*.*int.*auto_increment/i) { - $seq = qq~${table}_${1}_seq~; - s/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/ $1 SERIAL PRIMARY KEY/ig; - $create_sql.=$_; - next; - # int type conversion - } elsif (/(\w*)int\(\d+\)/i) { - $size=$1; - $size =~ tr [A-Z] [a-z]; - if ($size eq "tiny" || $size eq "small") { - $out = "int2"; - } elsif ($size eq "big") { - $out = "int8"; - } else { - $out = "int4"; - } - s/\w*int\(\d+\)/$out/g; - } - # tinyint -> smallint - elsif (/tinyint/i) { - s/tinyint/smallint/g; - } + # LDR Added "innodb" and "engine" + } + elsif (/(ISAM|innodb)/i) { # end of create table sequence + s/\) *type=(MyISAM|innodb);/);/i; + s/\) *engine=(MyISAM|innodb);/);/i; + $create_sql =~ s/,$//g; # strip last , inside create table + $create_sql .= $_; + &output_create; + &reset_vars(); + next; + } - # nuke unsigned - s/(int\w+|smallint)\s+unsigned/$1/gi; + # enum -> check + if ( +/([\w\"]*)\s+enum\s*\(((?:['"][\?\w]+['"]\s*,)+['"][\?\w]+['"])\)(.*)$/i + ) + { + $enum_column = $1; + $enum_datafield{$enum_column} = $2; # 'abc','def', ... + my $suite = $3; + my $maxlength = 0; + foreach my $enum ( split( ',', $enum_datafield{$enum_column} ) ) + { + $enum =~ s/[\"\']//g; + if ( $maxlength < length($enum) ) { + $maxlength = length($enum); + } + } + $enum_datafield{$enum_column} =~ s/\"/\'/g; + $_ = +qq~ $enum_column CHAR($maxlength) CHECK ($enum_column IN ($enum_datafield{$enum_column})) $suite\n~; + # int, auto_increment -> serial + } + elsif (/^[\s\t]*(\w*)\s*.*int.*auto_increment/i) { + $seq = qq~${table}_${1}_seq~; +s/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/ $1 SERIAL PRIMARY KEY/ig; + $create_sql .= $_; + next; - # blob -> text - s/\w*blob/text/gi; + # int type conversion + } + elsif (/(\w*)int\(\d+\)/i) { + $size = $1; + $size =~ tr [A-Z] [a-z]; + if ( $size eq "tiny" || $size eq "small" ) { + $out = "int2"; + } + elsif ( $size eq "big" ) { + $out = "int8"; + } + else { + $out = "int4"; + } + s/\w*int\(\d+\)/$out/g; + } - # tinytext/mediumtext -> text - s/tinytext/text/gi; - s/mediumtext/text/gi; + # tinyint -> smallint + elsif (/tinyint/i) { + s/tinyint/smallint/g; + } - # char -> varchar - # PostgreSQL would otherwise pad with spaces as opposed - # to MySQL! Your user interface may depend on this! - s/(\s+)char/${1}varchar/gi; + # nuke unsigned + s/(int\w+|smallint)\s+unsigned/$1/gi; - # nuke date representation (not supported in PostgreSQL) - s/datetime default '[^']+'/datetime/i; - s/date default '[^']+'/datetime/i; - s/time default '[^']+'/datetime/i; + # blob -> text + s/\w*blob/text/gi; - # change not null datetime field to null valid ones - # (to support remapping of "zero time" to null - s/datetime not null/datetime/i; - s/datetime/timestamp/i; + # tinytext/mediumtext -> text + s/tinytext/text/gi; + s/mediumtext/text/gi; - # nuke size of timestamp - s/timestamp\([^)]*\)/timestamp/i; + # char -> varchar + # PostgreSQL would otherwise pad with spaces as opposed + # to MySQL! Your user interface may depend on this! + s/(\s+)char/${1}varchar/gi; - # double -> numeric - s/^double/numeric/i; - s/(\s*)double/${1}numeric/i; + # nuke date representation (not supported in PostgreSQL) + s/datetime default '[^']+'/datetime/i; + s/date default '[^']+'/datetime/i; + s/time default '[^']+'/datetime/i; - # float -> numeric - s/^float/numeric/i; - s/(\s*)float/${1}numeric/i; + # change not null datetime field to null valid ones + # (to support remapping of "zero time" to null + s/datetime not null/datetime/i; + s/datetime/timestamp/i; - # unique key(field1,field2) - if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) { - s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; - $create_sql.=$_; - next; - } - # unique index(field1,field2) - if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) { - s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; - $create_sql.=$_; - next; - } + # nuke size of timestamp + s/timestamp\([^)]*\)/timestamp/i; - # unique key [name] (field) - if (/unique key\s*(\w*)\s*\((\w+)\)/i) { - s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; - my $idxname=($1?"$1":"idx_${table}_$2"); - $create_sql.=$_; - $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; - next; - } - # unique index [name] (field) - if (/unique index\s*(\w*)\s*\((\w+)\)/i) { - s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; - my $idxname=($1?"$1":"idx_${table}_$2"); - $create_sql.=$_; - $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; - next; - } - # unique (field) et unique (field1, field2 ...) - if (/unique\s*\(([\w,\s]+)\)/i) { - s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i; - my $fieldlist="$1"; - my $idxname="idx_${table}_${fieldlist}"; - $idxname =~ s/\W/_/g; $idxname =~ tr/_/_/s; - $create_sql.=$_; - $create_index .= "CREATE INDEX $idxname ON $table ($fieldlist);\n"; - next; - } + # double -> numeric + s/^double/numeric/i; + s/(\s*)double/${1}numeric/i; - # index(field) - if (/index\s*(\w*)\s*\((\w+)\)/i) { - my $idxname=($1?"$1":"idx_${table}_$2"); - $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; - next; - } + # float -> numeric + s/^float/numeric/i; + s/(\s*)float/${1}numeric/i; - # primary key - if (/\bkey\b/i && !/^\s+primary key\s+/i) { - s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i; # hack off name of the non-primary key - } + # unique key(field1,field2) + if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) { + s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; + $create_sql .= $_; + next; + } - # key(xxx) - if (/key\s*\((\w+)\)/i) { - my $idxname="idx_${table}_$1"; - $create_index .= "CREATE INDEX $idxname ON $table ($1);\n"; - next; - } + # unique index(field1,field2) + if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) { + s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; + $create_sql .= $_; + next; + } - # Quote column names - s/(^\s*)([^\s\-\(]+)(\s*)/$1"$2"$3/gi if (!/\bkey\b/i); + # unique key [name] (field) + if (/unique key\s*(\w*)\s*\((\w+)\)/i) { + s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; + my $idxname = ( $1 ? "$1" : "idx_${table}_$2" ); + $create_sql .= $_; + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; + next; + } - # Remap columns with names of existing system attribute - if (/"oid"/i) { - s/"oid"/"_oid"/g; - print STDERR "WARNING: table $table uses column \"oid\" which is renamed to \"_oid\"\nYou should fix application manually! Press return to continue."; - my $wait=; - } - s/oid/_oid/i if (/key/i && /oid/i); # fix oid in key - $create_sql.=$_; - } # END of if ($create_sql ne "") i.e. were inside create table statement so processed datatypes - else { # not inside create table - #---- fix data in inserted data: (from MS world) - # FIX: disabled for now - if (00 && /insert into/i) { - s!\x96!-!g; # -- - s!\x93!"!g; # `` - s!\x94!"!g; # '' - s!\x85!... !g; # \ldots - s!\x92!`!g; - } + # unique index [name] (field) + if (/unique index\s*(\w*)\s*\((\w+)\)/i) { + s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; + my $idxname = ( $1 ? "$1" : "idx_${table}_$2" ); + $create_sql .= $_; + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; + next; + } - # fix dates '0000-00-00 00:00:00' (should be null) - s/'0000-00-00 00:00:00'/null/gi; - s/'0000-00-00'/null/gi; - s/'00:00:00'/null/gi; - s/([12]\d\d\d)([01]\d)([0-3]\d)([0-2]\d)([0-6]\d)([0-6]\d)/'$1-$2-$3 $4:$5:$6'/; + # unique (field) et unique (field1, field2 ...) + if (/unique\s*\(([\w,\s]+)\)/i) { + s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i; + my $fieldlist = "$1"; + my $idxname = "idx_${table}_${fieldlist}"; + $idxname =~ s/\W/_/g; + $idxname =~ tr/_/_/s; + $create_sql .= $_; + $create_index .= + "CREATE INDEX $idxname ON $table ($fieldlist);\n"; + next; + } - if (/create\s+table\s+(\w+)/i) { - $create_sql = $_; - /create\s*table\s*(\w+)/i; - $table=$1 if (defined($1)); - } else { - print OUT $_; - } - } # end of if inside create_table - } # END while() + # index(field) + if (/index\s*(\w*)\s*\((\w+)\)/i) { + my $idxname = ( $1 ? "$1" : "idx_${table}_$2" ); + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; + next; + } - close IN; - close OUT; + # primary key + if ( /\bkey\b/i && !/^\s+primary key\s+/i ) { + s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i + ; # hack off name of the non-primary key + } + + # key(xxx) + if (/key\s*\((\w+)\)/i) { + my $idxname = "idx_${table}_$1"; + $create_index .= "CREATE INDEX $idxname ON $table ($1);\n"; + next; + } + + # Quote column names + s/(^\s*)([^\s\-\(]+)(\s*)/$1"$2"$3/gi if ( !/\bkey\b/i ); + + # Remap columns with names of existing system attribute + if (/"oid"/i) { + s/"oid"/"_oid"/g; + print STDERR +"WARNING: table $table uses column \"oid\" which is renamed to \"_oid\"\nYou should fix application manually! Press return to continue."; + my $wait = ; + } + s/oid/_oid/i if ( /key/i && /oid/i ); # fix oid in key + $create_sql .= $_; + } # END of if ($create_sql ne "") i.e. were inside create table statement so processed datatypes + else { # not inside create table + #---- fix data in inserted data: (from MS world) + # FIX: disabled for now + if ( 00 && /insert into/i ) { + s!\x96!-!g; # -- + s!\x93!"!g; # `` + s!\x94!"!g; # '' + s!\x85!... !g; # \ldots + s!\x92!`!g; + } + + # fix dates '0000-00-00 00:00:00' (should be null) + s/'0000-00-00 00:00:00'/null/gi; + s/'0000-00-00'/null/gi; + s/'00:00:00'/null/gi; +s/([12]\d\d\d)([01]\d)([0-3]\d)([0-2]\d)([0-6]\d)([0-6]\d)/'$1-$2-$3 $4:$5:$6'/; + + if (/create\s+table\s+(\w+)/i) { + $create_sql = $_; + /create\s*table\s*(\w+)/i; + $table = $1 if ( defined($1) ); + } + else { + print $out $_; + } + } # end of if inside create_table + } # END while() + + close $in; + close $out; } print "\n"; -print "Build ".(scalar keys %filelist)." file(s).\n"; +print "Build " . ( scalar keys %filelist ) . " file(s).\n"; print "\n"; print "Press a key to finish...\n"; -$stop=; +$stop = ; 0;