diff options
-rw-r--r-- | Makefile-decls.am | 50 | ||||
-rw-r--r-- | Makefile-libgsystem.am | 64 | ||||
-rw-r--r-- | Makefile.am | 34 | ||||
-rw-r--r-- | Makefile.dist-packaging | 39 | ||||
-rwxr-xr-x | autogen.sh | 34 | ||||
-rw-r--r-- | configure.ac | 67 | ||||
-rw-r--r-- | packaging/libgsystem.spec.in | 62 | ||||
-rwxr-xr-x | packaging/rpmbuild-cwd | 11 | ||||
-rw-r--r-- | src/gsystem-console.c (renamed from gsystem-console.c) | 0 | ||||
-rw-r--r-- | src/gsystem-console.h (renamed from gsystem-console.h) | 0 | ||||
-rw-r--r-- | src/gsystem-file-utils.c (renamed from gsystem-file-utils.c) | 0 | ||||
-rw-r--r-- | src/gsystem-file-utils.h (renamed from gsystem-file-utils.h) | 1 | ||||
-rw-r--r-- | src/gsystem-glib-compat.h (renamed from gsystem-glib-compat.h) | 0 | ||||
-rw-r--r-- | src/gsystem-local-alloc.c (renamed from gsystem-local-alloc.c) | 0 | ||||
-rw-r--r-- | src/gsystem-local-alloc.h (renamed from gsystem-local-alloc.h) | 0 | ||||
-rw-r--r-- | src/gsystem-log.c (renamed from gsystem-log.c) | 0 | ||||
-rw-r--r-- | src/gsystem-log.h (renamed from gsystem-log.h) | 0 | ||||
-rw-r--r-- | src/gsystem-shutil.c (renamed from gsystem-shutil.c) | 0 | ||||
-rw-r--r-- | src/gsystem-shutil.h (renamed from gsystem-shutil.h) | 0 | ||||
-rw-r--r-- | src/gsystem-subprocess-context-private.h (renamed from gsystem-subprocess-context-private.h) | 0 | ||||
-rw-r--r-- | src/gsystem-subprocess-context.c (renamed from gsystem-subprocess-context.c) | 0 | ||||
-rw-r--r-- | src/gsystem-subprocess-context.h (renamed from gsystem-subprocess-context.h) | 0 | ||||
-rw-r--r-- | src/gsystem-subprocess.c (renamed from gsystem-subprocess.c) | 0 | ||||
-rw-r--r-- | src/gsystem-subprocess.h (renamed from gsystem-subprocess.h) | 0 | ||||
-rw-r--r-- | src/libgsystem.h (renamed from libgsystem.h) | 0 | ||||
-rw-r--r-- | src/libgsystem.pc.in | 11 |
26 files changed, 351 insertions, 22 deletions
diff --git a/Makefile-decls.am b/Makefile-decls.am new file mode 100644 index 0000000..a57466c --- /dev/null +++ b/Makefile-decls.am @@ -0,0 +1,50 @@ +# Copyright (C) 2011,2014 Colin Walters <walters@verbum.org> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Common variables +AM_CPPFLAGS = +AM_CFLAGS = +DISTCHECK_CONFIGURE_FLAGS = +SUBDIRS = +NULL = +BUILT_SOURCES = +MANPAGES = +CLEANFILES = +EXTRA_DIST = +bin_PROGRAMS = +sbin_PROGRAMS = +bin_SCRIPTS = +lib_LTLIBRARIES = +libexec_PROGRAMS = +noinst_LTLIBRARIES = +noinst_PROGRAMS = +privlibdir = $(pkglibdir) +privlib_LTLIBRARIES = +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = +INTROSPECTION_GIRS = +girdir = $(datadir)/gir-1.0 +gir_DATA = +typelibdir = $(libdir)/girepository-1.0 +typelib_DATA = +gsettings_SCHEMAS = +# git.mk +GITIGNOREFILES = + +# This is a special facility to chain together hooks easily +INSTALL_DATA_HOOKS = +install-data-hook: $(INSTALL_DATA_HOOKS) diff --git a/Makefile-libgsystem.am b/Makefile-libgsystem.am index 092522c..b75d517 100644 --- a/Makefile-libgsystem.am +++ b/Makefile-libgsystem.am @@ -1,4 +1,4 @@ -# Copyright (C) 2012 Colin Walters <walters@verbum.org> +# Copyright (C) 2012,2014 Colin Walters <walters@verbum.org> # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,28 +15,48 @@ # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. -EXTRA_DIST += $(libgsystem_srcpath)/README $(libgsystem_srcpath)/COPYING +lib_LTLIBRARIES += libgsystem.la + +libgsystemheaderdir = $(includedir)/libgsystem +libgsystemheader_HEADERS = \ + src/gsystem-local-alloc.h \ + src/gsystem-console.h \ + src/gsystem-file-utils.h \ + src/gsystem-glib-compat.h \ + src/gsystem-shutil.h \ + src/gsystem-log.h \ + src/gsystem-subprocess-context.h \ + src/gsystem-subprocess.h \ + src/libgsystem.h \ + $(NULL) libgsystem_la_SOURCES = \ - $(libgsystem_srcpath)/gsystem-local-alloc.h \ - $(libgsystem_srcpath)/gsystem-local-alloc.c \ - $(libgsystem_srcpath)/gsystem-console.h \ - $(libgsystem_srcpath)/gsystem-console.c \ - $(libgsystem_srcpath)/gsystem-file-utils.h \ - $(libgsystem_srcpath)/gsystem-file-utils.c \ - $(libgsystem_srcpath)/gsystem-glib-compat.h \ - $(libgsystem_srcpath)/gsystem-shutil.h \ - $(libgsystem_srcpath)/gsystem-shutil.c \ - $(libgsystem_srcpath)/gsystem-log.h \ - $(libgsystem_srcpath)/gsystem-log.c \ - $(libgsystem_srcpath)/gsystem-subprocess-context.h \ - $(libgsystem_srcpath)/gsystem-subprocess-context-private.h \ - $(libgsystem_srcpath)/gsystem-subprocess-context.c \ - $(libgsystem_srcpath)/gsystem-subprocess.h \ - $(libgsystem_srcpath)/gsystem-subprocess.c \ - $(libgsystem_srcpath)/libgsystem.h \ + src/gsystem-local-alloc.c \ + src/gsystem-console.c \ + src/gsystem-file-utils.c \ + src/gsystem-shutil.c \ + src/gsystem-log.c \ + src/gsystem-subprocess-context-private.h \ + src/gsystem-subprocess-context.c \ + src/gsystem-subprocess.c \ $(NULL) -libgsystem_la_CFLAGS = $(AM_CFLAGS) $(libgsystem_cflags) -libgsystem_la_LDFLAGS = -avoid-version -Bsymbolic-functions -export-symbols-regex "^gs_" -no-undefined -export-dynamic -libgsystem_la_LIBADD = $(libgsystem_libs) +libgsystem_la_CFLAGS = $(AM_CFLAGS) $(BUILDDEP_GIO_UNIX_CFLAGS) $(BUILDDEP_SYSTEMD_JOURNAL_CFLAGS) -I$(srcdir)/src -DGSYSTEM_CONFIG_XATTRS +libgsystem_la_LDFLAGS = -version-info 0:0:0 -Bsymbolic-functions -export-symbols-regex "^gs_" -no-undefined -export-dynamic +libgsystem_la_LIBADD = $(BUILDDEP_GIO_UNIX_LIBS) $(BUILDDEP_SYSTEMD_JOURNAL_LIBS) + +pkgconfig_DATA += src/libgsystem.pc + +if BUILDOPT_INTROSPECTION +GSystem-1.0.gir: libgsystem.la Makefile +GSystem_1_0_gir_EXPORT_PACKAGES = libgsystem +GSystem_1_0_gir_INCLUDES = Gio-2.0 +GSystem_1_0_gir_CFLAGS = $(libgsystem_la_CFLAGS) +GSystem_1_0_gir_LIBS = libgsystem.la +GSystem_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=GS --symbol-prefix=gs +GSystem_1_0_gir_FILES = $(libgsystemheader_HEADERS) $(filter-out %-private.h,$(libgsystem_la_SOURCES)) +INTROSPECTION_GIRS += GSystem-1.0.gir +gir_DATA += GSystem-1.0.gir +typelib_DATA += GSystem-1.0.typelib +CLEANFILES += $(gir_DATA) $(typelib_DATA) +endif diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..472fbc1 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,34 @@ +# Copyright (C) 2011,2014 Colin Walters <walters@verbum.org> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +include Makefile-decls.am + +ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} +AM_CPPFLAGS += -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \ + -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_34 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_34 +AM_CFLAGS += $(WARN_CFLAGS) +DISTCHECK_CONFIGURE_FLAGS += --enable-gtk-doc --disable-maintainer-mode + +SUBDIRS += . + +EXTRA_DIST += autogen.sh COPYING README + +if BUILDOPT_INTROSPECTION +include $(INTROSPECTION_MAKEFILE) +endif + +include Makefile-libgsystem.am diff --git a/Makefile.dist-packaging b/Makefile.dist-packaging new file mode 100644 index 0000000..75a52f6 --- /dev/null +++ b/Makefile.dist-packaging @@ -0,0 +1,39 @@ +# -*- mode: Makefile -*- + +GITREV = $$(git describe --always --tags) +GITREV_FOR_PKG = $(shell echo "$(GITREV)" | sed -e 's,-,\.,g' -e 's,^v,,') + +srcdir=$(shell pwd) +PACKAGE=$(shell basename $(srcdir)) + +PKG_VER = $(PACKAGE)-$(GITREV_FOR_PKG) + +dist-snapshot: + set -x; \ + echo "PACKAGE=$(PACKAGE)"; \ + TARFILE_TMP=$(PKG_VER).tar.tmp; \ + echo "Archiving $(PACKAGE) at $(GITREV)"; \ + (cd $(srcdir); git archive --format=tar --prefix=$(PKG_VER)/ $(GITREV)) > $${TARFILE_TMP}; \ + (cd $$(git rev-parse --show-toplevel); git submodule status) | while read line; do \ + rev=$$(echo $$line | cut -f 1 -d ' '); path=$$(echo $$line | cut -f 2 -d ' '); \ + echo "Archiving $${path} at $${rev}"; \ + (cd $(srcdir)/$$path; git archive --format=tar --prefix=$(PKG_VER)/$$path/ $${rev}) > submodule.tar; \ + tar -A -f $${TARFILE_TMP} submodule.tar; \ + rm submodule.tar; \ + done; \ + mv $(PKG_VER).tar{.tmp,}; \ + rm -f $(PKG_VER).tar.xz; \ + xz $(PKG_VER).tar + +srpm: dist-snapshot + (cd $(srcdir)/packaging; \ + cp ../$(PKG_VER).tar.xz . ; \ + sed -e "s,^Version:.*,Version: $(GITREV_FOR_PKG)," $(PACKAGE).spec.in > $(PACKAGE).spec; \ + ./rpmbuild-cwd -bs $(PACKAGE).spec) + +rpm: srpm + $(srcdir)/packaging/rpmbuild-cwd --rebuild packaging/$(PKG_VER)*.src.rpm + +buildinstall: rpm + sudo yum localinstall $(PKG_VER)*.src.rpm + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..fe690e9 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +test -n "$srcdir" || srcdir=`dirname "$0"` +test -n "$srcdir" || srcdir=. + +olddir=`pwd` +cd $srcdir + +AUTORECONF=`which autoreconf` +if test -z $AUTORECONF; then + echo "*** No autoreconf found, please intall it ***" + exit 1 +fi + +set -e + +mkdir -p m4 + +GTKDOCIZE=$(which gtkdocize 2>/dev/null) +if test -z $GTKDOCIZE; then + echo "You don't have gtk-doc installed, and thus won't be able to generate the documentation." + rm -f gtk-doc.make + cat > gtk-doc.make <<EOF +EXTRA_DIST = +CLEANFILES = +EOF +else + gtkdocize || exit $? +fi + +autoreconf --force --install --verbose + +cd $olddir +test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..c2e435a --- /dev/null +++ b/configure.ac @@ -0,0 +1,67 @@ +AC_PREREQ([2.63]) +AC_INIT([libgsystem], [2014.1], [walters@verbum.org]) +AC_CONFIG_HEADER([config.h]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_AUX_DIR([build-aux]) + +AM_INIT_AUTOMAKE([1.11 -Wno-portability foreign no-define tar-ustar no-dist-gzip dist-xz]) +AM_MAINTAINER_MODE([enable]) +AM_SILENT_RULES([yes]) +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE + +AC_PROG_CC +AM_PROG_CC_C_O + +changequote(,)dnl +if test "x$GCC" = "xyes"; then + WARN_CFLAGS="-Wall -Wstrict-prototypes -Werror=missing-prototypes \ + -Werror=implicit-function-declaration \ + -Werror=pointer-arith -Werror=init-self -Werror=format=2 \ + -Werror=format-security \ + -Werror=missing-include-dirs -Werror=aggregate-return \ + -Werror=declaration-after-statement" +fi +changequote([,])dnl +AC_SUBST(WARN_CFLAGS) + +# Initialize libtool +LT_PREREQ([2.2.4]) +LT_INIT([disable-static]) + +AC_CHECK_HEADER([attr/xattr.h],,[AC_MSG_ERROR([You must have attr/xattr.h from libattr])]) + +PKG_PROG_PKG_CONFIG + +GIO_DEPENDENCY="gio-unix-2.0 >= 2.34.0" +PKG_CHECK_MODULES(BUILDDEP_GIO_UNIX, $GIO_DEPENDENCY) + +GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) +AC_PATH_PROG([XSLTPROC], [xsltproc]) + +m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [ + GOBJECT_INTROSPECTION_CHECK([1.34.0]) +]) +AM_CONDITIONAL(BUILDOPT_INTROSPECTION, test "x$found_introspection" = xyes) + +AC_ARG_WITH(systemd-journal, + AS_HELP_STRING([--without-systemd-journal], [Use systemd journal @<:@default=auto@:>@]), + [], [with_systemd_journal=auto]) +AS_IF([test x$with_systemd_journal != xno], [ + PKG_CHECK_MODULES([SYSTEMD_JOURNAL], [libsystemd-journal >= 200], have_systemd_journal=yes, have_systemd_journal=no) + ]) +AM_CONDITIONAL(ENABLE_SYSTEMD_JOURNAL, test x$have_systemd_journal = xyes) + +AC_CONFIG_FILES([ +Makefile +src/libgsystem.pc +]) +AC_OUTPUT + +echo " + libgsystem $VERSION + ==================== + + introspection: $found_introspection + systemd journal: $have_systemd_journal +" diff --git a/packaging/libgsystem.spec.in b/packaging/libgsystem.spec.in new file mode 100644 index 0000000..3284784 --- /dev/null +++ b/packaging/libgsystem.spec.in @@ -0,0 +1,62 @@ +Summary: GIO-based library with Unix/Linux specific API +Name: libgsystem +Version: 2014.1 +Release: 1%{?dist} +#VCS: git:git://git.gnome.org/libgsystem +Source0: http://ftp.gnome.org/pub/GNOME/sources/libgsystem/%{version}/libgsystem-%{version}.tar.xz +License: LGPLv2+ +URL: https://wiki.gnome.org/Projects/LibGSystem + +# We always run autogen.sh +BuildRequires: autoconf automake libtool +# For docs +BuildRequires: gtk-doc +# Core requirements +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: libattr-devel +BuildRequires: /usr/bin/g-ir-scanner + +%description +LibGSystem is a GIO-based library usable as a "git submodule", +targeted primarily for use by operating system components. + +%package devel +Summary: Development headers for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +The %{name}-devel package includes the header files for the %{name} library. + +%prep +%autosetup + +%build +env NOCONFIGURE=1 ./autogen.sh +%configure --disable-silent-rules \ + --enable-gtk-doc +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p -c" +find $RPM_BUILD_ROOT -name '*.la' -delete + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%files +%doc COPYING README +%{_libdir}/*.so.* +%{_libdir}/girepository-1.0/*.typelib + +%files devel +%{_libdir}/lib*.so +%{_includedir}/* +%{_libdir}/pkgconfig/* +%{_datadir}/gir-1.0/*.gir diff --git a/packaging/rpmbuild-cwd b/packaging/rpmbuild-cwd new file mode 100755 index 0000000..d0805bb --- /dev/null +++ b/packaging/rpmbuild-cwd @@ -0,0 +1,11 @@ +#!/bin/sh +# rpmbuild-cwd: +# Run "rpmbuild", defining all RPM variables to use the current directory. +# This matches Fedora's system. +# +# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php) +# Copyright (C) 2010 Red Hat, Inc. +# Written by Colin Walters <walters@verbum.org> + +pwd=$(pwd) +exec rpmbuild --define "_sourcedir ${pwd}" --define "_specdir ${pwd}" --define "_builddir ${pwd}" --define "_srcrpmdir ${pwd}" --define "_rpmdir ${pwd}" --define "_buildrootdir ${pwd}/.build" "$@" diff --git a/gsystem-console.c b/src/gsystem-console.c index 35477eb..35477eb 100644 --- a/gsystem-console.c +++ b/src/gsystem-console.c diff --git a/gsystem-console.h b/src/gsystem-console.h index a22b2d4..a22b2d4 100644 --- a/gsystem-console.h +++ b/src/gsystem-console.h diff --git a/gsystem-file-utils.c b/src/gsystem-file-utils.c index 0260603..0260603 100644 --- a/gsystem-file-utils.c +++ b/src/gsystem-file-utils.c diff --git a/gsystem-file-utils.h b/src/gsystem-file-utils.h index 021aebb..deb0a48 100644 --- a/gsystem-file-utils.h +++ b/src/gsystem-file-utils.h @@ -167,6 +167,7 @@ gboolean gs_file_set_all_xattrs (GFile *file, GCancellable *cancellable, GError **error); + G_END_DECLS #endif diff --git a/gsystem-glib-compat.h b/src/gsystem-glib-compat.h index 6fd59c6..6fd59c6 100644 --- a/gsystem-glib-compat.h +++ b/src/gsystem-glib-compat.h diff --git a/gsystem-local-alloc.c b/src/gsystem-local-alloc.c index add3fcb..add3fcb 100644 --- a/gsystem-local-alloc.c +++ b/src/gsystem-local-alloc.c diff --git a/gsystem-local-alloc.h b/src/gsystem-local-alloc.h index 34db297..34db297 100644 --- a/gsystem-local-alloc.h +++ b/src/gsystem-local-alloc.h diff --git a/gsystem-log.c b/src/gsystem-log.c index 7b03145..7b03145 100644 --- a/gsystem-log.c +++ b/src/gsystem-log.c diff --git a/gsystem-log.h b/src/gsystem-log.h index 80cfc34..80cfc34 100644 --- a/gsystem-log.h +++ b/src/gsystem-log.h diff --git a/gsystem-shutil.c b/src/gsystem-shutil.c index 8029dd9..8029dd9 100644 --- a/gsystem-shutil.c +++ b/src/gsystem-shutil.c diff --git a/gsystem-shutil.h b/src/gsystem-shutil.h index 3cdea77..3cdea77 100644 --- a/gsystem-shutil.h +++ b/src/gsystem-shutil.h diff --git a/gsystem-subprocess-context-private.h b/src/gsystem-subprocess-context-private.h index 719df45..719df45 100644 --- a/gsystem-subprocess-context-private.h +++ b/src/gsystem-subprocess-context-private.h diff --git a/gsystem-subprocess-context.c b/src/gsystem-subprocess-context.c index 90ca716..90ca716 100644 --- a/gsystem-subprocess-context.c +++ b/src/gsystem-subprocess-context.c diff --git a/gsystem-subprocess-context.h b/src/gsystem-subprocess-context.h index b8a2401..b8a2401 100644 --- a/gsystem-subprocess-context.h +++ b/src/gsystem-subprocess-context.h diff --git a/gsystem-subprocess.c b/src/gsystem-subprocess.c index 4ec680f..4ec680f 100644 --- a/gsystem-subprocess.c +++ b/src/gsystem-subprocess.c diff --git a/gsystem-subprocess.h b/src/gsystem-subprocess.h index f248f7b..f248f7b 100644 --- a/gsystem-subprocess.h +++ b/src/gsystem-subprocess.h diff --git a/libgsystem.h b/src/libgsystem.h index 60884b6..60884b6 100644 --- a/libgsystem.h +++ b/src/libgsystem.h diff --git a/src/libgsystem.pc.in b/src/libgsystem.pc.in new file mode 100644 index 0000000..abf8575 --- /dev/null +++ b/src/libgsystem.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libgsystem +Description: https://live.gnome.org/Projects/libgsystem +Version: @VERSION@ +Requires: gio-unix-2.0 +Libs: -L${libdir} -lgsystem +Cflags: -I${includedir}/libgsystem |