[Kimchi-devel] [PATCH 04/17] Ginger Base : base plugin build-aix and contrib
Aline Manera
alinefm at linux.vnet.ibm.com
Thu Sep 10 13:50:19 UTC 2015
On 01/09/2015 14:55, chandra at linux.vnet.ibm.com wrote:
> From: chandrureddy <chandra at linux.vnet.ibm.com>
>
> ---
> plugins/gingerbase/build-aux/config.rpath | 672 +++++++++++++++++++++
> plugins/gingerbase/build-aux/genChangelog | 25 +
> plugins/gingerbase/build-aux/pkg-version | 59 ++
> plugins/gingerbase/contrib/DEBIAN/Makefile.am | 17 +
> plugins/gingerbase/contrib/DEBIAN/control.in | 14 +
> plugins/gingerbase/contrib/Makefile.am | 34 ++
> plugins/gingerbase/contrib/check_i18n.py | 82 +++
> .../gingerbase/contrib/gingerbase.spec.fedora.in | 68 +++
> plugins/gingerbase/contrib/gingerbase.spec.suse.in | 62 ++
> plugins/gingerbase/contrib/make-deb.sh.in | 15 +
> 10 files changed, 1048 insertions(+)
> create mode 100644 plugins/gingerbase/build-aux/config.rpath
> create mode 100755 plugins/gingerbase/build-aux/genChangelog
> create mode 100755 plugins/gingerbase/build-aux/pkg-version
> create mode 100644 plugins/gingerbase/contrib/DEBIAN/Makefile.am
> create mode 100644 plugins/gingerbase/contrib/DEBIAN/control.in
> create mode 100644 plugins/gingerbase/contrib/Makefile.am
> create mode 100755 plugins/gingerbase/contrib/check_i18n.py
> create mode 100644 plugins/gingerbase/contrib/gingerbase.spec.fedora.in
> create mode 100644 plugins/gingerbase/contrib/gingerbase.spec.suse.in
> create mode 100644 plugins/gingerbase/contrib/make-deb.sh.in
>
> diff --git a/plugins/gingerbase/contrib/DEBIAN/control.in b/plugins/gingerbase/contrib/DEBIAN/control.in
> new file mode 100644
> index 0000000..0f1e187
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/DEBIAN/control.in
> @@ -0,0 +1,14 @@
> +Package: @PACKAGE_NAME@
> +Version: @PACKAGE_VERSION@
> +Section: base
> +Priority: optional
> +Architecture: all
> +Depends: wok,
> + python-psutil (>= 0.6.0),
> + sosreport,
> +Build-Depends: libxslt,
> + python-lxml
> +Maintainer: Aline Manera <alinefm at br.ibm.com>
As gingerbase will be part of Ginger community, you need to assign
Daniel as the maintainer.
> +Description: Ginger Base is an open source base host management plugin for Wok
> +(Webserver Originated from Kimchi), that provides an intuitive web panel with
> +common tools for configuring and managing the Linux systems.
> diff --git a/plugins/gingerbase/contrib/Makefile.am b/plugins/gingerbase/contrib/Makefile.am
> new file mode 100644
> index 0000000..7ca0752
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/Makefile.am
> @@ -0,0 +1,34 @@
> +# Copyright IBM Corp, 2013
> +#
Update the copyright date
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU Lesser General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +#
> +# This library is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> +# Lesser General Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with this library; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +
> +SUBDIRS = DEBIAN
> +
> +EXTRA_DIST = \
> + check_i18n.py \
> + gingerbase.spec.fedora.in \
> + make-deb.sh.in \
> + $(NULL)
> +
What about SUSE spec file?
> +make-deb.sh: make-deb.sh.in $(top_builddir)/config.status
> + $(AM_V_GEN)sed \
> + -e 's|[@]PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
> + -e 's|[@]PACKAGE_RELEASE[@]|$(PACKAGE_RELEASE)|g' \
> + < $< > $@-t && \
> + chmod a+x $@-t && \
> + mv $@-t $@
> +BUILT_SOURCES = make-deb.sh
> +
> +CLEANFILES = gingerbase.spec.fedora gingerbase.spec.suse gingerbase.spec make-deb.sh
> diff --git a/plugins/gingerbase/contrib/check_i18n.py b/plugins/gingerbase/contrib/check_i18n.py
> new file mode 100755
> index 0000000..6a2603c
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/check_i18n.py
> @@ -0,0 +1,82 @@
> +#!/usr/bin/env python2
> +#
> +# Project Kimchi
> +#
> +# Copyright IBM, Corp. 2014-2015
> +#
Update the copyright
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU Lesser General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +#
> +# This library is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> +# Lesser General Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with this library; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +
> +import imp
> +import os
> +import re
> +import sys
> +
> +
How is this file different from the one in Kimchi plugin?
> +# Match all conversion specifier with mapping key
> +PATTERN = re.compile(r'''%\([^)]+\) # Mapping key
> + [#0\-+]? # Conversion flags (optional)
> + (\d+|\*)? # Minimum field width (optional)
> + (\.(\d+|\*))? # Precision (optional)
> + [lLh]? # Length modifier (optional)
> + [cdeEfFgGioursxX%] # Conversion type''',
> + re.VERBOSE)
> +BAD_PATTERN = re.compile(r"%\([^)]*?\)")
> +
> +
> +def load_i18n_module(i18nfile):
> + path = os.path.dirname(i18nfile)
> + mname = i18nfile.replace("/", "_").rstrip(".py")
> + mobj = imp.find_module("i18n", [path])
> + return imp.load_module(mname, *mobj)
> +
> +
> +def check_string_formatting(messages):
> + for k, v in messages.iteritems():
> + if BAD_PATTERN.findall(PATTERN.sub(" ", v)):
> + print "bad i18n string formatting:"
> + print " %s: %s" % (k, v)
> + exit(1)
> +
> +
> +def check_obsolete_messages(path, messages):
> + def find_message_key(path, k):
> + for root, dirs, files in os.walk(path):
> + for f in files:
> + fname = os.path.join(root, f)
> + if (not fname.endswith("i18n.py") and fname.endswith(".py") or
> + fname.endswith(".json")):
> + with open(fname) as f:
> + string = "".join(f.readlines())
> + if k in string:
> + return True
> + return False
> +
> + for k in messages.iterkeys():
> + if not find_message_key(path, k):
> + print " %s is obsolete, it is no longer in use" % k
> + exit(1)
> +
> +
> +def main():
> + print "Checking for invalid i18n string..."
> + for f in sys.argv[1:]:
> + messages = load_i18n_module(f).messages
> + check_string_formatting(messages)
> + check_obsolete_messages(os.path.dirname(f), messages)
> + print "Checking for invalid i18n string successfully"
> +
> +
> +if __name__ == '__main__':
> + main()
> diff --git a/plugins/gingerbase/contrib/gingerbase.spec.fedora.in b/plugins/gingerbase/contrib/gingerbase.spec.fedora.in
> new file mode 100644
> index 0000000..44f03fd
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/gingerbase.spec.fedora.in
> @@ -0,0 +1,68 @@
> +Name: Ginger Base
> +Version: @PACKAGE_VERSION@
> +Release: @PACKAGE_RELEASE@%{?dist}
> +Summary: Kimchi server application
Wok plugin for base host management
> +BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
> +BuildArch: noarch
> +Group: System Environment/Base
> +License: LGPL/ASL2
> +Source0: %{name}-%{version}.tar.gz
> +Requires: wok
> +Requires: python-psutil >= 0.6.0
> +Requires: sos
> +BuildRequires: libxslt
> +BuildRequires: python-lxml
> +
> +%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
> +%global with_systemd 1
> +%endif
> +
> +%if 0%{?rhel} == 6
> +Requires: python-ordereddict
> +BuildRequires: python-unittest2
> +%endif
> +
> +%description
> +Ginger Base is an open source base host management plugin for Wok
> +(Webserver Originated from Kimchi), that provides an intuitive web panel with
> +common tools for configuring and managing the Linux systems.
> +
> +%prep
> +
> +
> +%build
> +%configure
> +make
> +
> +
> +%install
> +rm -rf %{buildroot}
> +make DESTDIR=%{buildroot} install
> +
> +
> +%clean
> +rm -rf $RPM_BUILD_ROOT
> +
> +%files
> +%attr(-,root,root)
> +%{python_sitelib}/wok/plugins/gingerbase/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/control/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/model/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/API.json
> +%{python_sitelib}/wok/plugins/gingerbase/
> +%{_datadir}/wok/plugins/gingerbase/doc/API.md
> +%{_datadir}/wok/plugins/gingerbase/doc/README.md
> +%{_datadir}/wok/plugins/gingerbase/doc/README-federation.md
> +%{_prefix}/share/locale/*/LC_MESSAGES/gingerbase.mo
> +%{_datadir}/wok/plugins/gingerbase/ui/config/*.xml
> +%{_datadir}/wok/plugins/gingerbase/ui/
> +%{_datadir}/wok/plugins/gingerbase
> +%{_sysconfdir}/wok/plugins.d/gingerbase.conf
> +%{_sysconfdir}/wok/
> +%{_sharedstatedir}/wok/debugreports/
> +%{_sharedstatedir}/wok/
> +
> +
> +%changelog
> +* Thu Aug 25 2015 Aline Manera <alinefm at br.ibm.com> 0.0-1
> +- First build
As you are creating the spec file you should add you as the first entry
on changelog
> diff --git a/plugins/gingerbase/contrib/gingerbase.spec.suse.in b/plugins/gingerbase/contrib/gingerbase.spec.suse.in
> new file mode 100644
> index 0000000..5ecd8b4
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/gingerbase.spec.suse.in
> @@ -0,0 +1,62 @@
> +Name: Ginger Base
> +Version: @PACKAGE_VERSION@
> +Release: @PACKAGE_RELEASE@%{?dist}
> +Summary: Kimchi server application
Same I comment above.
> +BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
> +BuildArch: noarch
> +Group: System Environment/Base
> +License: LGPL/ASL2
> +Source0: %{name}-%{version}.tar.gz
> +Requires: wok
> +Requires: python-psutil >= 0.6.0
> +BuildRequires: libxslt-tools
> +BuildRequires: python-lxml
> +
> +%if 0%{?suse_version} == 1100
> +Requires: python-ordereddict
> +%endif
> +
> +%if 0%{?suse_version} > 1140
> +%global with_systemd 1
> +%endif
> +
> +%description
> +Ginger Base is an open source base host management plugin for Wok
> +(Webserver Originated from Kimchi), that provides an intuitive web panel with
> +common tools for configuring and managing the Linux systems.
> +
> +%prep
> +%setup
> +
> +%install
> +rm -rf %{buildroot}
> +make DESTDIR=%{buildroot} install
> +
> +
> +%clean
> +rm -rf $RPM_BUILD_ROOT
> +
> +%files
> +%attr(-,root,root)
> +%{python_sitelib}/wok/plugins/gingerbase/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/control/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/model/*.py*
> +%{python_sitelib}/wok/plugins/gingerbase/API.json
> +%{python_sitelib}/wok/plugins/gingerbase/
> +%{_datadir}/wok/plugins/gingerbase/doc/API.md
> +%{_datadir}/wok/plugins/gingerbase/doc/README.md
> +%{_datadir}/wok/plugins/gingerbase/doc/README-federation.md
> +%{_prefix}/share/locale/*/LC_MESSAGES/gingerbase.mo
> +%{_datadir}/wok/plugins/gingerbase/ui/config/*.xml
> +%{_datadir}/wok/plugins/gingerbase/ui/
> +%{_datadir}/wok/plugins/gingerbase
> +%{_sysconfdir}/wok/plugins.d/gingerbase.conf
> +%{_sysconfdir}/wok/
> +%{_var}/lib/wok/debugreports/
> +%{_var}/lib/wok/
> +
> +
> +
> +%changelog
> +* Thu Aug 25 2015 Aline Manera <alinefm at br.ibm.com> 0.0-1
> +- First build
Same I commented for the fedora spec file
> diff --git a/plugins/gingerbase/contrib/make-deb.sh.in b/plugins/gingerbase/contrib/make-deb.sh.in
> new file mode 100644
> index 0000000..a4c92bf
> --- /dev/null
> +++ b/plugins/gingerbase/contrib/make-deb.sh.in
> @@ -0,0 +1,15 @@
How is this file different from the one in Kimchi plugin?
Maybe we could keep them on wok and reuse in the plugins.
> +#!/bin/bash
> +
> +VERSION="@PACKAGE_VERSION@"
> +RELEASE="@PACKAGE_RELEASE@"
> +
> +if [ ! -f configure ]; then
> + echo "Please run this script from the top of the package tree"
> + exit 1
> +fi
> +
> +TMPDIR=`mktemp -d`
> +
> +make DESTDIR=$TMPDIR install-deb
> +dpkg-deb -b $TMPDIR gingerbase-${VERSION}-${RELEASE}.noarch.deb
> +rm -rf $TMPDIR
More information about the Kimchi-devel
mailing list