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.
+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(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
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(a)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