[Xcb] [PUSHED][PATCH libxcb 1/1] make support for server side stuff optional

Christian Linhart chris at DemoRecorder.com
Sat Jul 4 07:30:16 PDT 2015


Merge and pushed.
(This patch is more than 3 weeks old and nobody complained, so it's probably OK.)

Chris

On 06/11/15 18:58, Christian Linhart wrote:
> and make it disabled by default with an EXPERIMENTAL warning
>
> reason: this feature is unfinished and we want to have flexibility for
> ABI/API changes, while still being able to make a release soon
>
> Signed-off-by: Christian Linhart <chris at demorecorder.com>
> ---
>  configure.ac    |  4 ++++
>  src/Makefile.am |  6 ++++++
>  src/c_client.py | 10 ++++++++--
>  3 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 6e7e9c3..44feba3 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -239,14 +239,18 @@ if test "x$LAUNCHD" = xauto; then
>          AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin])
>  fi
>  
>  if test "x$LAUNCHD" = xyes ; then
>          AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])|EAD~1|
>  fi
>  
> +AC_ARG_WITH(serverside-support, AS_HELP_STRING([--with-serverside-support], [Build with support for server-side usage of xcb. This is still EXPERIMENTAL! ABI/API may change! (default: no)]), [XCB_SERVERSIDE_SUPPORT=$withval], [XCB_SERVERSIDE_SUPPORT=no])
> +
> +AM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
> +
>  AC_CONFIG_FILES([
>  Makefile
>  doc/Makefile
>  man/Makefile
>  src/Makefile
>  tests/Makefile
>  ])
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 5a3c52a..e06e70b 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -244,13 +244,19 @@ noinst_HEADERS = xcbint.h
>  BUILT_MAN_PAGES = man/xcb_*
>  libmandir = $(LIB_MAN_DIR)
>  libman_DATA = $(BUILT_MAN_PAGES)
>  
>  BUILT_SOURCES = $(EXTSOURCES) $(BUILT_MAN_PAGES)
>  CLEANFILES = $(EXTSOURCES) $(EXTHEADERS) $(BUILT_MAN_PAGES)
>  
> +C_CLIENT_PY_EXTRA_ARGS =
> +if XCB_SERVERSIDE_SUPPORT
> +C_CLIENT_PY_EXTRA_ARGS += --server-side
> +endif
> +
>  $(EXTSOURCES): c_client.py $(XCBPROTO_XCBINCLUDEDIR)/$(@:.c=.xml)
>  	$(AM_V_GEN)$(PYTHON) $(srcdir)/c_client.py	-c "$(PACKAGE_STRING)" -l "$(XORG_MAN_PAGE)" \
>  		-s "$(LIB_MAN_SUFFIX)" -p $(XCBPROTO_XCBPYTHONDIR) \|EAD~1|
> +		$(C_CLIENT_PY_EXTRA_ARGS) \
>  		$(XCBPROTO_XCBINCLUDEDIR)/$(@:.c=.xml)
>  
>  $(BUILT_MAN_PAGES): $(EXTSOURCES)
> diff --git a/src/c_client.py b/src/c_client.py
> index 9a7c67c..50ca753 100644
> --- a/src/c_client.py
> +++ b/src/c_client.py
> @@ -4,14 +4,17 @@ import getopt
>  import os
>  import sys
>  import errno
>  import re
>  
>  # Jump to the bottom of this file for the main routine
>  
> +#config settings (can be changed with commandline options)
> +config_server_side = False
> +
>  # Some hacks to make the API more readable, and to keep backwards compability
>  _cname_re = re.compile('([A-Z0-9][a-z]+|[A-Z0-9]+(?![a-z])|[a-z]+)')
>  _cname_special_cases = {'DECnet':'decnet'}
>  
>  _extension_special_cases = ['XPrint', 'XCMisc', 'BigRequests']
>  
>  _cplusplus_annoyances = {'class' : '_class',
> @@ -3091,15 +3094,16 @@ def c_request(self, name):
>      else:
>          # Request prototypes
>          _c_request_helper(self, name, void=True, regular=False)
>          _c_request_helper(self, name, void=True, regular=True)
>          if self.c_need_aux:
>              _c_request_helper(self, name, void=True, regular=False, aux=True)
>              _c_request_helper(self, name, void=True, regular=True, aux=True)
> -        _c_accessors(self, name, name)
> +        if config_server_side:
> +            _c_accessors(self, name, name)
>  
>      # We generate the manpage afterwards because _c_type_setup has been called.
>      # TODO: what about aux helpers?
>      _man_request(self, name, void=not self.reply, aux=False)
>  
>  def c_event(self, name):
>      '''
> @@ -3202,29 +3206,31 @@ output = {'open'    : c_open,
>            'error'   : c_error,
>            }
>  
>  # Boilerplate below this point
>  
>  # Check for the argument that specifies path to the xcbgen python package.
>  try:
> -    opts, args = getopt.getopt(sys.argv[1:], 'c:l:s:p:m')
> +    opts, args = getopt.getopt(sys.argv[1:], 'c:l:s:p:m', ["server-side"])
>  except getopt.GetoptError as err:
>      print(err)
>      print('Usage: c_client.py -c center_footer -l left_footer -s section [-p path] file.xml')
>      sys.exit(1)
>  
>  for (opt, arg) in opts:
>      if opt == '-c':
>          center_footer=arg
>      if opt == '-l':
>          left_footer=arg
>      if opt == '-s':
>          section=arg
>      if opt == '-p':
>          sys.path.insert(1, arg)
> +    if opt == '--server-side':
> +        config_server_side=True
>      elif opt == '-m':
>          manpaths = True
>          sys.stdout.write('man_MANS = ')
>  
>  # Import the module class
>  try:
>      from xcbgen.state import Module



More information about the Xcb mailing list