Re: [Spice-devel] [spice-common] build-sys: Rework SPICE_CHECK_* m4 macros

2015-10-14 Thread Jonathon Jongsma
On Tue, 2015-10-13 at 11:29 +0200, Christophe Fergeau wrote: > These macros were automatically appending the needed CFLAGS/LIBS to > variables passed as arguments. This is how spice-common uses them, > but > now how spice-gtk/spice want to use them, and is making the macros "now how" -> "not how"

Re: [Spice-devel] [PATCH 0/7] Attempt to detect leaks in spice-server

2015-10-14 Thread Jonathon Jongsma
Hi Frediano, I'm a bit conflicted about this patch series. Some of this stuff is already handled (or at least partially handled) in the 'refactory' branch. Since some of these objects have been refactored into GObjects in that branch, they now have destructor functions that clean things up. Of cou

[Spice-devel] [PATCH 2/7] add a red_memslot_info_destroy function

2015-10-14 Thread Frediano Ziglio
Allows to free RedMemSlotInfo structure Signed-off-by: Frediano Ziglio --- server/red_memslots.c | 10 ++ server/red_memslots.h | 1 + 2 files changed, 11 insertions(+) diff --git a/server/red_memslots.c b/server/red_memslots.c index 1b3ec62..b77b4b4 100644 --- a/server/red_memslots.c

[Spice-devel] [PATCH v6 07/27] protocol: Add support for the VP8 and h264 video codecs

