diff --git a/build/.cvsignore b/build/.cvsignore new file mode 100644 index 00000000000..16f2d2acce2 --- /dev/null +++ b/build/.cvsignore @@ -0,0 +1,5 @@ +dolibarr-*.exe +dolibarr-*.tgz +dolibarr-*.zip +dolibarr-*.rpm +dolibarr-*.deb diff --git a/build/README-FR b/build/README-FR index 1d3dad0e196..50cd410e978 100644 --- a/build/README-FR +++ b/build/README-FR @@ -2,11 +2,15 @@ README FR build Les sous répertoires du répertoire build contiennent tous les fichiers requis pour packager Dolibarr de manière automatisé. + +Pour cela, il suffit de lancer le script +> perl makepack-build.pl + + Le répertoire build et tout ce qu'il contient n'est absolument pas requis pour faire fonctionner Dolibarr. Ils ne servent qu'à la génération du package, lequel package, une fois construit, n'inclut aucun d'eux. - On trouve ainsi les sous-répertoires suivants: * debian: @@ -25,4 +29,3 @@ Permet de construire un package exe pour windows * pad: Permet de construire un fichier descriptif PAD pour la promotion de nouvelles versions de Dolibarr - diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl new file mode 100644 index 00000000000..cf5b17bc04d --- /dev/null +++ b/build/makepack-dolibarr.pl @@ -0,0 +1,248 @@ +#!/usr/bin/perl +#------------------------------------------------------------------------- +# \file build/makepack-dolibarr.pl +# \brief Generateur de packages (tgz, zip, rpm, deb, exe) +# \version $Revision$ +# \author (c) 2004 Laurent Destailleur +#------------------------------------------------------------------------- + +use Cwd; + +$PROJECT="dolibarr"; +$MAJOR="2"; +$MINOR="0"; +$RPMSUBVERSION="1"; + +@LISTETARGET=("TGZ","ZIP","RPM","DEB","EXE"); # Possible packages +%REQUIREMENTTARGET=( # Tool requirement for each package +"TGZ"=>"tar", +"ZIP"=>"7z", +"RPM"=>"rpm", +"DEB"=>"dpkg-buildpackage", +"EXE"=>"makensis.exe"); +%ALTERNATEPATH=( +"7z"=>"7-ZIP", +"makensis.exe"=>"NSIS" +); + + +$FILENAMETGZ="$PROJECT-$MAJOR.$MINOR"; +$FILENAMEZIP="$PROJECT-$MAJOR.$MINOR"; +$FILENAMERPM="$PROJECT-$MAJOR.$MINOR-$RPMSUBVERSION"; +$FILENAMEDEB="$PROJECT-$MAJOR.$MINOR"; +$FILENAMEEXE="$PROJECT-$MAJOR.$MINOR"; + +use vars qw/ $REVISION $VERSION /; +$REVISION='$Revision$'; $REVISION =~ /\s(.*)\s/; $REVISION=$1; +$VERSION="1.0 (build $REVISION)"; + + + +#------------------------------------------------------------------------------ +# MAIN +#------------------------------------------------------------------------------ +($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1; +$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; + +$SOURCE="$DIR/../../dolibarr"; + +# 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 "makepack-dolbarr.pl was not able to detect your OS.\n"; + print "Can't continue.\n"; + print "makepack-dolibarr.pl aborted.\n"; + sleep 2; + exit 1; +} + +# Define buildroot +# ---------------- +if ($OS =~ /linux/) { + $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 (! $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-dolibarr.pl aborted.\n"; + sleep 2; + exit 2; +} +$BUILDROOT.="$TEMP/buildroot"; + + + +# Choose package targets +#----------------------- +print "Makepack version $VERSION\n"; +print "Building package for $PROJECT $MAJOR.$MINOR\n"; +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}); + } + + # On demande de choisir le fichier à passer + 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 && $PROGPATH) { + # If error not found, 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 || $ret =~ /Usage/) { + # Pas erreur ou erreur autre que programme absent + print " Found ".$REQUIREMENTTARGET{$target}."\n"; + } else { + print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n"; + $CHOOSEDTARGET{$target}=-1; + last; + } + } +} + +print "\n"; + +# Update buildroot +#----------------- +my $copyalreadydone=1; +if (! $copyalreadydone) { + print "Delete directory $BUILDROOT\n"; + $ret=`rm -fr "$BUILDROOT"`; + + mkdir "$BUILDROOT"; + print "Copy $SOURCE into $BUILDROOT\n"; + mkdir "$BUILDROOT"; + $ret=`cp -pr "$SOURCE" "$BUILDROOT"`; +} +print "Clean $BUILDROOT\n"; +$ret=`rm -fr $BUILDROOT/$PROJECT/document`; +$ret=`rm -fr $BUILDROOT/$PROJECT/build`; +$ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db`; +$ret=`rm -fr $BUILDROOT/$PROJECT/CVS* $BUILDROOT/$PROJECT/*/CVS* $BUILDROOT/$PROJECT/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/*/*/CVS*`; +rename("$BUILDROOT/$PROJECT","$BUILDROOT/$FILENAMETGZ"); + + +# Build package for each target +#------------------------------ +foreach $target (keys %CHOOSEDTARGET) { + if ($CHOOSEDTARGET{$target} < 0) { next; } + + print "\nBuild pack for target $target\n"; + + if ($target eq 'TGZ') { + unlink $FILENAMETGZ.tgz; + print "Compress $FILENAMETGZ into $FILENAMETGZ.tgz...\n"; + $ret=`tar --exclude-from "$SOURCE/build/tgz/tar.exclude" --directory="$BUILDROOT" -czvf $FILENAMETGZ.tgz $FILENAMETGZ`; + print "Move $FILENAMETGZ.tgz to $SOURCE/build/$FILENAMETGZ.tgz\n"; + rename("$BUILDROOT/$FILENAMETGZ.tgz","$SOURCE/build/$FILENAMETGZ.tgz"); + next; + } + + if ($target eq 'ZIP') { + unlink $FILENAMEZIP.zip; + print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n"; + chdir("$BUILDROOT"); + #print "cd $BUILDROOTNT & 7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*\n"; + #$ret=`cd $BUILDROOTNT & 7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*`; + $ret=`7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*`; + print "Move $FILENAMEZIP.zip to $SOURCE/build/$FILENAMEZIP.zip\n"; + rename("$BUILDROOT/$FILENAMEZIP.zip","$SOURCE/build/$FILENAMEZIP.zip"); + next; + } + + if ($target eq 'RPM') { + $BUILDFIC="$FILENAMETGZ.spec"; + unlink $FILENAMETGZ.tgz; + print "Compress $FILENAMETGZ into $FILENAMETGZ.tgz...\n"; + $ret=`tar --exclude-from "$SOURCE/build/tgz/tar.exclude" --directory="$BUILDROOT" -czvf $FILENAMETGZ.tgz $FILENAMETGZ`; + print "Move $FILENAMETGZ.tgz to $SOURCE/build/$FILENAMETGZ.tgz\n"; + rename("$BUILDROOT/$FILENAMETGZ.tgz","$TEMP/$FILENAMETGZ.tgz"); + + print "Launch RPM build (rpm --clean -ba $SOURCE/build/rpm/${BUILDFIC})\n"; + $ret=`rpm --clean -ba $SOURCE/build/rpm/${BUILDFIC}`; + + print "Move /usr/src/RPM/RPMS/noarch/${FILENAMERPM}.noarch.rpm into $SOURCE/build/${FILENAMERPM}.noarch.rpm\n"; + rename("/usr/src/RPM/RPMS/noarch/${FILENAMERPM}.noarch.rpm","$SOURCE/build/${FILENAMERPM}.noarch.rpm"); + next; + } + + if ($target eq 'DEB') { + print "Automatic build for DEB is not yet supported.\n"; + } + + if ($target eq 'EXE') { + unlink "$FILENAMEEXE.exe"; + print "Compress into $FILENAMEEXE.exe by $FILENAMEEXE.nsi...\n"; + $ret=`"$REQUIREMENTTARGET{$target}" /X"SetCompressor bzip2" "$SOURCE\\build\\exe\\$FILENAMEEXE.nsi"`; + print "Move $FILENAMEEXE.exe to $SOURCE/build/$FILENAMEEXE.exe\n"; + rename("$SOURCE\\build\\exe\\$FILENAMEEXE.exe","$SOURCE/build/$FILENAMEEXE.exe"); + next; + } + +} + +print "\n----- Summary -----\n"; +foreach $target (keys %CHOOSEDTARGET) { + if ($CHOOSEDTARGET{$target} < 0) { + print "Package $target not built (bad requirement).\n"; + } else { + print "Package $target built succeessfully in $SOURCE/build/\n"; + } +} + +print "\nPress key to finish..."; +my $WAITKEY=; + +0; diff --git a/build/rpm/dolibarr-2.0.spec b/build/rpm/dolibarr-2.0.spec new file mode 100644 index 00000000000..7e0a2756bef --- /dev/null +++ b/build/rpm/dolibarr-2.0.spec @@ -0,0 +1,119 @@ +%define name dolibarr +%define version 2.0 +# For Mandrake +#%define release 1mdk +# For all other distrib +%define release 1 + +Name: %{name} +Version: %{version} +Release: %{release} +Summary: Dolibarr + +License: GPL +Packager: Laurent Destailleur (Eldy) +Vendor: Dolibarr dev team + +URL: http://%{name}.sourceforge.net +Source: http://dl.sf.net/dolibarr/%{name}-%{version}.tgz +BuildArch: noarch +BuildArchitectures: noarch +BuildRoot: /tmp/%{name}-buildroot +Icon: dolibarr_logo1.gif + +# For Mandrake +Group: Networking/WWW +# For all other distrib +Group: Applications/Internet + +#Requires=perl +AutoReqProv: yes + + +%description +Dolibarr + +%description -l fr +Dolibarr est un logiciel de gestion de PME/PMI, artisans ou +associations. + + +#---- prep +%prep +%setup -q + + +#---- build +%build +# Nothing to build + + +#---- install +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/doc +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/htdocs +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/misc +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/mysql +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/pgsl +mkdir -p $RPM_BUILD_ROOT/usr/local/dolibarr/scripts +#mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/dolibarr +#mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/cron.daily + +#install -m 444 httpd_conf $RPM_BUILD_ROOT/usr/local/dolibarr/doc/httpd_conf +install -m 444 doc/* $RPM_BUILD_ROOT/usr/local/dolibarr/doc +install -m 444 htdocs/* $RPM_BUILD_ROOT/usr/local/dolibarr/htdoc +install -m 444 misc/* $RPM_BUILD_ROOT/usr/local/dolibarr/misc +install -m 444 mysql/* $RPM_BUILD_ROOT/usr/local/dolibarr/mysql +install -m 444 pgsql/* $RPM_BUILD_ROOT/usr/local/dolibarr/pgsql +install -m 444 scripts/* $RPM_BUILD_ROOT/usr/local/dolibarr/scripts + + +#---- clean +%clean +rm -rf $RPM_BUILD_ROOT + + +#---- files +%files +%defattr(-,root,root) +%doc README.TXT +%doc /usr/local/dolibarr/doc/* +%config /%{_sysconfdir}/dolibarr/htdocs/conf/conf.php +%dir /usr/local/dolibarr/doc +%dir /usr/local/dolibarr/htdocs +%dir /usr/local/dolibarr/misc +%dir /usr/local/dolibarr/mysql +%dir /usr/local/dolibarr/pgsql +%dir /usr/local/dolibarr/scripts + +/usr/local/dolibarr/doc/* +/usr/local/dolibarr/htdocs/* +/usr/local/dolibarr/misc/* +/usr/local/dolibarr/mysql/* +/usr/local/dolibarr/pgsql/* +/usr/local/dolibarr/scripts/* + + +#---- post +%post + +# Create a config file +#if [ 1 -eq 1 ]; then +# if [ ! -f /%{_sysconfdir}/dolibarr/dolibarr.`hostname`.conf ]; then +# /bin/cat /%{_sysconfdir}/dolibarr/dolibarr.model.conf | \ +# /usr/bin/perl -p -e 's|^SiteDomain=.*$|SiteDomain="'`hostname`'"|; +# s|^HostAliases=.*$|HostAliases="REGEX[^.*'${HOSTNAME//./\\\\.}'\$]"|; +# ' > /%{_sysconfdir}/dolibarr/dolibarr.`hostname`.conf || : +# fi +#fi + +# Show result +echo +echo ----- dolibarr %version - Dolibarr dev team ----- +echo dolibarr files have been installed in /usr/local/dolibarr +echo + + +%changelog + diff --git a/build/tgz/tar.exclude b/build/tgz/tar.exclude new file mode 100644 index 00000000000..15d5660f1d1 --- /dev/null +++ b/build/tgz/tar.exclude @@ -0,0 +1,4 @@ +doc/dev/dolibarr-phpdoc +htdocs/document +CVS +*~ \ No newline at end of file