[PATCH 04/17] Ginger Base : base plugin build-aix and contrib

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/build-aux/config.rpath b/plugins/gingerbase/build-aux/config.rpath new file mode 100644 index 0000000..17298f2 --- /dev/null +++ b/plugins/gingerbase/build-aux/config.rpath @@ -0,0 +1,672 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2010 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF + +# How to pass a linker flag through the compiler. +wl="$escaped_wl" + +# Static library suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally "so"). +shlibext="$shlibext" + +# Format of library name prefix. +libname_spec="$escaped_libname_spec" + +# Library names that the linker finds when passed -lNAME. +library_names_spec="$escaped_library_names_spec" + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="$hardcode_libdir_separator" + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct="$hardcode_direct" + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L="$hardcode_minus_L" + +EOF diff --git a/plugins/gingerbase/build-aux/genChangelog b/plugins/gingerbase/build-aux/genChangelog new file mode 100755 index 0000000..803f24e --- /dev/null +++ b/plugins/gingerbase/build-aux/genChangelog @@ -0,0 +1,25 @@ +#!/bin/bash + +# This script is based on code from the Kandan project: +# https://github.com/kandanapp/kandan/blob/master/gen-changelog.sh + +echo "CHANGELOG" +echo "=========" +echo +git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags | tac |grep -v '^$' | while read TAG ; do + if [ $NEXT ]; then + echo "#### [$NEXT] ####" + elif [ "$1" != "--release" ]; then + echo "#### [Current] ####" + else + NEXT=$TAG + continue + fi + GIT_PAGER=cat git log --pretty=format:" * [%h] %<(78,trunc)%s (%an)" $TAG..$NEXT + NEXT=$TAG + echo; echo +done +FIRST=$(git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags | head -1) + +echo "#### [$FIRST] ####" +GIT_PAGER=cat git log --pretty=format:" * [%h] %<(78,trunc)%s (%an)" $FIRST diff --git a/plugins/gingerbase/build-aux/pkg-version b/plugins/gingerbase/build-aux/pkg-version new file mode 100755 index 0000000..749cf6c --- /dev/null +++ b/plugins/gingerbase/build-aux/pkg-version @@ -0,0 +1,59 @@ +#!/bin/sh +# +# Copyright 2008-2012 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# tags and output versions: +# - 4.9.0 => 4.9.0 (upstream clean) +# - 4.9.0-1 => 4.9.0 (downstream clean) +# - 4.9.0-2-g34e62f => 4.9.0 (upstream dirty) +# - 4.9.0-1-2-g34e62f => 4.9.0 (downstream dirty) +AWK_VERSION=' + BEGIN { FS="-" } + /^[0-9]/ { + print $1 + }' + +# tags and output releases: +# - 4.9.0 => 0 (upstream clean) +# - 4.9.0-1 => 1 (downstream clean) +# - 4.9.0-2-g34e62f1 => 2.git34e62f1 (upstream dirty) +# - 4.9.0-1-2-g34e62f1 => 1.2.git34e62f1 (downstream dirty) +AWK_RELEASE=' + BEGIN { FS="-"; OFS="." } + /^[0-9]/ { + if (NF == 1) print 0 + else if (NF == 2) print $2 + else if (NF == 3) print $2, "git" substr($3, 2) + else if (NF == 4) print $2, $3, "git" substr($4, 2) + }' + +if [ ! -d .git ]; then + PKG_VERSION=`cat VERSION` +else + PKG_VERSION=`git describe --tags --match "[0-9]*" || cat VERSION` +fi + +if test "x$1" = "x--full"; then + echo $PKG_VERSION | tr -d '[:space:]' +elif test "x$1" = "x--version"; then + echo $PKG_VERSION | awk "$AWK_VERSION" | tr -cd '[:alnum:].' +elif test "x$1" = "x--release"; then + echo $PKG_VERSION | awk "$AWK_RELEASE" | tr -cd '[:alnum:].' +else + echo "usage: $0 [--full|--version|--release]" + exit 1 +fi diff --git a/plugins/gingerbase/contrib/DEBIAN/Makefile.am b/plugins/gingerbase/contrib/DEBIAN/Makefile.am new file mode 100644 index 0000000..ca89552 --- /dev/null +++ b/plugins/gingerbase/contrib/DEBIAN/Makefile.am @@ -0,0 +1,17 @@ +# Copyright IBM Corp, 2013 +# +# 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 + +CLEANFILES = control 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> +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 +# +# 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) + +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 +# +# 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 + + +# 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 +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 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 +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 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 @@ +#!/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 -- 2.1.0

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

On 09/10/2015 07:20 PM, Aline Manera wrote:
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.
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@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@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
participants (3)
-
Aline Manera
-
Chandra Shehkhar Reddy Potula
-
chandra@linux.vnet.ibm.com