makepack-dolibarr.pl 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142
  1. #!/usr/bin/perl
  2. #----------------------------------------------------------------------------
  3. # \file build/makepack-dolibarr.pl
  4. # \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps)
  5. # \author (c)2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
  6. #
  7. # This is list of constant you can set to have generated packages moved into a specific dir:
  8. #DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'
  9. #DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable'
  10. #DESTIMODULES='/media/HDDATA1_LD/Mes Sites/Web/Admin1/wwwroot/files/modules'
  11. #DESTIDOLIMEDBETARC='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/lastbuild'
  12. #DESTIDOLIMEDMODULES='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/modules'
  13. #DESTIDOLIMEDSTABLE='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/stable'
  14. #----------------------------------------------------------------------------
  15. use Cwd;
  16. # Change this to defined target for option 98 and 99
  17. $PROJECT="dolibarr";
  18. $PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr";
  19. $PUBLISHBETARC="ldestailleur\@asso.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
  20. @LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
  21. %REQUIREMENTPUBLISH=(
  22. "SF"=>"git ssh rsync",
  23. "ASSO"=>"git ssh rsync"
  24. );
  25. %REQUIREMENTTARGET=( # Tool requirement for each package
  26. "TGZ"=>"tar",
  27. "ZIP"=>"7z",
  28. "XZ"=>"xz",
  29. "RPM_GENERIC"=>"rpmbuild",
  30. "RPM_FEDORA"=>"rpmbuild",
  31. "RPM_MANDRIVA"=>"rpmbuild",
  32. "RPM_OPENSUSE"=>"rpmbuild",
  33. "DEB"=>"dpkg",
  34. "APS"=>"zip",
  35. "EXEDOLIWAMP"=>"ISCC.exe",
  36. "SNAPSHOT"=>"tar"
  37. );
  38. %ALTERNATEPATH=(
  39. "7z"=>"7-ZIP",
  40. "makensis.exe"=>"NSIS"
  41. );
  42. $RPMSUBVERSION="auto"; # auto use value found into BUILD
  43. if (-d "/usr/src/redhat") { $RPMDIR="/usr/src/redhat"; } # redhat
  44. if (-d "/usr/src/packages") { $RPMDIR="/usr/src/packages"; } # opensuse
  45. if (-d "/usr/src/RPM") { $RPMDIR="/usr/src/RPM"; } # mandrake
  46. use vars qw/ $REVISION $VERSION /;
  47. $VERSION="3.3";
  48. #------------------------------------------------------------------------------
  49. # MAIN
  50. #------------------------------------------------------------------------------
  51. ($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
  52. $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/;
  53. $SOURCE="$DIR/..";
  54. $DESTI="$SOURCE/build";
  55. if ($SOURCE !~ /^\//)
  56. {
  57. print "Error: Launch the script $PROG.$Extension with its full path from /.\n";
  58. print "$PROG.$Extension aborted.\n";
  59. sleep 2;
  60. exit 1;
  61. }
  62. if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"})
  63. {
  64. print "Error: Missing environment variables.\n";
  65. print "You must define the environment variable DESTIBETARC and DESTISTABLE to point to the\ndirectories where you want to save the generated packages.\n";
  66. print "Example: DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'\n";
  67. print "Example: DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable'\n";
  68. print "$PROG.$Extension aborted.\n";
  69. sleep 2;
  70. exit 1;
  71. }
  72. if (! -d $ENV{"DESTIBETARC"} || ! -d $ENV{"DESTISTABLE"})
  73. {
  74. print "Error: Directory of environment variable DESTIBETARC or DESTISTABLE does not exist.\n";
  75. print "$PROG.$Extension aborted.\n";
  76. sleep 2;
  77. exit 1;
  78. }
  79. # Detect OS type
  80. # --------------
  81. if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; }
  82. elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
  83. elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
  84. if (! $OS) {
  85. print "Error: Can't detect your OS.\n";
  86. print "Can't continue.\n";
  87. print "$PROG.$Extension aborted.\n";
  88. sleep 2;
  89. exit 1;
  90. }
  91. # Define buildroot
  92. # ----------------
  93. if ($OS =~ /linux/) {
  94. $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
  95. }
  96. if ($OS =~ /macos/) {
  97. $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
  98. }
  99. if ($OS =~ /windows/) {
  100. $TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp";
  101. $PROGPATH=$ENV{"ProgramFiles"};
  102. }
  103. if (! $TEMP || ! -d $TEMP) {
  104. print "Error: A temporary directory can not be find.\n";
  105. print "Check that TEMP or TMP environment variable is set correctly.\n";
  106. print "$PROG.$Extension aborted.\n";
  107. sleep 2;
  108. exit 2;
  109. }
  110. $BUILDROOT="$TEMP/buildroot";
  111. # Get version $MAJOR, $MINOR and $BUILD
  112. $result = open( IN, "<" . $SOURCE . "/htdocs/filefunc.inc.php" );
  113. if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; }
  114. while (<IN>) {
  115. if ( $_ =~ /define\('DOL_VERSION','([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; }
  116. }
  117. close IN;
  118. ($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
  119. if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; }
  120. # Set vars for packaging
  121. $FILENAME = "$PROJECT";
  122. $FILENAMESNAPSHOT = "$PROJECT-snapshot";
  123. $FILENAMETGZ = "$PROJECT-$MAJOR.$MINOR.$BUILD";
  124. $FILENAMEZIP = "$PROJECT-$MAJOR.$MINOR.$BUILD";
  125. $FILENAMEXZ = "$PROJECT-$MAJOR.$MINOR.$BUILD";
  126. $FILENAMEDEB = "see later";
  127. $FILENAMEAPS = "$PROJECT-$MAJOR.$MINOR.$BUILD.app";
  128. $FILENAMEEXEDOLIWAMP = "DoliWamp-$MAJOR.$MINOR.$BUILD";
  129. # For RPM
  130. $ARCH='noarch';
  131. $newbuild = $BUILD;
  132. $newbuild =~ s/(dev|alpha)/0.1.a/gi; # dev (fedora)
  133. $newbuild =~ s/beta/0.2.beta1/gi; # beta (fedora)
  134. $newbuild =~ s/rc./0.3.rc1/gi; # rc (fedora)
  135. if ($newbuild !~ /-/) { $newbuild.='-0.3'; } # finale (fedora)
  136. #$newbuild =~ s/(dev|alpha)/0/gi; # dev
  137. #$newbuild =~ s/beta/1/gi; # beta
  138. #$newbuild =~ s/rc./2/gi; # rc
  139. #if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale
  140. $REL1 = $newbuild; $REL1 =~ s/-.*$//gi;
  141. if ($RPMSUBVERSION eq 'auto') { $RPMSUBVERSION = $newbuild; $RPMSUBVERSION =~ s/^.*-//gi; }
  142. $FILENAMETGZ2="$PROJECT-$MAJOR.$MINOR.$REL1";
  143. $FILENAMERPM=$FILENAMETGZ2."-".$RPMSUBVERSION.".".$ARCH.".rpm";
  144. # For Deb
  145. $newbuild = $BUILD;
  146. $newbuild =~ s/(dev|alpha)/1/gi; # dev
  147. $newbuild =~ s/beta/2/gi; # beta
  148. $newbuild =~ s/rc./3/gi; # rc
  149. if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale is same than rc.
  150. # 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
  151. $build = $newbuild;
  152. $build =~ s/-.*$//g;
  153. # now build is 0 for example
  154. # $build .= '+nmu1';
  155. # now build is 0+nmu1 for example
  156. $FILENAMEDEBNATIVE="${PROJECT}_${MAJOR}.${MINOR}.${build}";
  157. $FILENAMEDEB="${PROJECT}_${MAJOR}.${MINOR}.${newbuild}";
  158. my $copyalreadydone=0;
  159. my $batch=0;
  160. for (0..@ARGV-1) {
  161. if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; }
  162. if ($ARGV[$_] =~ /^-*desti=(.+)/i) { $DESTI=$1; }
  163. if ($ARGV[$_] =~ /^-*prefix=(.+)/i) {
  164. $PREFIX=$1;
  165. $FILENAMESNAPSHOT.="-".$PREFIX;
  166. }
  167. }
  168. if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTIBETARC is defined
  169. if ($ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/) { $DESTI = $ENV{"DESTISTABLE"}; } # Force output dir if env DESTISTABLE is defined
  170. if ($ENV{"PUBLISHBETARC"} && $BUILD =~ /[a-z]/i) { $PUBLISHBETARC = $ENV{"PUBLISHBETARC"}; } # Force target site for publishing if env PUBLISHBETARC is defined
  171. if ($ENV{"PUBLISHSTABLE"} && $BUILD =~ /^[0-9]+$/) { $PUBLISHSTABLE = $ENV{"PUBLISHSTABLE"}; } # Force target site for publishing if env PUBLISHSTABLE is defined
  172. print "Makepack version $VERSION\n";
  173. print "Building/publishing package name: $PROJECT\n";
  174. print "Building/publishing package version: $MAJOR.$MINOR.$BUILD\n";
  175. print "Source directory (SOURCE): $SOURCE\n";
  176. print "Target directory (DESTI) : $DESTI\n";
  177. #print "Publishing target (PUBLISH): $PUBLISH\n";
  178. # Choose package targets
  179. #-----------------------
  180. if ($target) {
  181. if ($target eq "ALL") {
  182. foreach my $key (@LISTETARGET) {
  183. if ($key ne 'SNAPSHOT' && $key ne 'SF' && $key ne 'ASSO') { $CHOOSEDTARGET{$key}=1; }
  184. }
  185. }
  186. if ($target ne "ALL" && $target ne "SF" && $target ne "ASSO") { $CHOOSEDTARGET{uc($target)}=1; }
  187. if ($target eq "SF") { $CHOOSEDPUBLISH{"SF"}=1; }
  188. if ($target eq "ASSO") { $CHOOSEDPUBLISH{"ASSO"}=1; }
  189. }
  190. else {
  191. my $found=0;
  192. my $NUM_SCRIPT;
  193. my $cpt=0;
  194. while (! $found) {
  195. $cpt=0;
  196. printf(" %2d - %-14s (%s)\n",$cpt,"ALL (1..10)","Need ".join(",",values %REQUIREMENTTARGET));
  197. $cpt++;
  198. printf(" %2d - %-14s\n",$cpt,"Generate check file");
  199. foreach my $target (@LISTETARGET) {
  200. $cpt++;
  201. printf(" %2d - %-14s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target});
  202. }
  203. $cpt=98;
  204. printf(" %2d - %-14s (%s)\n",$cpt,"ASSO (publish)","Need ".$REQUIREMENTPUBLISH{"ASSO"});
  205. $cpt=99;
  206. printf(" %2d - %-14s (%s)\n",$cpt,"SF (publish)","Need ".$REQUIREMENTPUBLISH{"SF"});
  207. # Ask which target to build
  208. print "Choose one target number or several separated with space (0 - ".$cpt."): ";
  209. $NUM_SCRIPT=<STDIN>;
  210. chomp($NUM_SCRIPT);
  211. if ($NUM_SCRIPT !~ /^[0-9\s]+$/)
  212. {
  213. print "This is not a valid package number list.\n";
  214. $found = 0;
  215. }
  216. else
  217. {
  218. $found = 1;
  219. }
  220. }
  221. print "\n";
  222. if ($NUM_SCRIPT eq "98") {
  223. $CHOOSEDPUBLISH{"ASSO"}=1;
  224. }
  225. elsif ($NUM_SCRIPT eq "99") {
  226. $CHOOSEDPUBLISH{"SF"}=1;
  227. }
  228. elsif ($NUM_SCRIPT eq "0") {
  229. $CHOOSEDTARGET{"-CHKSUM"}=1;
  230. foreach my $key (@LISTETARGET) {
  231. if ($key ne 'SNAPSHOT' && $key ne 'ASSO' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; }
  232. }
  233. }
  234. elsif ($NUM_SCRIPT eq "1") {
  235. $CHOOSEDTARGET{"-CHKSUM"}=1
  236. }
  237. else {
  238. foreach my $num (split(/\s+/,$NUM_SCRIPT)) {
  239. $CHOOSEDTARGET{$LISTETARGET[$num-2]}=1;
  240. }
  241. }
  242. }
  243. # Test if requirement is ok
  244. #--------------------------
  245. $atleastonerpm=0;
  246. foreach my $target (sort keys %CHOOSEDTARGET) {
  247. if ($target =~ /RPM/i)
  248. {
  249. if ($atleastonerpm && ($DESTI eq "$SOURCE/build"))
  250. {
  251. 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";
  252. exit;
  253. }
  254. $atleastonerpm=1;
  255. }
  256. foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target}))
  257. {
  258. # Test
  259. print "Test requirement for target $target: Search '$req'... ";
  260. $newreq=$req; $newparam='';
  261. if ($newreq eq 'zip') { $newparam.='-h'; }
  262. if ($newreq eq 'xz') { $newparam.='-h'; }
  263. $cmd="\"$newreq\" $newparam 2>&1";
  264. print "Test command ".$cmd."... ";
  265. $ret=`$cmd`;
  266. $coderetour=$?; $coderetour2=$coderetour>>8;
  267. if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) {
  268. # Not found error, we try in PROGPATH
  269. $ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
  270. $coderetour=$?; $coderetour2=$coderetour>>8;
  271. $REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req";
  272. }
  273. if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) {
  274. # Not found error
  275. print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
  276. $CHOOSEDTARGET{$target}=-1;
  277. last;
  278. } else {
  279. # Pas erreur ou erreur autre que programme absent
  280. print " Found ".$req."\n";
  281. }
  282. }
  283. }
  284. print "\n";
  285. # Build xml check file
  286. #-----------------------
  287. if ($CHOOSEDTARGET{'-CHKSUM'})
  288. {
  289. print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filecheck_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
  290. $ret=`php $SOURCE/build/generate_filecheck_xml.php release=$MAJOR.$MINOR.$BUILD`;
  291. print $ret."\n";
  292. }
  293. #print join(',',sort keys %CHOOSEDTARGET)."\n";
  294. # Check if there is at least one target to build
  295. #----------------------------------------------
  296. $nboftargetok=0;
  297. $nboftargetneedbuildroot=0;
  298. $nbofpublishneedtag=0;
  299. foreach my $target (sort keys %CHOOSEDTARGET) {
  300. if ($CHOOSEDTARGET{$target} < 0) { next; }
  301. if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM')
  302. {
  303. $nboftargetneedbuildroot++;
  304. }
  305. $nboftargetok++;
  306. }
  307. foreach my $target (sort keys %CHOOSEDPUBLISH) {
  308. if ($CHOOSEDPUBLISH{$target} < 0) { next; }
  309. if ($target eq 'ASSO') { $nbofpublishneedtag++; }
  310. if ($target eq 'SF') { $nbofpublishneedtag++; }
  311. $nboftargetok++;
  312. }
  313. if ($nboftargetok) {
  314. # Update GIT tag if required
  315. #---------------------------
  316. if ($nbofpublishneedtag)
  317. {
  318. print "Go to directory $SOURCE\n";
  319. $olddir=getcwd();
  320. chdir("$SOURCE");
  321. print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
  322. $ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`;
  323. if ($ret =~ /already exists/)
  324. {
  325. print "WARNING: Tag ".$MAJOR.'.'.$MINOR.'.'.$BUILD." already exists. Overwrite (y/N) ? ";
  326. $QUESTIONOVERWRITETAG=<STDIN>;
  327. chomp($QUESTIONOVERWRITETAG);
  328. if ($QUESTIONOVERWRITETAG =~ /(o|y)/)
  329. {
  330. print 'Run git tag -a -f -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
  331. $ret=`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`;
  332. }
  333. }
  334. print 'Run git push --tags'."\n";
  335. $ret=`git push --tags`;
  336. chdir("$olddir");
  337. }
  338. # Update buildroot if required
  339. #-----------------------------
  340. if ($nboftargetneedbuildroot)
  341. {
  342. if (! $copyalreadydone) {
  343. print "Creation of a buildroot used for all packages\n";
  344. print "Delete directory $BUILDROOT\n";
  345. $ret=`rm -fr "$BUILDROOT"`;
  346. mkdir "$BUILDROOT";
  347. mkdir "$BUILDROOT/$PROJECT";
  348. print "Copy $SOURCE into $BUILDROOT/$PROJECT\n";
  349. $ret=`cp -pr "$SOURCE" "$BUILDROOT/$PROJECT"`;
  350. #print "Copy $SOURCE/build/debian/apache/.htaccess into $BUILDROOT/$PROJECT/build/debian/apache/.htaccess\n";
  351. #$ret=`cp -pr "$SOURCE/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT/build/debian/apache/.htaccess"`;
  352. }
  353. print "Clean $BUILDROOT\n";
  354. $ret=`rm -f $BUILDROOT/$PROJECT/.buildpath`;
  355. $ret=`rm -fr $BUILDROOT/$PROJECT/.cache`;
  356. $ret=`rm -fr $BUILDROOT/$PROJECT/.editorconfig`;
  357. $ret=`rm -fr $BUILDROOT/$PROJECT/.externalToolBuilders`;
  358. $ret=`rm -fr $BUILDROOT/$PROJECT/.git*`;
  359. $ret=`rm -fr $BUILDROOT/$PROJECT/.project`;
  360. $ret=`rm -fr $BUILDROOT/$PROJECT/.settings`;
  361. $ret=`rm -fr $BUILDROOT/$PROJECT/.scrutinizer.yml`;
  362. $ret=`rm -fr $BUILDROOT/$PROJECT/.travis.yml`;
  363. $ret=`rm -fr $BUILDROOT/$PROJECT/.tx`;
  364. $ret=`rm -f $BUILDROOT/$PROJECT/build.xml`;
  365. $ret=`rm -f $BUILDROOT/$PROJECT/pom.xml`;
  366. $ret=`rm -fr $BUILDROOT/$PROJECT/build/html`;
  367. $ret=`rm -f $BUILDROOT/$PROJECT/build/Doli*-*`;
  368. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr_*.deb`;
  369. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr_*.dsc`;
  370. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr_*.tar.gz`;
  371. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.deb`;
  372. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.rpm`;
  373. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.tar`;
  374. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.tar.gz`;
  375. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.tgz`;
  376. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.xz`;
  377. $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr-*.zip`;
  378. $ret=`rm -f $BUILDROOT/$PROJECT/build/doxygen/doxygen_warnings.log`;
  379. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/cache.manifest`;
  380. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php`;
  381. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.mysql`;
  382. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.old`;
  383. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf.php.postgres`;
  384. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/conf/conf*sav*`;
  385. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/mssql/README`;
  386. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/mysql/README`;
  387. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/install/pgsql/README`;
  388. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/install/mssql`;
  389. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/ansible`;
  390. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/codesniffer`;
  391. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/codetemplates`;
  392. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/dbmodel`;
  393. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/initdata`;
  394. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/iso-normes`;
  395. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/ldap`;
  396. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/licence`;
  397. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/mail`;
  398. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/multitail`;
  399. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/phpcheckstyle`;
  400. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/phpunit`;
  401. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/security`;
  402. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/spec`;
  403. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/test`;
  404. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/uml`;
  405. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/vagrant`;
  406. $ret=`rm -fr $BUILDROOT/$PROJECT/dev/xdebug`;
  407. $ret=`rm -f $BUILDROOT/$PROJECT/dev/dolibarr_changes.txt`;
  408. $ret=`rm -f $BUILDROOT/$PROJECT/dev/README`;
  409. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot2.png`;
  410. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot3.png`;
  411. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot4.png`;
  412. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot5.png`;
  413. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot6.png`;
  414. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot7.png`;
  415. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot8.png`;
  416. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot9.png`;
  417. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot10.png`;
  418. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot11.png`;
  419. $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot12.png`;
  420. # Security to avoid to package data files
  421. $ret=`rm -fr $BUILDROOT/$PROJECT/document`;
  422. $ret=`rm -fr $BUILDROOT/$PROJECT/documents`;
  423. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`;
  424. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`;
  425. # Removed known external modules to avoid any error when packaging from env where external modules are tested
  426. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom/*`; # For custom we want to keep dir
  427. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`;
  428. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`;
  429. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`;
  430. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`;
  431. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`;
  432. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`;
  433. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`;
  434. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`;
  435. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`;
  436. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`;
  437. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/oscim*`;
  438. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`;
  439. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`;
  440. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`;
  441. # Removed other test files
  442. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`;
  443. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`;
  444. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/api/explorer`; # This is a dev tool
  445. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`;
  446. $ret=`rm -fr $BUILDROOT/$PROJECT/test`;
  447. $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`;
  448. $ret=`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`;
  449. $ret=`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`;
  450. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`;
  451. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl`; # Avoid errors into rpmlint
  452. $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.
  453. $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.
  454. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/adapters`; # Keep this removal in case we embed libraries
  455. #$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/_source`; # _source must be kept into tarball
  456. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/datatables/extras/TableTools/swf`; # Source of this flash is not available
  457. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/multiselect/MIT-LICENSE.txt`;
  458. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
  459. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`;
  460. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`;
  461. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/license.txt`;
  462. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`;
  463. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PCLZip`;
  464. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`;
  465. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`;
  466. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/utils`;
  467. $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/LICENSE.TXT`;
  468. $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/savant`;
  469. }
  470. # Build package for each target
  471. #------------------------------
  472. foreach my $target (sort keys %CHOOSEDTARGET)
  473. {
  474. if ($CHOOSEDTARGET{$target} < 0) { next; }
  475. if ($target eq '-CHKSUM') { next; }
  476. print "\nBuild package for target $target\n";
  477. if ($target eq 'SNAPSHOT')
  478. {
  479. $NEWDESTI=$DESTI;
  480. print "Remove target $FILENAMESNAPSHOT.tgz...\n";
  481. unlink("$NEWDESTI/$FILENAMESNAPSHOT.tgz");
  482. #rmdir "$BUILDROOT/$FILENAMESNAPSHOT";
  483. $ret=`rm -fr $BUILDROOT/$FILENAMESNAPSHOT`;
  484. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMESNAPSHOT\n";
  485. $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMESNAPSHOT\"";
  486. $ret=`$cmd`;
  487. print "Compress $BUILDROOT into $FILENAMESNAPSHOT.tgz...\n";
  488. $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";
  489. print $cmd."\n";
  490. $ret=`$cmd`;
  491. # Move to final dir
  492. print "Move $FILENAMESNAPSHOT.tgz to $NEWDESTI/$FILENAMESNAPSHOT.tgz\n";
  493. $ret=`mv "$FILENAMESNAPSHOT.tgz" "$NEWDESTI/$FILENAMESNAPSHOT.tgz"`;
  494. next;
  495. }
  496. if ($target eq 'TGZ')
  497. {
  498. $NEWDESTI=$DESTI;
  499. mkdir($DESTI.'/standard');
  500. if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
  501. print "Remove target $FILENAMETGZ.tgz...\n";
  502. unlink("$NEWDESTI/$FILENAMETGZ.tgz");
  503. #rmdir "$BUILDROOT/$FILENAMETGZ";
  504. $ret=`rm -fr $BUILDROOT/$FILENAMETGZ`;
  505. print "Copy $BUILDROOT/$PROJECT/ to $BUILDROOT/$FILENAMETGZ\n";
  506. $cmd="cp -pr \"$BUILDROOT/$PROJECT/\" \"$BUILDROOT/$FILENAMETGZ\"";
  507. $ret=`$cmd`;
  508. $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/build/exe`;
  509. $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages
  510. print "Compress $FILENAMETGZ into $FILENAMETGZ.tgz...\n";
  511. $cmd="tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMETGZ.tgz\" $FILENAMETGZ";
  512. print "$cmd\n";
  513. $ret=`$cmd`;
  514. # Move to final dir
  515. print "Move $BUILDROOT/$FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n";
  516. $ret=`mv "$BUILDROOT/$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`;
  517. next;
  518. }
  519. if ($target eq 'XZ')
  520. {
  521. $NEWDESTI=$DESTI;
  522. mkdir($DESTI.'/standard');
  523. if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
  524. print "Remove target $FILENAMEXZ.xz...\n";
  525. unlink("$NEWDESTI/$FILENAMEXZ.xz");
  526. #rmdir "$BUILDROOT/$FILENAMEXZ";
  527. $ret=`rm -fr $BUILDROOT/$FILENAMEXZ`;
  528. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMEXZ\n";
  529. $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEXZ\"";
  530. $ret=`$cmd`;
  531. $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/build/exe`;
  532. $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages
  533. print "Compress $FILENAMEXZ into $FILENAMEXZ.xz...\n";
  534. print "Go to directory $BUILDROOT\n";
  535. $olddir=getcwd();
  536. chdir("$BUILDROOT");
  537. $cmd= "xz -9 -r $BUILDROOT/$FILENAMEAPS.xz \*";
  538. print $cmd."\n";
  539. $ret= `$cmd`;
  540. chdir("$olddir");
  541. # Move to final dir
  542. print "Move $FILENAMEXZ.xz to $NEWDESTI/$FILENAMEXZ.xz\n";
  543. $ret=`mv "$BUILDROOT/$FILENAMEXZ.xz" "$NEWDESTI/$FILENAMEXZ.xz"`;
  544. next;
  545. }
  546. if ($target eq 'ZIP')
  547. {
  548. $NEWDESTI=$DESTI;
  549. mkdir($DESTI.'/standard');
  550. if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
  551. print "Remove target $FILENAMEZIP.zip...\n";
  552. unlink("$NEWDESTI/$FILENAMEZIP.zip");
  553. #rmdir "$BUILDROOT/$FILENAMEZIP";
  554. $ret=`rm -fr $BUILDROOT/$FILENAMEZIP`;
  555. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMEZIP\n";
  556. $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$FILENAMEZIP\"";
  557. $ret=`$cmd`;
  558. $ret=`rm -fr $BUILDROOT/$FILENAMEZIP/build/exe`;
  559. $ret=`rm -fr $BUILDROOT/$FILENAMEZIP/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages
  560. print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n";
  561. print "Go to directory $BUILDROOT\n";
  562. $olddir=getcwd();
  563. chdir("$BUILDROOT");
  564. $cmd= "7z a -r -tzip -xr\@\"$BUILDROOT\/$FILENAMEZIP\/build\/zip\/zip_exclude.txt\" -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMEZIP\/*";
  565. print $cmd."\n";
  566. $ret= `$cmd`;
  567. chdir("$olddir");
  568. # Move to final dir
  569. print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n";
  570. $ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`;
  571. next;
  572. }
  573. if ($target =~ /RPM/) # Linux only
  574. {
  575. $NEWDESTI=$DESTI;
  576. $subdir="package_rpm_generic";
  577. if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; }
  578. if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; }
  579. if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; }
  580. mkdir($DESTI.'/'.$subdir);
  581. if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; }
  582. if ($RPMDIR eq "") { $RPMDIR=$ENV{'HOME'}."/rpmbuild"; }
  583. print "Version is $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n";
  584. print "Remove target ".$FILENAMERPM."...\n";
  585. unlink("$NEWDESTI/".$FILENAMERPM);
  586. print "Remove target ".$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm...\n";
  587. unlink("$NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION.".src.rpm");
  588. print "Create directory $BUILDROOT/$FILENAMETGZ2\n";
  589. $ret=`rm -fr $BUILDROOT/$FILENAMETGZ2`;
  590. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMETGZ2\n";
  591. $cmd="cp -pr '$BUILDROOT/$PROJECT' '$BUILDROOT/$FILENAMETGZ2'";
  592. $ret=`$cmd`;
  593. # Removed files we don't need
  594. $ret=`rm -fr $BUILDROOT/$FILENAMETGZ2/htdocs/includes/ckeditor/_source`;
  595. print "Set permissions on files/dir\n";
  596. $ret=`chmod -R 755 $BUILDROOT/$FILENAMETGZ2`;
  597. $cmd="find $BUILDROOT/$FILENAMETGZ2 -type f -exec chmod 644 {} \\; ";
  598. $ret=`$cmd`;
  599. # Build tgz
  600. print "Compress $FILENAMETGZ2 into $FILENAMETGZ2.tgz...\n";
  601. $ret=`tar --exclude-from "$SOURCE/build/tgz/tar_exclude.txt" --directory "$BUILDROOT" -czvf "$BUILDROOT/$FILENAMETGZ2.tgz" $FILENAMETGZ2`;
  602. print "Move $BUILDROOT/$FILENAMETGZ2.tgz to $RPMDIR/SOURCES/$FILENAMETGZ2.tgz\n";
  603. $cmd="mv $BUILDROOT/$FILENAMETGZ2.tgz $RPMDIR/SOURCES/$FILENAMETGZ2.tgz";
  604. $ret=`$cmd`;
  605. $BUILDFIC="${FILENAME}.spec";
  606. $BUILDFICSRC="${FILENAME}_generic.spec";
  607. if ($target =~ /FEDO/i) { $BUILDFICSRC="${FILENAME}_fedora.spec"; }
  608. if ($target =~ /MAND/i) { $BUILDFICSRC="${FILENAME}_mandriva.spec"; }
  609. if ($target =~ /OPEN/i) { $BUILDFICSRC="${FILENAME}_opensuse.spec"; }
  610. use Date::Language;
  611. $lang=Date::Language->new('English');
  612. $datestring = $lang->time2str("%a %b %e %Y", time);
  613. $changelogstring="* ".$datestring." Laurent Destailleur (eldy) $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n- Upstream release\n";
  614. print "Generate file $BUILDROOT/$BUILDFIC from $SOURCE/build/rpm/${BUILDFICSRC}\n";
  615. open (SPECFROM,"<$SOURCE/build/rpm/${BUILDFICSRC}") || die "Error";
  616. open (SPECTO,">$BUILDROOT/$BUILDFIC") || die "Error";
  617. while (<SPECFROM>) {
  618. $_ =~ s/__FILENAMETGZ__/$FILENAMETGZ/;
  619. $_ =~ s/__VERSION__/$MAJOR.$MINOR.$REL1/;
  620. $_ =~ s/__RELEASE__/$RPMSUBVERSION/;
  621. $_ =~ s/__CHANGELOGSTRING__/$changelogstring/;
  622. print SPECTO $_;
  623. }
  624. close SPECFROM;
  625. close SPECTO;
  626. print "Copy patch file to $RPMDIR/SOURCES\n";
  627. $ret=`cp "$SOURCE/build/rpm/dolibarr-forrpm.patch" "$RPMDIR/SOURCES"`;
  628. $ret=`chmod 644 $RPMDIR/SOURCES/dolibarr-forrpm.patch`;
  629. print "Launch RPM build (rpmbuild --clean -ba $BUILDROOT/${BUILDFIC})\n";
  630. #$ret=`rpmbuild -vvvv --clean -ba $BUILDROOT/${BUILDFIC}`;
  631. $ret=`rpmbuild --clean -ba $BUILDROOT/${BUILDFIC}`;
  632. # Move to final dir
  633. print "Move $RPMDIR/RPMS/".$ARCH."/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm into $NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm\n";
  634. $cmd="mv $RPMDIR/RPMS/".$ARCH."/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.".$ARCH.".rpm \"$NEWDESTI/\"";
  635. $ret=`$cmd`;
  636. print "Move $RPMDIR/SRPMS/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm into $NEWDESTI/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm\n";
  637. $cmd="mv $RPMDIR/SRPMS/".$FILENAMETGZ2."-".$RPMSUBVERSION."*.src.rpm \"$NEWDESTI/\"";
  638. $ret=`$cmd`;
  639. print "Move $RPMDIR/SOURCES/".$FILENAMETGZ2.".tgz into $NEWDESTI/".$FILENAMETGZ2.".tgz\n";
  640. $cmd="mv \"$RPMDIR/SOURCES/".$FILENAMETGZ2.".tgz\" \"$NEWDESTI/".$FILENAMETGZ2.".tgz\"";
  641. #$ret=`$cmd`;
  642. next;
  643. }
  644. if ($target eq 'DEB')
  645. {
  646. $NEWDESTI=$DESTI;
  647. mkdir($DESTI.'/package_debian-ubuntu');
  648. if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; }
  649. $olddir=getcwd();
  650. print "Remove target ${FILENAMEDEB}_all.deb...\n";
  651. unlink("$NEWDESTI/${FILENAMEDEB}_all.deb");
  652. print "Remove target ${FILENAMEDEB}.dsc...\n";
  653. unlink("$NEWDESTI/${FILENAMEDEB}.dsc");
  654. print "Remove target ${FILENAMEDEB}.tar.gz...\n";
  655. unlink("$NEWDESTI/${FILENAMEDEB}.tar.gz");
  656. print "Remove target ${FILENAMEDEB}.changes...\n";
  657. unlink("$NEWDESTI/${FILENAMEDEB}.changes");
  658. print "Remove target ${FILENAMEDEB}.debian.tar.gz...\n";
  659. unlink("$NEWDESTI/${FILENAMEDEB}.debian.tar.gz");
  660. print "Remove target ${FILENAMEDEBNATIVE}.orig.tar.gz...\n";
  661. unlink("$NEWDESTI/${FILENAMEDEBNATIVE}.orig.tar.gz");
  662. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp`;
  663. $ret=`rm -fr $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build`;
  664. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$PROJECT.tmp\n";
  665. $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$PROJECT.tmp\"";
  666. $ret=`$cmd`;
  667. $cmd="cp -pr \"$BUILDROOT/$PROJECT/build/debian/apache/.htaccess\" \"$BUILDROOT/$PROJECT.tmp/build/debian/apache/.htaccess\"";
  668. $ret=`$cmd`;
  669. print "Remove other files\n";
  670. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/README-FR`;
  671. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/README`;
  672. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/README-FR`;
  673. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/aps`;
  674. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/dmg`;
  675. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/pad/README`;
  676. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/tgz/README`;
  677. #$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/debian`;
  678. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/debian/po`;
  679. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/debian/source`;
  680. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/changelog`;
  681. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/compat`;
  682. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/control*`;
  683. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/copyright`;
  684. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.config`;
  685. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.desktop`;
  686. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.docs`;
  687. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.install`;
  688. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.lintian-overrides`;
  689. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.postrm`;
  690. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.postinst`;
  691. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.templates`;
  692. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/dolibarr.templates.futur`;
  693. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/rules`;
  694. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/README.Debian`;
  695. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/README.howto`;
  696. $ret=`rm -f $BUILDROOT/$PROJECT.tmp/build/debian/watch`;
  697. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/doap`;
  698. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/exe`;
  699. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/launchpad`;
  700. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/live`;
  701. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/patch`;
  702. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/perl`;
  703. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/rpm`;
  704. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/build/zip`;
  705. # Removed duplicate license files
  706. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/_source/LICENSE.md`;
  707. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/_source/plugins/scayt/LICENSE.md`;
  708. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/_source/plugins/wsc/LICENSE.md`;
  709. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/LICENSE.md`;
  710. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/plugins/scayt/LICENSE.md`;
  711. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/plugins/wsc/LICENSE.md`;
  712. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/flot/LICENSE.txt`;
  713. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE`;
  714. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/tcpdf/fonts/freefont-20120503/COPYING`;
  715. # Removed files we don't need
  716. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/_source`;
  717. # Rename upstream changelog to match debian rules
  718. $ret=`mv $BUILDROOT/$PROJECT.tmp/ChangeLog $BUILDROOT/$PROJECT.tmp/changelog`;
  719. # Prepare source package (init debian dir)
  720. print "Create directory $BUILDROOT/$PROJECT.tmp/debian\n";
  721. $ret=`mkdir "$BUILDROOT/$PROJECT.tmp/debian"`;
  722. print "Copy $SOURCE/build/debian/xxx to $BUILDROOT/$PROJECT.tmp/debian\n";
  723. # Add files for dpkg-source (changelog)
  724. #$ret=`cp -f "$SOURCE/build/debian/changelog" "$BUILDROOT/$PROJECT.tmp/debian"`;
  725. open (SPECFROM,"<$SOURCE/build/debian/changelog") || die "Error";
  726. open (SPECTO,">$BUILDROOT/$PROJECT.tmp/debian/changelog") || die "Error";
  727. while (<SPECFROM>) {
  728. $_ =~ s/__VERSION__/$MAJOR.$MINOR.$newbuild/;
  729. print SPECTO $_;
  730. }
  731. close SPECFROM;
  732. close SPECTO;
  733. # Add files for dpkg-source
  734. $ret=`cp -f "$SOURCE/build/debian/compat" "$BUILDROOT/$PROJECT.tmp/debian"`;
  735. $ret=`cp -f "$SOURCE/build/debian/control" "$BUILDROOT/$PROJECT.tmp/debian"`;
  736. $ret=`cp -f "$SOURCE/build/debian/copyright" "$BUILDROOT/$PROJECT.tmp/debian"`;
  737. $ret=`cp -f "$SOURCE/build/debian/dolibarr.desktop" "$BUILDROOT/$PROJECT.tmp/debian"`;
  738. $ret=`cp -f "$SOURCE/build/debian/dolibarr.docs" "$BUILDROOT/$PROJECT.tmp/debian"`;
  739. $ret=`cp -f "$SOURCE/build/debian/dolibarr.install" "$BUILDROOT/$PROJECT.tmp/debian"`;
  740. $ret=`cp -f "$SOURCE/build/debian/dolibarr.lintian-overrides" "$BUILDROOT/$PROJECT.tmp/debian"`;
  741. $ret=`cp -f "$SOURCE/build/debian/dolibarr.xpm" "$BUILDROOT/$PROJECT.tmp/debian"`;
  742. $ret=`cp -f "$SOURCE/build/debian/rules" "$BUILDROOT/$PROJECT.tmp/debian"`;
  743. $ret=`cp -f "$SOURCE/build/debian/watch" "$BUILDROOT/$PROJECT.tmp/debian"`;
  744. $ret=`cp -fr "$SOURCE/build/debian/patches" "$BUILDROOT/$PROJECT.tmp/debian"`;
  745. $ret=`cp -fr "$SOURCE/build/debian/po" "$BUILDROOT/$PROJECT.tmp/debian"`;
  746. $ret=`cp -fr "$SOURCE/build/debian/source" "$BUILDROOT/$PROJECT.tmp/debian"`;
  747. $ret=`cp -fr "$SOURCE/build/debian/apache" "$BUILDROOT/$PROJECT.tmp/debian/apache"`;
  748. $ret=`cp -f "$SOURCE/build/debian/apache/.htaccess" "$BUILDROOT/$PROJECT.tmp/debian/apache"`;
  749. $ret=`cp -fr "$SOURCE/build/debian/lighttpd" "$BUILDROOT/$PROJECT.tmp/debian/lighttpd"`;
  750. # Add files also required to build binary package
  751. $ret=`cp -f "$SOURCE/build/debian/dolibarr.config" "$BUILDROOT/$PROJECT.tmp/debian"`;
  752. $ret=`cp -f "$SOURCE/build/debian/dolibarr.postinst" "$BUILDROOT/$PROJECT.tmp/debian"`;
  753. $ret=`cp -f "$SOURCE/build/debian/dolibarr.postrm" "$BUILDROOT/$PROJECT.tmp/debian"`;
  754. $ret=`cp -f "$SOURCE/build/debian/dolibarr.templates" "$BUILDROOT/$PROJECT.tmp/debian"`;
  755. $ret=`cp -f "$SOURCE/build/debian/install.forced.php.install" "$BUILDROOT/$PROJECT.tmp/debian"`;
  756. # Set owners and permissions
  757. #print "Set owners on files/dir\n";
  758. #$ret=`chown -R root.root $BUILDROOT/$PROJECT.tmp`;
  759. print "Set permissions on files/dir\n";
  760. $ret=`chmod -R 755 $BUILDROOT/$PROJECT.tmp`;
  761. $cmd="find $BUILDROOT/$PROJECT.tmp -type f -exec chmod 644 {} \\; ";
  762. $ret=`$cmd`;
  763. $cmd="find $BUILDROOT/$PROJECT.tmp/build -name '*.php' -type f -exec chmod 755 {} \\; ";
  764. $ret=`$cmd`;
  765. $cmd="find $BUILDROOT/$PROJECT.tmp/build -name '*.dpatch' -type f -exec chmod 755 {} \\; ";
  766. $ret=`$cmd`;
  767. $cmd="find $BUILDROOT/$PROJECT.tmp/build -name '*.pl' -type f -exec chmod 755 {} \\; ";
  768. $ret=`$cmd`;
  769. $cmd="find $BUILDROOT/$PROJECT.tmp/dev -name '*.php' -type f -exec chmod 755 {} \\; ";
  770. $ret=`$cmd`;
  771. $ret=`chmod 755 $BUILDROOT/$PROJECT.tmp/debian/rules`;
  772. $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/translation/autotranslator.class.php`;
  773. $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/skeletons/modMyModule.class.php`;
  774. $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/skeletons/skeleton_class.class.php`;
  775. $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/skeletons/skeleton_page.php`;
  776. $ret=`chmod -R 644 $BUILDROOT/$PROJECT.tmp/dev/skeletons/skeleton_webservice_server.php`;
  777. $cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.php' -type f -exec chmod 755 {} \\; ";
  778. $ret=`$cmd`;
  779. $cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; ";
  780. $ret=`$cmd`;
  781. print "Rename directory $BUILDROOT/$PROJECT.tmp into $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n";
  782. $cmd="mv $BUILDROOT/$PROJECT.tmp $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build";
  783. $ret=`$cmd`;
  784. print "Go into directory $BUILDROOT\n";
  785. chdir("$BUILDROOT");
  786. # 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)
  787. print "Compress $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build into $BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz...\n";
  788. $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";
  789. print $cmd."\n";
  790. $ret=`$cmd`;
  791. # Creation of source package
  792. print "Go into directory $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n";
  793. chdir("$BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build");
  794. #$cmd="dpkg-source -b $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build";
  795. $cmd="dpkg-buildpackage -us -uc";
  796. print "Launch DEB build ($cmd)\n";
  797. $ret=`$cmd 2>&1 3>&1`;
  798. print $ret."\n";
  799. chdir("$olddir");
  800. print "You can check bin package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}_all.deb\"\n";
  801. print "You can check src package with lintian --pedantic -E -I \"$NEWDESTI/${FILENAMEDEB}.dsc\"\n";
  802. # Move to final dir
  803. print "Move *_all.deb *.dsc *.orig.tar.gz *.changes to $NEWDESTI\n";
  804. $ret=`mv $BUILDROOT/*_all.deb "$NEWDESTI/"`;
  805. $ret=`mv $BUILDROOT/*.dsc "$NEWDESTI/"`;
  806. $ret=`mv $BUILDROOT/*.orig.tar.gz "$NEWDESTI/"`;
  807. $ret=`mv $BUILDROOT/*.debian.tar.gz "$NEWDESTI/"`;
  808. $ret=`mv $BUILDROOT/*.changes "$NEWDESTI/"`;
  809. next;
  810. }
  811. if ($target eq 'APS')
  812. {
  813. $NEWDESTI=$DESTI;
  814. mkdir($DESTI.'/package_aps');
  815. if (-d $DESTI.'/package_aps') { $NEWDESTI=$DESTI.'/package_aps'; }
  816. $newbuild = $BUILD;
  817. $newbuild =~ s/(dev|alpha)/0/gi; # dev
  818. $newbuild =~ s/beta/1/gi; # beta
  819. $newbuild =~ s/rc./2/gi; # rc
  820. if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale
  821. # now newbuild is 0-0 or 0-3 for example
  822. $REL1 = $newbuild; $REL1 =~ s/-.*$//gi;
  823. if ($RPMSUBVERSION eq 'auto') { $RPMSUBVERSION = $newbuild; $RPMSUBVERSION =~ s/^.*-//gi; }
  824. print "Version is $MAJOR.$MINOR.$REL1-$RPMSUBVERSION\n";
  825. print "Remove target $FILENAMEAPS.zip...\n";
  826. unlink "$NEWDESTI/$FILENAMEAPS.zip";
  827. #rmdir "$BUILDROOT/$PROJECT.tmp";
  828. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp`;
  829. print "Create directory $BUILDROOT/$PROJECT.tmp\n";
  830. $ret=`mkdir -p "$BUILDROOT/$PROJECT.tmp"`;
  831. print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$PROJECT.tmp\n";
  832. $cmd="cp -pr \"$BUILDROOT/$PROJECT\" \"$BUILDROOT/$PROJECT.tmp\"";
  833. $ret=`$cmd`;
  834. print "Remove other files\n";
  835. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/deb`;
  836. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/dmg`;
  837. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/doap`;
  838. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/exe`;
  839. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/live`;
  840. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/patch`;
  841. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/rpm`;
  842. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/zip`;
  843. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/build/perl`;
  844. $APSVERSION="1.2";
  845. print "Create APS files $BUILDROOT/$PROJECT.tmp/$PROJECT/APP-META.xml\n";
  846. open (SPECFROM,"<$BUILDROOT/$PROJECT/build/aps/APP-META-$APSVERSION.xml") || die "Error";
  847. open (SPECTO,">$BUILDROOT/$PROJECT.tmp/$PROJECT/APP-META.xml") || die "Error";
  848. while (<SPECFROM>) {
  849. $newbuild = $BUILD;
  850. $newbuild =~ s/(dev|alpha)/0/gi; # dev
  851. $newbuild =~ s/beta/1/gi; # beta
  852. $newbuild =~ s/rc./2/gi; # rc
  853. if ($newbuild !~ /-/) { $newbuild.='-3'; } # finale
  854. # now newbuild is 0-0 or 0-3 for example
  855. $_ =~ s/__VERSION__/$MAJOR.$MINOR.$REL1/;
  856. $_ =~ s/__RELEASE__/$RPMSUBVERSION/;
  857. print SPECTO $_;
  858. }
  859. close SPECFROM;
  860. close SPECTO;
  861. print "Version set to $MAJOR.$MINOR.$newbuild\n";
  862. $cmd="cp -pr \"$BUILDROOT/$PROJECT/build/aps/configure.php\" \"$BUILDROOT/$PROJECT.tmp/$PROJECT/scripts/configure.php\"";
  863. $ret=`$cmd`;
  864. $cmd="cp -pr \"$BUILDROOT/$PROJECT/doc/images\" \"$BUILDROOT/$PROJECT.tmp/$PROJECT/images\"";
  865. $ret=`$cmd`;
  866. print "Remove other files\n";
  867. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/dev`;
  868. $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/$PROJECT/doc`;
  869. print "Build APP-LIST.xml files\n";
  870. print "Compress $BUILDROOT/$PROJECT.tmp/$PROJECT into $FILENAMEAPS.zip...\n";
  871. print "Go to directory $BUILDROOT/$PROJECT.tmp\/$PROJECT\n";
  872. $olddir=getcwd();
  873. chdir("$BUILDROOT\/$PROJECT.tmp\/$PROJECT");
  874. $cmd= "zip -9 -r $BUILDROOT/$FILENAMEAPS.zip \*";
  875. print $cmd."\n";
  876. $ret= `$cmd`;
  877. chdir("$olddir");
  878. # Move to final dir
  879. print "Move $BUILDROOT/$FILENAMEAPS.zip to $NEWDESTI/$FILENAMEAPS.zip\n";
  880. $ret=`mv "$BUILDROOT/$FILENAMEAPS.zip" "$NEWDESTI/$FILENAMEAPS.zip"`;
  881. next;
  882. }
  883. if ($target eq 'EXEDOLIWAMP')
  884. {
  885. $NEWDESTI=$DESTI;
  886. mkdir($DESTI.'/package_windows');
  887. if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; }
  888. print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n";
  889. unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe";
  890. print "Check that in your Wine setup, you create a Z: drive that point to your / directory.\n";
  891. $SOURCEBACK=$SOURCE;
  892. $SOURCEBACK =~ s/\//\\/g;
  893. print "Prepare file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss from \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.iss\"\n";
  894. $ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`;
  895. print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"\n";
  896. $cmd= "ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"";
  897. print "$cmd\n";
  898. $ret= `$cmd`;
  899. #print "$ret\n";
  900. # Move to final dir
  901. print "Move \"$SOURCE\\build\\$FILENAMEEXEDOLIWAMP.exe\" to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n";
  902. rename("$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe","$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe");
  903. print "Move $SOURCE/build/$FILENAMEEXEDOLIWAMP.exe to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n";
  904. $ret=`mv "$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe" "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"`;
  905. $ret=`rm "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`;
  906. next;
  907. }
  908. }
  909. # Publish package for each target
  910. #--------------------------------
  911. foreach my $target (sort keys %CHOOSEDPUBLISH)
  912. {
  913. if ($CHOOSEDPUBLISH{$target} < 0) { next; }
  914. print "\nList of files to publish\n";
  915. %filestoscansf=(
  916. "$DESTI/package_rpm_generic/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)',
  917. "$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)',
  918. "$DESTI/package_windows/$FILENAMEEXEDOLIWAMP.exe"=>'Dolibarr installer for Windows (DoliWamp)',
  919. "$DESTI/standard/$FILENAMETGZ.tgz"=>'Dolibarr ERP-CRM',
  920. "$DESTI/standard/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM'
  921. );
  922. use POSIX qw/strftime/;
  923. foreach my $file (sort keys %filestoscansf)
  924. {
  925. $found=0;
  926. my $filesize = -s $file;
  927. my $filedate = (stat $file)[9];
  928. print $file." ".($filesize?"(found)":"(not found)");
  929. print ($filesize?" - ".$filesize:"");
  930. print ($filedate?" - ".strftime("%Y-%m-%d %H:%M:%S",localtime($filedate)):"");
  931. print "\n";
  932. }
  933. if ($target eq 'SF' || $target eq 'ASSO')
  934. {
  935. print "\n";
  936. if ($target eq 'SF') { $PUBLISH = $PUBLISHSTABLE; }
  937. if ($target eq 'ASSO' && $BUILD =~ /[a-z]/i) { $PUBLISH = $PUBLISHBETARC.'/lastbuild'; }
  938. if ($target eq 'ASSO' && $BUILD =~ /^[0-9]+$/) { $PUBLISH = $PUBLISHBETARC.'/stable'; }
  939. $NEWPUBLISH=$PUBLISH;
  940. print "Publish to target $NEWPUBLISH. Click enter or CTRL+C...\n";
  941. # Ask which target to build
  942. $NUM_SCRIPT=<STDIN>;
  943. chomp($NUM_SCRIPT);
  944. print "Create empty dir /tmp/emptydir. We need it to create target dir using rsync.\n";
  945. $ret=`mkdir -p "/tmp/emptydir/"`;
  946. %filestoscan=%filestoscansf;
  947. foreach my $file (sort keys %filestoscan)
  948. {
  949. $found=0;
  950. my $filesize = -s $file;
  951. if (! $filesize) { next; }
  952. print "\n";
  953. if ($target eq 'SF') {
  954. $destFolder="$NEWPUBLISH/$filestoscan{$file}/".$MAJOR.'.'.$MINOR.'.'.$BUILD;
  955. print "Publish file ".$file." to $NEWPUBLISH/".$filestoscan{$file}."\n";
  956. }
  957. else
  958. {
  959. $destFolder="$NEWPUBLISH";
  960. print "Publish file ".$file." to $NEWPUBLISH\n";
  961. }
  962. # mkdir
  963. #my $ssh = Net::SSH::Perl->new("frs.sourceforge.net");
  964. #$ssh->login("$user","$pass");
  965. #use String::ShellQuote qw( shell_quote );
  966. #$ssh->cmd('mkdir '.shell_quote($destFolder).' && exit');
  967. #use Net::SFTP::Foreign;
  968. #my $sftp = Net::SFTP::Foreign->new($ip, user => $user, password => $pass, autodie => 1);
  969. #$sftp->mkdir($destFolder)
  970. #$command="ssh eldy,dolibarr\@frs.sourceforge.net mkdir -p \"$destFolder\"";
  971. #print "$command\n";
  972. #my $ret=`$command 2>&1`;
  973. $command="rsync -s -e 'ssh' --recursive /tmp/emptydir/ \"".$destFolder."\"";
  974. print "$command\n";
  975. my $ret=`$command 2>&1`;
  976. $command="rsync -s $OPTIONUPDATEDIST -e 'ssh' \"$file\" \"".$destFolder."\"";
  977. print "$command\n";
  978. my $ret=`$command 2>&1`;
  979. print "$ret\n";
  980. }
  981. }
  982. }
  983. }
  984. print "\n----- Summary -----\n";
  985. foreach my $target (sort keys %CHOOSEDTARGET) {
  986. if ($target eq '-CHKSUM') { print "Checksum was generated"; next; }
  987. if ($CHOOSEDTARGET{$target} < 0) {
  988. print "Package $target not built (bad requirement).\n";
  989. } else {
  990. print "Package $target built successfully in $DESTI\n";
  991. }
  992. }
  993. if (! $batch) {
  994. print "\nPress key to finish...";
  995. my $WAITKEY=<STDIN>;
  996. }
  997. 0;