diff --git a/.clufter.metadata b/.clufter.metadata new file mode 100644 index 0000000..9d0e5fe --- /dev/null +++ b/.clufter.metadata @@ -0,0 +1 @@ +01c228b1374ee2bb25d500bf89c9fb979a5cad3a SOURCES/clufter-0.50.4.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..433481e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/clufter-0.50.4.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SPECS/clufter.spec b/SPECS/clufter.spec new file mode 100644 index 0000000..8f9b994 --- /dev/null +++ b/SPECS/clufter.spec @@ -0,0 +1,269 @@ +Name: clufter +Version: 0.50.4 +Release: 1%{?dist} +Group: System Environment/Base +Summary: Tool/library for transforming/analyzing cluster configuration formats +License: GPLv2+ +URL: https://github.com/jnpkrn/%{name} + +# required for autosetup macro +BuildRequires: git + +BuildRequires: python2-devel +BuildRequires: python-setuptools +BuildRequires: python-lxml + +Source0: https://people.redhat.com/jpokorny/pkgs/%{name}/%{name}-%{version}.tar.gz + +%description +While primarily aimed at (CMAN,rgmanager)->(Corosync/CMAN,Pacemaker) cluster +stacks configuration conversion (as per RHEL trend), the command-filter-format +framework (capable of XSLT) offers also other uses through its plugin library. + +%package cli +Group: System Environment/Base +Summary: Tool for transforming/analyzing cluster configuration formats + +BuildRequires: bash-completion + +BuildRequires: help2man + +# following for pkg_resources module +Requires: python-setuptools +Requires: python-%{name} = %{version}-%{release} +Provides: %{name} = %{version}-%{release} +BuildArch: noarch + +%description cli +While primarily aimed at (CMAN,rgmanager)->(Corosync/CMAN,Pacemaker) cluster +stacks configuration conversion (as per RHEL trend), the command-filter-format +framework (capable of XSLT) offers also other uses through its plugin library. + +This package contains %{name} command-line interface for the underlying +library (packaged as python-%{name}). + +%package -n python-%{name} +Group: System Environment/Libraries +Summary: Library for transforming/analyzing cluster configuration formats +License: GPLv2+ and GFDL + +BuildRequires: pkgconfig(libxml-2.0) + +Requires: python-lxml +Requires: %{_bindir}/nano + +%description -n python-%{name} +While primarily aimed at (CMAN,rgmanager)->(Corosync/CMAN,Pacemaker) cluster +stacks configuration conversion (as per RHEL trend), the command-filter-format +framework (capable of XSLT) offers also other uses through its plugin library. + +This package contains %{name} library including built-in plugins. + +%package lib-general +Group: System Environment/Libraries +Summary: Extra %{name} plugins usable for/as generic/auxiliary products +Requires: python-%{name} = %{version}-%{release} +BuildArch: noarch + +%description lib-general +This package contains set of additional plugins targeting variety of generic +formats often serving as a byproducts in the intermediate steps of the overall +process arrangement: either experimental commands or internally unused, +reusable formats and filters. + +%package lib-ccs +Group: System Environment/Libraries +Summary: Extra plugins for transforming/analyzing CMAN configuration +Requires: python-%{name} = %{version}-%{release} +Requires: %{name}-lib-general = %{version}-%{release} +BuildArch: noarch + +%description lib-ccs +This package contains set of additional plugins targeting CMAN cluster +configuration: either experimental commands or internally unused, reusable +formats and filters. + +%package lib-pcs +Group: System Environment/Libraries +Summary: Extra plugins for transforming/analyzing Pacemaker configuration +Requires: python-%{name} = %{version}-%{release} +Requires: %{name}-lib-general = %{version}-%{release} +BuildArch: noarch + +%description lib-pcs +This package contains set of additional plugins targeting Pacemaker cluster +configuration: either experimental commands or internally unused, reusable +formats and filters. + +%prep +%autosetup -p1 -S git + +## for some esoteric reason, the line above has to be empty +%{__python2} setup.py saveopts -f setup.cfg pkg_prepare \ + --ccs-flatten='%{_libexecdir}/%{name}-%{version}/ccs_flatten' \ + --editor='%{_bindir}/nano' \ + --ra-metadata-dir='%{_datadir}/cluster' \ + --ra-metadata-ext='metadata' + +%build +%{__python2} setup.py build +./run-dev --skip-ext --completion-bash 2>/dev/null \ + | sed 's|run[-_]dev|%{name}|g' > .bashcomp +%{__mkdir_p} -- .manpages/man1 +help2man -N -h -H -n "$(sed -n '2s|[^(]\+(\([^)]\+\))|\1|p' README)" ./run-dev \ + | sed 's|run[-_]dev|%{name}|g' \ + > .manpages/man1/%{name}.1 + +%install + +# '--root' implies setuptools involves distutils to do old-style install +%{__python2} setup.py install --skip-build --root '%{buildroot}' +# following is needed due to umask 022 not taking effect(?) leading to 775 +%{__chmod} -- g-w '%{buildroot}%{_libexecdir}/%{name}-%{version}/ccs_flatten' +# %%{_bindir}/%%{name} should have been created +test -f '%{buildroot}%{_bindir}/%{name}' \ + || %{__install} -D -pm 644 -- '%{buildroot}%{_bindir}/%{name}' \ + '%{buildroot}%{_bindir}/%{name}' +declare bashcompdir="$(pkg-config --variable=completionsdir bash-completion \ + || echo '%{_datadir}/bash-completion/completions')" +declare bashcomp="${bashcompdir}/%{name}" +%{__install} -D -pm 644 -- \ + .bashcomp '%{buildroot}%{_sysconfdir}/%{name}/bash-completion' +%{__mkdir_p} -- "%{buildroot}${bashcompdir}" +ln -s '%{_sysconfdir}/%{name}/bash-completion' "%{buildroot}${bashcomp}" +# own %%{_datadir}/bash-completion in case of ...bash-completion/completions, +# more generally any path up to any of /, /usr, /usr/share, /etc +while true; do + test "$(dirname "${bashcompdir}")" != "/" \ + && test "$(dirname "${bashcompdir}")" != "%{_prefix}" \ + && test "$(dirname "${bashcompdir}")" != "%{_datadir}" \ + && test "$(dirname "${bashcompdir}")" != "%{_sysconfdir}" \ + || break + bashcompdir="$(dirname "${bashcompdir}")" +done +cat >.bashcomp-files <<-EOF + ${bashcompdir} + %dir %{_sysconfdir}/%{name} + %verify(not size md5 mtime) %{_sysconfdir}/%{name}/bash-completion +EOF +%{__mkdir_p} -- '%{buildroot}%{_mandir}' +%{__cp} -a -- .manpages/* '%{buildroot}%{_mandir}' +%{__mkdir_p} -- '%{buildroot}%{_defaultdocdir}/%{name}-%{version}' +%{__install} -pm 644 -- gpl-2.0.txt doc/*.txt \ + '%{buildroot}%{_defaultdocdir}/%{name}-%{version}' + +%check +# just a basic sanity check +# we need to massage RA metadata files and PATH so the local run works +# XXX we could also inject buildroot's site_packages dir to PYTHONPATH +declare ret=0 \ + ccs_flatten_dir="$(dirname '%{buildroot}%{_libexecdir}/%{name}-%{version}/ccs_flatten')" +ln -s '%{buildroot}%{_datadir}/cluster'/*.'metadata' \ + "${ccs_flatten_dir}" +PATH="${PATH:+${PATH}:}${ccs_flatten_dir}" ./run-check +ret=$? +%{__rm} -f -- "${ccs_flatten_dir}"/*.'metadata' +[ ${ret} -eq 0 ] || exit ${ret} + +%post cli +if [ $1 -gt 1 ]; then # no gain regenerating it w/ fresh install (same result) +declare bashcomp="%{_sysconfdir}/%{name}/bash-completion" +%{_bindir}/%{name} --completion-bash > "${bashcomp}" 2>/dev/null || : +fi + +%post lib-general +declare bashcomp="%{_sysconfdir}/%{name}/bash-completion" +# if the completion file is not present, suppose it is not desired +test -x '%{_bindir}/%{name}' && test -f "${bashcomp}" \ + && %{_bindir}/%{name} --completion-bash > "${bashcomp}" 2>/dev/null || : + +%post lib-ccs +declare bashcomp="%{_sysconfdir}/%{name}/bash-completion" +# if the completion file is not present, suppose it is not desired +test -x '%{_bindir}/%{name}' && test -f "${bashcomp}" \ + && %{_bindir}/%{name} --completion-bash > "${bashcomp}" 2>/dev/null || : + +%post lib-pcs +declare bashcomp="%{_sysconfdir}/%{name}/bash-completion" +# if the completion file is not present, suppose it is not desired +test -x '%{_bindir}/%{name}' && test -f "${bashcomp}" \ + && %{_bindir}/%{name} --completion-bash > "${bashcomp}" 2>/dev/null || : + +%files cli -f .bashcomp-files +%{_mandir}/man1/*.1* +%{_bindir}/%{name} +%{python2_sitelib}/%{name}/__main__.py* +%{python2_sitelib}/%{name}/main.py* +%{python2_sitelib}/%{name}/completion.py* + +%files -n python-%{name} +%dir %{_defaultdocdir}/%{name}-%{version} +%{_defaultdocdir}/%{name}-%{version}/*[^[:digit:]].txt +%license %{_defaultdocdir}/%{name}-%{version}/*[[:digit:]].txt +%exclude %{python2_sitelib}/%{name}/__main__.py* +%exclude %{python2_sitelib}/%{name}/main.py* +%exclude %{python2_sitelib}/%{name}/completion.py* +%exclude %{python2_sitelib}/%{name}/ext-plugins/*/ +%{python2_sitelib}/%{name} +%{python2_sitelib}/%{name}-*.egg-info +%{_libexecdir}/%{name}-%{version} +%{_datadir}/cluster + +%files lib-general +%{python2_sitelib}/%{name}/ext-plugins/lib-general + +%files lib-ccs +%{python2_sitelib}/%{name}/ext-plugins/lib-ccs + +%files lib-pcs +%{python2_sitelib}/%{name}/ext-plugins/lib-pcs + +%changelog +* Wed Sep 09 2015 Jan Pokorný - 0.50.4-1 +- bump upstream package + +* Thu Sep 03 2015 Jan Pokorný - 0.50.3-1 +- bump upstream package + +* Wed Aug 12 2015 Jan Pokorný - 0.50.2-1 +- bump upstream package + +* Tue Jul 14 2015 Jan Pokorný - 0.50.1-1 +- bump upstream package + +* Fri Jul 03 2015 Jan Pokorný - 0.50.0-1 +- bump upstream package (intentional jump on upstream front) + +* Fri Jun 19 2015 Jan Pokorný - 0.12.0-1 +- move completion module to clufter-cli sub-package +- bump upstream package + +* Wed Apr 15 2015 Jan Pokorný - 0.11.0-1 +- bump upstream package + +* Fri Mar 20 2015 Jan Pokorný - 0.10.3-1 +- bump upstream package + +* Mon Mar 16 2015 Jan Pokorný - 0.10.2-1 +- bump upstream package + +* Fri Mar 06 2015 Jan Pokorný - 0.10.1-2 +- packaging fixes (%{name}-cli requires python-setuptools, adjust for + older schema of Bash completions) + +* Fri Mar 06 2015 Jan Pokorný - 0.10.1-1 +- bump upstream package + +* Thu Feb 26 2015 Jan Pokorný - 0.10.0-1 +- packaging enhacements (structure, redundancy, ownership, scriptlets, symlink) +- version bump so as not to collide with python-clufter co-packaged with pcs + +* Tue Jan 20 2015 Jan Pokorný - 0.3.5-1 +- packaging enhancements (pkg-config, license tag) + +* Wed Jan 14 2015 Jan Pokorný - 0.3.4-1 +- packaging enhancements (permissions, ownership) +- man page for CLI frontend now included + +* Tue Jan 13 2015 Jan Pokorný - 0.3.3-1 +- initial build