From b9219a3296d17486351426e09ff93837307845d2 Mon Sep 17 00:00:00 2001 From: Marc Maurer Date: Mar 29 2008 16:27:02 +0000 Subject: Don't forget to add nextgen.sh --- diff --git a/abiword.spec b/abiword.spec index e653529..20f9eba 100644 --- a/abiword.spec +++ b/abiword.spec @@ -5,7 +5,7 @@ Summary: The AbiWord word processor Name: abiword Version: 2.6.0 -Release: 5%{?dist} +Release: 6%{?dist} Epoch: 1 Group: Applications/Editors License: GPLv2+ @@ -189,6 +189,9 @@ update-desktop-database %{_datadir}/applications %ghost %{_libdir}/pkgconfig/%{name}-%{majorversion}.%{minorversion}.pc %changelog +* Sat Mar 29 2008 Marc Maurer - 1:2.6.0-6 +- Don't forget to cvs add nextgen.sh + * Sat Mar 29 2008 Marc Maurer - 1:2.6.0-5 - Include nextgen.sh as abiword-plugins it's a proper autoconf project - Fix 439396: abiword includes its own dictionary? diff --git a/nextgen.sh b/nextgen.sh new file mode 100755 index 0000000..c311922 --- /dev/null +++ b/nextgen.sh @@ -0,0 +1,600 @@ +#!/bin/sh +# Copyright (C) 2001-2002 Francis James Franklin +# Copyright (C) 2001-2002 AbiSource, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +rm -rf autom4te.cache + +abi_version=2.6.0 + +# abi_plugins is the list of subdirectories that are plugins +# The definition of a plugin is a directory containing a file called "plugin.m4". +# +abi_plugins= + +# abi_subdirs is a list of all directories in the current directory that are plugins or +# which have plugins in subdirectories, i.e., those directories into which make should +# recurse... +# +abi_subdirs= + +# abi_recurse is a subset of abi_subdirs which excludes plugins +# +abi_recurse= + +# abi_local is a subset of abi_subdirs which includes only plugins +# +abi_local= + +# abi_makefiles is the list of makefiles that configure must create +# +abi_makefiles= + +# abi_configs is the list of plugins that autoconf should scan +# +abi_configs= + +# abi_files is the list of files that plugins need configure to create +# +abi_files= + +if test "x$CONFIG_SHELL" = "x"; then + CONFIG_SHELL=/bin/sh + export CONFIG_SHELL +fi + +abi_mode=abi_build + +# option to append plugin.m4 to $abi_topdir/acinclude.m4 +# +abi_m4_append="" + +# option to list files plugins require to be configured +# +abi_list_files="" + +# option to echo plugin descriptions and defaults +# +abi_script_defaults="" + +# option to echo configure plugin options +# +abi_script_options="" + +# option to echo spec's plugin options +# +abi_spec_options="" + +# option to echo spec's configure options +# +abi_spec_configs="" + +# option to echo spec's summary +# +abi_spec_summary="" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + --query) + abi_mode=abi_query + ;; + --config) + abi_mode=abi_config + ;; + --script) + abi_mode=abi_script + ;; + --spec) + abi_mode=abi_spec + ;; + --m4-append) + abi_m4_append="--m4-append" + ;; + --list-files) + abi_list_files="--list-files" + ;; + --script-defaults) + abi_script_defaults="--script-defaults" + ;; + --script-options) + abi_script_options="--script-options" + ;; + --spec-options) + abi_spec_options="--spec-options" + ;; + --spec-configs) + abi_spec_configs="--spec-configs" + ;; + --spec-summary) + abi_spec_summary="--spec-summary" + ;; + --help|-h) + echo "Usage:" + echo " --script generate wrapper-script for configure" + echo " --spec generate spec templates" + echo " --query list plugin subdirs" + echo " -h, --help print this help and exit" + exit 1 + ;; + *) + echo 'Option `'$arg"' not recognized. Try --help for more information." + exit 1 + ;; + esac +done + +if test "x$abi_topdir" = "x"; then + abi_topdir=`pwd` + export abi_topdir + if test $abi_mode = abi_build; then + abi_mode=abi_all + echo "Searching for AbiWord plugins. Please wait..." + fi +fi +if test "x$abi_dir" = "x"; then + abi_dir=. + abi_am=abi_ +else + abi_am=abi_`echo $abi_dir | sed 's@/@_@g'` +fi + +# Find plugins +# +_abi_dir=$abi_dir +for i in *; do + if test -d $i; then + if test -r $i/plugin.m4; then + # Found a plugin! + abi_plugins="$abi_plugins $i" + abi_subdirs="$abi_subdirs $i" + abi_local="$abi_local $i" + if test "x$abi_list_files" != "x"; then + . $i/plugin.m4 + for j in $abi_plugin_files; do + abi_files="$abi_files $i/$j" + done + fi + else + abi_subquery=`(cd $i > /dev/null && $CONFIG_SHELL $abi_topdir/nextgen.sh --query $abi_list_files)` + if test "x$abi_subquery" != "x"; then + for j in $abi_subquery; do + abi_plugins="$abi_plugins $i/$j" + if test "x$abi_list_files" != "x"; then + abi_files="$abi_files $i/$j" + fi + done + abi_subdirs="$abi_subdirs $i" + abi_recurse="$abi_recurse $i" + if test $abi_mode = abi_config; then + if test $_abi_dir = .; then + abi_dir=$i + else + abi_dir=$_abi_dir/$i + fi + export abi_dir + (cd $i > /dev/null && $CONFIG_SHELL $abi_topdir/nextgen.sh --config $abi_m4_append $abi_script_defaults $abi_script_options $abi_spec_options $abi_spec_configs $abi_spec_summary) + fi + fi + fi + fi +done +abi_dir=$_abi_dir + +if test $abi_mode = abi_script; then + echo '#!/bin/sh' + echo '# This script auto-generated by abiword-plugins/nextgen.sh' + echo '' + echo '# Add any --with-* options to config_opts here:' + echo '# ' + echo 'config_opts="--disable-all"' + echo '' + echo '# --------------------------------------------------------- #' + echo '' + ($CONFIG_SHELL $abi_topdir/nextgen.sh --config --script-defaults) + echo '' + echo '# ---------------- Don't edit this section ---------------- #' + echo '' + ($CONFIG_SHELL $abi_topdir/nextgen.sh --config --script-options) + echo '' + echo '# --------------------------------------------------------- #' + echo '' + echo $CONFIG_SHELL' ./configure $config_opts' + + # The rest is build stuff, so quit here. + # + exit 0 +elif test $abi_mode = abi_spec; then + echo '# PLUGIN OPTIONS: 1 for yes, 0 for no' + ($CONFIG_SHELL $abi_topdir/nextgen.sh --config --spec-options) + echo '' + ($CONFIG_SHELL $abi_topdir/nextgen.sh --config --spec-configs) + echo '' + ($CONFIG_SHELL $abi_topdir/nextgen.sh --config --spec-summary) + echo '' + configure_line='./configure --prefix=$RPM_BUILD_ROOT%{ABIPREFIX}/AbiSuite --disable-all' + for i in $abi_plugins; do + configure_line="$configure_line %{plugin_`basename $i`}" + done + echo $configure_line + + # The rest is build stuff, so quit here. + # + exit 0 +elif test $abi_mode = abi_config; then + if test "x$abi_local" != "x"; then + if test "x$abi_script_defaults" != "x"; then + for i in $abi_local; do + . $i/plugin.m4 + echo '# '$i': '$abi_plugin_desc + echo '# ' + if test "x$abi_plugin_enable" = "xyes"; then + echo 'enable_'`echo $i | sed 's/-/_/g'`'=yes' + else + echo 'enable_'`echo $i | sed 's/-/_/g'`'=no' + fi + echo '' + done + elif test "x$abi_script_options" != "x"; then echo "" + for i in $abi_local; do + echo 'if test "x$enable_'`echo $i | sed 's/-/_/g'`'" = "xyes"; then' + echo ' config_opts="$config_opts --enable-'$i'"' + echo 'else' + echo ' config_opts="$config_opts --disable-'$i'"' + echo 'fi' + done + elif test "x$abi_spec_options" != "x"; then echo "" + for i in $abi_local; do + . $i/plugin.m4 + if test "x$abi_plugin_enable" = "xyes"; then + echo '%define enable_'$i' 1' + else + echo '%define enable_'$i' 0' + fi + done + elif test "x$abi_spec_configs" != "x"; then echo "" + for i in $abi_local; do + echo '%if %{enable_'$i'}' + echo '%define plugin_'$i' --enable-'$i + echo '%else' + echo '%define plugin_'$i' --disable-'$i + echo '%endif' + echo '' + done + elif test "x$abi_spec_summary" != "x"; then echo "" + for i in $abi_local; do + abi_plugin_requires="" + abi_plugin_buildreq="" + . $i/plugin.m4 + echo '%if %{enable_'$i'}' + echo '%package plugin-'$i + echo 'Summary: '$abi_plugin_desc + echo 'Group: Applications/Productivity' + if test "x$abi_plugin_requires" != "x"; then + echo 'Requires: '$abi_plugin_requires + else + echo 'Requires: abiword' + fi + if test "x$abi_plugin_buildreq" != "x"; then + echo 'BuildRequires: '$abi_plugin_buildreq + fi + echo '' + echo '%description plugin-'$i + echo $abi_plugin_desc + echo '%endif' + echo '' + done + else + echo "$abi_am=" + for i in $abi_local; do + echo 'abi_plugin_add=yes' + echo 'AC_ARG_ENABLE('$i',[ --disable-'$i'],[' + echo ' if test "x$enableval" = "xno"; then' + echo ' abi_plugin_add=no' + echo ' fi' + echo '],[ abi_plugin_add=$abi_plugin_opt' + echo '])' + echo 'AC_ARG_WITH('$i',[ --without-'$i'],[' + echo ' if test "x$withval" = "xno"; then' + echo ' abi_plugin_add=no' + echo ' else' + echo ' abi_plugin_add=yes' + echo ' fi' + echo '])' + + abi_plugin_macro_init="" + abi_plugin_macro_end="" + + . $i/plugin.m4 + + if test "$abi_plugin_macro_init" != ""; then + echo $abi_plugin_macro_init + fi + + echo 'if test $abi_plugin_add = yes; then' + echo ' abi_plugin_disable=no' + + if test "$abi_plugin_macro" != ""; then + if test "x$abi_m4_append" != "x"; then + cat $i/plugin.m4 >> $abi_topdir/acinclude.m4 + fi + echo ' '$abi_plugin_macro + fi + + echo ' if test $abi_plugin_disable = no; then' + echo ' '$abi_am'="$'$abi_am $i'"' + echo ' fi' + + echo 'fi' + + if test "$abi_plugin_macro_end" != ""; then + echo $abi_plugin_macro_end + fi + done + echo "AC_SUBST($abi_am)" + echo '' + fi + fi + + # The rest is build stuff, so quit here. + # + exit 0 +elif test $abi_mode = abi_query; then + if test "x$abi_list_files" != "x"; then + if test "x$abi_files" != "x"; then + for i in $abi_files; do + echo $i + done + fi + else + if test "x$abi_plugins" != "x"; then + for i in $abi_plugins; do + echo $i + done + fi + fi + + # The rest is build stuff, so quit here. + # + exit 0 +else + if test $abi_mode = abi_all; then + if test "x$abi_subdirs" = "x"; then + echo "Sorry. No AbiWord plugins found." + exit 0 + fi + if test -f "ac-helpers/abi-plugin-init.m4"; then + echo "Creating build system for AbiWord plugins" + else + echo "This script creates a build system for AbiWord plugins. It deletes and creates a number" + echo "of files, so it must be run from the top directory of the plugin source tree." + exit 1 + fi + else + if test "x$abi_subdirs" = "x"; then + echo "Glitch! Shouldn't be building when there are no subdirectories!" + exit 1 + fi + fi + + # Create GNUmakefile.am. + # + if test $abi_dir = .; then + abi_makefiles="GNUmakefile" + else + abi_makefiles="$abi_dir/GNUmakefile" + fi + rm -f GNUmakefile.am + echo "# autogenerated by nextgen.sh" > GNUmakefile.am + if test "x$abi_local" = "x"; then + echo "SUBDIRS = $abi_recurse" >> GNUmakefile.am + else + echo "SUBDIRS = @$abi_am@ $abi_recurse" >> GNUmakefile.am + fi + + echo "DIST_SUBDIRS = $abi_subdirs" >> GNUmakefile.am + + echo "DISTCLEANFILES = plugin.status" >> GNUmakefile.am + + echo "EXTRA_DIST = Makefile" >> GNUmakefile.am + + # and recurse into subdirectories... + # + _abi_dir=$abi_dir + for i in $abi_recurse; do + if test $_abi_dir = .; then + abi_dir=$i + else + abi_dir=$_abi_dir/$i + fi + export abi_dir + abi_subbuild=`(cd $i > /dev/null && $CONFIG_SHELL $abi_topdir/nextgen.sh)` + for j in $abi_subbuild; do + abi_makefiles="$abi_makefiles $j" + done + done + abi_dir=$_abi_dir + + # Standard build just creates GNUmakefile.am, so quit here. + # + if test $abi_mode = abi_build; then + for i in $abi_makefiles; do + echo $i + done + exit 0 + fi +fi + +# Create configure.ac +# +rm -f configure.ac +cat > configure.ac << EOF +AC_INIT([abiword-plugins], $abi_version, [http://bugzilla.abisource.com/]) +AC_CONFIG_SRCDIR([ac-helpers/abi-plugin-init.m4]) + +dnl First of all AbiWord plugin macros: +dnl +ABI_PLUGIN_INIT($abi_version) +ABI_PLUGIN_CONFIG + +# Checks for programs. +AC_PROG_CC +AC_PROG_CPP +AC_PROG_CXX +AC_PROG_AWK +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET + +AM_INIT_AUTOMAKE + +AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +AC_C_CONST +AC_C_INLINE + +dnl Configure plugin sources +dnl +dnl AC_CONFIG_SUBDIRS($abi_configs) + +abi_plugin_extra= +abi_plugin_opt=yes +AC_ARG_ENABLE(all,[ --disable-all disable all plugins by default],[ + if test "x\$enableval" = "xno"; then + abi_plugin_opt=no + fi +]) + +EOF +rm -f $abi_topdir/acinclude.m4 +($CONFIG_SHELL $abi_topdir/nextgen.sh --config --m4-append) >> configure.ac +cat >> configure.ac << EOF +AC_CONFIG_FILES([ +$abi_makefiles +]) +AC_CONFIG_FILES([ +EOF +($CONFIG_SHELL $abi_topdir/nextgen.sh --query --list-files) | grep "^tools/" >> configure.ac +cat >> configure.ac << EOF +]) +AC_CONFIG_FILES([ +EOF +($CONFIG_SHELL $abi_topdir/nextgen.sh --query --list-files) | grep "^wp/impexp/" | grep -v "/graphics/" >> configure.ac +cat >> configure.ac << EOF +]) +AC_CONFIG_FILES([ +EOF +($CONFIG_SHELL $abi_topdir/nextgen.sh --query --list-files) | grep "^wp/impexp/" | grep "/graphics/" >> configure.ac +cat >> configure.ac << EOF +]) +AC_CONFIG_FILES([ +EOF +($CONFIG_SHELL $abi_topdir/nextgen.sh --query --list-files) | grep -v "^wp/impexp/" | grep -v "^tools/" >> configure.ac +cat >> configure.ac << EOF +]) +AC_OUTPUT + +if test -f plugin.status; then + echo "" + echo "Plugin reports:" + echo "" + cat plugin.status + echo "" +fi +EOF + +# And, finally, call in the big boys... +# +rm -f autogen.out +rm -f autogen.err + +if test "x`uname`" = "xDarwin"; then + echo "Running glibtoolize -f -c" + (glibtoolize -f -c >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo "glibtoolize failed! Unable to continue." + exit 1 + } +else + echo "Running libtoolize -f -c" + (libtoolize -f -c >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo "libtoolize failed! Unable to continue." + exit 1 + } +fi + +echo "Running aclocal -I ac-helpers $ACLOCAL_FLAGS" +(aclocal -I ac-helpers $ACLOCAL_FLAGS >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo "aclocal failed! Unable to continue." + exit 1 +} + +if test -f autom4te.cache/requests; then + echo "Checking for PKG_CHECK_MODULES in autom4te.cache/requests ..." + pkgcheckdef=`grep PKG_CHECK_MODULES autom4te.cache/requests` +else + echo "Checking for PKG_CHECK_MODULES in aclocal.m4 ..." + pkgcheckdef=`grep PKG_CHECK_MODULES aclocal.m4 | grep AC_DEFUN` +fi + +if test "x$pkgcheckdef" = "x"; then + echo "Running aclocal -I ac-helpers -I ac-helpers/pkg-config $ACLOCAL_FLAGS" + (aclocal -I ac-helpers -I ac-helpers/pkg-config $ACLOCAL_FLAGS >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo "aclocal failed! Unable to continue." + exit 1 + } + if test -f autom4te.cache/requests; then + echo "Checking for PKG_CHECK_MODULES in autom4te.cache/requests ..." + pkgcheckdef=`grep PKG_CHECK_MODULES autom4te.cache/requests` + else + echo "Checking for PKG_CHECK_MODULES in aclocal.m4 ..." + pkgcheckdef=`grep PKG_CHECK_MODULES aclocal.m4 | grep AC_DEFUN` + fi + if test "x$pkgcheckdef" = "x"; then + echo "" + echo "error: PKG_CHECK_MODULES isn't defined" + echo "" + echo " Either pkg.m4 wasn't in aclocal's search path or pkgconfig" + echo " (or pkgconfig-devel?) isn't installed." + echo "" + echo " If pkg-config is installed in then re-run nextgen.sh:" + echo "" + echo " ACLOCAL_FLAGS=\"-I /share/aclocal\" ./nextgen.sh" + echo "" + exit + fi +fi + +echo "Running automake -a -c --foreign" +(automake -a -c --foreign >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo ">automake failed! Oh, well, trying again (you never know): automake -a --foreign" + (automake -a --foreign >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo ">automake failed again! Damn. Look, I'll try autoconf anyway, but don't blame me" + echo " if it all goes horribly wrong. (This ain't easy!) Here goes:" + } +} + +echo "Running autoconf" +(autoconf >> $abi_topdir/autogen.out 2>> $abi_topdir/autogen.err) || { + echo ">autoconf failed! Sorry - I'm unable to continue." + exit 1 +} + +rm -rf autom4ate.cache