diff --git a/.gitignore b/.gitignore index 7ed62aa..ad129f9 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,7 @@ swig-2.0.0.tar.gz /swig-2.0.10.tar.gz /swig-2.0.11.tar.gz /swig-2.0.12.tar.gz +/swig-3.0.0.tar.gz +/swig-3.0.1.tar.gz +/swig-3.0.2.tar.gz +/swig-3.0.5.tar.gz diff --git a/description.h2m b/description.h2m new file mode 100644 index 0000000..e894cdd --- /dev/null +++ b/description.h2m @@ -0,0 +1,24 @@ +[name] +swig - Simplified Wrapper and Interface Generator + +[synopsis] +swig [ options ] " file" + +[description] +The swig command is used to create wrapper code to connect C and C++ code to +scripting languages like Perl, Python, Tcl etc. from the definition of the +interface. For detailed information on writing those interface definitions +please refer to /usr/share/doc/swig-doc/Doc/Manual/index.html from the swig-doc +package. + +This manpage concentrates on explaining the invocation of the swig command. + +[author] +SWIG was originally created by David Beazley. For up-to-date information +about authors and contributors please check http://www.swig.org/guilty.html. +This manual page was written by Torsten Landschoff and +updated by Jitka Plesnikova (but may be used by +others). + + + diff --git a/sources b/sources index 3260489..5589d40 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c3fb0b2d710cc82ed0154b91e43085a4 swig-2.0.12.tar.gz +dcb9638324461b9baba8e044fe59031d swig-3.0.5.tar.gz diff --git a/swig-3.0.5_fix-python-modern-buildin.patch b/swig-3.0.5_fix-python-modern-buildin.patch new file mode 100644 index 0000000..13e7fa2 --- /dev/null +++ b/swig-3.0.5_fix-python-modern-buildin.patch @@ -0,0 +1,23 @@ +From e06906bda0ea06f6b5fc15dfa8f55a2251a1bbef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= +Date: Fri, 3 Apr 2015 18:48:08 +0200 +Subject: [PATCH] Python: fix using `-builtin -modern -modernargs` results in + segfaulting code (#256) + +--- + Source/Modules/python.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx +index 0e4a402..b2c429d 100644 +--- a/Source/Modules/python.cxx ++++ b/Source/Modules/python.cxx +@@ -2718,7 +2718,7 @@ class PYTHON:public Language { + Printf(parse_args, "if (!SWIG_Python_UnpackTuple(args,\"%s\",%d,%d,0)) SWIG_fail;\n", iname, num_fixed_arguments, tuple_arguments); + } + } +- } else { ++ } else if (tuple_arguments > 0) { + Printf(parse_args, "if(!PyArg_UnpackTuple(args,(char *)\"%s\",%d,%d", iname, num_fixed_arguments, tuple_arguments); + Printv(parse_args, arglist, ")) SWIG_fail;\n", NIL); + } diff --git a/swig-guile.patch b/swig-guile.patch deleted file mode 100644 index 3b9cdf4..0000000 --- a/swig-guile.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -up swig-2.0.12/Examples/test-suite/guile/li_std_string_runme.scm.guile swig-2.0.12/Examples/test-suite/guile/li_std_string_runme.scm ---- swig-2.0.12/Examples/test-suite/guile/li_std_string_runme.scm.guile 2014-02-09 15:09:05.000000000 -0700 -+++ swig-2.0.12/Examples/test-suite/guile/li_std_string_runme.scm 2014-03-01 08:33:41.343216202 -0700 -@@ -5,5 +5,5 @@ - ; Note: when working with non-ascii strings in guile 2 - ; locale must be set explicitly - ; The setlocale call below takes care of that --(setlocale LC_ALL "") -+(setlocale LC_ALL "en_US.utf-8") - (load "../schemerunme/li_std_string.scm") diff --git a/swig.1 b/swig.1 deleted file mode 100644 index 5b610b3..0000000 --- a/swig.1 +++ /dev/null @@ -1,353 +0,0 @@ -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.\" Manpage for swig. -.TH SWIG 1 "2013-05-24" -.SH NAME -swig \- Simplified Wrapper and Interface Generator -.SH SYNOPSIS -.B swig -.RI [ options ] " file" - -.SH DESCRIPTION -The swig command is used to create wrapper code to connect C and C++ code -to scripting languages like Perl, Python, Tcl etc. from the definition of -the interface. -For detailed information on writing those interface definitions please -refer to /usr/share/doc/swig-doc-2.0.9/Doc/Manual/index.html from the -swig-doc package. -This manpage concentrates on explaining the invocation of the swig command. - -.SH OPTIONS -.SS Target Language Options: -.TP -.B \-allegrocl -Generate ALLEGROCL wrappers -.TP -.B \-chicken -Generate CHICKEN wrappers -.TP -.B \-clisp -Generate CLISP wrappers -.TP -.B \-cffi -Generate CFFI wrappers -.TP -.B \-csharp -Generate C# wrappers -.TP -.B \-d -Generate D wrappers -.TP -.B \-go -Generate Go wrappers -.TP -.B \-guile -Generate Guile wrappers -.TP -.B \-java -Generate Java wrappers -.TP -.B \-lua -Generate Lua wrappers -.TP -.B \-modula3 -Generate Modula 3 wrappers -.TP -.B \-mzscheme -Generate Mzscheme wrappers -.TP -.B \-ocaml -Generate Ocaml wrappers -.TP -.B \-octave -Generate Octave wrappers -.TP -.B \-perl -Generate Perl wrappers -.TP -.B \-php -Generate PHP wrappers -.TP -.B \-pike -Generate Pike wrappers -.TP -.B \-python -Generate Python wrappers -.TP -.B \-r -Generate R (aka GNU S) wrappers -.TP -.B \-ruby -Generate Ruby wrappers -.TP -.B \-sexp -Generate Lisp S-Expressions wrappers -.TP -.B \-tcl -Generate Tcl wrappers -.TP -.B \-uffi -Generate Common Lisp / UFFI wrappers -.TP -.B \-xml -Generate XML wrappers -i - -.SS General Options: -.TP -.B \-addextern -Add extra extern declarations -.TP -.B \-c++ -Enable C++ processing -.TP -.BI "\-co " file -Check \fIfile\fR out of the SWIG library -.TP -.B \-copyctor -Automatically generate copy constructors wherever possible -.TP -.B \-cpperraswarn -Treat the preprocessor #error statement as #warning (default) -.TP -.B \-copyright -Display copyright notices -.TP -.B \-debug-classes -Display information about the classes found in the interface -.TP -.BI "\-debug-module " n -Display module parse tree at stages 1-4, \fIn\fR is a csv list of stages -.TP -.B \-debug-symtabs -Display symbol tables information -.TP -.B \-debug-symbols -Display target language symbols in the symbol tables -.TP -.B \-debug-csymbols -Display C symbols in the symbol tables -.TP -.B \-debug-lsymbols -Display target language layer symbols -.TP -.B \-debug-tags -Display information about the tags found in the interface -.TP -.B \-debug-template -Display information for debugging templates -.TP -.BI "\-debug-top " n -Display entire parse tree at stages 1-4, \fIn\fR is a csv list of stages -.TP -.B \-debug-typedef -Display information about the types and typedefs in the interface -.TP -.B \-debug-typemap -Display typemap debugging information -.TP -.B \-debug-tmsearch -Display typemap search debugging information -.TP -.B \-debug-tmused -Display typemaps used debugging information -.TP -.B \-directors -Turn on director mode for all the classes, mainly for testing -.TP -.B \-dirprot -Turn on wrapping of protected members for director classes (default) -.TP -.BI \-D symbol -Define a symbol \fIsymbol\fR (for conditional compilation) -.TP -.B \-E -Preprocess only, does not generate wrapper code -.TP -.B \-external-runtime [file] -Export the SWIG runtime stack -.TP -.BI "\-fakeversion " v -Make SWIG fake the program version number to \fIv\fR -.TP -.B \-fcompact -Compile in compact mode -.TP -.BI "\-features " list -Set global features, where \fIlist\fR is a comma separated list of -features, eg -features directors,autodoc=1 -If no explicit value is given to the feature, a default of 1 is used -.TP -.B \-fastdispatch -Enable fast dispatch mode to produce faster overload dispatcher code -.TP -.B \-Fmicrosoft -Display error/warning messages in Microsoft format -.TP -.B \-Fstandard -Display error/warning messages in commonly used format -.TP -.B \-fvirtual -Compile in virtual elimination mode -.TP -.B \-help -This output -.TP -.B \-I- -Don't search the current directory -.TP -.BI \-I dir -Look for SWIG files in directory \fIdir\fR -.TP -.B \-ignoremissing -Ignore missing include files -.TP -.B \-importall -Follow all #include statements as imports -.TP -.B \-includeall -Follow all #include statements -.TP -.BI \-l ifile -Include SWIG library file \fIifile\fR -.TP -.B \-macroerrors -Report errors inside macros -.TP -.B \-makedefault -Create default constructors/destructors (the default) -.TP -.B \-M -List all dependencies -.TP -.B \-MD -Is equivalent to \(cq\&-M -MF \fIfile\fR\(cq\&, except \(cq\&-E\(cq\& is not implied -.TP -.BI "\-MF " file -Generate dependencies into \fIfile\fR and continue generating wrappers -.TP -.B \-MM -List dependencies, but omit files in SWIG library -.TP -.B \-MMD -Like \(cq\&-MD\(cq\&, but omit files in SWIG library -.TP -.BI "\-module " name -Set module name to \fIname\fR -.TP -.B \-MP -Generate phony targets for all dependencies -.TP -.BI "\-MT " target -Set the target of the rule emitted by dependency generation -.TP -.B \-nocontract -Turn off contract checking -.TP -.B \-nocpperraswarn -Do not treat the preprocessor #error statement as #warning -.TP -.B \-nodefault -Do not generate default constructors nor default destructors -.TP -.B \-nodefaultctor -Do not generate implicit default constructors -.TP -.B \-nodefaultdtor -Do not generate implicit default destructors -.TP -.B \-nodirprot -Do not wrap director protected members -.TP -.B \-noexcept -Do not wrap exception specifiers -.TP -.B \-nofastdispatch -Disable fast dispatch mode (default) -.TP -.B \-nopreprocess -Skip the preprocessor step -.TP -.B \-notemplatereduce -Disable reduction of the typedefs in templates -.TP -.B \-O -Enable the optimization options: --fastdispatch -fvirtual -.TP -.BI "\-o " outfile -Set name of the output file to \fIoutfile\fR -.TP -.B "\-oh " headfile -Set name of the output header file to \fIheadfile\fR -.TP -.B \-outcurrentdir -Set default output dir to current dir instead of input file's path -.TP -.BI "\-outdir " dir -Set language specific files output directory to \fIdir\fR -.TP -.B \-pcreversion -Display PCRE version information -.TP -.B \-small -Compile in virtual elimination & compact mode -.TP -.B \-swiglib -Report location of SWIG library and exit -.TP -.B \-templatereduce -Reduce all the typedefs in templates -.TP -.B \-v -Run in verbose mode -.TP -.B \-version -Display SWIG version number -.TP -.B \-Wall -Remove all warning suppression, also implies -Wextra -.TP -.B \-Wallkw -Enable keyword warnings for all the supported languages -.TP -.B \-Werror -Treat warnings as errors -.TP -.B \-Wextra -Adds the following additional warnings: 202,309,403,512,321,322 -.TP -.BI \-w list -Suppress/add warning messages, eg -w401,+321 -see Warnings.html -.TP -.B "\-xmlout " file -Write XML version of the parse tree to \fIfile\fR after normal processing - -.SS Tcl 8 Options (available with -tcl) -.TP -.B \-itcl -Enable ITcl support -.TP -.B \-nosafe -Leave out SafeInit module function. -.TP -.BI "\-prefix " name -Set a prefix \fIname\fR to be prepended to all names -.TP -.B \-namespace -Build module into a Tcl 8 namespace -.TP -.B \-pkgversion -Set package version - -.PP -Note: 'swig -\fIlang\fR -help' displays options for a specific target language. - -.SH AUTHOR -SWIG was originally created by David Beazley. For up-to-date information -about authors and contributors please check http://www.swig.org/guilty.html. -This manual page was written by Torsten Landschoff and -updated by Jitka Plesnikova (but may be used by others). - diff --git a/swig.spec b/swig.spec index 39d5de8..3eec01b 100644 --- a/swig.spec +++ b/swig.spec @@ -1,46 +1,80 @@ # We can skip tests %bcond_without testsuite -%{!?tcl:%define tcl 1} -%{!?guile:%define guile 1} +%{!?tcl:%global tcl 1} +%{!?guile:%global guile 1} +%{!?lualang:%global lualang 1} +%{!?rubylang:%global rubylang 1} + +%ifarch aarch64 %{arm} ppc64le ppc %{power64} s390 s390x +%{!?golang:%global golang 0} +%{!?Rlang:%global Rlang 0} +%{!?javalang:%global javalang 0} +%else +%if 0%{?rhel} +%{!?golang:%global golang 0} +%{!?Rlang:%global Rlang 0} +%else +%{!?golang:%global golang 1} +# R tests failed (since 3.0.4) +%{!?Rlang:%global Rlang 0} +%endif +%{!?javalang:%global javalang 1} +%endif %if 0%{?rhel} -%{!?octave:%define octave 0} +%{!?octave:%global octave 0} %else -%{!?octave:%define octave 1} +%{!?octave:%global octave 1} %endif + Summary: Connects C/C++/Objective C to some high-level programming languages Name: swig -Version: 2.0.12 -Release: 1%{?dist} +Version: 3.0.5 +Release: 4%{?dist} License: GPLv3+ and BSD -Group: Development/Tools URL: http://swig.sourceforge.net/ Source0: http://downloads.sourceforge.net/project/swig/swig/swig-%{version}/swig-%{version}.tar.gz -Source1: swig.1 -# Upstream patch to fix guile locale -# https://github.com/swig/swig/pull/139/files -Patch0: swig-guile.patch +# Define the part of man page sections +Source1: description.h2m Patch1: swig207-setools.patch # Fix the failure on arch x390 during testing Patch2: swig-2.0.10-Fix-x390-build.patch +# Fix segfaults of Python-wrappers when generating code with +# `-buildin -modern -modernargs`. Patch is upstreamed, see patch-url. +Patch3: https://github.com/swig/swig/pull/372.patch#/swig-3.0.5_fix-python-modern-buildin.patch -BuildRequires: perl, python-devel, pcre-devel +BuildRequires: perl, python2-devel, pcre-devel +BuildRequires: autoconf, automake, gawk, dos2unix +BuildRequires: help2man +BuildRequires: perl-devel +BuildRequires: perl(Test::More) +BuildRequires: boost-devel %if %{tcl} BuildRequires: tcl-devel %endif %if %{guile} BuildRequires: guile-devel %endif -BuildRequires: autoconf, automake, gawk, dos2unix %if %{octave} BuildRequires: octave-devel %endif -# Tests -BuildRequires: perl-devel -BuildRequires: perl(Test::More) -BuildRequires: boost-devel +%if %{golang} +BuildRequires: golang +%endif +%if %{lualang} +BuildRequires: lua-devel +%endif +%if %{rubylang} +BuildRequires: ruby-devel +%endif +%if %{Rlang} +BuildRequires: R-devel +%endif +%if %{javalang} +BuildRequires: java, java-devel +%endif %description Simplified Wrapper and Interface Generator (SWIG) is a software @@ -63,9 +97,9 @@ This package contains documentation for SWIG and useful examples %prep %setup -q -n swig-%{version} -%patch0 -p1 -b .guile %patch1 -p1 -b .setools %patch2 -p1 -b .x390 +%patch3 -p1 -b .python for all in CHANGES README; do iconv -f ISO88591 -t UTF8 < $all > $all.new @@ -77,9 +111,19 @@ done ./autogen.sh # Disable maximum compile warnings when octave is supported, because Octave -# code produces lots of the warnings demanded by strict ISO C and ISO C++. +# code produces lots of the warnings demanded by strict ISO C and ISO C++. # It causes that log had more then 600M. %configure \ + --without-ocaml \ +%if ! %{javalang} + --without-java \ +%endif +%if ! %{Rlang} + --without-r \ +%endif +%if ! %{golang} + --without-go \ +%endif %if %{octave} --with-octave=/usr/bin/octave \ --without-maximum-compile-warnings \ @@ -98,12 +142,12 @@ make clean-examples pushd Examples/ # Remove all arch dependent files in Examples/ -find -type f -name 'Makefile.in' | xargs rm -f -- +find -type f -name 'Makefile.in' -delete -print # We don't want to ship files below. rm -rf test-suite -find -type f -name '*.dsp' | xargs rm -f -- -find -type f -name '*.dsw' | xargs rm -f -- +find -type f -name '*.dsp' -delete -print +find -type f -name '*.dsw' -delete -print # Convert files to UNIX format for all in `find -type f`; do @@ -114,23 +158,100 @@ popd make DESTDIR=%{buildroot} install -# Add man page for swig +# Use help output for generating of man page +echo "Options:" >help_output +%{buildroot}%{_bindir}/swig --help >>help_output + +# Update the output to be correctly formatted be help2man +sed -i -e 's/^\(\s\+-[^-]\+\)- \(.*\)$/\1 \2/' help_output +sed -i -e 's/^\(\s\+-\w\+-[^-]*\)- \(.*\)$/\1 \2/' help_output + +# Generate a helper script that will be used by help2man +cat >h2m_helper <<'EOF' +#!/bin/bash +[ "$1" == "--version" ] && echo "" || cat help_output +EOF +chmod a+x h2m_helper + +# Generate man page +help2man -N --section 1 ./h2m_helper --include %{SOURCE1} -o %{name}.1 + +# Add man page for swig to repository mkdir -p %{buildroot}%{_mandir}/man1/ -install -p -m 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/ -gzip %{buildroot}%{_mandir}/man1/$(basename %{SOURCE1}) +install -p -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1/ + +# Enable ccache-swig by default, if ccache is installed. +mkdir -p %{buildroot}%{_libdir}/ccache +ln -fs ../../bin/ccache-swig %{buildroot}%{_libdir}/ccache/swig %files %{_bindir}/* %{_datadir}/swig +%{_libdir}/ccache %{_mandir}/man1/ccache-swig.1* %{_mandir}/man1/swig.1* -%doc ANNOUNCE CHANGES CHANGES.current INSTALL LICENSE LICENSE-GPL +%doc ANNOUNCE CHANGES CHANGES.current LICENSE LICENSE-GPL %doc LICENSE-UNIVERSITIES COPYRIGHT README TODO %files doc %doc Doc Examples LICENSE LICENSE-GPL LICENSE-UNIVERSITIES COPYRIGHT %changelog +* Fri Apr 03 2015 Björn Esser - 3.0.5-4 +- Add Patch3 to fix segfaults of Python-wrappers when generating + code with `-buildin -modern -modernargs`-flags + +* Thu Feb 19 2015 Orion Poplawski - 3.0.5-3 +- Rebuild for gcc 5 C++11 ABI + +* Tue Feb 10 2015 Björn Esser - 3.0.5-2 +- Enable ccache-swig by default, if ccache is installed (#1176861) + +* Tue Feb 03 2015 Jitka Plesnikova - 3.0.5-1 +- Update to 3.0.5 (#1178440) + +* Tue Jan 27 2015 Petr Machata - 3.0.2-3 +- Rebuild for boost 1.57.0 + +* Mon Aug 18 2014 Fedora Release Engineering - 3.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Jun 09 2014 Jitka Plesnikova - 3.0.2-1 +- Update to 3.0.2 + +* Sun Jun 08 2014 Fedora Release Engineering - 3.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 29 2014 Jitka Plesnikova - 3.0.1-1 +- Update to 3.0.1 +- Updated parameters for configure and conditions for BRs + +* Fri May 23 2014 Petr Machata - 3.0.0-7 +- Rebuild for boost 1.55.0 + +* Thu May 22 2014 Dan Horák 3.0.0-6 +- java unit tests fail on s390(x), too. disable for now + +* Mon May 12 2014 Peter Robinson 3.0.0-5 +- unit tests fail on aarch64, too. disable for now + +* Fri Apr 25 2014 Peter Robinson 3.0.0-4 +- No golang or R on aarch64 (currently) + +* Tue Apr 22 2014 Karsten Hopp 3.0.0-3 +- golang is exclusivearch %{ix86} x86_64 %{arm}, don't BR it on ppc*, s390* +- unit tests fail on other ppc archs, too. disable for now + +* Fri Mar 28 2014 Jitka Plesnikova - 3.0.0-2 +- Small changes to enable ppc64le (BZ#1081724) + +* Thu Mar 20 2014 Jitka Plesnikova - 3.0.0-1 +- Update to 3.0.0 +- Update BRs to run tests for Java, Ruby, Lua, R, Go +- Replace %%define by %%global (BZ#1063589) +- Remove Group tag (BZ#1063589) +- Generate man page from help to have the correct list of options + * Fri Feb 28 2014 Orion Poplawski - 2.0.12-1 - Update to 2.0.12 - A patch to fix guile locale