summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2018-05-31 17:38:13 +0200
committerLubomir Rintel <lkundrak@v3.sk>2018-05-31 17:38:13 +0200
commit29cafd61af79bb217ae64f25653d0ad500867829 (patch)
tree385a2d204cb05ee7e3119f058e45d7a5b214ca01
parent50a9bf2f24be4f554d80030463ec280eb96e5fe7 (diff)
parent05b935e9f8f2d805e885538de475e1dc59916afb (diff)
downloadnetwork-manager-applet-29cafd61af79bb217ae64f25653d0ad500867829.tar.gz
merge: branch 'lr/gitlab-ci'
https://gitlab.gnome.org/GNOME/network-manager-applet/merge_requests/1
-rw-r--r--.gitignore1
-rw-r--r--.gitlab-ci.yml187
-rw-r--r--INSTALL234
-rw-r--r--configure.ac10
-rw-r--r--m4/introspection.m465
5 files changed, 229 insertions, 268 deletions
diff --git a/.gitignore b/.gitignore
index 41597bb4..b8e11a6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@ aclocal.m4
/cscope.files
depcomp
install-sh
+INSTALL
libtool
ltmain.sh
missing
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..9594cddd
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,187 @@
+# Quick syntax check:
+# python -c 'import sys, yaml; yaml.dump (yaml.load (sys.stdin), sys.stdout)' <.gitlab-ci.yml
+
+# If things don't seem to work, this can help:
+# https://gitlab.gnome.org/GNOME/network-manager-applet/-/ci/lint
+
+.fedora_minimal: &fedora_minimal
+ before_script:
+ - dnf -y install
+ file
+ findutils
+ gcc
+ desktop-file-utils
+ gettext-devel
+ glib2-devel
+ gtk3-devel
+ intltool
+ libgudev1-devel
+ libnotify-devel
+ libsecret-devel
+ NetworkManager-libnm-devel
+ pkgconfig
+ /usr/bin/autopoint
+
+.fedora_full: &fedora_full
+ before_script:
+ - dnf -y install
+ file
+ findutils
+ gcc
+ desktop-file-utils
+ gettext-devel
+ glib2-devel
+ gtk3-devel
+ intltool
+ libgudev1-devel
+ libnotify-devel
+ libsecret-devel
+ NetworkManager-libnm-devel
+ pkgconfig
+ /usr/bin/autopoint
+ gcr-devel
+ gobject-introspection-devel redhat-rpm-config
+ gtk-doc
+ iso-codes-devel
+ jansson-devel
+ ModemManager-glib-devel
+ libselinux-devel
+
+.dist: &dist
+ stage: test
+ dependencies:
+ - fedora28_dist
+ variables:
+ GIT_STRATEGY: none
+
+.fedora_meson_minimal: &fedora_meson_minimal
+ <<: *fedora_minimal
+ <<: *dist
+ script:
+ - tar xJf network-manager-applet-*.tar.xz
+ - dnf -y install meson
+ - meson
+ -Dlibnm_gtk=false
+ -Dwwan=false
+ -Dselinux=false
+ -Dteam=false
+ -Dgcr=false
+ -Diso_codes=false
+ -Dld_gc=false
+ -Dgtk_doc=false
+ -Dintrospection=false
+ -Dappindicator=no
+ -Dmore_asserts=no
+ network-manager-applet-*/ build
+ - ninja -v -C build
+ - ninja -v -C build test
+ - ninja -v -C build install
+ - ninja -v -C build uninstall
+
+.fedora_meson_full: &fedora_meson_full
+ <<: *fedora_full
+ <<: *dist
+ script:
+ - dnf -y install meson
+ - tar xJf network-manager-applet-*.tar.xz
+ - meson
+ -Dlibnm_gtk=false
+ -Dwwan=true
+ -Dselinux=true
+ -Dteam=true
+ -Dgcr=true
+ -Diso_codes=true
+ -Dld_gc=true
+ -Dgtk_doc=true
+ -Dintrospection=true
+ -Dappindicator=no
+ -Dmore_asserts=yes
+ network-manager-applet-*/ build
+ - ninja -v -C build
+ - ninja -v -C build test
+ - ninja -v -C build install
+ - ninja -v -C build uninstall
+
+.fedora_autotools_minimal: &fedora_autotools_minimal
+ <<: *fedora_minimal
+ <<: *dist
+ script:
+ - dnf -y install make
+ - tar xJf network-manager-applet-*.tar.xz
+ - cd network-manager-applet-*/
+ - ./configure
+ --disable-silent-rules
+ --with-more-asserts=no
+ --without-libnm-gtk
+ --disable-nls
+ --disable-iso-codes
+ --disable-gtk-doc
+ --disable-introspection
+ --disable-schemas-compile
+ --disable-more-warnings
+ --without-appindicator
+ --without-wwan
+ --without-selinux
+ --without-team
+ --without-gcr
+ - make -j
+ - make -j check
+ - make -j install
+ - make -j uninstall
+
+.fedora_autotools_full: &fedora_autotools_full
+ <<: *fedora_full
+ <<: *dist
+ script:
+ - dnf -y install make
+ - tar xJf network-manager-applet-*.tar.xz
+ - cd network-manager-applet-*/
+ - ./configure
+ --disable-silent-rules
+ --with-more-asserts=yes
+ --without-libnm-gtk
+ --enable-nls
+ --enable-iso-codes
+ --enable-gtk-doc
+ --enable-introspection
+ --enable-schemas-compile
+ --enable-more-warnings
+ --with-wwan
+ --with-selinux
+ --with-team
+ --with-gcr
+ - make -j
+ - make -j check
+ - make -j install
+ - make -j uninstall
+
+fedora28_dist:
+ <<: *fedora_full
+ image: fedora:28
+ stage: build
+ script:
+ - dnf -y install
+ autoconf automake make
+ NetworkManager-devel
+ NetworkManager-glib-devel
+ - sh autogen.sh
+ - make -j distcheck
+ artifacts:
+ paths:
+ - "*.xz"
+
+fedora_meson_minimal:
+ <<: *fedora_meson_minimal
+ image: fedora:latest
+
+fedora_meson_full:
+ <<: *fedora_meson_full
+ image: fedora:latest
+
+fedora_autotools_minimal:
+ <<: *fedora_autotools_minimal
+ image: fedora:latest
+
+fedora_autotools_full:
+ <<: *fedora_autotools_full
+ image: fedora:latest
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 5458714e..00000000
--- a/INSTALL
+++ /dev/null
@@ -1,234 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
-
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
diff --git a/configure.ac b/configure.ac
index d83fb4cc..e3296d99 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,6 +34,16 @@ AC_PROG_CC
AM_PROG_CC_C_O
PKG_PROG_PKG_CONFIG
+AC_CHECK_PROG([has_file], file, yes, no)
+if test x$has_file = xno ; then
+ AC_MSG_ERROR(["file" utility not found.])
+fi
+
+AC_CHECK_PROG([has_find], find, yes, no)
+if test x$has_find = xno ; then
+ AC_MSG_ERROR(["find" utility not found.])
+fi
+
dnl Define _GNU_SOURCE for various things like strcasestr()
AC_USE_SYSTEM_EXTENSIONS
diff --git a/m4/introspection.m4 b/m4/introspection.m4
index 1dc1556d..c99f49f0 100644
--- a/m4/introspection.m4
+++ b/m4/introspection.m4
@@ -25,46 +25,43 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
[enable_introspection=auto])
])dnl
- AC_MSG_CHECKING([for gobject-introspection])
-
- dnl presence/version checking
- AS_CASE([$enable_introspection],
- [no], [dnl
- found_introspection="no (disabled, use --enable-introspection to enable)"
- ],dnl
- [yes],[dnl
- PKG_CHECK_EXISTS([gobject-introspection-1.0],,
- AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
- found_introspection=yes,
- AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
- ],dnl
- [auto],[dnl
- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
- dnl Canonicalize enable_introspection
- enable_introspection=$found_introspection
- ],dnl
- [dnl
- AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
- ])dnl
-
- AC_MSG_RESULT([$found_introspection])
-
INTROSPECTION_SCANNER=
INTROSPECTION_COMPILER=
INTROSPECTION_GENERATE=
INTROSPECTION_GIRDIR=
INTROSPECTION_TYPELIBDIR=
- if test "x$found_introspection" = "xyes"; then
- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+
+ if test "x$enable_introspection" == "xno"; then
+ found_introspection="no"
+ else
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], [
+ INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+ INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+ INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+ INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+
+ AC_MSG_CHECKING([if $INTROSPECTION_SCANNER works])
+ if CFLAGS="${CFLAGS} -Wno-error" "$INTROSPECTION_SCANNER" --namespace=test --library=c /dev/null --output /dev/null >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ found_introspection=yes
+ else
+ found_introspection="no (compiler failure -- check config.log)"
+ fi
+ AC_MSG_RESULT([$found_introspection])
+ ], [found_introspection="no (not installed)"])
+
+ if test "x$enable_introspection" == "xyes"; then
+ if test "x$found_introspection" != "xyes"; then
+ AC_MSG_ERROR([introspection enabled but can't be used])
+ fi
+ elif test "x$enable_introspection" != "xauto"; then
+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+ fi
fi
+
AC_SUBST(INTROSPECTION_SCANNER, 'CFLAGS="${CFLAGS} -Wno-error" '"$INTROSPECTION_SCANNER")
AC_SUBST(INTROSPECTION_COMPILER)
AC_SUBST(INTROSPECTION_GENERATE)