Commit Graph

884 Commits

Author SHA1 Message Date
Frediano Ziglio
ff2e99d893 build: Disable Celt support by default
We started disabling Celt support making the option required.
After 2 releases start making it disabled unless explicitly
enabled.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-06-13 08:51:11 +01:00
Frediano Ziglio
cc109a83b6 recorder: Update
Pull version update and some features.
Version update changed copyright in files to LGPLv2, more
compatible with SPICE.
One of the feature is the support for absolute time.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2019-05-29 14:53:16 +01:00
Frediano Ziglio
3b517a2243 build: Remove unused git-version-gen file
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-05-29 14:53:12 +01:00
Frediano Ziglio
4fc4c2db36 Do not check for HAVE_CONFIG_H
This should always be defined and including config.h is a requirement.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-05-02 09:33:05 +01:00
Frediano Ziglio
09fba0677d gitignore: Ignore auto generated generated_messages.h file
git.mk seems to have issues with Makefile rules generating multiple
files so add manually this file.
This avoid SPICE server to generate distribution files with
"-dirty" suffix.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-04-30 11:31:20 +01:00
Uri Lublin
5bcfa711d9 codegen Makefile: add common/ to --include client_marshallers.h
Fixes out-of-tree builds.

For example spice-gtk out-of-tree build fails with:
  ../subprojects/spice-common/common/generated_client_marshallers.h:19:10:
      fatal error: client_marshallers.h: No such file or directory
   #include "client_marshallers.h"
            ^~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Uri Lublin <uril@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-04-23 08:39:34 +01:00
Eduardo Lima (Etrunko)
47ba8e0f25 meson: Make targets list store dictionaries instead of lists
Access the items by names instead of indexes.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-04-04 18:07:32 +01:00
Frediano Ziglio
bfebdc5eb4 meson: Do not build generated files twice
spice-gtk and spice-server will use spice_common_client_dep
and spice_common_server_dep as dependencies.
However they will depend on both spice-common client/server
libraries and their sources causing the sources to be compiled
multiple times and causes linker errors on spice-gtk.
The issue can be observed doing a "find -name \*generated\*.o"
in Meson build directory.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-04-04 18:07:28 +01:00
Frediano Ziglio
f236c1ef94 meson: Fix dependency of generated files
All generated file depends on generated_messages.h which is
generated too.
So add an explicit dependency from all generated file
(except generated_messages.h generator) to generated_messages.h
generator.
This fixes compiling SPICE server where generated_messages.h
was not generated at all.
Add dependency to the include header to make Meson generate the
proper include flag.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-04-04 18:07:24 +01:00
Frediano Ziglio
21edc8611d proto: Fix typo in message name
RecoderChannel::data message is the same as PlaybackChannel::data
one.
This fixed compilation of spice-gtk using updated spice-common.

Before generating the messages automatically the definition was:

  typedef struct SpiceMsgPlaybackPacket {
      uint32_t time;
      uint8_t *data;
      uint32_t data_size;
  } SpiceMsgPlaybackPacket, SpiceMsgcRecordPacket;

so both messages were defined as struct SpiceMsgPlaybackPacket with
SpiceMsgcRecordPacket an alias to it.

But spice.proto for RecordChannel::data was changed from
SpiceMsgcRecordPacket (the alias) to SpiceMsgcPlaybackPacket
defining a new structure and breaking the alias.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-04-03 10:00:42 +01:00
Frediano Ziglio
b628730115 build: Add new check for recorder library
Newer version try to use this function if available.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-04-03 09:32:46 +01:00
Christophe Fergeau
4951c71553 log: Let gcc know about the logging macros which abort
This commit adds a SPICE_UNREACHABLE macro (courtesy of Frediano)
so that gcc does not think that code control can go past
spice_return_{val_,}if_fail(), spice_critical() and spice_error()

This avoids this kind of warnings:

fallthrough.c:

 #include "log.h"

int main(int argc, char **argv)
{
    switch(argc) {
        case 1:
            spice_critical("foo");
       default:
            return 0;
    }
}

$ gcc  -c    $(pkg-config --cflags --libs glib-2.0 spice-protocol)
       -I common   -Wimplicit-fallthrough=5 ./fallthrough.c
