Compare commits

..

2 Commits

Author SHA1 Message Date
Dima Kogan
40fea5eb7f changelog bump 2018-09-29 10:57:37 -07:00
Dima Kogan
016c7ebfa9 Added a new .gp terminal to create self-plotting gnuplot scripts 2018-09-29 10:55:36 -07:00
13 changed files with 115 additions and 322 deletions

View File

@@ -1,3 +1,9 @@
feedgnuplot (1.51)
* Added .gp "terminal" to create self-plotting gnuplot files
-- Dima Kogan <dima@secretsauce.net> Sat, 29 Sep 2018 10:56:30 -0700
feedgnuplot (1.50)
* Script waits for the plot window to close before exiting

View File

@@ -16,7 +16,7 @@ use Pod::Usage;
use Time::Piece;
# Makefile.PL assumes this is in ''
my $VERSION = '1.50';
my $VERSION = '1.51';
my %options;
interpretCommandline();
@@ -617,51 +617,15 @@ sub getNextLine
sub mainThread
{
local *PIPE;
my $dopersist = '';
if( getGnuplotVersion() >= 4.3 && # --persist not available before this
# --persist is needed for the "half-alive" state (see documentation for
# --exit). This state is only used with these options:
!$options{stream} && $options{exit})
{
$dopersist = '--persist';
}
# We trap SIGINT to kill the data input, but keep the plot up. see
# documentation for --exit
if ($options{stream} && !$options{exit})
{
$SIG{INT} = sub
{
print STDERR "$0 received SIGINT. Send again to quit\n";
$SIG{INT} = undef;
};
}
if(exists $options{dump})
{
*PIPE = *STDOUT;
}
else
{
my $geometry = defined $options{geometry} ?
"-geometry $options{geometry}" : '';
open PIPE, "|gnuplot $geometry $dopersist" or die "Can't initialize gnuplot\n";
}
autoflush PIPE 1;
my $outputfile;
my $outputfileType;
if( defined $options{hardcopy})
{
$outputfile = $options{hardcopy};
if( $outputfile =~ /^[^|] # starts with anything other than |
.* # stuff in the middle
\.(eps|ps|pdf|png|svg)$/ix) # ends with a known extension
if( $outputfile =~ /^[^|] # starts with anything other than |
.* # stuff in the middle
\.(eps|ps|pdf|png|svg|gp)$/ix) # ends with a known extension
{
$outputfileType = lc $1;
}
@@ -671,7 +635,8 @@ sub mainThread
ps => 'postscript noenhanced solid color landscape 12',
pdf => 'pdfcairo noenhanced solid color font ",12" size 11in,8.5in',
png => 'png noenhanced size 1280,1024',
svg => 'svg noenhanced');
svg => 'svg noenhanced',
gp => 'gp');
if( !defined $options{terminal} &&
defined $outputfileType &&
@@ -683,8 +648,89 @@ sub mainThread
die "Asked to plot to file '$outputfile', but I don't know which terminal to use, and no --terminal given"
unless $options{terminal};
}
print PIPE "set terminal $options{terminal}\n" if $options{terminal};
print PIPE "set output \"$outputfile\"\n" if $outputfile;
sub gpterminal
{
return defined $options{terminal} && $options{terminal} eq 'gp';
}
sub datadump_only
{
return
exists $options{dump} ||
gpterminal();
}
sub search_PATH
{
for my $pathdir (File::Spec->path())
{
my $gnuplot_execpath = File::Spec->catfile($pathdir, $_[0]);
return $gnuplot_execpath
if -x $gnuplot_execpath && ! -d $gnuplot_execpath;
}
return undef;
}
if(datadump_only())
{
if(gpterminal())
{
open PIPE, '>', $outputfile;
my $gnuplotpath = search_PATH('gnuplot');
if(!defined $gnuplotpath)
{
print STDERR "Couldn't find the gnuplot executable path. Creating .gp file still, but omitting #!. This will NOT be self-executable";
}
else
{
chmod 0755, $outputfile;
print PIPE "#!$gnuplotpath\n";
}
}
else
{
*PIPE = *STDOUT;
}
}
else
{
my $dopersist = '';
if ( getGnuplotVersion() >= 4.3 && # --persist not available before this
# --persist is needed for the "half-alive" state (see documentation for
# --exit). This state is only used with these options:
!$options{stream} && $options{exit}) {
$dopersist = '--persist';
}
# We trap SIGINT to kill the data input, but keep the plot up. see
# documentation for --exit
if ($options{stream} && !$options{exit})
{
$SIG{INT} = sub
{
print STDERR "$0 received SIGINT. Send again to quit\n";
$SIG{INT} = undef;
};
}
my $geometry = defined $options{geometry} ?
"-geometry $options{geometry}" : '';
open PIPE, "|gnuplot $geometry $dopersist" or die "Can't initialize gnuplot\n";
autoflush PIPE 1;
}
if(!gpterminal())
{
print PIPE "set terminal $options{terminal}\n" if $options{terminal};
print PIPE "set output \"$outputfile\"\n" if $outputfile;
}
# set up plotting style
my $style = '';
@@ -961,7 +1007,7 @@ sub mainThread
# finished reading in all. Plot what we have
plotStoredData() unless $options{stream} && $options{exit};
if ( defined $options{hardcopy})
if ( defined $options{hardcopy} && !gpterminal())
{
print PIPE "set output\n";
@@ -990,7 +1036,12 @@ sub mainThread
# we persist gnuplot, so we shouldn't need this sleep. However, once
# gnuplot exits, but the persistent window sticks around, you can no
# longer interactively zoom the plot. So we still sleep
unless($options{dump} || $options{exit})
if(gpterminal())
{
print PIPE "pause mouse close\n";
close PIPE;
}
elsif(!($options{dump} || $options{exit}))
{
print PIPE "pause mouse close\n";
}
@@ -1540,15 +1591,20 @@ This command causes feedgnuplot to exit.
The script is able to produce hardcopy output with C<--hardcopy outputfile>. The
output type can be inferred from the filename, if B<.ps>, B<.eps>, B<.pdf>,
B<.svg> or B<.png> is requested. If any other file type is requested,
B<.svg>, B<.png> or B<.gp> is requested. If any other file type is requested,
C<--terminal> I<must> be passed in to tell gnuplot how to make the plot. If
C<--terminal> is passed in, then the C<--hardcopy> argument only provides the
output filename.
The B<.gp> output is special. Instead of asking gnuplot to plot to a particular
terminal, writing to a B<.gp> simply dumps a self-executable gnuplot script into
the given file. This is similar to what C<--dump> does, but writes to a file,
and makes sure that the file can be self-executing.
=head2 Self-plotting data files
This script can be used to enable self-plotting data files. There are 2 ways of
doing this: with a shebang (#!) or with inline perl data.
This script can be used to enable self-plotting data files. There are several
ways of doing this: with a shebang (#!) or with inline perl data.
=head3 Self-plotting data with a #!
@@ -1582,6 +1638,11 @@ characters and that the full path to feedgnuplot must be given. The 127
character limit is a serious limitation, but this can likely be resolved with a
kernel patch. I have only tried on Linux 2.6.
=head3 Self-plotting data with gnuplot
Running C<feedgnuplot --hardcopy plotdata.gp ....> will create a self-executable
gnuplot script in C<plotdata.gp>
=head3 Self-plotting data with perl inline data
Perl supports storing data and code in the same file. This can also be used to

195
debian/changelog vendored
View File

@@ -1,195 +0,0 @@
feedgnuplot (1.50-1) unstable; urgency=medium
* Script waits for the plot window to close before exiting
Instead of sleeping forever. This is really nice! I no longer need
to quit the plot window AND then C-c. Quitting the plot window is
now sufficient
* by default --image sets range noextend
* tab-completion knows about the fnormal distribution
-- Dima Kogan <dkogan@debian.org> Fri, 24 Aug 2018 13:16:35 -0700
feedgnuplot (1.49-2) unstable; urgency=medium
* Updated Vcs-... tags to salsa
-- Dima Kogan <dkogan@debian.org> Sun, 17 Jun 2018 22:18:18 -0700
feedgnuplot (1.49-1) unstable; urgency=medium
* --vnl now works with plots that have rangesize > 1
* zsh completion: --xlen argument isn't optional
-- Dima Kogan <dkogan@debian.org> Fri, 16 Mar 2018 13:56:27 -0700
feedgnuplot (1.48-1) unstable; urgency=medium
* Added --tuplesize and --tuplesizeall
* vnlog integration
-- Dima Kogan <dkogan@debian.org> Sat, 24 Feb 2018 12:56:05 -0800
feedgnuplot (1.45-1) unstable; urgency=medium
* zsh completion: --hardcopy, --image suggest filenames
* --image now produces a nicer legend: just the filename
* --curvestyle now overrides --curvestyleall
- This is a bug fix
* The version is now treated as a string not as a number
- So "1.40" is distinct from "1.4"
-- Dima Kogan <dkogan@debian.org> Sun, 29 Oct 2017 14:06:26 -0700
feedgnuplot (1.44-1) unstable; urgency=medium
* --image always goes on the FRONT of the equation list
-- Dima Kogan <dkogan@debian.org> Tue, 20 Jun 2017 16:45:42 -0700
feedgnuplot (1.43-1) unstable; urgency=medium
* added --image as a convenience wrapper for --equation
-- Dima Kogan <dkogan@debian.org> Mon, 19 Jun 2017 13:16:18 -0700
feedgnuplot (1.42-1) unstable; urgency=medium
* Upstream update:
- Fixed regression: data can now come from STDIN or files on the
cmdline
- reworded manpage of --exit
-- Dima Kogan <dkogan@debian.org> Tue, 25 Apr 2017 11:02:18 -0700
feedgnuplot (1.41-1) unstable; urgency=medium
* Upstream update:
- Histograms: --xlen can coexist with --xmin/--xmax
- Histograms: work as expected with --xlen and --monotonic
- Histograms: better sanity checking of options
-- Dima Kogan <dkogan@debian.org> Fri, 24 Feb 2017 23:53:27 -0800
feedgnuplot (1.40-1) unstable; urgency=medium
* Upstream update:
- If the options couldn't be parsed I don't dump the whole manpage
- --style and --rangesize can now take a comma-separated list of IDs
- 'any' is from List::MoreUtils, not List::Util
- the sleep-forever delay at end is now > 1000 days
-- Dima Kogan <dkogan@debian.org> Fri, 25 Nov 2016 14:49:36 -0800
feedgnuplot (1.39-1) unstable; urgency=medium
* Upstream update:
- by default, histograms are plotted in expected ways
- No enhanced text mode in hardcopies, slightly larger font size
-- Dima Kogan <dkogan@debian.org> Sat, 15 Oct 2016 20:45:15 -0700
feedgnuplot (1.37-1) unstable; urgency=medium
* Upstream update: At the end of a streaming plot, include the last
chunk of data
-- Dima Kogan <dima@secretsauce.net> Fri, 01 Jan 2016 08:14:23 -0800
feedgnuplot (1.36-1) unstable; urgency=medium
* Upstream update: added --equation to plot symbolic equations
-- Dima Kogan <dima@secretsauce.net> Fri, 13 Nov 2015 11:14:30 -0800
feedgnuplot (1.35-1) unstable; urgency=medium
* Upstream update: fancier handling of termination conditions, no more
threading code
-- Dima Kogan <dima@secretsauce.net> Mon, 02 Nov 2015 13:55:32 -0800
feedgnuplot (1.34-2) unstable; urgency=medium
* Depends now works with the 'gnuplot5' packages
-- Dima Kogan <dima@secretsauce.net> Fri, 10 Oct 2014 14:05:17 -0700
feedgnuplot (1.34-1) unstable; urgency=medium
* Very minor upstream update
* gnuplot-nox can no satisfy the gnuplot dependency for feedgnuplot
-- Dima Kogan <dima@secretsauce.net> Wed, 06 Aug 2014 15:19:56 -0700
feedgnuplot (1.33-1) unstable; urgency=low
* Upstream update: fixed incorrect plotting of --timefmt --rangesize
plots
-- Dima Kogan <dima@secretsauce.net> Thu, 06 Feb 2014 23:19:02 -0800
feedgnuplot (1.32-1) unstable; urgency=low
* Added --rangesize and --rangesizeall. Different curves can now plot
different-size tuples
-- Dima Kogan <dima@secretsauce.net> Wed, 05 Feb 2014 14:00:44 -0800
feedgnuplot (1.30-1) unstable; urgency=low
* made the VCS links canonical
* added --set, --unset, --with, --style, --styleall
-- Dima Kogan <dima@secretsauce.net> Fri, 24 Jan 2014 15:50:03 -0800
feedgnuplot (1.28-1) unstable; urgency=low
* Upstream update:
- Removed example debianization
- Removed unreliable unit tests from automated testing (Closes: #731080)
* gnuplot dependency now favors graphical gnuplot packages
* Removed Anton Gladky from the Uploaders
-- Dima Kogan <dima@secretsauce.net> Wed, 04 Dec 2013 02:05:08 -0800
feedgnuplot (1.26-1) unstable; urgency=low
[ Dima Kogan ]
* Minor POD update
* Added test suite
* Added initial support for --timefmt. Currently time/date data is
supported only at the x-axis domain
* Added --exit option for force feedgnuplot to return even if gnuplot
may not yet be done rendering (patch by Eric Schulte)
* Reformatted the documentation
* y2-axis curves no longer have a thicker line by default
* --hardcopy now handles piped output (gnuplot 'set output |process'
syntax)
[ Anton Gladky ]
* Add libipc-run-perl to Build-Depends to execute tests
-- Dima Kogan <dima@secretsauce.net> Sun, 20 Oct 2013 01:19:51 -0700
feedgnuplot (1.24-2) unstable; urgency=low
* Now building the html documentation from the correct POD source
-- Dima Kogan <dima@secretsauce.net> Sun, 28 Apr 2013 17:42:52 -0700
feedgnuplot (1.24-1) unstable; urgency=low
* Fixed regression in --monotonic. This works again now
* moved POD back into the main source file. This fixes the broken usage
messages
* added --version
* fixed watchfile to work with newer github pages
* priority now optional
-- Dima Kogan <dima@secretsauce.net> Fri, 08 Feb 2013 02:01:32 -0800
feedgnuplot (1.23-2) unstable; urgency=low
* Initial Debian release (Closes: #686413)
-- Dima Kogan <dima@secretsauce.net> Tue, 30 Oct 2012 11:14:01 -0700

1
debian/compat vendored
View File

@@ -1 +0,0 @@
9

21
debian/control vendored
View File

@@ -1,21 +0,0 @@
Source: feedgnuplot
Section: science
Priority: optional
Build-Depends: debhelper (>= 9), libstring-shellquote-perl, perl, gawk, gnuplot, libipc-run-perl
Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Uploaders: Dima Kogan <dima@secretsauce.net>
Standards-Version: 3.9.4
Homepage: https://github.com/dkogan/feedgnuplot
Vcs-Browser: https://salsa.debian.org/science-team/feedgnuplot
Vcs-Git: https://salsa.debian.org/science-team/feedgnuplot.git
Package: feedgnuplot
Architecture: all
Depends: ${misc:Depends}, ${perl:Depends},
liblist-moreutils-perl,
gnuplot-qt | gnuplot-x11 | gnuplot-nox | gnuplot5-qt | gnuplot5-x11 | gnuplot5-nox | gnuplot
Description: Pipe-oriented frontend to Gnuplot
Flexible, command-line-oriented frontend to Gnuplot. Creates plots from data
coming in on STDIN or given in a filename passed on the commandline. Various
data representations are supported, as is hardcopy output and streaming display
of live data.

24
debian/copyright vendored
View File

@@ -1,24 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/dkogan/feedgnuplot
Upstream-Contact: Dima Kogan, <dima@secretsauce.net>
Upstream-Name: feedgnuplot
Files: *
Copyright: 2011, Dima Kogan <dima@secretsauce.net>
License: Artistic or GPL-1+
License: Artistic
This program is free software; you can redistribute it and/or modify
it under the terms of the Artistic License, which comes with Perl.
.
On Debian GNU/Linux systems, the complete text of the Artistic License
can be found in `/usr/share/common-licenses/Artistic'.
License: GPL-1+
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 1, or (at your option)
any later version.
.
On Debian GNU/Linux systems, the complete text of version 1 of the
General Public License can be found in `/usr/share/common-licenses/GPL-1'.

View File

@@ -1,9 +0,0 @@
Document: feedgnuplot
Title: Feedgnuplot Manual
Author: Dima Kogan
Abstract: Formatted manpage for feedgnuplot
Section: Science/Data Analysis
Format: HTML
Index: /usr/share/doc/feedgnuplot/feedgnuplot.html
Files: /usr/share/doc/feedgnuplot/feedgnuplot.html

View File

@@ -1 +0,0 @@
feedgnuplot.html

View File

@@ -1,2 +0,0 @@
completions/bash/feedgnuplot /usr/share/bash-completion/completions/
completions/zsh/_feedgnuplot /usr/share/zsh/vendor-completions

4
debian/gbp.conf vendored
View File

@@ -1,4 +0,0 @@
[DEFAULT]
debian-branch = debian
upstream-tag = v%(version)s
pristine-tar = True

12
debian/rules vendored
View File

@@ -1,12 +0,0 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_build:
dh_auto_build
pod2html --title=feedgnuplot bin/feedgnuplot > feedgnuplot.html
override_dh_auto_clean:
rm -rf feedgnuplot.html pod2htm*
dh_auto_clean

View File

@@ -1 +0,0 @@
3.0 (quilt)

4
debian/watch vendored
View File

@@ -1,4 +0,0 @@
version=3
opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)\d*)$/$1~$2/,dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$// \
https://github.com/dkogan/feedgnuplot/tags .*/v?(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
# Bart Martens <bartm@debian.org> Sat, 22 Dec 2012 12:54:18 +0000