From a7b5a9646bb29de6228cb376f3c9e6d2ece1f555 Mon Sep 17 00:00:00 2001 From: Ben Greene Date: Thu, 9 Jun 2016 00:32:32 +0100 Subject: [PATCH 1/3] Add rpm post and pre tasks --- Makefile | 6 +++++- multicorn.control | 2 +- rpm/post_install.sh | 3 +++ rpm/pre_uninstall.sh | 3 +++ setup.py | 47 ++++++++++++++++++++++++++++++++++++-------- 5 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 rpm/post_install.sh create mode 100644 rpm/pre_uninstall.sh diff --git a/Makefile b/Makefile index 013eb39ec..d43e46021 100755 --- a/Makefile +++ b/Makefile @@ -19,7 +19,11 @@ directories.stamp: $(OBJS): directories.stamp -install: python_code +install: python_code + +rpm: setup.py + @echo "About to make RPM" + $(PYTHON) ./setup.py bdist --format=rpm sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql directories.stamp cp $< $@ diff --git a/multicorn.control b/multicorn.control index 29b1ce4df..689b8a204 100755 --- a/multicorn.control +++ b/multicorn.control @@ -1,4 +1,4 @@ comment = 'Multicorn Python bindings for Postgres 9.2.* Foreign Data Wrapper' default_version = '1.3.2' module_pathname = '$libdir/multicorn' -relocatable = true +relocatable = True diff --git a/rpm/post_install.sh b/rpm/post_install.sh new file mode 100644 index 000000000..7e59df133 --- /dev/null +++ b/rpm/post_install.sh @@ -0,0 +1,3 @@ +default_version=$(grep default_version $(pg_config --sharedir)/extension/multicorn.control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") + +ln $(pg_config --sharedir)/extension/multicorn.sql $(pg_config --sharedir)/extension/multicorn--${default_version}.sql diff --git a/rpm/pre_uninstall.sh b/rpm/pre_uninstall.sh new file mode 100644 index 000000000..3ba31dad4 --- /dev/null +++ b/rpm/pre_uninstall.sh @@ -0,0 +1,3 @@ +default_version=$(grep default_version $(pg_config --sharedir)/extension/multicorn.control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") + +rm $(pg_config --sharedir)/extension/multicorn--${default_version}.sql diff --git a/setup.py b/setup.py index bcd3aa7e4..c73a3c266 100755 --- a/setup.py +++ b/setup.py @@ -2,6 +2,12 @@ import sys from setuptools import setup, find_packages, Extension + +import os +from sys import platform +from setuptools.command.install import install +from distutils.command.build import build + # hum... borrowed from psycopg2 def get_pg_config(kind, pg_config="pg_config"): p = subprocess.Popen([pg_config, '--%s' % kind], stdout=subprocess.PIPE) @@ -26,12 +32,37 @@ def get_pg_config(kind, pg_config="pg_config"): elif sys.version_info[1] < 6: sys.exit("Sorry, you need at least python 2.6 for Multicorn") +class MulticornBuild(build): + def run(self): + # Original build + build.run(self) + r = subprocess.check_output(['/usr/bin/make', 'multicorn.so']) + r = r.strip().decode('utf8') + if not r: + raise Warning(p[2].readline()) + # After original build + +execfile('multicorn.control') + + setup( - name='multicorn', - version='__VERSION__', - author='Kozea', - license='Postgresql', - package_dir={'': 'python'}, - packages=['multicorn', 'multicorn.fsfdw'], - ext_modules = [multicorn_utils_module] -) + name='multicorn', + # version='__VERSION__', + version=default_version, + author='Kozea', + license='Postgresql', + options={'bdist_rpm': {'post_install': 'rpm/post_install.sh', + 'pre_uninstall': 'rpm/pre_uninstall.sh', + 'requires': 'postgresql95-server', + }}, + package_dir={'': 'python'}, + packages=['multicorn', 'multicorn.fsfdw'], + ext_modules=[multicorn_utils_module], + data_files=[ + ('%s/extension' % get_pg_config('sharedir'), ['multicorn.control', 'sql/multicorn.sql', 'doc/multicorn.md']), + (get_pg_config('libdir'), ['multicorn.so']) + ], + cmdclass={ + 'build': MulticornBuild, + } + ) From 334896719b6576863e6390c3a356d408d37d25f5 Mon Sep 17 00:00:00 2001 From: Ben Greene Date: Thu, 9 Jun 2016 00:35:04 +0100 Subject: [PATCH 2/3] Add MANIFEST.in for rpm --- MANIFEST.in | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..b2048af25 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +include src/multicorn.h +include multicorn.control +include sql/multicorn.sql +include doc/multicorn.md +include src/* +include Makefile +include preflight-check.sh From 6380cee12b321630765e04bad2816e86f9c169fd Mon Sep 17 00:00:00 2001 From: Ben Greene Date: Thu, 9 Jun 2016 22:53:07 +0100 Subject: [PATCH 3/3] Do not need MANIFEST.in --- MANIFEST.in | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index b2048af25..000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ -include src/multicorn.h -include multicorn.control -include sql/multicorn.sql -include doc/multicorn.md -include src/* -include Makefile -include preflight-check.sh