diff options
author | Igor Gnatenko <i.gnatenko.brain@gmail.com> | 2015-03-19 16:51:46 +0300 |
---|---|---|
committer | Igor Gnatenko <i.gnatenko.brain@gmail.com> | 2015-03-21 00:50:20 +0300 |
commit | 5fa8cac6b3caeec350f1ec91b896d8d57dab9ffc (patch) | |
tree | db11c52e88a6419085319477e0ca306b3086c617 /modules/rpm.py | |
parent | 268560f490582a700f87d3f93be3c52f306574b8 (diff) | |
download | meson-5fa8cac6b3caeec350f1ec91b896d8d57dab9ffc.zip meson-5fa8cac6b3caeec350f1ec91b896d8d57dab9ffc.tar.gz meson-5fa8cac6b3caeec350f1ec91b896d8d57dab9ffc.tar.bz2 |
modules/rpm: add support for devel subpkg
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Diffstat (limited to 'modules/rpm.py')
-rw-r--r-- | modules/rpm.py | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/modules/rpm.py b/modules/rpm.py index 56f4ae0..9c882d6 100644 --- a/modules/rpm.py +++ b/modules/rpm.py @@ -22,6 +22,28 @@ class RPMModule: def generate_spec(self, state, args, kwargs): proj = state.project_name.replace(' ', '_').replace('\t', '_') + so_installed = False + devel_subpkg = False + files = [] + files_devel = [] + for target in state.targets.values(): + if isinstance(target, build.Executable) and target.need_install: + files.append('%%{_bindir}/%s' % target.get_filename()) + elif isinstance(target, build.SharedLibrary) and target.need_install: + files.append('%%{_libdir}/%s' % target.get_filename()) + for alias in target.get_aliaslist(): + if alias.endswith('.so'): + files_devel.append('%%{_libdir}/%s' % alias) + else: + files.append('%%{_libdir}/%s' % alias) + so_installed = True + elif isinstance(target, build.StaticLibrary) and target.need_install: + files.append('%%{_libdir}/%s' % target.get_filename()) + mlog.log('Warning, installing static libs (', + mlog.bold(target.get_filename()), + ') not recommended') + if len(files_devel) > 0: + devel_subpkg = True fn = open('%s.spec' % proj, 'w+') fn.write('Name: %s\n' % proj) fn.write('\n') @@ -36,6 +58,14 @@ class RPMModule: fn.write('BuildRequires: %s\n' % ' '.join(prog.fullpath)) fn.write('BuildRequires: meson\n') fn.write('\n') + fn.write('%description\n') + fn.write('\n') + if devel_subpkg: + fn.write('%package devel\n') + fn.write('Requires: %{name}%{?_isa} = %{version}-%{release}\n') + fn.write('\n') + fn.write('%description devel\n') + fn.write('\n') fn.write('%prep\n') fn.write('%autosetup\n') fn.write('rm -rf build && mkdir build\n') @@ -52,16 +82,18 @@ class RPMModule: fn.write('popd\n') fn.write('\n') fn.write('%files\n') - for target in state.targets.values(): - if isinstance(target, build.Executable) and target.need_install: - fn.write('%%{_bindir}/%s\n' % target.filename) - elif isinstance(target, build.SharedLibrary) and target.need_install: - fn.write('%%{_libdir}/%s\n' % target.filename) - elif isinstance(target, build.StaticLibrary) and target.need_install: - fn.write('%%{_libdir}/%s\n' % target.filename) - mlog.log('Warning, installing static libs (', - mlog.bold(target.filename), - ') not recommended') + for f in files: + fn.write('%s\n' % f) + fn.write('\n') + if devel_subpkg: + fn.write('%files devel\n') + for f in files_devel: + fn.write('%s\n' % f) + fn.write('\n') + if so_installed: + fn.write('%post -p /sbin/ldconfig\n') + fn.write('\n') + fn.write('%postun -p /sbin/ldconfig\n') fn.write('\n') fn.close() |