On 09/10/2015 07:20 PM, Aline Manera wrote:
On 01/09/2015 14:55, chandra(a)linux.vnet.ibm.com wrote:
> From: chandrureddy <chandra(a)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(a)br.ibm.com>
As gingerbase will be part of Ginger community, you need to assign
Daniel as the maintainer.
Agreed
> +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
Sure
> +# 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?
Missed for some reason. Will add it.
> +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
Sure
> +# 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?
No difference. Is this could be available part of WOK base frame work
itself then we could reuse it.
> +# 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
Sure.
> +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(a)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
Sure
> 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.
Got it
> +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(a)br.ibm.com> 0.0-1
> +- First build
Same I commented for the fedora spec file
Agree
> 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.
Except plug in name everything is same. Package dependencies will change
> +#!/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