[octave-communications] import from review
sailer
sailer at fedoraproject.org
Sun Dec 18 23:07:12 UTC 2011
commit 716bf8f7139a1fa4b63d8ca236b12f72ea8ac067
Author: Thomas Sailer <t.sailer at alumni.ethz.ch>
Date: Mon Dec 19 00:06:53 2011 +0100
import from review
.gitignore | 1 +
mkdoc | 160 ++++++++++++
mktexi | 457 +++++++++++++++++++++++++++++++++++
octave-communications-verbose.patch | 24 ++
octave-communications.spec | 95 ++++++++
sources | 1 +
6 files changed, 738 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..5e0e964 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/communications-1.1.0.tar.gz
diff --git a/mkdoc b/mkdoc
new file mode 100644
index 0000000..15c5386
--- /dev/null
+++ b/mkdoc
@@ -0,0 +1,160 @@
+#!/usr/bin/env perl
+#
+# David Bateman Feb 02 2003
+#
+# Extracts the help in texinfo format from *.cc and *.m files for use
+# in documentation. Based on make_index script from octave_forge.
+
+use strict;
+use File::Find;
+use File::Basename;
+use FileHandle;
+
+my $docdir = ".";
+if (@ARGV) {
+ $docdir = @ARGV[0];
+}
+
+# locate all C++ and m-files in current directory
+my @m_files = ();
+my @C_files = ();
+find(\&cc_and_m_files, $docdir);
+
+sub cc_and_m_files { # {{{1 populates global array @files
+ return unless -f and /\.(m|cc)$/; # .m and .cc files
+ my $path = "$File::Find::dir/$_";
+ $path =~ s|^[.]/||;
+ if (/\.m$/) {
+ push @m_files, $path;
+ } else {
+ push @C_files, $path;
+ }
+} # 1}}}
+
+# grab help from C++ files
+foreach my $f ( @C_files ) {
+ # XXX FIXME XXX. Should run the preprocessor over the file first, since
+ # the help might include defines that are compile dependent.
+ if ( open(IN,$f) ) {
+ while (<IN>) {
+ # skip to the next function
+ next unless /^DEFUN_DLD/;
+
+ # extract function name to pattern space
+ /\((\w*)\s*,/;
+ # remember function name
+ my $function = $1;
+ # skip to next line if comment doesn't start on this line
+ # XXX FIXME XXX maybe we want a loop here?
+ $_ = <IN> unless /\"/;
+ # skip to the beginning of the comment string by
+ # chopping everything up to opening "
+ my $desc = $_;
+ $desc =~ s/^[^\"]*\"//;
+ # join lines until you get the end of the comment string
+ # plus a bit more. You need the "plus a bit more" because
+ # C compilers allow implicitly concatenated string constants
+ # "A" "B" ==> "AB".
+ while ($desc !~ /[^\\]\"\s*\S/ && $desc !~ /^\"/) {
+ # if line ends in '\', chop it and the following '\n'
+ $desc =~ s/\\\s*\n//;
+ # join with the next line
+ $desc .= <IN>;
+ # eliminate consecutive quotes, being careful to ignore
+ # preceding slashes. XXX FIXME XXX what about \\" ?
+ $desc =~ s/([^\\])\"\s*\"/$1/;
+ }
+ $desc = "" if $desc =~ /^\"/; # chop everything if it was ""
+ $desc =~ s/\\n/\n/g; # insert fake line ends
+ $desc =~ s/([^\"])\".*$/$1/; # chop everything after final '"'
+ $desc =~ s/\\\"/\"/; # convert \"; XXX FIXME XXX \\"
+ $desc =~ s/$//g; # chop trailing ...
+
+ if (!($desc =~ /^\s*-[*]- texinfo -[*]-/)) {
+ my $err = sprintf("Function %s, does not contain texinfo help\n",
+ $function);
+ print STDERR "$err";
+ }
+ my $entry = sprintf("\037%s\n%s", $function, $desc);
+ print "$entry", "\n";
+ }
+ close (IN);
+ } else {
+ print STDERR "Could not open file ($f): $!\n";
+ }
+}
+
+# grab help from m-files
+foreach my $f ( @m_files ) {
+ my $desc = extract_description($f);
+ my $function = basename($f, ('.m'));
+ die "Null function?? [$f]\n" unless $function;
+ if (!($desc =~ /^\s*-[*]- texinfo -[*]-/)) {
+ my $err = sprintf("Function %s, does not contain texinfo help\n",
+ $function);
+ print STDERR "$err";
+ }
+ my $entry = sprintf("\037%s\n%s", $function, $desc);
+ print "$entry", "\n";
+}
+
+sub extract_description { # {{{1
+# grab the entire documentation comment from an m-file
+ my ($file) = @_;
+ my $retval = '';
+
+ if( open( IN, "$file")) {
+ # skip leading blank lines
+ while (<IN>) {
+ last if /\S/;
+ }
+ if( m/\s*[%\#][\s\#%]* Copyright/) {
+ # next block is copyright statement, skip it
+ while (<IN>) {
+ last unless /^\s*[%\#]/;
+ }
+ }
+ # Skip everything until the next comment block
+ while ( !/^\s*[\#%]/ ) {
+ $_ = <IN>;
+ last if not defined $_;
+ }
+ # Return the next comment block as the documentation
+ while (/^\s*[\#%]/) {
+ s/^[\s%\#]*//; # strip leading comment characters
+ s/[\cM\s]*$//; # strip trailing spaces.
+ s/[\.*]$//;
+ $retval .= "$_\n";
+ $_ = <IN>;
+ last if not defined $_;
+ }
+ close(IN);
+ return $retval;
+ }
+ else {
+ print STDERR "Could not open file ($file): $!\n";
+ }
+} # 1}}}
+__END__
+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, see <http://www.gnu.org/licenses/>.
+This program is granted to the public domain.
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/mktexi b/mktexi
new file mode 100644
index 0000000..09f9dd0
--- /dev/null
+++ b/mktexi
@@ -0,0 +1,457 @@
+#!/usr/bin/env perl
+#
+# David Bateman Feb 02 2003
+#
+# Extracts the help in texinfo format for particular function for use
+# in documentation. Based on make_index script from octave_forge.
+
+use strict;
+use File::Find;
+use File::Basename;
+use Text::Wrap;
+use FileHandle;
+use IPC::Open3;
+use POSIX ":sys_wait_h";
+
+my $file = shift @ARGV;
+my $docfile = shift @ARGV;
+my $indexfile = shift @ARGV;
+my $line;
+
+if ( open(IN,$file) ) {
+ $line = <IN>;
+ my $tex = 0;
+ while ($line) {
+ if ($line =~ /^\@DOCSTRING/) {
+ my $found = 0;
+ my $func = $line;
+ $func =~ s/\@DOCSTRING\(//;
+ $func =~ s/\)[\n\r]+//;
+ my $func0 = $func;
+ my $func1 = $func;
+ $func0 =~ s/,.*$//;
+ $func1 =~ s/^.*,//;
+ if ( open(DOC,$docfile) ) {
+ while (<DOC>) {
+ next unless /\037/;
+ my $function = $_;
+ $function =~ s/\037//;
+ $function =~ s/[\n\r]+//;
+ if ($function =~ /^$func0$/) {
+ my $desc = "";
+ my $docline;
+ my $doctex = 0;
+ while (($docline = <DOC>) && ($docline !~ /^\037/)) {
+ $docline =~ s/^\s*-[*]- texinfo -[*]-\s*//;
+ if ($docline =~ /\@tex/) {
+ $doctex = 1;
+ }
+ if ($doctex) {
+ $docline =~ s/\\\\/\\/g;
+ }
+ if ($docline =~ /\@end tex/) {
+ $doctex = 0;
+ }
+ $desc .= $docline;
+ }
+ $desc =~ s/$func0/$func1/g;
+ $desc =~ s/\@seealso\{(.*[^}])\}/See also: \1/g;
+ print "$desc", "\n";
+ $found = 1;
+ last;
+ }
+ }
+ close (DOC);
+ if (! $found) {
+ print "\@emph{Not implemented}\n";
+ }
+ } else {
+ print STDERR "Could not open file $docfile\n";
+ exit 1;
+ }
+ } elsif ($line =~ /^\@REFERENCE_SECTION/) {
+ my $secfound = 0;
+ my $sec = $line;
+ $sec =~ s/\@REFERENCE_SECTION\(//;
+ $sec =~ s/\)[\n\r]+//;
+ my @listfunc = ();
+ my $nfunc = 0;
+ my $seccat = 0;
+
+ if ( open(IND,$indexfile) ) {
+ while (<IND>) {
+ next unless /^[^ ]/;
+ my $section = $_;
+ $section =~ s/[\n\r]+//;
+ if ($section =~ /^(.*?)\s*>>\s*(.*?)$/) {
+ $section =~ s/.*>>(.*)/\1/;
+ $seccat = 1;
+ }
+ $section =~ s/^ *//;
+ $section =~ s/ *$//;
+ if ($section =~ /^$sec$/) {
+ if ($seccat) {
+ print "\@iftex\n";
+ print "\@section Functions by Category\n";
+ # Get the list of categories to index
+ my $firstcat = 1;
+ my $category;
+ while (<IND>) {
+ last if />>/;
+ if (/^[^ ]/) {
+ if (! $firstcat) {
+ print "\@end table\n";
+ } else {
+ $firstcat = 0;
+ }
+ $category = $_;
+ $category =~ s/[\n\r]+//;
+ print "\@subsection $category\n";
+ print "\@table \@asis\n";
+ } elsif (/^\s+(\S.*\S)\s*=\s*(\S.*\S)\s*$/) {
+ my $func = $1;
+ my $desc = $2;
+ print "\@item $func\n";
+ print "$desc\n";
+ print "\n";
+ } else {
+ if ($firstcat) {
+ print STDERR "Error parsing index file\n";
+ exit 1;
+ }
+ s/^\s+//;
+ my @funcs = split /\s+/;
+ while ($#funcs >= 0) {
+ my $func = shift @funcs;
+ $func =~ s/^ *//;
+ $func =~ s/[\n\r]+//;
+ push @listfunc, $func;
+ $nfunc = $nfunc + 1;
+ print "\@item $func\n";
+ print func_summary($func, $docfile);
+ print "\n";
+ }
+ }
+ }
+ if (! $firstcat) {
+ print "\@end table\n";
+ }
+ print "\n\@section Functions Alphabetically\n";
+ print "\@end iftex\n\n";
+ } else {
+ # Get the list of functions to index
+ my $indline;
+ while (($indline = <IND>) && ($indline =~ /^ /)) {
+ if ($indline =~ /^\s+(\S.*\S)\s*=\s*(\S.*\S)\s*$/) {
+ next;
+ }
+ $indline =~ s/^\s+//;
+ my @funcs = split(/\s+/,$indline);
+ while ($#funcs >= 0) {
+ my $func = shift @funcs;
+ $func =~ s/^ *//;
+ $func =~ s/[\n\r]+//;
+ push @listfunc, $func;
+ $nfunc = $nfunc + 1;
+ }
+ }
+ }
+ $secfound = 1;
+ last;
+ }
+ }
+ close (IND);
+ if (! $secfound) {
+ print STDERR "Did not find section $sec\n";
+ }
+ } else {
+ print STDERR "Could not open file $indexfile\n";
+ exit 1;
+ }
+
+ @listfunc = sort(@listfunc);
+ my @listfunc2 = ();
+ my $indent = 16 - 3;
+ print "\@menu\n";
+ foreach my $func (@listfunc) {
+ if ( open(DOC,$docfile) ) {
+ my $found = 0;
+ while (<DOC>) {
+ next unless /\037/;
+ my $function = $_;
+ $function =~ s/\037//;
+ $function =~ s/[\n\r]+//;
+ if ($function =~ /^$func$/) {
+ $found = 1;
+ last;
+ }
+ }
+ close (DOC);
+ if ($found) {
+ push @listfunc2, $func;
+ my $func0 = "${func}::";
+ my $entry = sprintf("* %-*s %s",$indent,$func0,func_summary($func,$docfile));
+ print wrap("","\t\t","$entry"), "\n";
+ }
+ } else {
+ print STDERR "Could not open file $indexfile\n";
+ exit 1;
+ }
+ }
+ print "\@end menu\n";
+
+ my $up = "Function Reference";
+ my $next;
+ my $prev;
+ my $mfunc = 1;
+ foreach my $func (@listfunc2) {
+ if ($mfunc == $nfunc) {
+ $next = "";
+ } else {
+ $next = @listfunc2[$mfunc];
+ $mfunc = $mfunc + 1;
+ }
+ print "\n\@node $func, $next, $prev, $up\n";
+ if ($seccat) {
+ print "\@subsection $func\n\n";
+ } else {
+ print "\@section $func\n\n";
+ }
+ $prev = $func;
+ my $found = 0;
+ my $desc = "";
+ if ( open(DOC,$docfile) ) {
+ while (<DOC>) {
+ next unless /\037/;
+ my $function = $_;
+ $function =~ s/\037//;
+ $function =~ s/[\n\r]+//;
+ if ($function =~ /^$func$/) {
+ my $docline;
+ my $doctex = 0;
+ while (($docline = <DOC>) && ($docline !~ /^\037/)) {
+ $docline =~ s/^\s*-[*]- texinfo -[*]-\s*//;
+ if ($docline =~ /\@tex/) {
+ $doctex = 1;
+ }
+ if ($doctex) {
+ $docline =~ s/\\\\/\\/g;
+ }
+ if ($docline =~ /\@end tex/) {
+ $doctex = 0;
+ }
+ $desc .= $docline;
+ }
+ $desc =~ s/\@seealso\{(.*[^}])\}/See also: \1/g;
+ print "$desc", "\n";
+ $found = 1;
+ last;
+ }
+ }
+ close (DOC);
+ if (! $found) {
+ print "\@emph{Not implemented}\n";
+ }
+ } else {
+ print STDERR "Could not open file $docfile\n";
+ exit 1;
+ }
+ }
+ } else {
+ if ($line =~ /\@tex/) {
+ $tex = 1;
+ }
+ if ($tex) {
+ $line =~ s/\\\\/\\/g;
+ }
+ print "$line";
+ if ($line =~ /\@end tex/) {
+ $tex = 0;
+ }
+ }
+ $line = <IN>;
+ }
+} else {
+ print STDERR "Could not open file $file\n";
+ exit 1;
+}
+
+sub func_summary { # {{{1
+ my ($func, # in function name
+ $docfile # in DOCSTRINGS
+ ) = @_;
+
+ my $desc = "";
+ my $found = 0;
+ if ( open(DOC,$docfile) ) {
+ while (<DOC>) {
+ next unless /\037/;
+ my $function = $_;
+ $function =~ s/\037//;
+ $function =~ s/[\n\r]+//;
+ if ($function =~ /^$func$/) {
+ my $docline;
+ my $doctex = 0;
+ while (($docline = <DOC>) && ($docline !~ /^\037/)) {
+ if ($docline =~ /\@tex/) {
+ $doctex = 1;
+ }
+ if ($doctex) {
+ $docline =~ s/\\\\/\\/g;
+ }
+ if ($docline =~ /\@end tex/) {
+ $doctex = 0;
+ }
+ $desc .= $docline;
+ }
+ $desc =~ s/\@seealso\{(.*[^}])\}/See also: \1/g;
+ $found = 1;
+ last;
+ }
+ }
+ close (DOC);
+ if (! $found) {
+ $desc = "\@emph{Not implemented}";
+ }
+ } else {
+ print STDERR "Could not open file $docfile\n";
+ exit 1;
+ }
+ return first_sentence($desc);
+} # 1}}}
+
+
+sub first_sentence { # {{{1
+# grab the first real sentence from the function documentation
+ my ($desc) = @_;
+ my $retval = '';
+ my $line;
+ my $next;
+ my @lines;
+
+ my $trace = 0;
+ # $trace = 1 if $desc =~ /Levenberg/;
+ return "" unless defined $desc;
+ if ($desc =~ /^\s*-[*]- texinfo -[*]-/) {
+ # help text contains texinfo. Strip the indicator and run it
+ # through makeinfo. (XXX FIXME XXX this needs to be a function)
+ $desc =~ s/^\s*-[*]- texinfo -[*]-\s*//;
+ my $cmd = "makeinfo --fill-column 1600 --no-warn --no-validate --no-headers --force --ifinfo";
+ open3(*Writer, *Reader, *Errer, $cmd) or die "Could not run info";
+ print Writer "\@macro seealso {args}\n\n\@noindent\nSee also: \\args\\.\n\@end macro\n";
+ print Writer "$desc"; close(Writer);
+ @lines = <Reader>; close(Reader);
+ my @err = <Errer>; close(Errer);
+ waitpid(-1,&WNOHANG);
+
+ # Display source and errors, if any
+ if (@err) {
+ my $n = 1;
+ foreach $line ( split(/\n/,$desc) ) {
+ printf "%2d: %s\n",$n++,$line;
+ }
+ print ">>> @err";
+ }
+
+ # Print trace showing formatted output
+# print "<texinfo--------------------------------\n";
+# print @lines;
+# print "--------------------------------texinfo>\n";
+
+ # Skip prototype and blank lines
+ while (1) {
+ return "" unless @lines;
+ $line = shift @lines;
+ next if $line =~ /^\s*-/;
+ next if $line =~ /^\s*$/;
+ last;
+ }
+
+ } else {
+
+# print "<plain--------------------------------\n";
+# print $desc;
+# print "--------------------------------plain>\n";
+
+ # Skip prototype and blank lines
+ @lines = split(/\n/,$desc);
+ while (1) {
+ return "" if ($#lines < 0);
+ $line = shift @lines;
+ next if $line =~ /^\s*[Uu][Ss][Aa][Gg][Ee]/; # skip " usage "
+
+ $line =~ s/^\s*\w+\s*://; # chop " blah : "
+ print "strip blah: $line\n" if $trace;
+ $line =~ s/^\s*[Ff]unction\s+//; # chop " function "
+ print "strip function $line\n" if $trace;
+ $line =~ s/^\s*\[.*\]\s*=\s*//; # chop " [a,b] = "
+ print "strip []= $line\n" if $trace;
+ $line =~ s/^\s*\w+\s*=\s*//; # chop " a = "
+ print "strip a= $line\n" if $trace;
+ $line =~ s/^\s*\w+\s*\([^\)]*\)\s*//; # chop " f(x) "
+ print "strip f(x) $line\n" if $trace;
+ $line =~ s/^\s*[;:]\s*//; # chop " ; "
+ print "strip ; $line\n" if $trace;
+
+ $line =~ s/^\s*[[:upper:]][[:upper:]0-9_]+//; # chop " BLAH"
+ print "strip BLAH $line\n" if $trace;
+ $line =~ s/^\s*\w*\s*[-]+\s+//; # chop " blah --- "
+ print "strip blah --- $line\n" if $trace;
+ $line =~ s/^\s*\w+ *\t\s*//; # chop " blah <TAB> "
+ print "strip blah <TAB> $line\n" if $trace;
+ $line =~ s/^\s*\w+\s\s+//; # chop " blah "
+ print "strip blah <NL> $line\n" if $trace;
+
+# next if $line =~ /^\s*\[/; # skip [a,b] = f(x)
+# next if $line =~ /^\s*\w+\s*(=|\()/; # skip a = f(x) OR f(x)
+ next if $line =~ /^\s*or\s*$/; # skip blah \n or \n blah
+ next if $line =~ /^\s*$/; # skip blank line
+ next if $line =~ /^\s?!\//; # skip # !/usr/bin/octave
+ # XXX FIXME XXX should be testing for unmatched () in proto
+ # before going to the next line!
+ last;
+ }
+ }
+
+ # Try to make a complete sentence, including the '.'
+ if ( "$line " !~ /[^.][.]\s/ && $#lines >= 0) {
+ my $next = $lines[0];
+ $line =~ s/\s*$//; # trim trailing blanks on last
+ $next =~ s/^\s*//; # trim leading blanks on next
+ $line .= " $next" if "$next " =~ /[^.][.]\s/; # ends the sentence
+ }
+
+ # Tidy up the sentence.
+ chomp $line; # trim trailing newline, if there is one
+ $line =~ s/^\s*//; # trim leading blanks on line
+ $line =~ s/([^.][.])\s.*$/$1/; # trim everything after the sentence
+ print "Skipping:\n$desc---\n" if $line eq "";
+
+ # And return it.
+ return $line;
+
+} # 1}}}
+
+__END__
+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, see <http://www.gnu.org/licenses/>.
+This program is granted to the public domain.
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/octave-communications-verbose.patch b/octave-communications-verbose.patch
new file mode 100644
index 0000000..c7a303b
--- /dev/null
+++ b/octave-communications-verbose.patch
@@ -0,0 +1,24 @@
+--- src/Makefile.orig 2011-12-16 01:45:04.236986274 +0100
++++ src/Makefile 2011-12-16 01:45:13.776233430 +0100
+@@ -26,7 +26,7 @@
+ DELETES = $(OBJECTS) $(GALOISDEPENDS) $(OTHERDEPENDS) *~ $(TARGETS) core octave-core
+
+ DEFINES = -DGALOIS_DISP_PRIVATES
+-MOFLAGS =
++MOFLAGS = -v
+
+ .PHONY: all dist clean realclean count
+ .SUFFIXES:
+--- doc/Makefile.verbose 2011-12-16 18:19:48.629533909 +0100
++++ doc/Makefile 2011-12-16 18:20:03.787130857 +0100
+@@ -2,8 +2,8 @@
+
+ # Fill in the variables as it makes testing the package manager easier
+ ifeq ($(MKDOC),)
+-MKDOC = ../../../admin/mkdoc
+-MKTEXI = ../../../admin/mktexi
++MKDOC = ../mkdoc
++MKTEXI = ../mktexi
+ MAKEINFO = makeinfo --no-split
+ TEXI2DVI = texi2dvi --clean
+ DVIPS = dvips
diff --git a/octave-communications.spec b/octave-communications.spec
new file mode 100644
index 0000000..a5a860e
--- /dev/null
+++ b/octave-communications.spec
@@ -0,0 +1,95 @@
+%global octpkg communications
+
+Name: octave-%{octpkg}
+Version: 1.1.0
+Release: 2%{?dist}
+Summary: Communications for Octave
+Group: Applications/Engineering
+License: GPLv2+
+URL: http://octave.sourceforge.net/communications/
+Source0: http://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
+# the following are required to build the documentation, and they come from the main octave package
+Source1: mkdoc
+Source2: mktexi
+# make build more verbose; local fedora change, not upstreamed
+Patch0: octave-communications-verbose.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires: octave-devel
+BuildRequires: octave-signal >= 1.0.0
+BuildRequires: octave-image >= 0.0.0
+BuildRequires: hdf5-devel
+BuildRequires: texinfo-tex
+
+Requires: octave(api) = %{octave_api}
+Requires: octave-signal >= 1.0.0
+Requires: octave-image >= 0.0.0
+Requires(post): octave
+Requires(postun): octave
+
+Obsoletes: octave-forge <= 20090607
+
+
+%description
+Digital Communications, Error Correcting Codes (Channel Code), Source Code
+functions, Modulation and Galois Fields
+
+%prep
+%setup -q -n %{octpkg}
+cp -p %{SOURCE1} %{SOURCE2} .
+chmod a+x mkdoc mktexi
+%patch0 -p0 -b .verbose
+
+%build
+# octave_pkg_build results in the following errors:
+# error: the following dependencies where unsatisfied:
+# communications needs signal >= 1.0.0
+# communications needs image >= 0.0.0
+# even though the dependencies are installed
+# see https://bugzilla.redhat.com/show_bug.cgi?id=733615
+#octave_pkg_build
+%octave_cmd pkg build '-verbose' '-nodeps' %{_tmppath}/%{name}-%{version}-%{release}.%{_arch} %{_builddir}/%{buildsubdir}
+make -C doc
+
+%install
+rm -rf %{buildroot}
+%octave_pkg_install
+# remove doc build junk
+rm -rf %{buildroot}/%{octpkgdir}/doc
+install -m 0644 doc/comms.info %{buildroot}/%{octpkgdir}
+chmod a-x %{buildroot}/%{octpkgdir}/*.m
+chmod a-x %{buildroot}/%{octpkgdir}/@galois/*.m
+
+# for EPEL
+%clean
+rm -rf %{buildroot}
+
+%post
+%octave_cmd pkg rebuild
+
+%preun
+%octave_pkg_preun
+
+%postun
+%octave_cmd pkg rebuild
+
+%files
+%defattr(-,root,root,-)
+%{octpkglibdir}
+
+%dir %{octpkgdir}
+%doc %{octpkgdir}/doc-cache
+%{octpkgdir}/*.m
+%{octpkgdir}/@galois/*.m
+%{octpkgdir}/packinfo
+%{octpkgdir}/comms.info
+
+%changelog
+* Sat Dec 17 2011 Thomas Sailer <t.sailer at alumni.ethz.ch> - 1.1.0-2
+- update according to reviewer comments
+
+* Fri Dec 16 2011 Thomas Sailer <t.sailer at alumni.ethz.ch> - 1.1.0-1
+- update to 1.1.0
+
+* Fri Jun 03 2011 Thomas Sailer <t.sailer at alumni.ethz.ch> - 1.0.10-1
+- initial package for Fedora
diff --git a/sources b/sources
index e69de29..f5a74c8 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+1ec83d2757d5aa7d65be4a4c29741eba communications-1.1.0.tar.gz
More information about the scm-commits
mailing list