diff --git a/build/debian/dolibarr.install b/build/debian/dolibarr.install index beae194006dbbbb7693f0e2c83cd75d2603a66de..fcbf0cdb43ac793805aa71203c84b18f63215f19 100755 --- a/build/debian/dolibarr.install +++ b/build/debian/dolibarr.install @@ -1,6 +1,5 @@ debian/dolibarr.desktop usr/share/applications debian/dolibarr.xpm usr/share/pixmaps -ChangeLog usr/share/doc/dolibarr README usr/share/doc/dolibarr doc/install usr/share/doc/dolibarr doc/user usr/share/doc/dolibarr diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 5867cd2c16facdc5cfad835b769b11d642f9cefe..5cff1442a8986b4ecc4e93f529c3963afb2c6a82 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -2,20 +2,27 @@ #---------------------------------------------------------------------------- # \file build/makepack-dolibarr.pl # \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps) -# \author (c)2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> +# \author (c)2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> +# +# This is list of constant you can set to have generated packages moved into a specific dir: +#DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild' +#DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable' +#DESTIMODULES='/media/HDDATA1_LD/Mes Sites/Web/Admin1/wwwroot/files/modules' +#DESTIDOLIMEDBETARC='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/lastbuild' +#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' #---------------------------------------------------------------------------- use Cwd; $PROJECT="dolibarr"; -$MAJOR="3"; -$MINOR="4"; -$BUILD="2"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate $RPMSUBVERSION="auto"; # auto use value found into BUILD @LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages +%REQUIREMENTPUBLISH=( +"SF"=>"git ssh rsync" +); %REQUIREMENTTARGET=( # Tool requirement for each package -"SNAPSHOT"=>"tar", "TGZ"=>"tar", "ZIP"=>"7z", "XZ"=>"xz", @@ -23,24 +30,16 @@ $RPMSUBVERSION="auto"; # auto use value found into BUILD "RPM_FEDORA"=>"rpmbuild", "RPM_MANDRIVA"=>"rpmbuild", "RPM_OPENSUSE"=>"rpmbuild", -"DEB"=>"dpkg dpatch", +"DEB"=>"dpkg", "APS"=>"zip", -"EXEDOLIWAMP"=>"ISCC.exe" +"EXEDOLIWAMP"=>"ISCC.exe", +"SNAPSHOT"=>"tar" ); %ALTERNATEPATH=( "7z"=>"7-ZIP", "makensis.exe"=>"NSIS" ); -$FILENAME="$PROJECT"; -$FILENAMESNAPSHOT="$PROJECT-snapshot"; -$FILENAMETGZ="$PROJECT-$MAJOR.$MINOR.$BUILD"; -$FILENAMEZIP="$PROJECT-$MAJOR.$MINOR.$BUILD"; -$FILENAMEXZ="$PROJECT-$MAJOR.$MINOR.$BUILD"; -$FILENAMERPM="$PROJECT-$MAJOR.$MINOR.$BUILD-$RPMSUBVERSION"; -$FILENAMEDEB="${PROJECT}_${MAJOR}.${MINOR}.${BUILD}"; -$FILENAMEAPS="$PROJECT-$MAJOR.$MINOR.$BUILD.app"; -$FILENAMEEXEDOLIWAMP="DoliWamp-$MAJOR.$MINOR.$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 @@ -59,6 +58,7 @@ $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; $SOURCE="$DIR/.."; $DESTI="$SOURCE/build"; +$PUBLISH="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr"; if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"}) { print "Error: Missing environment variables.\n"; @@ -112,7 +112,57 @@ if (! $TEMP || ! -d $TEMP) { $BUILDROOT="$TEMP/buildroot"; -my $copyalreadydone=0; # Use "-" before number of choice to avoid copy +# 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 (<IN>) { + if ( $_ =~ /define\('DOL_VERSION','([\d\.]+)'\)/ ) { $PROJVERSION = $1; break; } +} +close IN; +($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3); +if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; } + +# Set vars for packaging +$FILENAME = "$PROJECT"; +$FILENAMESNAPSHOT = "$PROJECT-snapshot"; +$FILENAMETGZ = "$PROJECT-$MAJOR.$MINOR.$BUILD"; +$FILENAMEZIP = "$PROJECT-$MAJOR.$MINOR.$BUILD"; +$FILENAMEXZ = "$PROJECT-$MAJOR.$MINOR.$BUILD"; +$FILENAMEDEB = "see later"; +$FILENAMEAPS = "$PROJECT-$MAJOR.$MINOR.$BUILD.app"; +$FILENAMEEXEDOLIWAMP = "DoliWamp-$MAJOR.$MINOR.$BUILD"; +# For RPM +$ARCH='noarch'; +$newbuild = $BUILD; +$newbuild =~ s/(dev|alpha)/0.1.a/gi; # dev (fedora) +$newbuild =~ s/beta/0.2.beta1/gi; # beta (fedora) +$newbuild =~ s/rc./0.3.rc1/gi; # rc (fedora) +if ($newbuild !~ /-/) { $newbuild.='-0.3'; } # 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"; +# For Deb +$newbuild = $BUILD; +$newbuild =~ s/(dev|alpha)/1/gi; # dev +$newbuild =~ s/beta/2/gi; # beta +$newbuild =~ s/rc./3/gi; # rc +if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale is same than rc. +# now newbuild is 0-1 or 0-3 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}"; + + +my $copyalreadydone=0; my $batch=0; for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; } @@ -122,41 +172,47 @@ for (0..@ARGV-1) { $FILENAMESNAPSHOT.="-".$PREFIX; } } -if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTI is defined -if ($ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/) { $DESTI = $ENV{"DESTISTABLE"}; } # Force output dir if env DESTI 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) { $PUBLISH = $ENV{"PUBLISHBETARC"}; } # Force target site for publishing if env PUBLISHBETARC is defined +if ($ENV{"PUBLISHSTABLE"} && $BUILD =~ /^[0-9]+$/) { $PUBLISH = $ENV{"PUBLISHSTABLE"}; } # Force target site for publishing if env PUBLISHSTABLE is defined print "Makepack version $VERSION\n"; -print "Building package name: $PROJECT\n"; -print "Building package version: $MAJOR.$MINOR.$BUILD\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"; # Choose package targets #----------------------- if ($target) { - $CHOOSEDTARGET{uc($target)}=1; + if ($target eq "ALL") { + foreach my $key (@LISTETARGET) { + if ($key ne 'SNAPSHOT' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; } + } + } + if ($target ne "ALL" && $target ne "SF") { $CHOOSEDTARGET{uc($target)}=1; } + if ($target eq "SF") { $CHOOSEDPUBLISH{"SF"}=1; } } else { my $found=0; my $NUM_SCRIPT; + my $cpt=0; while (! $found) { - my $cpt=0; - printf(" %2d - %-12s (%s)\n",$cpt,"All (Except SNAPSHOT)","Need ".join(",",values %REQUIREMENTTARGET)); + printf(" %2d - %-12s (%s)\n",$cpt,"ALL (1..9)","Need ".join(",",values %REQUIREMENTTARGET)); foreach my $target (@LISTETARGET) { $cpt++; printf(" %2d - %-12s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target}); } + $cpt=99; + printf(" %2d - %-12s (%s)\n",$cpt,"SF (publish)","Need ".join(",",values %REQUIREMENTPUBLISH)); - # On demande de choisir le fichier à passer + # Ask which target to build print "Choose one package number or several separated with space (0 - ".$cpt."): "; $NUM_SCRIPT=<STDIN>; chomp($NUM_SCRIPT); - if ($NUM_SCRIPT =~ s/-//g) { - # Do not do copy - $copyalreadydone=1; - } if ($NUM_SCRIPT !~ /^[0-9\s]+$/) { print "This is not a valid package number list.\n"; @@ -168,15 +224,20 @@ else { } } print "\n"; - if ($NUM_SCRIPT) { - foreach my $num (split(/\s+/,$NUM_SCRIPT)) { - $CHOOSEDTARGET{$LISTETARGET[$num-1]}=1; - } + if ($NUM_SCRIPT eq "99") { + $CHOOSEDPUBLISH{"SF"}=1; } else { - foreach my $key (@LISTETARGET) { - if ($key ne 'SNAPSHOT') { $CHOOSEDTARGET{$key}=1; } - } + if ($NUM_SCRIPT eq "0") { + foreach my $key (@LISTETARGET) { + if ($key ne 'SNAPSHOT' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; } + } + } + else { + foreach my $num (split(/\s+/,$NUM_SCRIPT)) { + $CHOOSEDTARGET{$LISTETARGET[$num-1]}=1; + } + } } } @@ -193,7 +254,8 @@ foreach my $target (keys %CHOOSEDTARGET) { } $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=''; @@ -228,16 +290,20 @@ print "\n"; #---------------------------------------------- $nboftargetok=0; $nboftargetneedbuildroot=0; -$nboftargetneedcvs=0; +$nbofpublishneedtag=0; foreach my $target (keys %CHOOSEDTARGET) { if ($CHOOSEDTARGET{$target} < 0) { next; } if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP') { $nboftargetneedbuildroot++; } - if ($target eq 'SNAPSHOT') + $nboftargetok++; +} +foreach my $target (keys %CHOOSEDPUBLISH) { + if ($CHOOSEDPUBLISH{$target} < 0) { next; } + if ($target eq 'SF') { - $nboftargetneedcvs++; + $nbofpublishneedtag++; } $nboftargetok++; } @@ -246,13 +312,26 @@ if ($nboftargetok) { # Update CVS if required #----------------------- - if ($nboftargetneedcvs) + if ($nbofpublishneedtag) { print "Go to directory $SOURCE\n"; $olddir=getcwd(); chdir("$SOURCE"); - print "Run cvs update -P -d\n"; - $ret=`cvs update -P -d 2>&1`; + 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/) + { + print "WARNING: Tag ".$MAJOR.'.'.$MINOR.'.'.$BUILD." already exists. Overwrite (y/N) ? "; + $QUESTIONOVERWRITETAG=<STDIN>; + 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 --tags'."\n"; + $ret=`git push --tags`; chdir("$olddir"); } @@ -270,15 +349,20 @@ if ($nboftargetok) { mkdir "$BUILDROOT/$PROJECT"; print "Copy $SOURCE into $BUILDROOT/$PROJECT\n"; $ret=`cp -pr "$SOURCE" "$BUILDROOT/$PROJECT"`; + #print "Copy $SOURCE/build/debian/apache/.htaccess into $BUILDROOT/$PROJECT/build/debian/apache/.htaccess\n"; + #$ret=`cp -pr "$SOURCE/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT/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/.externalToolBuilders`; $ret=`rm -fr $BUILDROOT/$PROJECT/.git`; $ret=`rm -f $BUILDROOT/$PROJECT/.gitmodules`; $ret=`rm -f $BUILDROOT/$PROJECT/.gitignore`; $ret=`rm -fr $BUILDROOT/$PROJECT/.project`; $ret=`rm -fr $BUILDROOT/$PROJECT/.settings`; + $ret=`rm -fr $BUILDROOT/$PROJECT/.travis.yml`; + $ret=`rm -fr $BUILDROOT/$PROJECT/.tx`; $ret=`rm -f $BUILDROOT/$PROJECT/build.xml`; $ret=`rm -f $BUILDROOT/$PROJECT/quickbuild.xml`; $ret=`rm -f $BUILDROOT/$PROJECT/pom.xml`; @@ -308,6 +392,8 @@ if ($nboftargetok) { $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/dev/codesniffer`; $ret=`rm -fr $BUILDROOT/$PROJECT/dev/codetemplates`; $ret=`rm -fr $BUILDROOT/$PROJECT/dev/dbmodel`; @@ -346,6 +432,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`; + $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`; @@ -354,8 +441,12 @@ if ($nboftargetok) { $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl`; # Avoid errors into rpmlint $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/template`; # Package not valid for most linux distributions (errors reported into compile.js). Package should be embed by modules to avoid problems. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpmailer`; # Package not valid for most linux distributions (errors reported into file LICENSE). Package should be embed by modules to avoid problems. + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/_source`; # Keep this removal in case we embed libraries + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/adapters`; # Keep this removal in case we embed libraries + $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/multiselect/MIT-LICENSE.txt`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/license.txt`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PCLZip`; @@ -365,7 +456,7 @@ if ($nboftargetok) { $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/LICENSE.TXT`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/savant`; } - + # Build package for each target #------------------------------ foreach my $target (keys %CHOOSEDTARGET) @@ -388,7 +479,6 @@ if ($nboftargetok) { $ret=`$cmd`; print "Compress $BUILDROOT into $FILENAMESNAPSHOT.tgz...\n"; - #$cmd="tar --exclude \"$BUILDROOT/tgz/tar_exclude.txt\" --exclude .cache --exclude .settings --exclude conf.php --directory \"$BUILDROOT\" -czvf \"$FILENAMESNAPSHOT.tgz\" $FILENAMESNAPSHOT"; $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`; @@ -498,30 +588,15 @@ if ($nboftargetok) { mkdir($DESTI.'/'.$subdir); if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; } - $ARCH='noarch'; if ($RPMDIR eq "") { $RPMDIR=$ENV{'HOME'}."/rpmbuild"; } - $newbuild = $BUILD; - # For fedora - $newbuild =~ s/(dev|alpha)/0.1.a/gi; # dev - $newbuild =~ s/beta/0.2.beta1/gi; # beta - $newbuild =~ s/rc./0.3.rc1/gi; # rc - if ($newbuild !~ /-/) { $newbuild.='-0.3'; } # finale - #$newbuild =~ s/(dev|alpha)/0/gi; # dev - #$newbuild =~ s/beta/1/gi; # beta - #$newbuild =~ s/rc./2/gi; # rc - #if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale - #print "newbuild=".$newbuild."\n";exit; - $REL1 = $newbuild; $REL1 =~ s/-.*$//gi; - if ($RPMSUBVERSION eq 'auto') { $RPMSUBVERSION = $newbuild; $RPMSUBVERSION =~ s/^.*-//gi; } - print "Version is $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n"; - $FILENAMETGZ2="$PROJECT-$MAJOR.$MINOR.$REL1"; + print "Version is $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n"; #print "Create directory $RPMDIR\n"; #$ret=`mkdir -p "$RPMDIR"`; - print "Remove target ".$FILENAMETGZ2."-".$RPMSUBVERSION.".".$ARCH.".rpm...\n"; - unlink("$NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION.".".$ARCH.".rpm"); + print "Remove target ".$FILENAMERPM."...\n"; + unlink("$NEWDESTI/".$FILENAMERPM); print "Remove target ".$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm...\n"; unlink("$NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm"); @@ -532,8 +607,8 @@ if ($nboftargetok) { $ret=`$cmd`; # Set owners - print "Set owners on files/dir\n"; - $ret=`chown -R root.root $BUILDROOT/$FILENAMETGZ2`; + #print "Set owners on files/dir\n"; + #$ret=`chown -R root.root $BUILDROOT/$FILENAMETGZ2`; print "Set permissions on files/dir\n"; $ret=`chmod -R 755 $BUILDROOT/$FILENAMETGZ2`; @@ -576,11 +651,9 @@ if ($nboftargetok) { # 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/".$FILENAMETGZ2."-".$RPMSUBVERSION.".".$ARCH.".rpm\""; $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/".$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm\""; $cmd="mv $RPMDIR/SRPMS/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm \"$NEWDESTI/\""; $ret=`$cmd`; print "Move $RPMDIR/SOURCES/".$FILENAMETGZ2.".tgz into $NEWDESTI/".$FILENAMETGZ2.".tgz\n"; @@ -597,19 +670,6 @@ if ($nboftargetok) { $olddir=getcwd(); - $newbuild = $BUILD; - $newbuild =~ s/(dev|alpha)/1/gi; # dev - $newbuild =~ s/beta/2/gi; # beta - $newbuild =~ s/rc./3/gi; # rc - if ($newbuild !~ /-/) { $newbuild.='-4'; } # finale - # now newbuild is 0-1 or 0-4 for example - print "Version is $MAJOR.$MINOR.$newbuild\n"; - $build = $newbuild; - $build =~ s/-.*$//g; - # now build is 0 for example - # $build .= '+nmu1'; - # now build is 0+nmu1 for example - print "Remove target ${FILENAMEDEB}_all.deb...\n"; unlink("$NEWDESTI/${FILENAMEDEB}_all.deb"); print "Remove target ${FILENAMEDEB}.dsc...\n"; @@ -618,6 +678,8 @@ if ($nboftargetok) { unlink("$NEWDESTI/${FILENAMEDEB}.tar.gz"); print "Remove target ${FILENAMEDEB}.changes...\n"; unlink("$NEWDESTI/${FILENAMEDEB}.changes"); + 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`; @@ -625,6 +687,8 @@ if ($nboftargetok) { print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$PROJECT.tmp\n"; $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$PROJECT.tmp\""; $ret=`$cmd`; + #$cmd="cp -pr \"$BUILDROOT/$PROJECT/build/debian/apache/.htaccess\" \"$BUILDROOT/$PROJECT.tmp/build/debian/apache/.htaccess\""; + #$ret=`$cmd`; print "Remove other files\n"; $ret=`rm -f $BUILDROOT/$PROJECT.tmp/README-FR`; @@ -652,7 +716,7 @@ if ($nboftargetok) { $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.templates.futur`; $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/rules`; $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/README.howto`; - $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/wash`; + $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/watch`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/doap`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/exe`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/launchpad`; @@ -661,13 +725,9 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/perl`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/rpm`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/zip`; - # We remove embedded libraries or fonts (this is also inside rules file, target clean) - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/fonts`, - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/geoip`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/nusoap`; - $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/odtphp/zip/pclzip`; - + # Rename upstream changelog to match debian rules + $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"`; @@ -684,18 +744,24 @@ if ($nboftargetok) { $ret=`cp -f "$SOURCE/build/debian/dolibarr.xpm" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/README.source" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/rules" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret=`cp -f "$SOURCE/build/debian/watch" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -fr "$SOURCE/build/debian/patches" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -fr "$SOURCE/build/debian/po" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -fr "$SOURCE/build/debian/source" "$BUILDROOT/$PROJECT.tmp/debian"`; + #$ret=`cp -fr "$SOURCE/build/debian/apache" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; + #$ret=`cp -f "$SOURCE/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT.tmp/debian/apache"`; + #$ret=`cp -fr "$SOURCE/build/debian/lighttpd" "$BUILDROOT/$PROJECT.tmp/debian/lighttpd"`; # Add files also required to build binary package $ret=`cp -f "$SOURCE/build/debian/dolibarr.config" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/dolibarr.postinst" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/dolibarr.postrm" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/dolibarr.templates" "$BUILDROOT/$PROJECT.tmp/debian"`; + $ret=`cp -f "$SOURCE/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 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 {} \\; "; @@ -724,6 +790,16 @@ if ($nboftargetok) { $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/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"; chdir("$BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"); @@ -735,11 +811,14 @@ if ($nboftargetok) { 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"; + # Move to final dir - print "Move *_all.deb to $NEWDESTI\n"; + 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/*.tar.gz "$NEWDESTI/"`; + $ret=`mv $BUILDROOT/*.orig.tar.gz "$NEWDESTI/"`; $ret=`mv $BUILDROOT/*.changes "$NEWDESTI/"`; next; } @@ -854,6 +933,81 @@ if ($nboftargetok) { next; } } + + # Build package for each target + #------------------------------ + foreach my $target (keys %CHOOSEDPUBLISH) + { + if ($CHOOSEDPUBLISH{$target} < 0) { next; } + + print "\nList of files to publish\n"; + %filestoscan=( + "$DESTI/package_rpm_generic/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)', + "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)', + "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe"=>'Dolibarr installer for Windows (DoliWamp)', + "$DESTI/standard/$FILENAMETGZ.tgz"=>'Dolibarr ERP-CRM', + "$DESTI/standard/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM' + ); + foreach my $file (sort keys %filestoscan) + { + $found=0; + my $filesize = -s $file; + print $file." ".($filesize?"(found)":"(not found)"); + print ($filesize?" - ".$filesize:""); + print "\n"; + } + + if ($target eq 'SF') + { + print "\n"; + + $NEWPUBLISH=$PUBLISH; + print "Publish to target $NEWPUBLISH. Click enter or CTRL+C...\n"; + + # Ask which target to build + $NUM_SCRIPT=<STDIN>; + chomp($NUM_SCRIPT); + + print "Create empty dir /tmp/emptydir. We need it to create target dir using rsync.\n"; + $ret=`mkdir -p "/tmp/emptydir/"`; + + foreach my $file (sort keys %filestoscan) + { + $found=0; + my $filesize = -s $file; + if (! $filesize) { next; } + + print "\n"; + print "Publish file ".$file." to ".$filestoscan{$file}."\n"; + + $destFolder="$NEWPUBLISH/$filestoscan{$file}/".$MAJOR.'.'.$MINOR.'.'.$BUILD; + + # mkdir + #my $ssh = Net::SSH::Perl->new("frs.sourceforge.net"); + #$ssh->login("$user","$pass"); + #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) + + #$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."\""; + print "$command\n"; + my $ret=`$command 2>&1`; + + $command="rsync -s $OPTIONUPDATEDIST -e 'ssh' \"$file\" \"".$destFolder."\""; + print "$command\n"; + my $ret=`$command 2>&1`; + print "$ret\n"; + + } + + } + } } print "\n----- Summary -----\n";