From d804ba36a8f896161a3c27ace561189e718653c5 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Wed, 19 Nov 2014 23:37:43 +0100 Subject: [ADD] packaging: windows: bundle wkhtmltopdf and lessc --- setup/win32/setup.nsi | 6 +++++- setup/win32/static/getfiles.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 setup/win32/static/getfiles.sh (limited to 'setup') diff --git a/setup/win32/setup.nsi b/setup/win32/setup.nsi index 6afe1e75fd5..73def65df59 100755 --- a/setup/win32/setup.nsi +++ b/setup/win32/setup.nsi @@ -238,6 +238,10 @@ Section $(TITLE_OpenERP_Server) SectionOpenERP_Server File "start.bat" File "stop.bat" + SetOutPath "$INSTDIR\thirdparty" + File /r "${STATIC_PATH}\wkhtmltopdf\*" + File /r "${STATIC_PATH}\less\*" + # If there is a previous install of the OpenERP Server, keep the login/password from the config file WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_host" $TextPostgreSQLHostname WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_user" $TextPostgreSQLUsername @@ -324,7 +328,7 @@ Section "Uninstall" Rmdir /r "$INSTDIR\server" Rmdir /r "$INSTDIR\service" - + Rmdir /r "$INSTDIR\thirdparty" DeleteRegKey HKLM "${UNINSTALL_REGISTRY_KEY}" SectionEnd diff --git a/setup/win32/static/getfiles.sh b/setup/win32/static/getfiles.sh new file mode 100755 index 00000000000..9d0ebd556ad --- /dev/null +++ b/setup/win32/static/getfiles.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# apt-get install p7zip-full +set -e + +mkdir -p wkhtmltopdf less/node_modules +TEMPDIR=`mktemp -d -t odoo_windows_build_XXXX` +function cleanup { + rm -rf $TEMPDIR +} +trap cleanup EXIT + +# postgresql +wget -q http://get.enterprisedb.com/postgresql/postgresql-9.3.5-1-windows.exe + +# wkhtmltopdf +wget -q -P $TEMPDIR http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1.2_msvc2013-win32.exe +7z x -o$TEMPDIR $TEMPDIR/wkhtmltox-0.12.1.2_msvc2013-win32.exe +cp $TEMPDIR/bin/wkhtmltopdf.exe ./wkhtmltopdf + +# less +wget -q -P ./less http://nodejs.org/dist/latest/node.exe +echo '"%~dp0\node.exe" "%~dp0\.\node_modules\less.js\bin\lessc" %*' > ./less/lessc.cmd +pushd ./less/node_modules +wget -q https://github.com/less/less.js/archive/v2.0.0.tar.gz -O - | tar xz && mv less.js-2.0.0 less.js +wget -q https://github.com/then/promise/archive/6.0.1.tar.gz -O - | tar xz && mv promise-6.0.1 promise +wget -q https://github.com/kriskowal/asap/archive/v2.0.0.tar.gz -O - | tar xz && mv asap-2.0.0 asap +wget -q -P $TEMPDIR https://github.com/less/less-plugin-clean-css/archive/clean-css-3.zip +unzip $TEMPDIR/clean-css-3.zip && mv less-plugin-clean-css-clean-css-3 less-plugin-clean-css-clean-css -- cgit v1.2.3 From f76d4525a3295c31f830956f02c65556c5ffc7d0 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Fri, 21 Nov 2014 17:38:50 +0100 Subject: [ADD] tools: handling of bin_path key in find_in_path The openerp-server.conf now generates the bin_path record, in order to resolve calls to external binaries served in the thirdparty dir. Adpated report.py to use find_in_path and not directly which. --- setup/win32/setup.nsi | 1 + 1 file changed, 1 insertion(+) (limited to 'setup') diff --git a/setup/win32/setup.nsi b/setup/win32/setup.nsi index 73def65df59..992f9215f95 100755 --- a/setup/win32/setup.nsi +++ b/setup/win32/setup.nsi @@ -249,6 +249,7 @@ Section $(TITLE_OpenERP_Server) SectionOpenERP_Server WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_port" $TextPostgreSQLPort # Fix the addons path WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "addons_path" "$INSTDIR\server\openerp\addons" + WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "bin_path" "$INSTDIR\thirdparty" # if we're going to install postgresql force it's path, # otherwise we consider it's always done and/or correctly tune by users -- cgit v1.2.3 From 1e009e4c454ce0ddbc9983abe7f48409cb524312 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Fri, 21 Nov 2014 11:34:16 +0100 Subject: [FIX] packaging: windows: installer images odooification --- setup/win32/static/pixmaps/openerp-header.bmp | Bin 19038 -> 0 bytes setup/win32/static/pixmaps/openerp-icon.ico | Bin 2238 -> 2238 bytes setup/win32/static/pixmaps/openerp-intro.bmp | Bin 206054 -> 154542 bytes setup/win32/static/pixmaps/openerp-slogan.bmp | Bin 142054 -> 106554 bytes setup/win32/static/pixmaps/openerp.ico | Bin 4286 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 setup/win32/static/pixmaps/openerp-header.bmp delete mode 100644 setup/win32/static/pixmaps/openerp.ico (limited to 'setup') diff --git a/setup/win32/static/pixmaps/openerp-header.bmp b/setup/win32/static/pixmaps/openerp-header.bmp deleted file mode 100644 index 61226b99ad7..00000000000 Binary files a/setup/win32/static/pixmaps/openerp-header.bmp and /dev/null differ diff --git a/setup/win32/static/pixmaps/openerp-icon.ico b/setup/win32/static/pixmaps/openerp-icon.ico index 89ed393f7cc..1bb1c899057 100644 Binary files a/setup/win32/static/pixmaps/openerp-icon.ico and b/setup/win32/static/pixmaps/openerp-icon.ico differ diff --git a/setup/win32/static/pixmaps/openerp-intro.bmp b/setup/win32/static/pixmaps/openerp-intro.bmp index a7e21abaa7b..92de71c1cea 100644 Binary files a/setup/win32/static/pixmaps/openerp-intro.bmp and b/setup/win32/static/pixmaps/openerp-intro.bmp differ diff --git a/setup/win32/static/pixmaps/openerp-slogan.bmp b/setup/win32/static/pixmaps/openerp-slogan.bmp index a3cffd104f2..eab825249c4 100644 Binary files a/setup/win32/static/pixmaps/openerp-slogan.bmp and b/setup/win32/static/pixmaps/openerp-slogan.bmp differ diff --git a/setup/win32/static/pixmaps/openerp.ico b/setup/win32/static/pixmaps/openerp.ico deleted file mode 100644 index cde3e961e79..00000000000 Binary files a/setup/win32/static/pixmaps/openerp.ico and /dev/null differ -- cgit v1.2.3 From cc11331733a5cb8aff6c7f0d4def1404e83b80e8 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Fri, 21 Nov 2014 13:40:17 +0100 Subject: [FIX] Packaging: allow publishing releases in --no-testing --- setup/package.py | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index 7f90c5cea9c..7040f38824f 100755 --- a/setup/package.py +++ b/setup/package.py @@ -370,36 +370,36 @@ def main(): try: if not o.no_tarball: build_tgz(o) - if not o.no_testing: - try: + try: + if not o.no_testing: test_tgz(o) - publish(o, 'odoo.tar.gz') - except Exception, e: - print("Won't publish the tgz release.\n Exception: %s" % str(e)) + publish(o, 'odoo.tar.gz') + except Exception, e: + print("Won't publish the tgz release.\n Exception: %s" % str(e)) if not o.no_debian: build_deb(o) - if not o.no_testing: - try: + try: + if not o.no_testing: test_deb(o) - publish(o, ['odoo.deb', 'odoo.dsc', 'odoo_amd64.changes', 'odoo.deb.tar.gz']) - except Exception, e: - print("Won't publish the deb release.\n Exception: %s" % str(e)) + publish(o, ['odoo.deb', 'odoo.dsc', 'odoo_amd64.changes', 'odoo.deb.tar.gz']) + except Exception, e: + print("Won't publish the deb release.\n Exception: %s" % str(e)) if not o.no_rpm: build_rpm(o) - if not o.no_testing: - try: + try: + if not o.no_testing: test_rpm(o) - publish(o, ['odoo.noarch.rpm', 'odoo.src.rpm']) - except Exception, e: - print("Won't publish the rpm release.\n Exception: %s" % str(e)) + publish(o, ['odoo.noarch.rpm', 'odoo.src.rpm']) + except Exception, e: + print("Won't publish the rpm release.\n Exception: %s" % str(e)) if not o.no_windows: build_exe(o) - if not o.no_testing: - try: + try: + if not o.no_testing: test_exe(o) - publish(o, 'odoo.exe') - except Exception, e: - print("Won't publish the exe release.\n Exception: %s" % str(e)) + publish(o, 'odoo.exe') + except Exception, e: + print("Won't publish the exe release.\n Exception: %s" % str(e)) except: pass finally: -- cgit v1.2.3 From 1c41f3699303da770797002025b7c8226fb562eb Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Mon, 24 Nov 2014 16:24:46 +0100 Subject: [IMP] Packaging: Debian: sign packages with gpg key --- setup/package.py | 63 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 13 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index 7040f38824f..a1330261ecb 100755 --- a/setup/package.py +++ b/setup/package.py @@ -41,7 +41,7 @@ from tempfile import NamedTemporaryFile execfile(join(dirname(__file__), '..', 'openerp', 'release.py')) version = version.split('-')[0] -timestamp = time.strftime("%Y%m%d-%H%M%S", time.gmtime()) +timestamp = time.strftime("%Y%m%d", time.gmtime()) PUBLISH_DIRS = { 'tar.gz': 'src', 'exe': 'exe', @@ -96,19 +96,18 @@ def publish(o, releases): release_extension = PUBLISH_DIRS[extension][1] if isinstance(PUBLISH_DIRS[extension], list) else extension release_dir = PUBLISH_DIRS[extension][0] if isinstance(PUBLISH_DIRS[extension], list) else PUBLISH_DIRS[extension] - release_filename = 'odoo_%s-%s.%s' % (version, timestamp, release_extension) + arch = "" + if release_extension == 'deb': + arch = "_all" + elif release_extension == "changes": + arch = "_amd64" + + release_filename = 'odoo_%s.%s%s.%s' % (version, timestamp, arch, release_extension) release_path = join(o.pub, release_dir, release_filename) system('mkdir -p %s' % join(o.pub, release_dir)) shutil.move(join(o.build_dir, release), release_path) - if release_extension == 'deb': - temp_path = tempfile.mkdtemp(suffix='debPackages') - system(['cp', release_path, temp_path]) - with open(os.path.join(o.pub, 'deb', 'Packages'), 'w') as out: - subprocess.call(['dpkg-scanpackages', '.'], stdout=out, cwd=temp_path) - shutil.rmtree(temp_path) - # Latest/symlink handler release_abspath = abspath(release_path) latest_abspath = release_abspath.replace(timestamp, 'latest') @@ -118,11 +117,15 @@ def publish(o, releases): os.symlink(release_abspath, latest_abspath) + return release_path + + published = [] if isinstance(releases, basestring): - _publish(o, releases) + published.append(_publish(o, releases)) elif isinstance(releases, list): for release in releases: - _publish(o, release) + published.append(_publish(o, release)) + return published class OdooDocker(object): def __init__(self): @@ -257,7 +260,7 @@ def build_tgz(o): system(['cp', glob('%s/dist/openerp-*.tar.gz' % o.build_dir)[0], '%s/odoo.tar.gz' % o.build_dir]) def build_deb(o): - system(['dpkg-buildpackage', '-rfakeroot', '-uc', '-us'], o.build_dir) + system(['dpkg-buildpackage', '-rfakeroot'], o.build_dir) system(['cp', glob('%s/../odoo_*.deb' % o.build_dir)[0], '%s/odoo.deb' % o.build_dir]) system(['cp', glob('%s/../odoo_*.dsc' % o.build_dir)[0], '%s/odoo.dsc' % o.build_dir]) system(['cp', glob('%s/../odoo_*_amd64.changes' % o.build_dir)[0], '%s/odoo_amd64.changes' % o.build_dir]) @@ -331,6 +334,38 @@ def test_rpm(o): def test_exe(o): KVMWinTestExe(o, o.vm_winxp_image, o.vm_winxp_ssh_key, o.vm_winxp_login).start() +#--------------------------------------------------------- +# Generates Packages, Sources and Release files of debian package +#--------------------------------------------------------- +def gen_deb_package(o, published_files): + # Executes command to produce file_name in path, and moves it to o.pub/deb + def _gen_file(o, (command, file_name), path): + cur_tmp_file_path = os.path.join(path, file_name) + with open(cur_tmp_file_path, 'w') as out: + subprocess.call(command, stdout=out, cwd=path) + system(['cp', cur_tmp_file_path, os.path.join(o.pub, 'deb', file_name)]) + + # Copy files to a temp directory (required because the working directory must contain only the files of the last release) + temp_path = tempfile.mkdtemp(suffix='debPackages') + for pub_file_path in published_files: + system(['cp', pub_file_path, temp_path]) + + commands = [ + (['dpkg-scanpackages', '.'], "Packages"), # Generate Packages file + (['dpkg-scansources', '.'], "Sources"), # Generate Sources file + (['apt-ftparchive', 'release', '.'], "Release") # Generate Release file + ] + # Generate files + for command in commands: + _gen_file(o, command, temp_path) + # Remove temp directory + shutil.rmtree(temp_path) + + # Generate Release.gpg (= signed Release) + # Options -abs: -a (Create ASCII armored output), -b (Make a detach signature), -s (Make a signature) + subprocess.call(['rm', 'Release.gpg'], cwd=os.path.join(o.pub, 'deb')) + subprocess.call(['gpg', '-abs', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) + #---------------------------------------------------------- # Options and Main #---------------------------------------------------------- @@ -362,6 +397,7 @@ def options(): o.version_full = '%s-%s' % (o.version, timestamp) o.work = join(o.build_dir, 'openerp-%s' % o.version_full) o.work_addons = join(o.work, 'openerp', 'addons') + return o def main(): @@ -381,7 +417,8 @@ def main(): try: if not o.no_testing: test_deb(o) - publish(o, ['odoo.deb', 'odoo.dsc', 'odoo_amd64.changes', 'odoo.deb.tar.gz']) + published_files = publish(o, ['odoo.deb', 'odoo.dsc', 'odoo_amd64.changes', 'odoo.deb.tar.gz']) + gen_deb_package(o, published_files) except Exception, e: print("Won't publish the deb release.\n Exception: %s" % str(e)) if not o.no_rpm: -- cgit v1.2.3 From 50a4da99f051d125b8435477657ee2b115a8e0bd Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Tue, 25 Nov 2014 12:25:01 +0100 Subject: [FIX] Packaging: better filename handling Allow to 1) avoid a special case for debian packages in _publish function 2) publish debian packages with correct filename (ie keeping _amd64, _all) --- setup/package.py | 92 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 39 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index a1330261ecb..f8a90555e59 100755 --- a/setup/package.py +++ b/setup/package.py @@ -43,15 +43,19 @@ version = version.split('-')[0] timestamp = time.strftime("%Y%m%d", time.gmtime()) PUBLISH_DIRS = { - 'tar.gz': 'src', - 'exe': 'exe', - 'deb': 'deb', - 'dsc': 'deb', - 'changes': 'deb', - 'deb.tar.gz': ['deb', 'tar.gz'], - 'noarch.rpm': 'rpm', - 'src.rpm': 'rpm', + 'debian': 'deb', + 'redhat': 'rpm', + 'tarball': 'src', + 'windows': 'exe', } +EXTENSIONS = [ + '.tar.gz', + '.deb', + '.dsc', + '.changes', + '.noarch.rpm', + '.exe', +] def mkdir(d): if not os.path.isdir(d): @@ -90,19 +94,26 @@ def _rpc_count_modules(addr='http://127.0.0.1', port=8069, dbname='mycompany'): print("Package test: FAILED. Not able to install base.") raise Exception("Installation of package failed") -def publish(o, releases): +def publish(o, type, releases): def _publish(o, release): - extension = ''.join(release.split('.', 1)[1]) - release_extension = PUBLISH_DIRS[extension][1] if isinstance(PUBLISH_DIRS[extension], list) else extension - release_dir = PUBLISH_DIRS[extension][0] if isinstance(PUBLISH_DIRS[extension], list) else PUBLISH_DIRS[extension] - - arch = "" - if release_extension == 'deb': - arch = "_all" - elif release_extension == "changes": - arch = "_amd64" - - release_filename = 'odoo_%s.%s%s.%s' % (version, timestamp, arch, release_extension) + arch = '' + filename = release.split(os.path.sep)[-1] + + extension = None + for EXTENSION in EXTENSIONS: + if filename.endswith(EXTENSION): + extension = EXTENSION + filename = filename.replace(extension, '') + break + if extension is None: + raise Exception("Extension of %s is not handled" % filename) + + # keep _all or _amd64 + if filename.count('_') > 1: + arch = '_' + filename.split('_')[-1] + + release_dir = PUBLISH_DIRS[type] + release_filename = 'odoo_%s.%s%s%s' % (version, timestamp, arch, extension) release_path = join(o.pub, release_dir, release_filename) system('mkdir -p %s' % join(o.pub, release_dir)) @@ -261,10 +272,10 @@ def build_tgz(o): def build_deb(o): system(['dpkg-buildpackage', '-rfakeroot'], o.build_dir) - system(['cp', glob('%s/../odoo_*.deb' % o.build_dir)[0], '%s/odoo.deb' % o.build_dir]) - system(['cp', glob('%s/../odoo_*.dsc' % o.build_dir)[0], '%s/odoo.dsc' % o.build_dir]) - system(['cp', glob('%s/../odoo_*_amd64.changes' % o.build_dir)[0], '%s/odoo_amd64.changes' % o.build_dir]) - system(['cp', glob('%s/../odoo_*.tar.gz' % o.build_dir)[0], '%s/odoo.deb.tar.gz' % o.build_dir]) + system(['mv', glob('%s/../odoo_*.deb' % o.build_dir)[0], '%s' % o.build_dir]) + system(['mv', glob('%s/../odoo_*.dsc' % o.build_dir)[0], '%s' % o.build_dir]) + system(['mv', glob('%s/../odoo_*_amd64.changes' % o.build_dir)[0], '%s' % o.build_dir]) + system(['mv', glob('%s/../odoo_*.tar.gz' % o.build_dir)[0], '%s' % o.build_dir]) def build_rpm(o): system(['python2', 'setup.py', '--quiet', 'bdist_rpm'], o.build_dir) @@ -298,7 +309,7 @@ def test_tgz(o): def test_deb(o): with docker('debian:stable', o.build_dir, o.pub) as wheezy: - wheezy.release = 'odoo.deb' + wheezy.release = '*.deb' wheezy.system('/usr/bin/apt-get update -qq && /usr/bin/apt-get upgrade -qq -y') wheezy.system("apt-get install postgresql -y") wheezy.system("service postgresql start") @@ -345,16 +356,17 @@ def gen_deb_package(o, published_files): subprocess.call(command, stdout=out, cwd=path) system(['cp', cur_tmp_file_path, os.path.join(o.pub, 'deb', file_name)]) - # Copy files to a temp directory (required because the working directory must contain only the files of the last release) + # Copy files to a temp directory (required because the working directory must contain only the + # files of the last release) temp_path = tempfile.mkdtemp(suffix='debPackages') for pub_file_path in published_files: system(['cp', pub_file_path, temp_path]) commands = [ - (['dpkg-scanpackages', '.'], "Packages"), # Generate Packages file - (['dpkg-scansources', '.'], "Sources"), # Generate Sources file - (['apt-ftparchive', 'release', '.'], "Release") # Generate Release file - ] + (['dpkg-scanpackages', '.'], "Packages"), # Generate Packages file + (['dpkg-scansources', '.'], "Sources"), # Generate Sources file + (['apt-ftparchive', 'release', '.'], "Release") # Generate Release file + ] # Generate files for command in commands: _gen_file(o, command, temp_path) @@ -363,8 +375,7 @@ def gen_deb_package(o, published_files): # Generate Release.gpg (= signed Release) # Options -abs: -a (Create ASCII armored output), -b (Make a detach signature), -s (Make a signature) - subprocess.call(['rm', 'Release.gpg'], cwd=os.path.join(o.pub, 'deb')) - subprocess.call(['gpg', '-abs', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) + subprocess.call(['gpg', '--yes', '-abs', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) #---------------------------------------------------------- # Options and Main @@ -409,7 +420,7 @@ def main(): try: if not o.no_testing: test_tgz(o) - publish(o, 'odoo.tar.gz') + published_files = publish(o, 'tarball', ['odoo.tar.gz']) except Exception, e: print("Won't publish the tgz release.\n Exception: %s" % str(e)) if not o.no_debian: @@ -417,7 +428,13 @@ def main(): try: if not o.no_testing: test_deb(o) - published_files = publish(o, ['odoo.deb', 'odoo.dsc', 'odoo_amd64.changes', 'odoo.deb.tar.gz']) + + to_publish = [] + to_publish.append(glob("%s/odoo_*.deb" % o.build_dir)[0]) + to_publish.append(glob("%s/odoo_*.dsc" % o.build_dir)[0]) + to_publish.append(glob("%s/odoo_*.changes" % o.build_dir)[0]) + to_publish.append(glob("%s/odoo_*.tar.gz" % o.build_dir)[0]) + published_files = publish(o, 'debian', to_publish) gen_deb_package(o, published_files) except Exception, e: print("Won't publish the deb release.\n Exception: %s" % str(e)) @@ -426,7 +443,7 @@ def main(): try: if not o.no_testing: test_rpm(o) - publish(o, ['odoo.noarch.rpm', 'odoo.src.rpm']) + published_files = publish(o, 'redhat', ['odoo.noarch.rpm']) except Exception, e: print("Won't publish the rpm release.\n Exception: %s" % str(e)) if not o.no_windows: @@ -434,15 +451,12 @@ def main(): try: if not o.no_testing: test_exe(o) - publish(o, 'odoo.exe') + published_files = publish(o, 'windows', ['odoo.exe']) except Exception, e: print("Won't publish the exe release.\n Exception: %s" % str(e)) except: pass finally: - for leftover in glob('%s/../odoo_*' % o.build_dir): - os.remove(leftover) - shutil.rmtree(o.build_dir) print('Build dir %s removed' % o.build_dir) -- cgit v1.2.3 From be96dd85959528b86f7535b9b4cc0dc86981ca33 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Wed, 26 Nov 2014 14:08:05 +0100 Subject: [FIX] Packaging: RedHat: install in /usr and add systemd unit file By default, the package was installed in /usr/local/lib/python2.7 in CentOS7. It is problematic because most of other python packages are installed in /usr/lib and also because /usr/local/lib is not in the default PYTHONPATH. It's fixed by overriding the install script and forcing prefix to be /usr. Added a minimal systemd unitfile. Adapted tests accordingly. --- setup/package.py | 16 ++++---- setup/redhat/install.sh | 3 ++ setup/redhat/postinstall.sh | 89 +++++++-------------------------------------- 3 files changed, 26 insertions(+), 82 deletions(-) create mode 100644 setup/redhat/install.sh (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index f8a90555e59..ec95448bcf6 100755 --- a/setup/package.py +++ b/setup/package.py @@ -324,21 +324,23 @@ def test_deb(o): def test_rpm(o): with docker('centos:centos7', o.build_dir, o.pub) as centos7: centos7.release = 'odoo.noarch.rpm' - centos7.system('rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm') - centos7.system('yum update -y && yum upgrade -y') - centos7.system('yum install python-pip gcc python-devel -y') + # Dependencies + centos7.system('yum install -d 0 -e 0 epel-release -y') + centos7.system('yum update -d 0 -e 0 -y') + centos7.system('yum install -d 0 -e 0 python-pip gcc python-devel -y') centos7.system('pip install pydot pyPdf vatnumber xlwt http://download.gna.org/pychart/PyChart-1.39.tar.gz') - centos7.system('yum install postgresql postgresql-server postgresql-libs postgresql-contrib postgresql-devel -y') + # Manual install/start of postgres + centos7.system('yum install -d 0 -e 0 postgresql postgresql-server postgresql-libs postgresql-contrib postgresql-devel -y') centos7.system('mkdir -p /var/lib/postgres/data') centos7.system('chown -R postgres:postgres /var/lib/postgres/data') centos7.system('chmod 0700 /var/lib/postgres/data') centos7.system('su postgres -c "initdb -D /var/lib/postgres/data -E UTF-8"') centos7.system('cp /usr/share/pgsql/postgresql.conf.sample /var/lib/postgres/data/postgresql.conf') centos7.system('su postgres -c "/usr/bin/pg_ctl -D /var/lib/postgres/data start"') + centos7.system('sleep 5') centos7.system('su postgres -c "createdb mycompany"') - centos7.system('export PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python2.7/dist-packages') - centos7.system('su postgres -c "createdb mycompany"') - centos7.system('yum install /opt/release/%s -y' % centos7.release) + # Odoo install + centos7.system('yum install -d 0 -e 0 /opt/release/%s -y' % centos7.release) centos7.system('su odoo -s /bin/bash -c "openerp-server -c /etc/odoo/openerp-server.conf -d mycompany -i base --stop-after-init"') centos7.system('su odoo -s /bin/bash -c "openerp-server -c /etc/odoo/openerp-server.conf -d mycompany &"') diff --git a/setup/redhat/install.sh b/setup/redhat/install.sh new file mode 100644 index 00000000000..a74c7cd975b --- /dev/null +++ b/setup/redhat/install.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -e +python setup.py install --prefix=/usr --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES diff --git a/setup/redhat/postinstall.sh b/setup/redhat/postinstall.sh index 437fdcec426..d12621bf8a0 100644 --- a/setup/redhat/postinstall.sh +++ b/setup/redhat/postinstall.sh @@ -25,7 +25,7 @@ db_host = False db_port = False db_user = $ODOO_USER db_password = False -addons_path = /usr/local/lib/python2.7/dist-packages/openerp/addons +addons_path = /usr/lib/python2.7/site-packages/openerp/addons " > $ODOO_CONFIGURATION_FILE chown $ODOO_USER:$ODOO_GROUP $ODOO_CONFIGURATION_FILE chmod 0640 $ODOO_CONFIGURATION_FILE @@ -37,81 +37,20 @@ chmod 0750 $ODOO_LOG_DIR mkdir -p $ODOO_DATA_DIR chown $ODOO_USER:$ODOO_GROUP $ODOO_DATA_DIR -INIT_FILE=/etc/init.d/openerp +INIT_FILE=/lib/systemd/system/odoo.service touch $INIT_FILE chmod 0700 $INIT_FILE -# FIXME this is a copy of debian/init file. -# If anyone know how to tell bdist_rpm to use this file directly... cat << 'EOF' > $INIT_FILE -#!/bin/bash -### BEGIN INIT INFO -# Provides: openerp-server -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start openerp daemon at boot time -# Description: Enable service provided by daemon. -# X-Interactive: true -### END INIT INFO -## more info: http://wiki.debian.org/LSBInitScripts - -PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin -DAEMON=/usr/bin/openerp-server -NAME=openerp -DESC=openerp -CONFIG=/etc/odoo/openerp-server.conf -LOGFILE=/var/log/odoo/openerp-server.log -PIDFILE=/var/run/${NAME}.pid -USER=odoo -export LOGNAME=$USER - -test -x $DAEMON || exit 0 -set -e - -function _start() { - start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE -} - -function _stop() { - start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3 - rm -f $PIDFILE -} - -function _status() { - start-stop-daemon --status --quiet --pidfile $PIDFILE - return $? -} - - -case "$1" in - start) - echo -n "Starting $DESC: " - _start - echo "ok" - ;; - stop) - echo -n "Stopping $DESC: " - _stop - echo "ok" - ;; - restart|force-reload) - echo -n "Restarting $DESC: " - _stop - sleep 1 - _start - echo "ok" - ;; - status) - echo -n "Status of $DESC: " - _status && echo "running" || echo "stopped" - ;; - *) - N=/etc/init.d/$NAME - echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 - exit 1 - ;; -esac - -exit 0 +[Unit] +Description=Odoo Open Source ERP and CRM +After=network.target + +[Service] +Type=simple +User=odoo +Group=odoo +ExecStart=/usr/bin/odoo.py --config=/etc/odoo/openerp-server.conf + +[Install] +WantedBy=multi-user.target EOF -- cgit v1.2.3 From 56b61da16387e642130477e604022207a77e3f74 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Wed, 26 Nov 2014 15:53:36 +0100 Subject: [FIX] Packaging: RedHat: dependencies management PyChart is now in the EPEL repo so we now list it as required in setup.cfg. The other mandatory lib not provided by EPEL are pyPdf, vatnumber and pydot and are now installed by easy_install during the post install. --- setup/package.py | 2 -- setup/redhat/postinstall.sh | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index ec95448bcf6..f803c688676 100755 --- a/setup/package.py +++ b/setup/package.py @@ -327,8 +327,6 @@ def test_rpm(o): # Dependencies centos7.system('yum install -d 0 -e 0 epel-release -y') centos7.system('yum update -d 0 -e 0 -y') - centos7.system('yum install -d 0 -e 0 python-pip gcc python-devel -y') - centos7.system('pip install pydot pyPdf vatnumber xlwt http://download.gna.org/pychart/PyChart-1.39.tar.gz') # Manual install/start of postgres centos7.system('yum install -d 0 -e 0 postgresql postgresql-server postgresql-libs postgresql-contrib postgresql-devel -y') centos7.system('mkdir -p /var/lib/postgres/data') diff --git a/setup/redhat/postinstall.sh b/setup/redhat/postinstall.sh index d12621bf8a0..ccc8fd63ebe 100644 --- a/setup/redhat/postinstall.sh +++ b/setup/redhat/postinstall.sh @@ -54,3 +54,4 @@ ExecStart=/usr/bin/odoo.py --config=/etc/odoo/openerp-server.conf [Install] WantedBy=multi-user.target EOF +easy_install pyPdf vatnumber pydot -- cgit v1.2.3 From e874cdafaa9675251cd7852b8e9b1662cee7d19a Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Wed, 26 Nov 2014 17:45:39 +0100 Subject: [IMP] Packaging: RedHat: sign packages with gpg key --- setup/package.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index f803c688676..c4f2f48458f 100755 --- a/setup/package.py +++ b/setup/package.py @@ -377,6 +377,27 @@ def gen_deb_package(o, published_files): # Options -abs: -a (Create ASCII armored output), -b (Make a detach signature), -s (Make a signature) subprocess.call(['gpg', '--yes', '-abs', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) +#--------------------------------------------------------- +# Generates an RPM repo +#--------------------------------------------------------- +def gen_rpm_repo(o, file_name): + # Sign the RPM + subprocess.call(['rpm', '--resign', file_name], cwd=os.path.join(o.pub, 'rpm')) + + # Removes the old repodata + subprocess.call(['rm', '-rf', os.path.join(o.pub, 'rpm', 'repodata')]) + + # Copy files to a temp directory (required because the working directory must contain only the + # files of the last release) + temp_path = tempfile.mkdtemp(suffix='rpmPackages') + subprocess.call(['cp', file_name, temp_path]) + + subprocess.call(['createrepo', temp_path]) # creates a repodata folder in temp_path + subprocess.call(['cp', '-r', os.path.join(temp_path, "repodata"), os.path.join(o.pub, 'rpm')]) + + # Remove temp directory + shutil.rmtree(temp_path) + #---------------------------------------------------------- # Options and Main #---------------------------------------------------------- @@ -444,6 +465,7 @@ def main(): if not o.no_testing: test_rpm(o) published_files = publish(o, 'redhat', ['odoo.noarch.rpm']) + gen_rpm_repo(o, published_files[0]) except Exception, e: print("Won't publish the rpm release.\n Exception: %s" % str(e)) if not o.no_windows: -- cgit v1.2.3 From d26a354c99565e4954f7e7f49af089f2c7c092b0 Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Wed, 26 Nov 2014 21:42:24 +0100 Subject: [FIX] Packaging: lib name from openerp to odoo It's about time --- setup/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index c4f2f48458f..bf109ace223 100755 --- a/setup/package.py +++ b/setup/package.py @@ -268,7 +268,7 @@ def _prepare_build_dir(o): def build_tgz(o): system(['python2', 'setup.py', '--quiet', 'sdist'], o.build_dir) - system(['cp', glob('%s/dist/openerp-*.tar.gz' % o.build_dir)[0], '%s/odoo.tar.gz' % o.build_dir]) + system(['cp', glob('%s/dist/odoo-*.tar.gz' % o.build_dir)[0], '%s/odoo.tar.gz' % o.build_dir]) def build_deb(o): system(['dpkg-buildpackage', '-rfakeroot'], o.build_dir) @@ -279,8 +279,7 @@ def build_deb(o): def build_rpm(o): system(['python2', 'setup.py', '--quiet', 'bdist_rpm'], o.build_dir) - system(['cp', glob('%s/dist/openerp-*.noarch.rpm' % o.build_dir)[0], '%s/odoo.noarch.rpm' % o.build_dir]) - system(['cp', glob('%s/dist/openerp-*.src.rpm' % o.build_dir)[0], '%s/odoo.src.rpm' % o.build_dir]) + system(['cp', glob('%s/dist/odoo-*.noarch.rpm' % o.build_dir)[0], '%s/odoo.noarch.rpm' % o.build_dir]) def build_exe(o): KVMWinBuildExe(o, o.vm_winxp_image, o.vm_winxp_ssh_key, o.vm_winxp_login).start() -- cgit v1.2.3 From b0722d3e5d6bebdf19dc29b8ba04651ae508839f Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Thu, 27 Nov 2014 14:29:43 +0100 Subject: [FIX] Packaging: batch the signing procedure --- setup/package.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'setup') diff --git a/setup/package.py b/setup/package.py index bf109ace223..3047be9dc64 100755 --- a/setup/package.py +++ b/setup/package.py @@ -32,6 +32,7 @@ import xmlrpclib from contextlib import contextmanager from glob import glob from os.path import abspath, dirname, join +from sys import stdout from tempfile import NamedTemporaryFile @@ -40,7 +41,8 @@ from tempfile import NamedTemporaryFile #---------------------------------------------------------- execfile(join(dirname(__file__), '..', 'openerp', 'release.py')) version = version.split('-')[0] - +GPGPASSPHRASE = os.getenv('GPGPASSPHRASE') +GPGID = os.getenv('GPGID') timestamp = time.strftime("%Y%m%d", time.gmtime()) PUBLISH_DIRS = { 'debian': 'deb', @@ -271,7 +273,13 @@ def build_tgz(o): system(['cp', glob('%s/dist/odoo-*.tar.gz' % o.build_dir)[0], '%s/odoo.tar.gz' % o.build_dir]) def build_deb(o): - system(['dpkg-buildpackage', '-rfakeroot'], o.build_dir) + deb = pexpect.spawn('dpkg-buildpackage -rfakeroot -k%s' % GPGID, cwd=o.build_dir) + deb.logfile = stdout + deb.expect_exact('Enter passphrase: ', timeout=1200) + deb.send(GPGPASSPHRASE + '\r\n') + deb.expect_exact('Enter passphrase: ') + deb.send(GPGPASSPHRASE + '\r\n') + deb.expect(pexpect.EOF) system(['mv', glob('%s/../odoo_*.deb' % o.build_dir)[0], '%s' % o.build_dir]) system(['mv', glob('%s/../odoo_*.dsc' % o.build_dir)[0], '%s' % o.build_dir]) system(['mv', glob('%s/../odoo_*_amd64.changes' % o.build_dir)[0], '%s' % o.build_dir]) @@ -374,14 +382,17 @@ def gen_deb_package(o, published_files): # Generate Release.gpg (= signed Release) # Options -abs: -a (Create ASCII armored output), -b (Make a detach signature), -s (Make a signature) - subprocess.call(['gpg', '--yes', '-abs', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) + subprocess.call(['gpg', '--default-key', GPGID, '--passphrase', GPGPASSPHRASE, '--yes', '-abs', '--no-tty', '-o', 'Release.gpg', 'Release'], cwd=os.path.join(o.pub, 'deb')) #--------------------------------------------------------- # Generates an RPM repo #--------------------------------------------------------- def gen_rpm_repo(o, file_name): # Sign the RPM - subprocess.call(['rpm', '--resign', file_name], cwd=os.path.join(o.pub, 'rpm')) + rpmsign = pexpect.spawn('/bin/bash', ['-c', 'rpm --resign %s' % file_name], cwd=os.path.join(o.pub, 'rpm')) + rpmsign.expect_exact('Enter pass phrase: ') + rpmsign.send(GPGPASSPHRASE + '\r\n') + rpmsign.expect(pexpect.EOF) # Removes the old repodata subprocess.call(['rm', '-rf', os.path.join(o.pub, 'rpm', 'repodata')]) -- cgit v1.2.3 From 9d0bd2807e2c2b949ece62fd6be04a1cf39c8e0d Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Fri, 28 Nov 2014 16:19:58 +0100 Subject: [FIX] Packaging: RedHat: (post-)install shell shebang --- setup/redhat/install.sh | 2 +- setup/redhat/postinstall.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'setup') diff --git a/setup/redhat/install.sh b/setup/redhat/install.sh index a74c7cd975b..e214d04acff 100644 --- a/setup/redhat/install.sh +++ b/setup/redhat/install.sh @@ -1,3 +1,3 @@ -#!/usr/bin/env bash +#!/bin/sh set -e python setup.py install --prefix=/usr --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES diff --git a/setup/redhat/postinstall.sh b/setup/redhat/postinstall.sh index ccc8fd63ebe..c7e5e9d8eb2 100644 --- a/setup/redhat/postinstall.sh +++ b/setup/redhat/postinstall.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh set -e -- cgit v1.2.3