
On 01/09/2015 14:55, chandra@linux.vnet.ibm.com wrote:
From: chandrureddy <chandra@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@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@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@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