2015-10-14 Thread Francois Gouget
Clients that support multiple codecs must advertise the SPICE_DISPLAY_CAP_MULTI_CODEC capability and one SPICE_DISPLAY_CAP_CODEC_XXX per supported codec. Signed-off-by: Francois Gouget --- spice.proto | 2 ++ spice/enums.h| 2 ++ spice/protocol.h | 4 3 files changed, 8 insertions(

[Spice-devel] [PATCH v6 05/26] server: Enable adding alternative MJPEG video encoders

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- server/Makefile.am | 2 +- server/mjpeg_encoder.c | 85 +++--- server/red_worker.c| 86 +- server/video_encoder.h | 162 + 4 files changed, 257 insertions(+),

[Spice-devel] [PATCH v6 08/26] server: Add VP8 support to the GStreamer encoder

2015-10-14 Thread Francois Gouget
The Spice server administrator can specify the preferred encoder and codec preferences to optimize for CPU or bandwidth usage. Preferences are described in a semi-colon separated list of encoder:codec pairs. For instance 'gstreamer:vp8;spice:mjpeg' to pick first the GStreamer VP8 video encoder and

[Spice-devel] [PATCH v6 20/26] spice-gtk: Prefix the configure audio GStreamer variables with GSTAUDIO_

2015-10-14 Thread Francois Gouget
This lets us avoid naming conflicts when using GStreamer for other purposes. Signed-off-by: Francois Gouget --- configure.ac| 18 +- src/Makefile.am | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 577f9a9..85da9a4

[Spice-devel] [PATCH 3/7] red_worker: add RED_WORKER_MESSAGE_CLOSE_WORKER message

2015-10-14 Thread Frediano Ziglio
Allows to close main thread. For the moment there is no correct cleanup. Signed-off-by: Frediano Ziglio --- server/red_dispatcher.h | 3 +++ server/red_worker.c | 10 ++ server/red_worker.h | 3 +++ 3 files changed, 16 insertions(+) diff --git a/server/red_dispatcher.h b/serve

[Spice-devel] [PATCH 7/7] replay: free QXL interface to detect leaks

2015-10-14 Thread Frediano Ziglio
Signed-off-by: Frediano Ziglio --- server/tests/replay.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/tests/replay.c b/server/tests/replay.c index a17037c..39246b2 100644 --- a/server/tests/replay.c +++ b/server/tests/replay.c @@ -334,6 +334,8 @@ int main(int argc, char **argv)

[Spice-devel] [PATCH 5/7] support QXL remove on spice_server_remove_interface

2015-10-14 Thread Frediano Ziglio
Signed-off-by: Frediano Ziglio --- server/reds.c | 7 +++ 1 file changed, 7 insertions(+) diff --git a/server/reds.c b/server/reds.c index 5d2ad9b..5993863 100644 --- a/server/reds.c +++ b/server/reds.c @@ -3234,6 +3234,13 @@ SPICE_GNUC_VISIBLE int spice_server_remove_interface(SpiceBaseIns

[Spice-devel] [PATCH 0/7] Attempt to detect leaks in spice-server

2015-10-14 Thread Frediano Ziglio
In order to better detect leaks inside the library I'm attempting to implement a way to destroy QXL dispatcher and worker so to make possible for a test to invoke it and then check if there are still memory allocated. The main idea is to use with spice-server-replay to be able to detect possible l

[Spice-devel] [PATCH 6/7] red_worker: implements handle_dev_close

2015-10-14 Thread Frediano Ziglio
Cleanup properly the working thread. Signed-off-by: Frediano Ziglio --- server/red_worker.c | 34 ++ server/reds.c | 2 ++ 2 files changed, 36 insertions(+) diff --git a/server/red_worker.c b/server/red_worker.c index 7e11752..955ea8f 100644 --- a/server/r

[Spice-devel] [PATCH 1/7] add dispatcher_destroy function

2015-10-14 Thread Frediano Ziglio
Allows to destroy a dispatcher Signed-off-by: Frediano Ziglio --- server/dispatcher.c | 12 server/dispatcher.h | 6 ++ 2 files changed, 18 insertions(+) diff --git a/server/dispatcher.c b/server/dispatcher.c index d6c03ca..ed7db20 100644 --- a/server/dispatcher.c +++ b/server

[Spice-devel] [PATCH 4/7] add red_dispatcher_destroy function

2015-10-14 Thread Frediano Ziglio
Allows to destroy a RedDispatcher object Signed-off-by: Frediano Ziglio --- server/red_dispatcher.c | 54 + server/red_dispatcher.h | 1 + 2 files changed, 55 insertions(+) diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index 660d

[Spice-devel] [PATCH v6 24/26] spice-gtk: Allow disabling support for the builtin MJPEG video decoder

2015-10-14 Thread Francois Gouget
This makes it possible to test the GStreamer video decoder with MJPEG streams. Signed-off-by: Francois Gouget --- configure.ac | 11 +++ src/Makefile.am| 7 ++- src/channel-display-priv.h | 2 ++ src/channel-display.c | 5 + 4 files changed, 24 i

[Spice-devel] [PATCH v6 18/26] server: Respect the GStreamer encoder's valid bit rate range

2015-10-14 Thread Francois Gouget
Otherwise it may get wrapped to a much lower value than intended. Signed-off-by: Francois Gouget --- server/gstreamer_encoder.c | 65 +++--- 1 file changed, 62 insertions(+), 3 deletions(-) Changes since the previous version: * Moved the bitrate limitin

[Spice-devel] [PATCH v6 26/26] spice-gtk: Use decodebin as a fallback for the GStreamer video decoder

2015-10-14 Thread Francois Gouget
This means future video codecs may be supported automatically. One can also force usage of decodebin by setting $SPICE_GSTVIDEO_AUTO. Signed-off-by: Francois Gouget --- src/channel-display-gst.c | 21 ++--- 1 file changed, 18 insertions(+), 3 deletions(-) Changes since the prev

[Spice-devel] [PATCH v6 25/26] spice-gtk: Avoid copying the compressed message data for SpiceGstDecoder

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- src/channel-display-gst.c | 88 +-- 1 file changed, 85 insertions(+), 3 deletions(-) Changes since the previous version: * pipeline_wait is a boolean. diff --git a/src/channel-display-gst.c b/src/channel-display-g

[Spice-devel] [PATCH v6 23/26] spice-gtk: Add a GStreamer video decoder for MJPEG, VP8 and h264

2015-10-14 Thread Francois Gouget
Based on a patch by Jeremy White. Signed-off-by: Francois Gouget --- configure.ac | 27 - src/Makefile.am| 8 ++ src/channel-display-gst.c | 238 + src/channel-display-priv.h | 6 ++ src/channel-display.c | 10

[Spice-devel] [PATCH v6 22/26] spice-gtk: Optimize handling of the decoded frame buffer

2015-10-14 Thread Francois Gouget
Also modify the MJPEG video decoder to use Spice's allocator instead of explicitly depending on the glib one. Signed-off-by: Francois Gouget --- src/channel-display-mjpeg.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/channel-display-mjpeg.c b/src/channel-d

[Spice-devel] [PATCH v6 21/26] spice-gtk: Enable adding alternative video decoders

2015-10-14 Thread Francois Gouget
The video decoder no longer stores its internal state in the display_stream struct, or depend on it to know which frame to decode or store the decoded frame. This way adding alternative implementations will not pile all their implementation details in display_stream and they will have more flexibil

[Spice-devel] [PATCH v6 19/26] server: Add support for GStreamer 0.10

2015-10-14 Thread Francois Gouget
configure will use GStreamer 1.0 if present and fall back to GStreamer 0.10 otherwise. Signed-off-by: Francois Gouget --- configure.ac | 35 server/Makefile.am | 8 + server/gstreamer_encoder.c | 79 ++ s

[Spice-devel] [PATCH v6 11/26] server: Let the video encoder manage the compressed buffer

2015-10-14 Thread Francois Gouget
This way the video encoder is not forced to use malloc()/free(). This also allows more flexibility in how the video encoder manages the buffer which allows for a zero-copy implementation in both video encoders. The current implementations also ensure that there is no reallocation of the VideoBuffer

[Spice-devel] [PATCH v6 17/26] server: Cap the VP8 and h264 video quality to limit the bit rate

2015-10-14 Thread Francois Gouget
This prevents the bit rate from going insanely high on fast networks for no visible video quality improvement. Signed-off-by: Francois Gouget --- server/gstreamer_encoder.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/gstreamer_encoder.c b/server/gstreamer_encoder.c index d31a15e

[Spice-devel] [PATCH v6 12/26] server: Avoid copying the input frame in the GStreamer encoder

2015-10-14 Thread Francois Gouget
This relies on the GStreamer buffer's lifetime being short enough which it is because: - We encode frames one by one. - For all encoders but MJPEG, the first element of the pipeline will convert the bitmap to another image format which entails copying it. So by the time the encoder starts i

[Spice-devel] [PATCH v6 16/26] server: Give up after a while if GStreamer cannot handle the video

2015-10-14 Thread Francois Gouget
This typically happens when sending very small frames (less than 16 pixels in one dimension) to the x264enc encoder. This avoids repeatedly wasting time rebuilding the pipeline. Signed-off-by: Francois Gouget --- server/gstreamer_encoder.c | 48 -- 1 f

[Spice-devel] [PATCH] reduce locking time in async_command_alloc

2015-10-14 Thread Frediano Ziglio
Signed-off-by: Frediano Ziglio --- server/red_dispatcher.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index b11cd42..660dad8 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -336,9 +336,10 @@ static

[Spice-devel] [PATCH v6 15/26] server: Adjust the GStreamer encoder bit rate to the network

2015-10-14 Thread Francois Gouget
The video encoder uses the client reports and/or notifications of server frame drops as its feedback mechanisms. In particular it keeps track of the maximum video margin and reduces the bit rate whenever the margin goes below certain thresholds or decreases too sharply. It uses these to figure out

[Spice-devel] [PATCH v6 10/26] Xspice: Add --video-codecs to specify encoder and codec preferences

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- scripts/Xspice | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/Xspice b/scripts/Xspice index 52b1b16..88f8a1d 100755 --- a/scripts/Xspice +++ b/scripts/Xspice @@ -86,6 +86,7 @@ parser.add_argument('--zlib-glz-wan-compression', # TO

[Spice-devel] [PATCH] removed unused recv_core field

2015-10-14 Thread Frediano Ziglio
Signed-off-by: Frediano Ziglio --- server/dispatcher.h | 1 - 1 file changed, 1 deletion(-) diff --git a/server/dispatcher.h b/server/dispatcher.h index 8cfa1d4..d522dab 100644 --- a/server/dispatcher.h +++ b/server/dispatcher.h @@ -24,7 +24,6 @@ typedef struct DispatcherMessage { } DispatcherM

[Spice-devel] [PATCH] remove small leak in MJPEG code

2015-10-14 Thread Frediano Ziglio
cinfo.dest is allocated in spice_jpeg_mem_dest but never freed. Note that jpeg_destroy_compress does not free this field as is supposed to be a buffer provided by jpeg caller. Signed-off-by: Frediano Ziglio --- server/mjpeg_encoder.c | 1 + 1 file changed, 1 insertion(+) diff --git a/server/mjp

[Spice-devel] [PATCH v6 14/26] server: Shape the bit rate of the GStreamer codecs output

2015-10-14 Thread Francois Gouget
The GStreamer codecs don't follow the specified bit rate very closely: they can decide to exceed it for ten seconds or more if they consider the scene deserves it. Such long bursts are enough to cause network congestion, resulting in many lost frames which cause significant display corruption. So t

[Spice-devel] [PATCH v6 13/26] server: Add h264 support to the GStreamer video encoder

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- server/gstreamer_encoder.c | 17 - server/red_dispatcher.c| 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/server/gstreamer_encoder.c b/server/gstreamer_encoder.c index e31b7c1..2bc6e65 100644 --- a/server/gstreamer_enc

[Spice-devel] [PATCH v6 09/26] spiceqxl: Add SpiceVideoCodecs to specify video codec preferences

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- examples/spiceqxl.xorg.conf.example | 7 +++ src/qxl.h | 1 + src/qxl_driver.c| 2 ++ src/spiceqxl_spice_server.c | 15 +++ 4 files changed, 25 insertions(+) diff --git a/examples/spiceqxl

[Spice-devel] [PATCH v6 06/26] server: Add a GStreamer 1.0 MJPEG video encoder and use it by default

2015-10-14 Thread Francois Gouget
This introduces a pared down GStreamer-based video encoder to serve as the basis for later enhancements. In this form the new encoder supports both regular and sized streams but lacks any rate control. It should still work fine if bandwidth is sufficient such as on LANs. Signed-off-by: Francois Go

[Spice-devel] [PATCH v6 04/26] server: Hide the MJPEG encoder internals from red_worker.c

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- server/mjpeg_encoder.c | 53 +- server/mjpeg_encoder.h | 26 +++-- server/red_worker.c| 22 - 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/server/mjpe

[Spice-devel] [PATCH v6 02/26] server: Move mjpeg_encoder_new() to the end of mjpeg_encoder.c

2015-10-14 Thread Francois Gouget
This also allows getting rid of a couple of forward definitions. Signed-off-by: Francois Gouget --- server/mjpeg_encoder.c | 74 +++--- 1 file changed, 34 insertions(+), 40 deletions(-) It will also simplify the following patches. diff --git a/serv

[Spice-devel] [PATCH v6 00/26] Add GStreamer support for video streams

2015-10-14 Thread Francois Gouget
This is the sixth iteration of these patches. I believe that I have taken into account all the remarks from the previous round, the exceptions being those I sent an email about. Let me know if there are changes that are needed for inclusion. To simplify testing, one can also get the patches

[Spice-devel] [PATCH v6 01/26] server: Remove an unnecessary cast in encode_frame()

2015-10-14 Thread Francois Gouget
Signed-off-by: Francois Gouget --- server/red_worker.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/red_worker.c b/server/red_worker.c index babb597..616be72 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -8512,8 +8512,7 @@ static int encode_frame(Di

[Spice-devel] [PATCH v6 03/26] server: Move the MJPEG encoder functions to mjpeg_encoder.c

2015-10-14 Thread Francois Gouget
Note that this requires some adjustments to the encode_frame() parameters to avoid red_worker-specific types. Signed-off-by: Francois Gouget --- server/mjpeg_encoder.c | 74 +++--- server/mjpeg_encoder.h | 6 ++-- server/red_worker.c| 73 -

[Spice-devel] [common PATCH 1/3 v3] ssl-verify: Only check addr length when using IP addr

2015-10-14 Thread Lukas Venhoda
Only check for address lenght, when connecting trough IP address. It is not used, when connecting trough DNS hostname. --- Changes since v2: - Also moved variable declarations Changes since v1: - New patch --- common/ssl_verify.c | 15 --- 1 file changed, 8 insertions(+), 7 deletion

[Spice-devel] [common PATCH 2/3 v3] m4: Require glib version >= 2.22

2015-10-14 Thread Lukas Venhoda
This is required by the new IPv6 verify_hostname. --- Changes since v2: - New patch --- m4/spice-deps.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/m4/spice-deps.m4 b/m4/spice-deps.m4 index e4b2c8d..8ef4835 100644 --- a/m4/spice-deps.m4 +++ b/m4/spice-deps.m4 @@ -155,7 +1

[Spice-devel] [common PATCH 3/3 v3] ssl-verify: Changed IPv4 hostname to IPv6

2015-10-14 Thread Lukas Venhoda
Change inet_aton function to glib functions. inet_aton only supported IPv4 addresses, and wasn't available on windows machines. GInetAddress functions support IPv6 natively, and requires less boilerplate code then IPv6 gettaddrinfo(). --- Changes since v2: - Now uses glib gio GInetAddress - R

Re: [Spice-devel] [PATCH libcacard] Add m4/pkg.m4 to the list of expected m4 files.

2015-10-14 Thread Marc-André Lureau
ack - Original Message - > This gets it into the .gitignore, and gets it cleaned > by a maintainer-clean. > > Signed-off-by: Jeremy White > --- > Makefile.am | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/Makefile.am b/Makefile.am > index fb1c00b..07df869 100644 > --- a/Ma

Re: [Spice-devel] [PATCH libcacard] Add our own auto foo files to support AX_APPEND_LINK_FLAGS and AX_CHECK_LINK_FLAGS.

2015-10-14 Thread Marc-André Lureau
ack - Original Message - > Signed-off-by: Jeremy White > --- > m4/ax_append_link_flags.m4 | 63 +++ > m4/ax_check_link_flag.m4 | 74 > ++ > 2 files changed, 137 insertions(+) > create mode 100644 m4/ax_ap

[Spice-devel] [PATCH libcacard] Add our own auto foo files to support AX_APPEND_LINK_FLAGS and AX_CHECK_LINK_FLAGS.

2015-10-14 Thread Jeremy White
Signed-off-by: Jeremy White --- m4/ax_append_link_flags.m4 | 63 +++ m4/ax_check_link_flag.m4 | 74 ++ 2 files changed, 137 insertions(+) create mode 100644 m4/ax_append_link_flags.m4 create mode 100644 m4/ax_chec

[Spice-devel] [PATCH libcacard] Add m4/pkg.m4 to the list of expected m4 files.

2015-10-14 Thread Jeremy White
This gets it into the .gitignore, and gets it cleaned by a maintainer-clean. Signed-off-by: Jeremy White --- Makefile.am | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.am b/Makefile.am index fb1c00b..07df869 100644 --- a/Makefile.am +++ b/Makefile.am @@ -92,6 +92,9 @@ EXTRA_DIST

Re: [Spice-devel] [spice-gtk PATCH v1 2/2] tests: build sources to each test

2015-10-14 Thread Victor Toso
Hi, Thanks for the review. On Wed, Oct 14, 2015 at 12:28:41PM +0200, Christophe Fergeau wrote: > On Wed, Oct 14, 2015 at 12:15:16PM +0200, Victor Toso wrote: > > --- > > tests/Makefile.am | 25 +++-- > > 1 file changed, 23 insertions(+), 2 deletions(-) > > > > diff --git a/t

Re: [Spice-devel] [spice-gtk] build-sys:tests: Error out unless --enable-static is used

2015-10-14 Thread Daniel P. Berrange
On Tue, Oct 13, 2015 at 10:56:00AM +0200, Christophe Fergeau wrote: > The binaries in tests/ need a static build of spice-gtk libraries in > order to be built, but by default, we disable static libraries at > LT_INIT() time. > As the compile failure can be quite cryptic when someone > tries to manu

Re: [Spice-devel] [spice-gtk PATCH v1 2/2] tests: build sources to each test

2015-10-14 Thread Christophe Fergeau
On Wed, Oct 14, 2015 at 12:15:16PM +0200, Victor Toso wrote: > --- > tests/Makefile.am | 25 +++-- > 1 file changed, 23 insertions(+), 2 deletions(-) > > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 19c02b6..e28f880 100644 > --- a/tests/Makefile.am > +++ b/tests/

Re: [Spice-devel] [spice-gtk] build-sys:tests: Error out unless --enable-static is used

2015-10-14 Thread Victor Toso
Hi, On Tue, Oct 13, 2015 at 11:54:15AM +0200, Christophe Fergeau wrote: > On Tue, Oct 13, 2015 at 11:39:17AM +0200, Victor Toso wrote: > > ack as well. > > > > I really don't understand why we do tests on when --enable-static only. > > Personally I prefer --enable-debug and do the linking... > > >

[Spice-devel] [spice-gtk PATCH v1 2/2] tests: build sources to each test

2015-10-14 Thread Victor Toso
--- tests/Makefile.am | 25 +++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 19c02b6..e28f880 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -25,10 +25,31 @@ LDADD =

[Spice-devel] [spice-gtk PATCH v1 1/2] build-sys: tests by default with --enable-tests

2015-10-14 Thread Victor Toso
Default for building tests is 'yes' and one can disable it --disable-tests. --- configure.ac | 11 +-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 577f9a9..e786e9d 100644 --- a/configure.ac +++ b/configure.ac @@ -8,7 +8,7 @@ m4_include([s

[Spice-devel] [spice-gtk] Adjust to spice-common spice-deps.m4 changes

2015-10-14 Thread Christophe Fergeau
This commit updates spice-common to latest git master. Since the argument to the SPICE_CHECK_xxx macros is now unused, it's cleaner to remove it. Christophe Fergeau (3): Add marshaller test case build-sys: Use ${PKG_CONFIG} rather than pkg-config build-sys: Rework SPICE_CHECK_* m

Re: [Spice-devel] [spice-gtk 2/2] Free display_cache in cache_free()

2015-10-14 Thread Christophe Fergeau
On Wed, Oct 14, 2015 at 08:26:47AM +0200, Victor Toso wrote: > Hey, > > On Mon, Oct 12, 2015 at 04:38:22PM +0200, Christophe Fergeau wrote: > > Otherwise it will be leaked. > > Actually, it was leaking before: Yes, I noticed this by running valgrind on test-session. I'll add the trace to the com

Re: [Spice-devel] [spice-common] build-sys: Rework SPICE_CHECK_* m4 macros

2015-10-14 Thread Christophe Fergeau
On Wed, Oct 14, 2015 at 08:16:33AM +0200, Victor Toso wrote: > Hi, > > On Tue, Oct 13, 2015 at 11:29:25AM +0200, Christophe Fergeau wrote: > > These macros were automatically appending the needed CFLAGS/LIBS to > > variables passed as arguments. This is how spice-common uses them, but > > now how