In file included from ./fallthrough.c:1:
./fallthrough.c: In function 'main':
common/log.h:73:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
   73 |     spice_log(G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, "" format, ## __VA_ARGS__); \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./fallthrough.c:8:25: note: in expansion of macro 'spice_critical'
    8 |                         spice_critical("foo");
      |                         ^~~~~~~~~~~~~~
./fallthrough.c:9:17: note: here
    9 |                 default:
      |                 ^~~~~~~

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-04-01 17:33:17 +01:00
Frediano Ziglio
bbb5163e61 recorder: Update
Pull some fixes and features.
One of the feature is the support for @output setting to redirect
log output.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-03-29 17:58:21 +00:00
Christophe Fergeau
1fbac71c84 quic: Fix QUIC_VERSION definition
QUIC_VERSION_MINOR is never used.. Set QUIC_VERSION_MINOR to the same
version as QUIC_VERSION_MAJOR to avoid breaking backwards compatibility,
and fix the QUIC_VERSION macro.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 16:58:20 +01:00
Christophe Fergeau
e123f94939 test-marshallers: Fix header guard
test-marshallers.h is missing a #define _H_TEST_MARSHALLERS in order to
prevent multiple #include for the same header.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 16:58:16 +01:00
Christophe Fergeau
a294cad01c build: Update verify.h to latest version
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 16:58:14 +01:00
Christophe Fergeau
5ef652b7e3 build: Add missing G_GNUC_PRINTF annotations
They were suggested by gcc when using -Wsuggest-attribute=format

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 16:58:07 +01:00
Christophe Fergeau
2f64e2edbb lz: Don't try to print uninitialized variable
encoder->type is only going to be set by lz_set_sizes() after the
error() call. We can use 'type' directly which is what encoder->type is
going to be set to.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 11:29:25 +01:00
Christophe Fergeau
187df0cfdb backtrace: Add missing include
This fixes a warning about missing prototype for backtrace()

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 11:29:25 +01:00
Christophe Fergeau
79a9fad3a2 canvas_base: Fix variable shadowing warning
canvas_base.c is #included by spice-common users. They currently don't
enable this warning, but if/when they do, we don't want code from
spice-common to trigger it.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-03-29 11:29:25 +01:00
Frediano Ziglio
bd75d3f934 Generate automatically most C message declarations
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-18 13:02:03 +00:00
Frediano Ziglio
5f1f369e41 Allow to generate C declarations for spice.proto
Generate and include C declarations.
Next patch will use this facility.
Since none of the spice.proto types are decorated with @declare,
adding the #include in messages.h won't have any bad consequences.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-18 13:02:01 +00:00
Frediano Ziglio
3cd3886b27 codegen: Allows to generate C declarations automatically
Allows to specify a @declare attribute for messages and structure
that can generate the needed C structures.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-18 13:01:58 +00:00
Frediano Ziglio
dac34baaab codegen: Generate headers while generating code
Python script generates code and header together however allowed
to save only one of them.
Allows to save both of them together to reduce number of time
we call Python script.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-18 13:01:52 +00:00
Frediano Ziglio
af66a4ccad codegen: Factor out a function to write output file
This will be reused to generate C declaration automatically.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-15 15:46:17 +00:00
Frediano Ziglio
81e2092fc7 meson: Remove some useless checks
Do not check for functions not used or available in C89 and earlier.
Autoconf check for them to support archaic systems.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-03-15 15:45:57 +00:00
Frediano Ziglio
387d1842d1 test-ssl-verify: Improve subject_to_x509_name coverage
Check that attempting to quote an invalid character result in
a error.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-13 17:22:18 +00:00
Frediano Ziglio
fce4486755 build: Remove snd_codec.h from EXTRA_DIST
The file is already distributed as included in the source list.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-13 10:58:28 +00:00
Frediano Ziglio
1cdc3cc3b0 ci: Remove dependencies from copr build
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Snir Sheriber <ssheribe@redhat.com>
2019-03-12 12:43:38 +00:00
Frediano Ziglio
cb00ccfaab codegen: Rename --prefix parameter to --suffix
The option is used to add a suffix to public functions, not a
prefix.
Currently the option is not used (it was used to generate protocol
1 code).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-08 21:22:58 +00:00
Frediano Ziglio
302e30ff43 codegen: Remove support for --ptrsize
This option was used in protocol 1 to generate 64 bit pointers.
A pointer in the protocol is an offset in the current message.
This allows the possibility to have messages with pointers with more
than 4GB. This feature was removed and not used in protocol 2.
The reason this feature was correctly removed in protocol 2 is that
having 64 bit pointers in the protocol would require messages larger
than 4GB which would cause:
- huge latency as a single message would take more than 4 seconds
  to be send in a 10Gb connection;
- huge memory requirements.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-08 11:09:02 +00:00
Frediano Ziglio
92d5dfd4bf messages: Remove fields not used by the protocol
These fields are not used by the protocol (not in spice.proto, nor
will be used in the generated (de)marshallers).
Avoid spice-gtk and spice-server to use them by mistake.
This can cause memory errors (data_size is not used or is not set
correctly) and useless code (spice-gtk uses the pub_key* fields but
these fields are not sent to the server as the protocol does not have
them).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-07 21:07:18 +00:00
Frediano Ziglio
db245ae740 protocol: Add a dummy TunnelChannel
The removal of the channel definition will cause the enumeration
to miss this old channel.
Add a dummy channel (empty) to avoid having to update spice-gtk
and spice-server and possibly breaking other software.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com>
2019-03-05 23:19:53 +00:00
Frediano Ziglio
86136f9a95 proto: Remove obsolete TunnelChannel
No reason to keep it, spice-gtk and spice-server don't
implement it and was removed for security reasons.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Marc-André Lureau <marcandre.lureau@gmail.com>
2019-02-22 12:03:18 +00:00
Marc-André Lureau
c5e7d92dc6 docs: add spice URI scheme
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-21 14:22:18 +00:00
Frediano Ziglio
e8c76358ee log: Remove useless includes
Now the function almost uses GLib function, no reason to include
some system headers.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-21 13:44:07 +00:00
Frediano Ziglio
4ccc20a7f6 mem: Fix compile error if alignment-checks option is used
Domain name argument to spice_log was removed time ago.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-21 13:44:07 +00:00
Frediano Ziglio
60883a0321 codegen: Add a test for attribute combination
Does not make sense to specify the same field to have 2
different C implementation at the same time.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-21 09:05:03 +00:00
Frediano Ziglio
a5de31bc8a codegen: Check wrong attribute
@ptr_array is supposed to change the destination to an array
of pointer to items. This for a raw buffer does not make sense
but check if user specifies this combination.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-20 17:45:29 +00:00
Frediano Ziglio
7462c171e1 codegen: Fix c_type result for TypeAlias
c_type() method is supposed to return the type to use for
C structure field. But the name is not a C type but a
protocol name.
Return the type name of the aliased type (for instance
uint32_t for a uint32 type).
This does not change the generated code.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-20 17:42:59 +00:00
Frediano Ziglio
53c0c5a665 codegen: Reduce indentation
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-20 17:42:59 +00:00
Frediano Ziglio
7fa8bda275 codegen: Use a better type for pointer converted to integer
Although on the platform we support size_t and uintptr_t are
the same, on some platform the size_t can (in theory) be smaller
than the necessary integer to store a pointer.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-20 17:42:59 +00:00
Frediano Ziglio
7f6c55790b codegen: Document ptr_array attribute
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-20 17:39:27 +00:00
Eduardo Lima (Etrunko)
02530a80df meson: Bump requirement to 0.48
This version is already required by spice-gtk and is soon to be required
by spice-server as well, so there is no much sense in keeping it for
spice-common.

It is necessary to update the usage of the python module as described in
the documentation:

https://mesonbuild.com/Release-notes-for-0-48-0.html#python3-module-is-deprecated

Which gets rid of the following warning message:

WARNING: Deprecated features used:
 * 0.48.0: {'python3 module'}

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-02-13 14:42:04 -02:00
Eduardo Lima (Etrunko)
811fff0791 meson: switch smartcard option to auto feature
In spice-gtk commit dbdf692909f7a2b272b06a674a38a1aeb4303032, the
smartcard option has been changed from boolean to feature, which
actually broke the option yeld, because the option type is incompatible
between superproject and subproject.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-02-13 14:20:03 -02:00
Eduardo Lima (Etrunko)
413da761ec meson: Bump libcacard requirement to 2.5.1
Commit 924f47 did this for autotools, do the same for meson.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
2019-02-11 12:40:02 -02:00
Frediano Ziglio
3e116a6c71 Obsolete Glib cleanup
We require at least GLib 2.38, remove code and check to
support earlier versions.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-02-06 14:24:03 +00:00
Frediano Ziglio
e3af47fe9d log: remove deprecated SPICE_DEBUG_LEVEL support
This feature was marked obsolete by efd1d3cb4d more than
three years ago.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-06 13:21:00 +00:00
Frediano Ziglio
ea20b8c013 log: remove deprecated SPICE_ABORT_LEVEL support
This feature was marked obsolete by efd1d3cb4d more than
three years ago.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-02-06 13:19:47 +00:00
Eduardo Lima (Etrunko)
e307130c18 meson: Use underscorify() instead of split()
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-02-01 14:40:47 -02:00