New upstream version 2016.8
|
|
@ -1,6 +0,0 @@
|
||||||
[submodule "libglnx"]
|
|
||||||
path = libglnx
|
|
||||||
url = https://git.gnome.org/browse/libglnx
|
|
||||||
[submodule "bsdiff"]
|
|
||||||
path = bsdiff
|
|
||||||
url = https://github.com/mendsley/bsdiff
|
|
||||||
24
.travis.yml
|
|
@ -1,24 +0,0 @@
|
||||||
# We're just using a "stubbed out" Travis right now so we can
|
|
||||||
# use Homu <https://github.com/barosl/homu> to auto-squash
|
|
||||||
# etc.
|
|
||||||
#
|
|
||||||
# In the future we'll hook up better tests.
|
|
||||||
language: c
|
|
||||||
dist: trusty
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- automake
|
|
||||||
- autotools-dev
|
|
||||||
script:
|
|
||||||
- env NOCONFIGURE=1 ./autogen.sh
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
# This is Colin's personal Homu instance. We will
|
|
||||||
# also work on productizing this in Project Atomic.
|
|
||||||
webhooks: http://escher.verbum.org:54856/travis
|
|
||||||
email: false
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- auto
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
docs/CONTRIBUTING.md
|
|
||||||
127
GNUmakefile
|
|
@ -1,127 +0,0 @@
|
||||||
# Having a separate GNUmakefile lets me 'include' the dynamically
|
|
||||||
# generated rules created via cfg.mk (package-local configuration)
|
|
||||||
# as well as maint.mk (generic maintainer rules).
|
|
||||||
# This makefile is used only if you run GNU Make.
|
|
||||||
# It is necessary if you want to build targets usually of interest
|
|
||||||
# only to the maintainer.
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2006-2014 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program 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 General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# If the user runs GNU make but has not yet run ./configure,
|
|
||||||
# give them a diagnostic.
|
|
||||||
_gl-Makefile := $(wildcard [M]akefile)
|
|
||||||
ifneq ($(_gl-Makefile),)
|
|
||||||
|
|
||||||
# Make tar archive easier to reproduce.
|
|
||||||
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
|
|
||||||
|
|
||||||
# Allow the user to add to this in the Makefile.
|
|
||||||
ALL_RECURSIVE_TARGETS =
|
|
||||||
|
|
||||||
include Makefile
|
|
||||||
|
|
||||||
# Some projects override e.g., _autoreconf here.
|
|
||||||
-include $(srcdir)/cfg.mk
|
|
||||||
|
|
||||||
# Allow cfg.mk to override these.
|
|
||||||
_build-aux ?= build-aux
|
|
||||||
_autoreconf ?= autoreconf -v
|
|
||||||
|
|
||||||
include $(srcdir)/maint.mk
|
|
||||||
|
|
||||||
# Ensure that $(VERSION) is up to date for dist-related targets, but not
|
|
||||||
# for others: rerunning autoreconf and recompiling everything isn't cheap.
|
|
||||||
_have-git-version-gen := \
|
|
||||||
$(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
|
|
||||||
ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
|
|
||||||
_is-dist-target ?= $(filter-out %clean, \
|
|
||||||
$(filter maintainer-% dist% alpha beta stable,$(MAKECMDGOALS)))
|
|
||||||
_is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS)))
|
|
||||||
ifneq (,$(_is-dist-target)$(_is-install-target))
|
|
||||||
_curr-ver := $(shell cd $(srcdir) \
|
|
||||||
&& $(_build-aux)/git-version-gen \
|
|
||||||
.tarball-version \
|
|
||||||
$(git-version-gen-tag-sed-script))
|
|
||||||
ifneq ($(_curr-ver),$(VERSION))
|
|
||||||
ifeq ($(_curr-ver),UNKNOWN)
|
|
||||||
$(info WARNING: unable to verify if $(VERSION) is the correct version)
|
|
||||||
else
|
|
||||||
ifneq (,$(_is-install-target))
|
|
||||||
# GNU Coding Standards state that 'make install' should not cause
|
|
||||||
# recompilation after 'make all'. But as long as changing the version
|
|
||||||
# string alters config.h, the cost of having 'make all' always have an
|
|
||||||
# up-to-date version is prohibitive. So, as a compromise, we merely
|
|
||||||
# warn when installing a version string that is out of date; the user
|
|
||||||
# should run 'autoreconf' (or something like 'make distcheck') to
|
|
||||||
# fix the version, 'make all' to propagate it, then 'make install'.
|
|
||||||
$(info WARNING: version string $(VERSION) is out of date;)
|
|
||||||
$(info run '$(MAKE) _version' to fix it)
|
|
||||||
else
|
|
||||||
$(info INFO: running autoreconf for new version string: $(_curr-ver))
|
|
||||||
GNUmakefile: _version
|
|
||||||
touch GNUmakefile
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: _version
|
|
||||||
_version:
|
|
||||||
cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf)
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) Makefile
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
.DEFAULT_GOAL := abort-due-to-no-makefile
|
|
||||||
srcdir = .
|
|
||||||
|
|
||||||
# The package can override .DEFAULT_GOAL to run actions like autoreconf.
|
|
||||||
-include ./cfg.mk
|
|
||||||
|
|
||||||
# Allow cfg.mk to override these.
|
|
||||||
_build-aux ?= build-aux
|
|
||||||
_autoreconf ?= autoreconf -v
|
|
||||||
|
|
||||||
include ./maint.mk
|
|
||||||
|
|
||||||
ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
|
|
||||||
$(MAKECMDGOALS): abort-due-to-no-makefile
|
|
||||||
endif
|
|
||||||
|
|
||||||
abort-due-to-no-makefile:
|
|
||||||
@echo There seems to be no Makefile in this directory. 1>&2
|
|
||||||
@echo "You must run ./configure before running 'make'." 1>&2
|
|
||||||
@exit 1
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Tell version 3.79 and up of GNU make to not build goals in this
|
|
||||||
# directory in parallel, in case someone tries to build multiple
|
|
||||||
# targets, and one of them can cause a recursive target to be invoked.
|
|
||||||
|
|
||||||
# Only set this if Automake doesn't provide it.
|
|
||||||
AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
|
|
||||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) \
|
|
||||||
dist distcheck tags ctags
|
|
||||||
|
|
||||||
ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
|
|
||||||
|
|
||||||
ifneq ($(word 2, $(MAKECMDGOALS)), )
|
|
||||||
ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
|
|
||||||
.NOTPARALLEL:
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
@ -35,4 +35,5 @@ libostree_public_headers = \
|
||||||
src/libostree/ostree-sysroot-upgrader.h \
|
src/libostree/ostree-sysroot-upgrader.h \
|
||||||
src/libostree/ostree-deployment.h \
|
src/libostree/ostree-deployment.h \
|
||||||
src/libostree/ostree-bootconfig-parser.h \
|
src/libostree/ostree-bootconfig-parser.h \
|
||||||
|
src/libostree/ostree-repo-deprecated.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,8 @@ gpgreadmedir = $(pkgdatadir)/trusted.gpg.d
|
||||||
EXTRA_DIST += src/libostree/README-gpg src/libostree/bupsplit.h \
|
EXTRA_DIST += src/libostree/README-gpg src/libostree/bupsplit.h \
|
||||||
src/libostree/ostree-enumtypes.h.template \
|
src/libostree/ostree-enumtypes.h.template \
|
||||||
src/libostree/ostree-enumtypes.c.template \
|
src/libostree/ostree-enumtypes.c.template \
|
||||||
src/libostree/ostree-deployment-private.h
|
src/libostree/ostree-deployment-private.h \
|
||||||
|
src/libostree/ostree-repo-deprecated.h
|
||||||
|
|
||||||
install-mkdir-remotes-d-hook:
|
install-mkdir-remotes-d-hook:
|
||||||
mkdir -p $(DESTDIR)$(sysconfdir)/ostree/remotes.d
|
mkdir -p $(DESTDIR)$(sysconfdir)/ostree/remotes.d
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \
|
||||||
PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \
|
PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
uninstalled_test_data = tests/ostree-symlink-stamp
|
uninstalled_test_data = tests/ostree-symlink-stamp tests/ostree-prepare-root-symlink-stamp \
|
||||||
|
tests/ostree-remount-symlink-stamp tests/rofiles-fuse-symlink-stamp
|
||||||
|
|
||||||
dist_uninstalled_test_scripts = tests/test-symbols.sh
|
dist_uninstalled_test_scripts = tests/test-symbols.sh
|
||||||
|
|
||||||
|
|
@ -86,6 +87,7 @@ dist_test_scripts = \
|
||||||
tests/test-prune.sh \
|
tests/test-prune.sh \
|
||||||
tests/test-refs.sh \
|
tests/test-refs.sh \
|
||||||
tests/test-demo-buildsystem.sh \
|
tests/test-demo-buildsystem.sh \
|
||||||
|
tests/test-switchroot.sh \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
if BUILDOPT_FUSE
|
if BUILDOPT_FUSE
|
||||||
|
|
@ -238,12 +240,20 @@ EXTRA_DIST += \
|
||||||
tests/libreaddir-rand.so: Makefile
|
tests/libreaddir-rand.so: Makefile
|
||||||
$(AM_V_GEN) ln -fns ../.libs/libreaddir-rand.so tests
|
$(AM_V_GEN) ln -fns ../.libs/libreaddir-rand.so tests
|
||||||
ALL_LOCAL_RULES += tests/libreaddir-rand.so
|
ALL_LOCAL_RULES += tests/libreaddir-rand.so
|
||||||
CLEANFILES += tests/libreaddir-rand.so tests/ostree-symlink-stamp tests/ostree
|
CLEANFILES += tests/libreaddir-rand.so tests/ostree-symlink-stamp \
|
||||||
|
tests/ostree-prepare-root-symlink-stamp tests/ostree-remount-symlink-stamp \
|
||||||
|
tests/rofiles-fuse-symlink-stamp tests/ostree
|
||||||
|
CLEANFILES += tests/ostree-prepare-root tests/ostree-remount tests/rofiles-fuse
|
||||||
|
|
||||||
tests/ostree-symlink-stamp: Makefile
|
tests/%-symlink-stamp: % Makefile
|
||||||
@set -e; \
|
$(AM_V_GEN) set -e; \
|
||||||
real_bin=`cd $(top_builddir) && ./libtool --mode=execute echo ostree`; \
|
lt_bin=`cd $(top_builddir) && ./libtool --mode=execute echo $*`; \
|
||||||
ln -sf "$${real_bin}" tests/ostree; \
|
if test "$${lt_bin}" = "$*"; then \
|
||||||
|
real_bin=$(abs_top_builddir)/$*; \
|
||||||
|
else \
|
||||||
|
real_bin="$${lt_bin}"; \
|
||||||
|
fi; \
|
||||||
|
ln -sf "$${real_bin}" tests/$*; \
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
# Unfortunately the glib test data APIs don't actually handle
|
# Unfortunately the glib test data APIs don't actually handle
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ include Makefile-decls.am
|
||||||
|
|
||||||
shortened_sysconfdir = $$(echo "$(sysconfdir)" | sed -e 's|^$(prefix)||' -e 's|^/||')
|
shortened_sysconfdir = $$(echo "$(sysconfdir)" | sed -e 's|^$(prefix)||' -e 's|^/||')
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I buildutil ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I buildutil -I libglnx ${ACLOCAL_FLAGS}
|
||||||
AM_CPPFLAGS += -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \
|
AM_CPPFLAGS += -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \
|
||||||
-DLOCALEDIR=\"$(datadir)/locale\" -DSYSCONFDIR=\"$(sysconfdir)\" \
|
-DLOCALEDIR=\"$(datadir)/locale\" -DSYSCONFDIR=\"$(sysconfdir)\" \
|
||||||
-DSHORTENED_SYSCONFDIR=\"$(shortened_sysconfdir)\" \
|
-DSHORTENED_SYSCONFDIR=\"$(shortened_sysconfdir)\" \
|
||||||
|
|
|
||||||
|
|
@ -1,451 +0,0 @@
|
||||||
This file is outdated, but some of the text here is still useful for
|
|
||||||
historical context. I'm preserving it (explicitly still in the tree)
|
|
||||||
for posterity.
|
|
||||||
|
|
||||||
OSTree
|
|
||||||
======
|
|
||||||
|
|
||||||
Problem statement
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Hacking on the core operating system is painful - this includes most
|
|
||||||
of GNOME from upower and NetworkManager up to gnome-shell. I want a
|
|
||||||
system that matches these requirements:
|
|
||||||
|
|
||||||
1. Does not disturb your existing OS
|
|
||||||
2. Is not terribly slow to use
|
|
||||||
3. Shares your $HOME - you have your data
|
|
||||||
4. Allows easy rollback
|
|
||||||
5. Ideally allows access to existing apps
|
|
||||||
|
|
||||||
Comparison with existing tools
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
- Virtualization
|
|
||||||
|
|
||||||
Fails on points 2) and 3). Actually qemu-kvm can be pretty fast,
|
|
||||||
but in a lot of cases there is no substitute for actually booting
|
|
||||||
on bare metal; GNOME 3 really needs some hardware GPU
|
|
||||||
acceleration.
|
|
||||||
|
|
||||||
- Rebuilding distribution packages
|
|
||||||
|
|
||||||
Fails on points 1) and 4). Is also just very annoying: dpkg/rpm
|
|
||||||
both want tarballs, which you don't have since you're working from
|
|
||||||
git. The suggested "mock/pbuilder" type chroot builds are *slow*.
|
|
||||||
And even with non-chroot builds there is lots of pointless build
|
|
||||||
wrapping going on. Both dpkg and rpm also are poor at helping you
|
|
||||||
revert back to the original system.
|
|
||||||
|
|
||||||
All of this can be scripted to be less bad of course - and I have
|
|
||||||
worked on such scripts. But fundamentally you're still fighting
|
|
||||||
the system, and if you're hacking on a lowlevel library like say
|
|
||||||
glib, you can easily get yourself to the point where you need a
|
|
||||||
recovery CD - at that point your edit/compile/debug cycle is just
|
|
||||||
too long.
|
|
||||||
|
|
||||||
- "sudo make install"
|
|
||||||
|
|
||||||
Now your system is in an undefined state. You can use e.g. rpm
|
|
||||||
-qV to try to find out what you overwrote, but neither dpkg nor
|
|
||||||
rpm will help clean up any files left over that aren't shipped by
|
|
||||||
the old package.
|
|
||||||
|
|
||||||
This is most realistic option for people hacking on system
|
|
||||||
components currently, but ostree will be better.
|
|
||||||
|
|
||||||
- LXC / containers
|
|
||||||
|
|
||||||
Fails on 3), and 4) is questionable. Also shares the annoying part
|
|
||||||
of rebuilding distribution packages. LXC is focused on running
|
|
||||||
multiple server systems at the *same time*, which isn't what we
|
|
||||||
want (at least, not right now), and honestly even trying to support
|
|
||||||
that for a graphical desktop would be a lot of tricky work, for
|
|
||||||
example getting two GDM instances not to fight over VT
|
|
||||||
allocations. But some bits of the technology may make sense to use.
|
|
||||||
|
|
||||||
- jhbuild + distribution packages
|
|
||||||
|
|
||||||
The state of the art in GNOME - but can only build non-root things -
|
|
||||||
this means you can't build NetworkManager, and thus are permanently
|
|
||||||
stuck on whatever the distro provides.
|
|
||||||
|
|
||||||
Who is ostree for?
|
|
||||||
------------------
|
|
||||||
|
|
||||||
First - operating system developers and testers. I specifically keep
|
|
||||||
a few people in mind - Dan Williams and Eric Anholt, as well as myself
|
|
||||||
obviously. For Eric Anholt, a key use case for him is being able to
|
|
||||||
try out the latest gnome-shell, and combine it with his work on Mesa,
|
|
||||||
and see how it works/performs - while retaining the ability to roll
|
|
||||||
back if one or both breaks.
|
|
||||||
|
|
||||||
The rollback concept is absolutely key for shipping anything to
|
|
||||||
enthusiasts or knowledable testers. With a system like this, a tester
|
|
||||||
can easily perform a local rollback - something just not well
|
|
||||||
supported by dpkg/rpm. (What about Conary? See below.)
|
|
||||||
|
|
||||||
Also, distributing operating system trees (instead of packages) gives
|
|
||||||
us a sane place to perform automated QA **before** we ship it to
|
|
||||||
testers. We should never be wasting these people's time.
|
|
||||||
|
|
||||||
Even better, this system would allow testers to *bisect* across
|
|
||||||
operating system builds, and do so very efficiently.
|
|
||||||
|
|
||||||
The core idea - chroots
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
chroots are the original lightweight "virtualization". Let's use
|
|
||||||
them. So basically, you install a mainstream distribution (say
|
|
||||||
Debian). It has a root filesystem like this:
|
|
||||||
|
|
||||||
/usr
|
|
||||||
/etc
|
|
||||||
/home
|
|
||||||
...
|
|
||||||
|
|
||||||
Now, what we can do is have a system that installs chroots as a subdirectory
|
|
||||||
of the root, like:
|
|
||||||
|
|
||||||
/ostree/gnomeos-3.0-opt-393a4555/{usr,etc,sbin,...}
|
|
||||||
/ostree/gnomeos-3.2-opt-7e9788a2/{usr,etc,sbin,...}
|
|
||||||
|
|
||||||
These live in the same root filesystem as your regular distribution
|
|
||||||
(Note though, the root partition should be reasonably sized, or
|
|
||||||
hopefully you've used just one big partition).
|
|
||||||
|
|
||||||
You should be able to boot into one of these roots. Since ostree
|
|
||||||
lives inside a distro created partition, a tricky part here is that we
|
|
||||||
need to know how to interact with the installed distribution's grub.
|
|
||||||
This is an annoying but tractable problem.
|
|
||||||
|
|
||||||
First, we install a kernel+initramfs alongside the distribution's.
|
|
||||||
Then, we have a "trampoline" ostree-init binary which is statically
|
|
||||||
linked, and boot the kernel with init=/ostree/ostree-init. This then
|
|
||||||
takes care of chrooting and running the init binary.
|
|
||||||
|
|
||||||
An important note here is that we bind mount the real /home. This
|
|
||||||
means you have your data. This also implies we share uid/gid, so
|
|
||||||
/etc/passwd will have to be in sync. Probably what we'll do is have a
|
|
||||||
script to pull the data from the "host" OS.
|
|
||||||
|
|
||||||
I've decided for now to move /var into /ostree to avoid sharing it
|
|
||||||
with the "host" distribution, because in practice we're likely
|
|
||||||
to hit incompatibilities.
|
|
||||||
|
|
||||||
Do note however /etc lives *inside* the OSTree; it's presently
|
|
||||||
versioned and readonly like everything else.
|
|
||||||
|
|
||||||
On a pure OSTree system, the filesystem layout will look like this:
|
|
||||||
|
|
||||||
.
|
|
||||||
|-- boot
|
|
||||||
|-- home
|
|
||||||
|-- ostree
|
|
||||||
| |-- var
|
|
||||||
| |-- current -> gnomeos-3.2-opt-7e9788a2
|
|
||||||
| |-- gnomeos-3.0-opt-393a4555
|
|
||||||
| | |-- etc
|
|
||||||
| | |-- lib
|
|
||||||
| | |-- mnt
|
|
||||||
| | |-- proc
|
|
||||||
| | |-- run
|
|
||||||
| | |-- sbin
|
|
||||||
| | |-- srv
|
|
||||||
| | |-- sys
|
|
||||||
| | `-- usr
|
|
||||||
| `-- gnomeos-3.2-opt-7e9788a2
|
|
||||||
| |-- etc
|
|
||||||
| |-- lib
|
|
||||||
| |-- mnt
|
|
||||||
| |-- proc
|
|
||||||
| |-- run
|
|
||||||
| |-- sbin
|
|
||||||
| |-- srv
|
|
||||||
| |-- sys
|
|
||||||
| `-- usr
|
|
||||||
|-- root
|
|
||||||
|
|
||||||
|
|
||||||
Making this efficient
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
One of the first things you'll probably ask is "but won't that use a
|
|
||||||
lot of disk space"? Indeed, it will, if you just unpack a set of RPMs
|
|
||||||
or .debs into each root.
|
|
||||||
|
|
||||||
Besides chroots, there's another old Unix idea we can take advantage
|
|
||||||
of - hard links. These allow sharing the underlying data of a file,
|
|
||||||
with the tradeoff that changing any one file will change all names
|
|
||||||
that point to it. This mutability means that we have to either:
|
|
||||||
|
|
||||||
1. Make sure everything touching the operating system breaks hard links
|
|
||||||
This is probably tractable over a long period of time, but if anything
|
|
||||||
has a bug, then it corrupts the file effectively.
|
|
||||||
2. Make the core OS read-only, with a well-defined mechanism for mutating
|
|
||||||
under the control of ostree.
|
|
||||||
|
|
||||||
I chose 2.
|
|
||||||
|
|
||||||
A userspace content-addressed versioning filesystem
|
|
||||||
---------------------------------------------------
|
|
||||||
|
|
||||||
At its very core, that's what ostree is. Just like git. If you
|
|
||||||
understand git, you know it's not like other revision control systems.
|
|
||||||
git is effectively a specialized, userspace filesystem, and that is a
|
|
||||||
very powerful idea.
|
|
||||||
|
|
||||||
At the core of git is the idea of "content-addressed objects". For
|
|
||||||
background on this, see <http://book.git-scm.com/7_how_git_stores_objects.html>
|
|
||||||
|
|
||||||
Why not just use git? Basically because git is designed mainly for
|
|
||||||
source trees - it goes to effort to be sure it's compressing text for
|
|
||||||
example, under the assumption that you have a lot of text. Its
|
|
||||||
handling of binaries is very generic and unoptimized.
|
|
||||||
|
|
||||||
In contrast, ostree is explicitly designed for binaries, and in
|
|
||||||
particular one type of binary - ELF executables (or it will be once we
|
|
||||||
start using bsdiff).
|
|
||||||
|
|
||||||
Another big difference versus git is that ostree uses hard links
|
|
||||||
between "checkouts" and the repository. This means each checkout uses
|
|
||||||
almost no additional space, and is *extremely* fast to check out. We
|
|
||||||
can do this because again each checkout is designed to be read-only.
|
|
||||||
|
|
||||||
So we mentioned above there are:
|
|
||||||
|
|
||||||
/ostree/gnomeos-3.2-opt-7e9788a2
|
|
||||||
/ostree/gnomeos-3.2-opt-393a4555
|
|
||||||
|
|
||||||
There is also a "repository" that looks like this:
|
|
||||||
|
|
||||||
/ostree/repo/objects/17/a95e8ca0ba655b09cb68d7288342588e867ee0.file
|
|
||||||
/ostree/repo/objects/17/68625e7ff5a8db77904c77489dc6f07d4afdba.meta
|
|
||||||
/ostree/repo/objects/17/cc01589dd8540d85c0f93f52b708500dbaa5a9.file
|
|
||||||
/ostree/repo/objects/30
|
|
||||||
/ostree/repo/objects/30/6359b3ca7684358a3988afd005013f13c0c533.meta
|
|
||||||
/ostree/repo/objects/30/8f3c03010cedd930b1db756ce659c064f0cd7f.meta
|
|
||||||
/ostree/repo/objects/30/8cf0fd8e63dfff6a5f00ba5a48f3b92fb52de7.file
|
|
||||||
/ostree/repo/objects/30/6cad7f027d69a46bb376044434bbf28d63e88d.file
|
|
||||||
|
|
||||||
Each object is either metadata (like a commit or tree), or a hard link
|
|
||||||
to a regular file.
|
|
||||||
|
|
||||||
Note that also unlike git, the checksum here includes *metadata* such
|
|
||||||
as uid, gid, permissions, and extended attributes. (It does not include
|
|
||||||
file access times, since those shouldn't matter for the OS)
|
|
||||||
|
|
||||||
This is another important component to allowing the hardlinks. We
|
|
||||||
wouldn't want say all empty files to be shared necessarily. (Though
|
|
||||||
maybe this is wrong, and since the OS is readonly, we can make all
|
|
||||||
files owned by root without loss of generality).
|
|
||||||
|
|
||||||
However this tradeoff means that we probably need a second index by
|
|
||||||
content, so we don't have to redownload the entire OS if permissions
|
|
||||||
change =)
|
|
||||||
|
|
||||||
Atomic upgrades, rollback
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
OSTree is designed to atomically swap operating systems - such that
|
|
||||||
during an upgrade and reboot process, you either get the full new
|
|
||||||
system, or the old one. There is no "Please don't turn off your
|
|
||||||
computer". We do this by simply using a symbolic link like:
|
|
||||||
|
|
||||||
/ostree/current -> /ostree/gnomeos-3.4-opt-e3b0c4429
|
|
||||||
|
|
||||||
Where gnomeos-e3b0c4429 has the full regular filesystem tree with usr/
|
|
||||||
etc/ directories as above. To upgrade or rollback (there is no
|
|
||||||
difference internally), we simply check out a new tree into
|
|
||||||
gnomeos-b90ae4763 for example, then swap the "current" symbolic link,
|
|
||||||
then remove the old tree.
|
|
||||||
|
|
||||||
But does this mean you have to reboot for OS upgrades? Very likely,
|
|
||||||
yes - and this is no different from RPM/deb or whatever. They just
|
|
||||||
typically lie to you about it =)
|
|
||||||
|
|
||||||
A typical model with RPM/deb is to unpack the new files, then use some
|
|
||||||
IPC mechanism (SIGHUP, a control binary like /usr/sbin/apachectl) to
|
|
||||||
signal the running process to reload. There are multiple problems
|
|
||||||
with this - one is that in the new state, daemon A may depend on the
|
|
||||||
updated configuration in daemon B. This may not be particularly
|
|
||||||
common in default configurations, but it's highly likely that that
|
|
||||||
some deployments will have e.g. apache talking to a local MySQL
|
|
||||||
instance. So you really want to do is only apply the updated
|
|
||||||
configuration when all the files are in place; not after each RPM or
|
|
||||||
.deb is installed.
|
|
||||||
|
|
||||||
What's even harder is the massive set of race conditions that are
|
|
||||||
possible while RPM/deb are in the process of upgrading. Cron jobs are
|
|
||||||
very likely to hit this. If we want the ability to apply updates to a
|
|
||||||
live system, we could first pause execution of non-upgrade userspace
|
|
||||||
tasks. This could be done via SIGSTOP for example. Then, we can swap
|
|
||||||
around the filesystem tree, and then finally attempt to apply updates
|
|
||||||
via SIGHUP, and if possible, restart processes.
|
|
||||||
|
|
||||||
Configuration Management
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
By now if you've thought about this problem domain before, you're wondering
|
|
||||||
about configuration management. In other words, if the OS is read only,
|
|
||||||
how do I edit /etc/sudoers?
|
|
||||||
|
|
||||||
Well, have you ever been a system administrator on a zypper/yum
|
|
||||||
system, done an RPM update, which then drops .rpmnew files in your
|
|
||||||
/etc/ that you have to go and hunt for with "find" or something, and
|
|
||||||
said to yourself, "Wow, this system is awesome!!!" ? Right, that's
|
|
||||||
what I thought.
|
|
||||||
|
|
||||||
Configuration (and systems) management is a tricky problem, and I
|
|
||||||
certainly don't have a magic bullet. However, one large conceptual
|
|
||||||
improvement I think is defaulting to "rebase" versus "merge".
|
|
||||||
|
|
||||||
This means that we won't permit direct modification of /etc - instead,
|
|
||||||
you HAVE to write a script which accomplishes your goals. To generate
|
|
||||||
a tree, we check out a new copy, then run your script on top.
|
|
||||||
|
|
||||||
If the script fails, we can roll back the update, or drop to a shell
|
|
||||||
if interactive.
|
|
||||||
|
|
||||||
However, we also need to consider cases where the administrator
|
|
||||||
modifies state indirectly by a program. Think "adduser" for example.
|
|
||||||
|
|
||||||
Possible approaches:
|
|
||||||
|
|
||||||
1. Patch all of these programs to know how to write to the writable
|
|
||||||
location, instead of the R/O bind mount overlay.
|
|
||||||
2. Move the data to /var
|
|
||||||
|
|
||||||
What about "packages"?
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
There are several complex and separate issues hiding in this seemingly
|
|
||||||
simple question.
|
|
||||||
|
|
||||||
I think OSTree always makes sense to use as a core operating system
|
|
||||||
builder and updater. By "core" here I mean the parts that aren't
|
|
||||||
removable. Debian has Essential: yes, any other distribution has this
|
|
||||||
too implicitly in the set of dependencies for their updater tool.
|
|
||||||
|
|
||||||
Now, let me just say I will absolutely support using something like
|
|
||||||
apt/yum/zypper (and consequently deb/rpm) on top of OSTree. This
|
|
||||||
isn't trivial, but there aren't any conceptual issues.
|
|
||||||
|
|
||||||
Concretely for example, RPM or .deb might make sense as a delivery
|
|
||||||
vehicle for third party OS extensions. A canoncial example is the
|
|
||||||
NVidia graphics driver.
|
|
||||||
|
|
||||||
If one is using OSTree to build an *operating system*, then there has
|
|
||||||
to be some API for applications. And that demands its own targeted
|
|
||||||
solution - something like an evolved glick (zeroinstall is also
|
|
||||||
similar).
|
|
||||||
|
|
||||||
Current package systems are totally broken for application deployment
|
|
||||||
though; for example, they will remove files away from under running
|
|
||||||
applications on update. And we clearly need the ability to install
|
|
||||||
and upgrade applications without rebooting the OS.
|
|
||||||
|
|
||||||
Details of RPM installation
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
We should be able to install LSB rpms. This implies providing "rpm".
|
|
||||||
The tricky part here is since the OS itself is not assembled via RPMs,
|
|
||||||
we need to fake up a database of "provides" as if we were. Even
|
|
||||||
harder would be maintaining binary compatibilty with any arbitrary
|
|
||||||
%post scripts that may be run.
|
|
||||||
|
|
||||||
What about BTRFS? Doesn't it solve everything?
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
In short, BTRFS is not a magic bullet, but yes - it helps
|
|
||||||
significantly. The obvious thing to do is layer BTRFS under dpkg/rpm,
|
|
||||||
and have a separate subvolume for /home so rollbacks don't lose your
|
|
||||||
data. See e.g.
|
|
||||||
<http://fedoraproject.org/wiki/Features/SystemRollbackWithBtrfs>
|
|
||||||
|
|
||||||
As a general rule an issue with the BTRFS is that it can't roll back
|
|
||||||
just changes to things installed by RPM (i.e. what's in rpm -qal).
|
|
||||||
|
|
||||||
For example, it's possible to e.g. run yum update, then edit something
|
|
||||||
in /etc, reboot and notice things are broken, then roll back and have
|
|
||||||
silently lost your changes to /etc.
|
|
||||||
|
|
||||||
Another example is adding a new binary in /usr/local. You could say,
|
|
||||||
"OK, we'll use subvolumes for those!". But then what about /var (and
|
|
||||||
your VM images that live in /var/lib/libvirt ?)
|
|
||||||
|
|
||||||
Finally, probably the biggest disadvantage of the rpm/dpkg + BTRFS
|
|
||||||
approach is it doesn't solve the race conditions that happen when
|
|
||||||
unpacking packages into the live system. This problem is really
|
|
||||||
important to me.
|
|
||||||
|
|
||||||
Note though ostree can definitely take advantage of BTRFS features!
|
|
||||||
In particular, we could use "reflink"
|
|
||||||
<http://lwn.net/Articles/331808/> instead of hard links, and avoid
|
|
||||||
having the object store corrupted if somehow the files are modified
|
|
||||||
directly.
|
|
||||||
|
|
||||||
Other systems
|
|
||||||
-------------
|
|
||||||
|
|
||||||
I've spent a long time thinking about this problem, and here are some
|
|
||||||
of the other possible solutions out there I looked at, and why I
|
|
||||||
didn't use them:
|
|
||||||
|
|
||||||
- Git: <http://git-scm.com/>
|
|
||||||
|
|
||||||
Really awesome, and the core inspiration here. But like I mentioned
|
|
||||||
above, not at all designed for binaries - we can make different tradeoffs.
|
|
||||||
|
|
||||||
- bup: <https://github.com/apenwarr/bup>
|
|
||||||
|
|
||||||
bup is cool. But it shares the negative tradeoffs with git, though it
|
|
||||||
does add positives of its own. It also inspired me.
|
|
||||||
|
|
||||||
- git-annex: <http://git-annex.branchable.com/git-annex/>
|
|
||||||
|
|
||||||
Looks interesting; I think this will share the same negative tradeoffs with git
|
|
||||||
as far as using it for an OS goes.
|
|
||||||
|
|
||||||
- schroot: <http://www.debian-administration.org/articles/566>
|
|
||||||
|
|
||||||
Like LXC/containers, but just using a chroot.
|
|
||||||
|
|
||||||
- NixOS: <http://nixos.org/>
|
|
||||||
|
|
||||||
The NixOS people have a lot of really good ideas, and they've definitely
|
|
||||||
thought about the problem space. However, their approach of checksumming
|
|
||||||
all inputs to a package is pretty wacky. I don't see the point, and moreover
|
|
||||||
it uses gobs of disk space.
|
|
||||||
|
|
||||||
- Conary: <http://wiki.rpath.com/wiki/Conary:Updates_and_Rollbacks>
|
|
||||||
|
|
||||||
If rpm/dpkg are like CVS, Conary is closer to Subversion. It's not
|
|
||||||
bad, but ostree is better than it for the exact same reasons git
|
|
||||||
is better than Subversion.
|
|
||||||
|
|
||||||
- BTRFS: <http://en.wikipedia.org/wiki/Btrfs>
|
|
||||||
|
|
||||||
See above.
|
|
||||||
|
|
||||||
- Solaris IPS: <http://hub.opensolaris.org/bin/view/Project+pkg/>
|
|
||||||
|
|
||||||
Rollback is ZFS level, so I think this shares the same tradeoffs as BTRFS+RPM/deb.
|
|
||||||
They probably have some vertical integration though which definitely helps.
|
|
||||||
Obviously we can't use ZFS.
|
|
||||||
|
|
||||||
- Jhbuild: <https://live.gnome.org/Jhbuild>
|
|
||||||
|
|
||||||
What we've been using in GNOME, and has the essential property of allowing you
|
|
||||||
to "fall back" to a stable system. But ostree will blow it out of the water.
|
|
||||||
|
|
||||||
Development
|
|
||||||
-----------
|
|
||||||
|
|
||||||
- OSTree wiki page: <https://live.gnome.org/OSTree>
|
|
||||||
|
|
||||||
- ostbuild wiki page: <https://live.gnome.org/OSTree/Ostbuild>
|
|
||||||
|
|
||||||
- Git repository: <http://git.gnome.org/browse/ostree/>
|
|
||||||
|
|
||||||
- Deploying OSTree in the Gnome servers: <https://bugzilla.gnome.org/show_bug.cgi?id=669772>
|
|
||||||
|
|
@ -64,7 +64,7 @@ However, in order to build from a git clone, you must update the
|
||||||
submodules. If you're packaging OSTree and want a tarball, I
|
submodules. If you're packaging OSTree and want a tarball, I
|
||||||
recommend using a "recursive git archive" script. There are several
|
recommend using a "recursive git archive" script. There are several
|
||||||
available online;
|
available online;
|
||||||
[this code](https://git.gnome.org/browse/ostree/tree/packaging/Makefile.dist-packaging#n11)
|
[this code](https://github.com/ostreedev/ostree/blob/master/packaging/Makefile.dist-packaging#L11)
|
||||||
in OSTree is an example.
|
in OSTree is an example.
|
||||||
|
|
||||||
Once you have a git clone or recursive archive, building is the
|
Once you have a git clone or recursive archive, building is the
|
||||||
|
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
*.lo
|
|
||||||
*.o
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
/*.bak
|
|
||||||
/*.gcda
|
|
||||||
/*.gcno
|
|
||||||
/*.orig
|
|
||||||
/*.rej
|
|
||||||
/*.tab.c
|
|
||||||
/*~
|
|
||||||
/.*.sw[nop]
|
|
||||||
/.dirstamp
|
|
||||||
/.gitignore
|
|
||||||
/GPATH
|
|
||||||
/GRTAGS
|
|
||||||
/GSYMS
|
|
||||||
/GTAGS
|
|
||||||
/ID
|
|
||||||
/Makefile
|
|
||||||
/Makefile.in
|
|
||||||
/TAGS
|
|
||||||
/gtkdoc-check.test
|
|
||||||
/html
|
|
||||||
/html-build.stamp
|
|
||||||
/html.stamp
|
|
||||||
/ostree-decl-list.txt
|
|
||||||
/ostree-decl.txt
|
|
||||||
/ostree-undeclared.txt
|
|
||||||
/ostree-undocumented.txt
|
|
||||||
/ostree-unused.txt
|
|
||||||
/ostree.args
|
|
||||||
/ostree.hierarchy
|
|
||||||
/ostree.interfaces
|
|
||||||
/ostree-overrides.txt
|
|
||||||
/ostree.pdf
|
|
||||||
/ostree.prerequisites
|
|
||||||
/ostree.signals
|
|
||||||
/ostree.types
|
|
||||||
/pdf-build.stamp
|
|
||||||
/pdf.stamp
|
|
||||||
/scan-build.stamp
|
|
||||||
/setup-build.stamp
|
|
||||||
/sgml-build.stamp
|
|
||||||
/sgml.stamp
|
|
||||||
/so_locations
|
|
||||||
/tags
|
|
||||||
/tmpl
|
|
||||||
/tmpl/*.bak
|
|
||||||
/tmpl/ostree-unused.sgml
|
|
||||||
/xml
|
|
||||||
/version.xml
|
|
||||||
_libs
|
|
||||||
|
|
@ -0,0 +1,945 @@
|
||||||
|
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
# Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
# Shared variables between toplevel Makefile.am and doc/Makefile.am
|
||||||
|
# ...since gtk-doc forces use of recursive make =(
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
# -*- mode: makefile -*-
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# Everything below here is generic #
|
||||||
|
####################################
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = apidoc
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/buildutil/attributes.m4 \
|
||||||
|
$(top_srcdir)/buildutil/glibtests.m4 \
|
||||||
|
$(top_srcdir)/buildutil/gtk-doc.m4 \
|
||||||
|
$(top_srcdir)/buildutil/libglnx.m4 \
|
||||||
|
$(top_srcdir)/buildutil/libtool.m4 \
|
||||||
|
$(top_srcdir)/buildutil/ltoptions.m4 \
|
||||||
|
$(top_srcdir)/buildutil/ltsugar.m4 \
|
||||||
|
$(top_srcdir)/buildutil/ltversion.m4 \
|
||||||
|
$(top_srcdir)/buildutil/lt~obsolete.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
am__DIST_COMMON = $(srcdir)/../Makefile-libostree-defines.am \
|
||||||
|
$(srcdir)/Makefile.in $(top_srcdir)/gtk-doc.make
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BUILDOPT_FUSE_CFLAGS = @BUILDOPT_FUSE_CFLAGS@
|
||||||
|
BUILDOPT_FUSE_LIBS = @BUILDOPT_FUSE_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GJS = @GJS@
|
||||||
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
|
GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
|
||||||
|
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
|
||||||
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
|
GLIB_MKENUMS = @GLIB_MKENUMS@
|
||||||
|
GOBJECT_QUERY = @GOBJECT_QUERY@
|
||||||
|
GPGME_CONFIG = @GPGME_CONFIG@
|
||||||
|
GPGME_PTHREAD_CFLAGS = @GPGME_PTHREAD_CFLAGS@
|
||||||
|
GPGME_PTHREAD_LIBS = @GPGME_PTHREAD_LIBS@
|
||||||
|
GREP = @GREP@
|
||||||
|
GRUB2_MKCONFIG = @GRUB2_MKCONFIG@
|
||||||
|
GTKDOC_CHECK = @GTKDOC_CHECK@
|
||||||
|
GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
|
||||||
|
GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
|
||||||
|
GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
|
||||||
|
GTKDOC_MKPDF = @GTKDOC_MKPDF@
|
||||||
|
GTKDOC_REBASE = @GTKDOC_REBASE@
|
||||||
|
HTML_DIR = @HTML_DIR@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
|
||||||
|
INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
|
||||||
|
INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
|
||||||
|
INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
|
||||||
|
INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
|
||||||
|
INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
|
||||||
|
INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
|
||||||
|
INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@
|
||||||
|
LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OSTREE_FEATURES = @OSTREE_FEATURES@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
OT_DEP_E2P_CFLAGS = @OT_DEP_E2P_CFLAGS@
|
||||||
|
OT_DEP_E2P_LIBS = @OT_DEP_E2P_LIBS@
|
||||||
|
OT_DEP_GIO_UNIX_CFLAGS = @OT_DEP_GIO_UNIX_CFLAGS@
|
||||||
|
OT_DEP_GIO_UNIX_LIBS = @OT_DEP_GIO_UNIX_LIBS@
|
||||||
|
OT_DEP_GPGME_CFLAGS = @OT_DEP_GPGME_CFLAGS@
|
||||||
|
OT_DEP_GPGME_LIBS = @OT_DEP_GPGME_LIBS@
|
||||||
|
OT_DEP_LIBARCHIVE_CFLAGS = @OT_DEP_LIBARCHIVE_CFLAGS@
|
||||||
|
OT_DEP_LIBARCHIVE_LIBS = @OT_DEP_LIBARCHIVE_LIBS@
|
||||||
|
OT_DEP_LIBMOUNT_CFLAGS = @OT_DEP_LIBMOUNT_CFLAGS@
|
||||||
|
OT_DEP_LIBMOUNT_LIBS = @OT_DEP_LIBMOUNT_LIBS@
|
||||||
|
OT_DEP_LZMA_CFLAGS = @OT_DEP_LZMA_CFLAGS@
|
||||||
|
OT_DEP_LZMA_LIBS = @OT_DEP_LZMA_LIBS@
|
||||||
|
OT_DEP_SELINUX_CFLAGS = @OT_DEP_SELINUX_CFLAGS@
|
||||||
|
OT_DEP_SELINUX_LIBS = @OT_DEP_SELINUX_LIBS@
|
||||||
|
OT_DEP_SOUP_CFLAGS = @OT_DEP_SOUP_CFLAGS@
|
||||||
|
OT_DEP_SOUP_LIBS = @OT_DEP_SOUP_LIBS@
|
||||||
|
OT_DEP_ZLIB_CFLAGS = @OT_DEP_ZLIB_CFLAGS@
|
||||||
|
OT_DEP_ZLIB_LIBS = @OT_DEP_ZLIB_LIBS@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
WARN_CFLAGS = @WARN_CFLAGS@
|
||||||
|
XSLTPROC = @XSLTPROC@
|
||||||
|
YACC = @YACC@
|
||||||
|
YFLAGS = @YFLAGS@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
installed_test_metadir = @installed_test_metadir@
|
||||||
|
installed_testdir = @installed_testdir@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
systemdsystemunitdir = @systemdsystemunitdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
libostree_public_headers = \
|
||||||
|
src/libostree/ostree.h \
|
||||||
|
src/libostree/ostree-async-progress.h \
|
||||||
|
src/libostree/ostree-autocleanups.h \
|
||||||
|
src/libostree/ostree-core.h \
|
||||||
|
src/libostree/ostree-dummy-enumtypes.h \
|
||||||
|
src/libostree/ostree-mutable-tree.h \
|
||||||
|
src/libostree/ostree-repo.h \
|
||||||
|
src/libostree/ostree-types.h \
|
||||||
|
src/libostree/ostree-repo-file.h \
|
||||||
|
src/libostree/ostree-diff.h \
|
||||||
|
src/libostree/ostree-gpg-verify-result.h \
|
||||||
|
src/libostree/ostree-sepolicy.h \
|
||||||
|
src/libostree/ostree-sysroot.h \
|
||||||
|
src/libostree/ostree-sysroot-upgrader.h \
|
||||||
|
src/libostree/ostree-deployment.h \
|
||||||
|
src/libostree/ostree-bootconfig-parser.h \
|
||||||
|
src/libostree/ostree-repo-deprecated.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
NULL =
|
||||||
|
|
||||||
|
# We require automake 1.6 at least.
|
||||||
|
AUTOMAKE_OPTIONS = 1.6
|
||||||
|
|
||||||
|
# The name of the module, e.g. 'glib'.
|
||||||
|
DOC_MODULE = ostree
|
||||||
|
|
||||||
|
# The top-level SGML file. You can change this if you want to.
|
||||||
|
DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
|
||||||
|
|
||||||
|
# The directory containing the source code. Relative to $(srcdir).
|
||||||
|
# gtk-doc will search all .c & .h files beneath here for inline comments
|
||||||
|
# documenting the functions and macros.
|
||||||
|
# e.g. DOC_SOURCE_DIR=../../../gtk
|
||||||
|
DOC_SOURCE_DIR = $(top_srcdir)/src/libostree
|
||||||
|
|
||||||
|
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||||
|
SCANGOBJ_OPTIONS = --version
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-scan.
|
||||||
|
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||||
|
SCAN_OPTIONS = --rebuild-types
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkdb.
|
||||||
|
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||||
|
MKDB_OPTIONS = --sgml-mode --output-format=xml
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mktmpl
|
||||||
|
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||||
|
MKTMPL_OPTIONS =
|
||||||
|
|
||||||
|
# MKHTML_OPTIONS=--path="$(builddir)/html $(srcdir)/html"
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||||
|
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||||
|
FIXXREF_OPTIONS =
|
||||||
|
|
||||||
|
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||||
|
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||||
|
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||||
|
HFILE_GLOB = $(addprefix $(top_srcdir)/,$(libostree_public_headers))
|
||||||
|
CFILE_GLOB = $(top_srcdir)/src/libostree/*.c
|
||||||
|
|
||||||
|
# Header files to ignore when scanning.
|
||||||
|
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
||||||
|
IGNORE_HFILES = \
|
||||||
|
bupsplit.h \
|
||||||
|
ostree-bootloader.h \
|
||||||
|
ostree-bootloader-grub2.h \
|
||||||
|
ostree-bootloader-syslinux.h \
|
||||||
|
ostree-bootloader-uboot.h \
|
||||||
|
ostree-cmdprivate.h \
|
||||||
|
ostree-core-private.h \
|
||||||
|
ostree-fetcher.h \
|
||||||
|
ostree-gpg-verifier.h \
|
||||||
|
ostree-gpg-verify-result-private.h \
|
||||||
|
ostree-kernel-args.h \
|
||||||
|
ostree-libarchive-input-stream.h \
|
||||||
|
ostree-lzma-compressor.h \
|
||||||
|
ostree-lzma-decompressor.h \
|
||||||
|
ostree-metalink.h \
|
||||||
|
ostree-repo-file-enumerator.h \
|
||||||
|
ostree-repo-private.h \
|
||||||
|
ostree-repo-static-delta-private.h \
|
||||||
|
ostree-sysroot-private.h \
|
||||||
|
ostree-tls-cert-interaction.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
# Images to copy into HTML directory.
|
||||||
|
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||||
|
HTML_IMAGES =
|
||||||
|
|
||||||
|
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||||
|
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||||
|
content_files = \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||||
|
# These files must be listed here *and* in content_files
|
||||||
|
# e.g. expand_content_files=running.sgml
|
||||||
|
expand_content_files = \
|
||||||
|
version.xml \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||||
|
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||||
|
# signals and properties.
|
||||||
|
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
|
GTKDOC_LIBS =
|
||||||
|
@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
||||||
|
@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
||||||
|
@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
|
||||||
|
@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
|
||||||
|
|
||||||
|
# We set GPATH here; this gives us semantics for GNU make
|
||||||
|
# which are more like other make's VPATH, when it comes to
|
||||||
|
# whether a source that is a target of one rule is then
|
||||||
|
# searched for in VPATH/GPATH.
|
||||||
|
#
|
||||||
|
GPATH = $(srcdir)
|
||||||
|
TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
|
||||||
|
SETUP_FILES = \
|
||||||
|
$(content_files) \
|
||||||
|
$(expand_content_files) \
|
||||||
|
$(DOC_MAIN_SGML_FILE) \
|
||||||
|
$(DOC_MODULE)-sections.txt \
|
||||||
|
$(DOC_MODULE)-overrides.txt
|
||||||
|
|
||||||
|
|
||||||
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
|
EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml \
|
||||||
|
ostree-sections.txt $(NULL)
|
||||||
|
DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \
|
||||||
|
html-build.stamp pdf-build.stamp \
|
||||||
|
sgml.stamp html.stamp pdf.stamp
|
||||||
|
|
||||||
|
SCANOBJ_FILES = \
|
||||||
|
$(DOC_MODULE).args \
|
||||||
|
$(DOC_MODULE).hierarchy \
|
||||||
|
$(DOC_MODULE).interfaces \
|
||||||
|
$(DOC_MODULE).prerequisites \
|
||||||
|
$(DOC_MODULE).signals
|
||||||
|
|
||||||
|
REPORT_FILES = \
|
||||||
|
$(DOC_MODULE)-undocumented.txt \
|
||||||
|
$(DOC_MODULE)-undeclared.txt \
|
||||||
|
$(DOC_MODULE)-unused.txt
|
||||||
|
|
||||||
|
CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test
|
||||||
|
@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
|
||||||
|
@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
|
||||||
|
@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
|
||||||
|
@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
|
||||||
|
|
||||||
|
#### setup ####
|
||||||
|
GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V))
|
||||||
|
GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build";
|
||||||
|
|
||||||
|
#### scan ####
|
||||||
|
GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V))
|
||||||
|
GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files";
|
||||||
|
GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V))
|
||||||
|
GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects";
|
||||||
|
|
||||||
|
#### xml ####
|
||||||
|
GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V))
|
||||||
|
GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_XML_0 = @echo " DOC Building XML";
|
||||||
|
|
||||||
|
#### html ####
|
||||||
|
GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V))
|
||||||
|
GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_HTML_0 = @echo " DOC Building HTML";
|
||||||
|
GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V))
|
||||||
|
GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references";
|
||||||
|
|
||||||
|
#### pdf ####
|
||||||
|
GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V))
|
||||||
|
GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_PDF_0 = @echo " DOC Building PDF";
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../Makefile-libostree-defines.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign apidoc/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign apidoc/Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
$(srcdir)/../Makefile-libostree-defines.am $(top_srcdir)/gtk-doc.make $(am__empty):
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
tags TAGS:
|
||||||
|
|
||||||
|
ctags CTAGS:
|
||||||
|
|
||||||
|
cscope cscopelist:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||||
|
dist-hook
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
@ENABLE_GTK_DOC_FALSE@all-local:
|
||||||
|
all-am: Makefile all-local
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-local
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-data-local
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic \
|
||||||
|
maintainer-clean-local
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-local
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||||
|
clean-libtool clean-local cscopelist-am ctags-am dist-hook \
|
||||||
|
distclean distclean-generic distclean-libtool distclean-local \
|
||||||
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
|
install-am install-data install-data-am install-data-local \
|
||||||
|
install-dvi install-dvi-am install-exec install-exec-am \
|
||||||
|
install-html install-html-am install-info install-info-am \
|
||||||
|
install-man install-pdf install-pdf-am install-ps \
|
||||||
|
install-ps-am install-strip installcheck installcheck-am \
|
||||||
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
|
maintainer-clean-local mostlyclean mostlyclean-generic \
|
||||||
|
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
|
||||||
|
uninstall-am uninstall-local
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
|
version.xml:
|
||||||
|
echo -n $(VERSION) > "$@"
|
||||||
|
|
||||||
|
gtkdoc-check.test: Makefile
|
||||||
|
$(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
|
||||||
|
echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \
|
||||||
|
chmod +x $@
|
||||||
|
|
||||||
|
all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
|
||||||
|
.PHONY: all-gtk-doc
|
||||||
|
|
||||||
|
@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc
|
||||||
|
|
||||||
|
docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
|
||||||
|
|
||||||
|
$(REPORT_FILES): sgml-build.stamp
|
||||||
|
|
||||||
|
setup-build.stamp:
|
||||||
|
-$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
||||||
|
files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \
|
||||||
|
if test "x$$files" != "x" ; then \
|
||||||
|
for file in $$files ; do \
|
||||||
|
destdir=`dirname $(abs_builddir)/$$file`; \
|
||||||
|
test -d "$$destdir" || mkdir -p "$$destdir"; \
|
||||||
|
test -f $(abs_srcdir)/$$file && \
|
||||||
|
cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
$(AM_V_at)touch setup-build.stamp
|
||||||
|
|
||||||
|
scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB)
|
||||||
|
$(GTK_DOC_V_SCAN)_source_dir='' ; \
|
||||||
|
for i in $(DOC_SOURCE_DIR) ; do \
|
||||||
|
_source_dir="$${_source_dir} --source-dir=$$i" ; \
|
||||||
|
done ; \
|
||||||
|
gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
|
||||||
|
$(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
|
||||||
|
scanobj_options=""; \
|
||||||
|
gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
scanobj_options="--verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
|
||||||
|
gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
|
||||||
|
else \
|
||||||
|
for i in $(SCANOBJ_FILES) ; do \
|
||||||
|
test -f $$i || touch $$i ; \
|
||||||
|
done \
|
||||||
|
fi
|
||||||
|
$(AM_V_at)touch scan-build.stamp
|
||||||
|
|
||||||
|
$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
|
||||||
|
@true
|
||||||
|
|
||||||
|
sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent
|
||||||
|
$(GTK_DOC_V_XML)_source_dir='' ; \
|
||||||
|
for i in $(DOC_SOURCE_DIR) ; do \
|
||||||
|
_source_dir="$${_source_dir} --source-dir=$$i" ; \
|
||||||
|
done ; \
|
||||||
|
gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
|
||||||
|
$(AM_V_at)touch sgml-build.stamp
|
||||||
|
|
||||||
|
sgml.stamp: sgml-build.stamp
|
||||||
|
@true
|
||||||
|
|
||||||
|
xml/gtkdocentities.ent: Makefile
|
||||||
|
$(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \
|
||||||
|
echo "<!ENTITY package \"$(PACKAGE)\">"; \
|
||||||
|
echo "<!ENTITY package_bugreport \"$(PACKAGE_BUGREPORT)\">"; \
|
||||||
|
echo "<!ENTITY package_name \"$(PACKAGE_NAME)\">"; \
|
||||||
|
echo "<!ENTITY package_string \"$(PACKAGE_STRING)\">"; \
|
||||||
|
echo "<!ENTITY package_tarname \"$(PACKAGE_TARNAME)\">"; \
|
||||||
|
echo "<!ENTITY package_url \"$(PACKAGE_URL)\">"; \
|
||||||
|
echo "<!ENTITY package_version \"$(PACKAGE_VERSION)\">"; \
|
||||||
|
) > $@
|
||||||
|
|
||||||
|
html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files)
|
||||||
|
$(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
|
||||||
|
mkhtml_options=""; \
|
||||||
|
gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
mkhtml_options="$$mkhtml_options --verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
|
||||||
|
fi; \
|
||||||
|
cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
|
||||||
|
-@test "x$(HTML_IMAGES)" = "x" || \
|
||||||
|
for file in $(HTML_IMAGES) ; do \
|
||||||
|
if test -f $(abs_srcdir)/$$file ; then \
|
||||||
|
cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(abs_builddir)/$$file ; then \
|
||||||
|
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
|
||||||
|
fi; \
|
||||||
|
done;
|
||||||
|
$(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
|
||||||
|
$(AM_V_at)touch html-build.stamp
|
||||||
|
|
||||||
|
pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files)
|
||||||
|
$(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
|
||||||
|
mkpdf_options=""; \
|
||||||
|
gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
mkpdf_options="$$mkpdf_options --verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
if test "x$(HTML_IMAGES)" != "x"; then \
|
||||||
|
for img in $(HTML_IMAGES); do \
|
||||||
|
part=`dirname $$img`; \
|
||||||
|
echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
|
||||||
|
if test $$? != 0; then \
|
||||||
|
mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
|
||||||
|
$(AM_V_at)touch pdf-build.stamp
|
||||||
|
|
||||||
|
##############
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
@rm -f *~ *.bak
|
||||||
|
@rm -rf .libs
|
||||||
|
@if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \
|
||||||
|
rm -f $(DOC_MODULE).types; \
|
||||||
|
fi
|
||||||
|
@if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \
|
||||||
|
rm -f $(DOC_MODULE)-sections.txt; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
distclean-local:
|
||||||
|
@rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
|
||||||
|
$(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
|
||||||
|
@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
||||||
|
rm -f $(SETUP_FILES) $(DOC_MODULE).types; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
maintainer-clean-local:
|
||||||
|
@rm -rf xml html
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
@installfiles=`echo $(builddir)/html/*`; \
|
||||||
|
if test "$$installfiles" = '$(builddir)/html/*'; \
|
||||||
|
then echo 1>&2 'Nothing to install' ; \
|
||||||
|
else \
|
||||||
|
if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
|
||||||
|
else \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)"; \
|
||||||
|
fi; \
|
||||||
|
$(mkinstalldirs) $${installdir} ; \
|
||||||
|
for i in $$installfiles; do \
|
||||||
|
echo ' $(INSTALL_DATA) '$$i ; \
|
||||||
|
$(INSTALL_DATA) $$i $${installdir}; \
|
||||||
|
done; \
|
||||||
|
if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
|
||||||
|
$${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
|
||||||
|
fi; \
|
||||||
|
$(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
@if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
|
||||||
|
else \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)"; \
|
||||||
|
fi; \
|
||||||
|
rm -rf $${installdir}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Require gtk-doc when making dist
|
||||||
|
#
|
||||||
|
@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs
|
||||||
|
@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc:
|
||||||
|
@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***"
|
||||||
|
@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***"
|
||||||
|
@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***"
|
||||||
|
@HAVE_GTK_DOC_FALSE@ @false
|
||||||
|
|
||||||
|
dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local
|
||||||
|
@mkdir $(distdir)/html
|
||||||
|
@cp ./html/* $(distdir)/html
|
||||||
|
@-cp ./$(DOC_MODULE).pdf $(distdir)/
|
||||||
|
@-cp ./$(DOC_MODULE).types $(distdir)/
|
||||||
|
@-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
|
||||||
|
@cd $(distdir) && rm -f $(DISTCLEANFILES)
|
||||||
|
@$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
|
||||||
|
|
||||||
|
.PHONY : dist-hook-local docs
|
||||||
|
|
||||||
|
-include $(top_srcdir)/git.mk
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
After Width: | Height: | Size: 256 B |
|
|
@ -0,0 +1,73 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>OSTree API references: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="next" href="reference.html" title="API Reference">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<div class="book">
|
||||||
|
<div class="titlepage">
|
||||||
|
<div>
|
||||||
|
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">OSTree API references</p></th></tr></table></div>
|
||||||
|
<div><p class="releaseinfo">for OSTree 2016.8</p></div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
<div class="toc"><dl class="toc">
|
||||||
|
<dt><span class="chapter"><a href="reference.html">API Reference</a></span></dt>
|
||||||
|
<dd><dl>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-Core-repository-independent-functions.html">Core repository-independent functions</a></span><span class="refpurpose"> — Create, validate, and convert core data types</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-Content-addressed-object-store.html">Content-addressed object store</a></span><span class="refpurpose"> — A git-like storage system for operating system binaries</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-In-memory-modifiable-filesystem-tree.html">In-memory modifiable filesystem tree</a></span><span class="refpurpose"> — Modifiable filesystem tree</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-Root-partition-mount-point.html">Root partition mount point</a></span><span class="refpurpose"> — Manage physical root filesystem</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-Progress-notification-system-for-asynchronous-operations.html">Progress notification system for asynchronous operations</a></span><span class="refpurpose"> — Values representing progress</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-SELinux-policy-management.html">SELinux policy management</a></span><span class="refpurpose"> — Read SELinux policy and manage filesystem labels</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-Simple-upgrade-class.html">Simple upgrade class</a></span><span class="refpurpose"> — Upgrade OSTree systems</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-GPG-signature-verification-results.html">GPG signature verification results</a></span><span class="refpurpose"> — Inspect detached GPG signatures</span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-bootconfig-parser.html">ostree-bootconfig-parser</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-chain-input-stream.html">ostree-chain-input-stream</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-checksum-input-stream.html">ostree-checksum-input-stream</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-deployment.html">ostree-deployment</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-diff.html">ostree-diff</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt>
|
||||||
|
<span class="refentrytitle"><a href="ostree-ostree-repo-file.html">ostree-repo-file</a></span><span class="refpurpose"></span>
|
||||||
|
</dt>
|
||||||
|
<dt><span class="index"><a href="reference.html#api-index-full">API Index</a></span></dt>
|
||||||
|
</dl></dd>
|
||||||
|
</dl></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 395 B |
|
After Width: | Height: | Size: 262 B |
|
|
@ -0,0 +1,658 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>GPG signature verification results: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-Simple-upgrade-class.html" title="Simple upgrade class">
|
||||||
|
<link rel="next" href="ostree-ostree-bootconfig-parser.html" title="ostree-bootconfig-parser">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-GPG-signature-verification-results.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-Simple-upgrade-class.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-bootconfig-parser.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-GPG-signature-verification-results"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-GPG-signature-verification-results.top_of_page"></a>GPG signature verification results</span></h2>
|
||||||
|
<p>GPG signature verification results — Inspect detached GPG signatures</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-GPG-signature-verification-results.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">guint</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all" title="ostree_gpg_verify_result_count_all ()">ostree_gpg_verify_result_count_all</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">guint</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-valid" title="ostree_gpg_verify_result_count_valid ()">ostree_gpg_verify_result_count_valid</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-lookup" title="ostree_gpg_verify_result_lookup ()">ostree_gpg_verify_result_lookup</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GVariant</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get" title="ostree_gpg_verify_result_get ()">ostree_gpg_verify_result_get</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GVariant</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get-all" title="ostree_gpg_verify_result_get_all ()">ostree_gpg_verify_result_get_all</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe" title="ostree_gpg_verify_result_describe ()">ostree_gpg_verify_result_describe</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe-variant" title="ostree_gpg_verify_result_describe_variant ()">ostree_gpg_verify_result_describe_variant</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-require-valid-signature" title="ostree_gpg_verify_result_require_valid_signature ()">ostree_gpg_verify_result_require_valid_signature</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-GPG-signature-verification-results.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult">OstreeGpgVerifyResult</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr">OstreeGpgSignatureAttr</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureFormatFlags" title="enum OstreeGpgSignatureFormatFlags">OstreeGpgSignatureFormatFlags</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-GPG-signature-verification-results.description"></a><h2>Description</h2>
|
||||||
|
<p><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> contains verification details for GPG signatures
|
||||||
|
read from a detached <a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepo" title="OstreeRepo"><span class="type">OstreeRepo</span></a> metadata object.</p>
|
||||||
|
<p>Use <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all" title="ostree_gpg_verify_result_count_all ()"><code class="function">ostree_gpg_verify_result_count_all()</code></a> and
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-valid" title="ostree_gpg_verify_result_count_valid ()"><code class="function">ostree_gpg_verify_result_count_valid()</code></a> to quickly check overall signature
|
||||||
|
validity.</p>
|
||||||
|
<p>Use <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-lookup" title="ostree_gpg_verify_result_lookup ()"><code class="function">ostree_gpg_verify_result_lookup()</code></a> to find a signature by the key ID
|
||||||
|
or fingerprint of the signing key.</p>
|
||||||
|
<p>For more in-depth inspection, such as presenting signature details to the
|
||||||
|
user, pass an array of attribute values to <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get" title="ostree_gpg_verify_result_get ()"><code class="function">ostree_gpg_verify_result_get()</code></a>
|
||||||
|
or get all signature details with <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get-all" title="ostree_gpg_verify_result_get_all ()"><code class="function">ostree_gpg_verify_result_get_all()</code></a>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-GPG-signature-verification-results.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-count-all"></a><h3>ostree_gpg_verify_result_count_all ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">guint</span>
|
||||||
|
ostree_gpg_verify_result_count_all (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>);</pre>
|
||||||
|
<p>Counts all the signatures in <em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-count-all.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-count-all.returns"></a><h4>Returns</h4>
|
||||||
|
<p> signature count</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-count-valid"></a><h3>ostree_gpg_verify_result_count_valid ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">guint</span>
|
||||||
|
ostree_gpg_verify_result_count_valid (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>);</pre>
|
||||||
|
<p>Counts only the valid signatures in <em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-count-valid.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-count-valid.returns"></a><h4>Returns</h4>
|
||||||
|
<p> valid signature count</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-lookup"></a><h3>ostree_gpg_verify_result_lookup ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_gpg_verify_result_lookup (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">gchar</span> *key_id</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> *out_signature_index</code></em>);</pre>
|
||||||
|
<p>Searches <em class="parameter"><code>result</code></em>
|
||||||
|
for a signature signed by <em class="parameter"><code>key_id</code></em>
|
||||||
|
. If a match is found,
|
||||||
|
the function returns <code class="literal">TRUE</code> and sets <em class="parameter"><code>out_signature_index</code></em>
|
||||||
|
so that further
|
||||||
|
signature details can be obtained through <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get" title="ostree_gpg_verify_result_get ()"><code class="function">ostree_gpg_verify_result_get()</code></a>.
|
||||||
|
If no match is found, the function returns <code class="literal">FALSE</code> and leaves
|
||||||
|
<em class="parameter"><code>out_signature_index</code></em>
|
||||||
|
unchanged.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-lookup.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>key_id</p></td>
|
||||||
|
<td class="parameter_description"><p>a GPG key ID or fingerprint</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_signature_index</p></td>
|
||||||
|
<td class="parameter_description"><p> return location for the index of the signature
|
||||||
|
signed by <em class="parameter"><code>key_id</code></em>
|
||||||
|
, or <code class="literal">NULL</code>. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-lookup.returns"></a><h4>Returns</h4>
|
||||||
|
<p> <code class="literal">TRUE</code> on success, <code class="literal">FALSE</code> on failure</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-get"></a><h3>ostree_gpg_verify_result_get ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GVariant</span> *
|
||||||
|
ostree_gpg_verify_result_get (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> signature_index</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> *attrs</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> n_attrs</code></em>);</pre>
|
||||||
|
<p>Builds a <span class="type">GVariant</span> tuple of requested attributes for the GPG signature at
|
||||||
|
<em class="parameter"><code>signature_index</code></em>
|
||||||
|
in <em class="parameter"><code>result</code></em>
|
||||||
|
. See the <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> description
|
||||||
|
for the <span class="type">GVariantType</span> of each available attribute.</p>
|
||||||
|
<p>It is a programmer error to request an invalid <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> or
|
||||||
|
an invalid <em class="parameter"><code>signature_index</code></em>
|
||||||
|
. Use <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all" title="ostree_gpg_verify_result_count_all ()"><code class="function">ostree_gpg_verify_result_count_all()</code></a> to
|
||||||
|
find the number of signatures in <em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-get.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>signature_index</p></td>
|
||||||
|
<td class="parameter_description"><p>which signature to get attributes from</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>attrs</p></td>
|
||||||
|
<td class="parameter_description"><p> Array of requested attributes. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/array"><span class="acronym">array</span></a> length=n_attrs]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>n_attrs</p></td>
|
||||||
|
<td class="parameter_description"><p>Length of the <em class="parameter"><code>attrs</code></em>
|
||||||
|
array</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-get.returns"></a><h4>Returns</h4>
|
||||||
|
<p> a new, floating, <span class="type">GVariant</span> tuple</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-get-all"></a><h3>ostree_gpg_verify_result_get_all ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GVariant</span> *
|
||||||
|
ostree_gpg_verify_result_get_all (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> signature_index</code></em>);</pre>
|
||||||
|
<p>Builds a <span class="type">GVariant</span> tuple of all available attributes for the GPG signature
|
||||||
|
at <em class="parameter"><code>signature_index</code></em>
|
||||||
|
in <em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<p>The child values in the returned <span class="type">GVariant</span> tuple are ordered to match the
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> enumeration, which means the enum values can be
|
||||||
|
used as index values in functions like <code class="function">g_variant_get_child()</code>. See the
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> description for the <span class="type">GVariantType</span> of each
|
||||||
|
available attribute.</p>
|
||||||
|
<div class="note"><p>
|
||||||
|
The <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr" title="enum OstreeGpgSignatureAttr"><span class="type">OstreeGpgSignatureAttr</span></a> enumeration may be extended in the future
|
||||||
|
with new attributes, which would affect the <span class="type">GVariant</span> tuple returned by
|
||||||
|
this function. While the position and type of current child values in
|
||||||
|
the <span class="type">GVariant</span> tuple will not change, to avoid backward-compatibility
|
||||||
|
issues <span class="emphasis"><em>please do not depend on the tuple's overall size or
|
||||||
|
type signature</em></span>.
|
||||||
|
</p></div>
|
||||||
|
<p>It is a programmer error to request an invalid <em class="parameter"><code>signature_index</code></em>
|
||||||
|
. Use
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all" title="ostree_gpg_verify_result_count_all ()"><code class="function">ostree_gpg_verify_result_count_all()</code></a> to find the number of signatures in
|
||||||
|
<em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-get-all.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>signature_index</p></td>
|
||||||
|
<td class="parameter_description"><p>which signature to get attributes from</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-get-all.returns"></a><h4>Returns</h4>
|
||||||
|
<p> a new, floating, <span class="type">GVariant</span> tuple</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-describe"></a><h3>ostree_gpg_verify_result_describe ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_gpg_verify_result_describe (<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> signature_index</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GString</span> *output_buffer</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">gchar</span> *line_prefix</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureFormatFlags" title="enum OstreeGpgSignatureFormatFlags"><span class="type">OstreeGpgSignatureFormatFlags</span></a> flags</code></em>);</pre>
|
||||||
|
<p>Appends a brief, human-readable description of the GPG signature at
|
||||||
|
<em class="parameter"><code>signature_index</code></em>
|
||||||
|
in <em class="parameter"><code>result</code></em>
|
||||||
|
to the <em class="parameter"><code>output_buffer</code></em>
|
||||||
|
. The description
|
||||||
|
spans multiple lines. A <em class="parameter"><code>line_prefix</code></em>
|
||||||
|
string, if given, will precede
|
||||||
|
each line of the description.</p>
|
||||||
|
<p>The <em class="parameter"><code>flags</code></em>
|
||||||
|
argument is reserved for future variations to the description
|
||||||
|
format. Currently must be 0.</p>
|
||||||
|
<p>It is a programmer error to request an invalid <em class="parameter"><code>signature_index</code></em>
|
||||||
|
. Use
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all" title="ostree_gpg_verify_result_count_all ()"><code class="function">ostree_gpg_verify_result_count_all()</code></a> to find the number of signatures in
|
||||||
|
<em class="parameter"><code>result</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-describe.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p>an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>signature_index</p></td>
|
||||||
|
<td class="parameter_description"><p>which signature to describe</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>output_buffer</p></td>
|
||||||
|
<td class="parameter_description"><p>a <span class="type">GString</span> to hold the description</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>line_prefix</p></td>
|
||||||
|
<td class="parameter_description"><p> optional line prefix string. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>flags to adjust the description format</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-describe-variant"></a><h3>ostree_gpg_verify_result_describe_variant ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_gpg_verify_result_describe_variant
|
||||||
|
(<em class="parameter"><code><span class="type">GVariant</span> *variant</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GString</span> *output_buffer</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">gchar</span> *line_prefix</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureFormatFlags" title="enum OstreeGpgSignatureFormatFlags"><span class="type">OstreeGpgSignatureFormatFlags</span></a> flags</code></em>);</pre>
|
||||||
|
<p>Similar to <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe" title="ostree_gpg_verify_result_describe ()"><code class="function">ostree_gpg_verify_result_describe()</code></a> but takes a <span class="type">GVariant</span> of
|
||||||
|
all attributes for a GPG signature instead of an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a>
|
||||||
|
and signature index.</p>
|
||||||
|
<p>The <em class="parameter"><code>variant</code></em>
|
||||||
|
<span class="emphasis"><em>MUST</em></span> have been created by
|
||||||
|
<a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get-all" title="ostree_gpg_verify_result_get_all ()"><code class="function">ostree_gpg_verify_result_get_all()</code></a>.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-describe-variant.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>variant</p></td>
|
||||||
|
<td class="parameter_description"><p>a <span class="type">GVariant</span> from <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get-all" title="ostree_gpg_verify_result_get_all ()"><code class="function">ostree_gpg_verify_result_get_all()</code></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>output_buffer</p></td>
|
||||||
|
<td class="parameter_description"><p>a <span class="type">GString</span> to hold the description</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>line_prefix</p></td>
|
||||||
|
<td class="parameter_description"><p> optional line prefix string. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>flags to adjust the description format</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-gpg-verify-result-require-valid-signature"></a><h3>ostree_gpg_verify_result_require_valid_signature ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_gpg_verify_result_require_valid_signature
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a> *result</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Checks if the result contains at least one signature from the
|
||||||
|
trusted keyring. You can call this function immediately after
|
||||||
|
<a class="link" href="ostree-Content-addressed-object-store.html#ostree-repo-verify-summary" title="ostree_repo_verify_summary ()"><code class="function">ostree_repo_verify_summary()</code></a> or <a class="link" href="ostree-Content-addressed-object-store.html#ostree-repo-verify-commit-ext" title="ostree_repo_verify_commit_ext ()"><code class="function">ostree_repo_verify_commit_ext()</code></a> -
|
||||||
|
it will handle the <code class="literal">NULL</code> <em class="parameter"><code>result</code></em>
|
||||||
|
and filled <em class="parameter"><code>error</code></em>
|
||||||
|
too.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-require-valid-signature.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>result</p></td>
|
||||||
|
<td class="parameter_description"><p> an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a>. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/nullable"><span class="acronym">nullable</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>A <span class="type">GError</span></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-gpg-verify-result-require-valid-signature.returns"></a><h4>Returns</h4>
|
||||||
|
<p> <code class="literal">TRUE</code> if <em class="parameter"><code>result</code></em>
|
||||||
|
was not <code class="literal">NULL</code> and had at least one
|
||||||
|
signature from trusted keyring, otherwise <code class="literal">FALSE</code></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-GPG-signature-verification-results.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeGpgVerifyResult"></a><h3>OstreeGpgVerifyResult</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeGpgVerifyResult OstreeGpgVerifyResult;
|
||||||
|
</pre>
|
||||||
|
<p>Private instance structure.</p>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeGpgSignatureAttr"></a><h3>enum OstreeGpgSignatureAttr</h3>
|
||||||
|
<p>Signature attributes available from an <a class="link" href="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult" title="OstreeGpgVerifyResult"><span class="type">OstreeGpgVerifyResult</span></a>.
|
||||||
|
The attribute's <span class="type">GVariantType</span> is shown in brackets.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeGpgSignatureAttr.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-VALID:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_VALID</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_BOOLEAN</span>] Is the signature valid?</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-SIG-EXPIRED:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_SIG_EXPIRED</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_BOOLEAN</span>] Has the signature expired?</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-KEY-EXPIRED:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_KEY_EXPIRED</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_BOOLEAN</span>] Has the signing key expired?</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-KEY-REVOKED:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_KEY_REVOKED</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_BOOLEAN</span>] Has the signing key been revoked?</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-KEY-MISSING:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_KEY_MISSING</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_BOOLEAN</span>] Is the signing key missing?</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-FINGERPRINT:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_STRING</span>] Fingerprint of the signing key</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-TIMESTAMP:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_TIMESTAMP</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_INT64</span>] Signature creation Unix timestamp</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-EXP-TIMESTAMP:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_EXP_TIMESTAMP</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_INT64</span>] Signature expiration Unix timestamp (0 if no
|
||||||
|
expiration)</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-PUBKEY-ALGO-NAME:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_PUBKEY_ALGO_NAME</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_STRING</span>] Name of the public key algorithm used to create
|
||||||
|
the signature</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-HASH-ALGO-NAME:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_HASH_ALGO_NAME</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_STRING</span>] Name of the hash algorithm used to create the
|
||||||
|
signature</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-USER-NAME:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_USER_NAME</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_STRING</span>] The name of the signing key's primary user</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-ATTR-USER-EMAIL:CAPS"></a>OSTREE_GPG_SIGNATURE_ATTR_USER_EMAIL</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> [<span class="type">G_VARIANT_TYPE_STRING</span>] The email address of the signing key's primary
|
||||||
|
user</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeGpgSignatureFormatFlags"></a><h3>enum OstreeGpgSignatureFormatFlags</h3>
|
||||||
|
<p>Formatting flags for <a class="link" href="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe" title="ostree_gpg_verify_result_describe ()"><code class="function">ostree_gpg_verify_result_describe()</code></a>. Currently
|
||||||
|
there's only one possible output format, but this enumeration allows
|
||||||
|
for future variations.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeGpgSignatureFormatFlags.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-GPG-SIGNATURE-FORMAT-DEFAULT:CAPS"></a>OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p> Use the default output format</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,370 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>In-memory modifiable filesystem tree: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-Content-addressed-object-store.html" title="Content-addressed object store">
|
||||||
|
<link rel="next" href="ostree-Root-partition-mount-point.html" title="Root partition mount point">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-In-memory-modifiable-filesystem-tree.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-Content-addressed-object-store.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-Root-partition-mount-point.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-In-memory-modifiable-filesystem-tree.top_of_page"></a>In-memory modifiable filesystem tree</span></h2>
|
||||||
|
<p>In-memory modifiable filesystem tree — Modifiable filesystem tree</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="returnvalue">OstreeMutableTree</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-new" title="ostree_mutable_tree_new ()">ostree_mutable_tree_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-set-metadata-checksum" title="ostree_mutable_tree_set_metadata_checksum ()">ostree_mutable_tree_set_metadata_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-metadata-checksum" title="ostree_mutable_tree_get_metadata_checksum ()">ostree_mutable_tree_get_metadata_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-set-contents-checksum" title="ostree_mutable_tree_set_contents_checksum ()">ostree_mutable_tree_set_contents_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-contents-checksum" title="ostree_mutable_tree_get_contents_checksum ()">ostree_mutable_tree_get_contents_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-replace-file" title="ostree_mutable_tree_replace_file ()">ostree_mutable_tree_replace_file</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-ensure-dir" title="ostree_mutable_tree_ensure_dir ()">ostree_mutable_tree_ensure_dir</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-lookup" title="ostree_mutable_tree_lookup ()">ostree_mutable_tree_lookup</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-ensure-parent-dirs" title="ostree_mutable_tree_ensure_parent_dirs ()">ostree_mutable_tree_ensure_parent_dirs</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-walk" title="ostree_mutable_tree_walk ()">ostree_mutable_tree_walk</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GHashTable</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-subdirs" title="ostree_mutable_tree_get_subdirs ()">ostree_mutable_tree_get_subdirs</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GHashTable</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-files" title="ostree_mutable_tree_get_files ()">ostree_mutable_tree_get_files</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree">OstreeMutableTree</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree.description"></a><h2>Description</h2>
|
||||||
|
<p>In order to commit content into an <a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepo" title="OstreeRepo"><span class="type">OstreeRepo</span></a>, it must first be
|
||||||
|
imported into an <a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a>. There are several high level
|
||||||
|
APIs to create an initiable <a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> from a physical
|
||||||
|
filesystem directory, but they may also be computed
|
||||||
|
programmatically.</p>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-new"></a><h3>ostree_mutable_tree_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="returnvalue">OstreeMutableTree</span></a> *
|
||||||
|
ostree_mutable_tree_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-mutable-tree-new.returns"></a><h4>Returns</h4>
|
||||||
|
<p> A new tree. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-set-metadata-checksum"></a><h3>ostree_mutable_tree_set_metadata_checksum ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_mutable_tree_set_metadata_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-get-metadata-checksum"></a><h3>ostree_mutable_tree_get_metadata_checksum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_mutable_tree_get_metadata_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-set-contents-checksum"></a><h3>ostree_mutable_tree_set_contents_checksum ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_mutable_tree_set_contents_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-get-contents-checksum"></a><h3>ostree_mutable_tree_get_contents_checksum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_mutable_tree_get_contents_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-replace-file"></a><h3>ostree_mutable_tree_replace_file ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_mutable_tree_replace_file (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-ensure-dir"></a><h3>ostree_mutable_tree_ensure_dir ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_mutable_tree_ensure_dir (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> **out_subdir</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-lookup"></a><h3>ostree_mutable_tree_lookup ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_mutable_tree_lookup (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">char</span> **out_file_checksum</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> **out_subdir</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-ensure-parent-dirs"></a><h3>ostree_mutable_tree_ensure_parent_dirs ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_mutable_tree_ensure_parent_dirs
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *split_path</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *metadata_checksum</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> **out_parent</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Create all parent trees necessary for the given <em class="parameter"><code>split_path</code></em>
|
||||||
|
to
|
||||||
|
exist.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-mutable-tree-ensure-parent-dirs.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Tree</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>split_path</p></td>
|
||||||
|
<td class="parameter_description"><p> File path components. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>metadata_checksum</p></td>
|
||||||
|
<td class="parameter_description"><p>SHA256 checksum for metadata</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_parent</p></td>
|
||||||
|
<td class="parameter_description"><p> The parent tree. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>a <span class="type">GError</span></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-walk"></a><h3>ostree_mutable_tree_walk ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_mutable_tree_walk (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *split_path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> start</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> **out_subdir</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Traverse <em class="parameter"><code>start</code></em>
|
||||||
|
number of elements starting from <em class="parameter"><code>split_path</code></em>
|
||||||
|
; the
|
||||||
|
child will be returned in <em class="parameter"><code>out_subdir</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-mutable-tree-walk.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Tree</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>split_path</p></td>
|
||||||
|
<td class="parameter_description"><p> Split pathname. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>start</p></td>
|
||||||
|
<td class="parameter_description"><p>Descend from this number of elements in <em class="parameter"><code>split_path</code></em>
|
||||||
|
</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_subdir</p></td>
|
||||||
|
<td class="parameter_description"><p> Target parent. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-get-subdirs"></a><h3>ostree_mutable_tree_get_subdirs ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GHashTable</span> *
|
||||||
|
ostree_mutable_tree_get_subdirs (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-mutable-tree-get-subdirs.returns"></a><h4>Returns</h4>
|
||||||
|
<p> All children directories. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 OstreeMutableTree]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-mutable-tree-get-files"></a><h3>ostree_mutable_tree_get_files ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GHashTable</span> *
|
||||||
|
ostree_mutable_tree_get_files (<em class="parameter"><code><a class="link" href="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree" title="OstreeMutableTree"><span class="type">OstreeMutableTree</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-mutable-tree-get-files.returns"></a><h4>Returns</h4>
|
||||||
|
<p> All children files (the value is a checksum). </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-In-memory-modifiable-filesystem-tree.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeMutableTree"></a><h3>OstreeMutableTree</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeMutableTree OstreeMutableTree;
|
||||||
|
</pre>
|
||||||
|
<p>Private instance structure.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,241 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>Progress notification system for asynchronous operations: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-Root-partition-mount-point.html" title="Root partition mount point">
|
||||||
|
<link rel="next" href="ostree-SELinux-policy-management.html" title="SELinux policy management">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-Progress-notification-system-for-asynchronous-operations.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-Root-partition-mount-point.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-SELinux-policy-management.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-Progress-notification-system-for-asynchronous-operations.top_of_page"></a>Progress notification system for asynchronous operations</span></h2>
|
||||||
|
<p>Progress notification system for asynchronous operations — Values representing progress</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="returnvalue">OstreeAsyncProgress</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-new" title="ostree_async_progress_new ()">ostree_async_progress_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="returnvalue">OstreeAsyncProgress</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-new-and-connect" title="ostree_async_progress_new_and_connect ()">ostree_async_progress_new_and_connect</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-status" title="ostree_async_progress_get_status ()">ostree_async_progress_get_status</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">guint</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-uint" title="ostree_async_progress_get_uint ()">ostree_async_progress_get_uint</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">guint64</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-uint64" title="ostree_async_progress_get_uint64 ()">ostree_async_progress_get_uint64</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-status" title="ostree_async_progress_set_status ()">ostree_async_progress_set_status</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-uint" title="ostree_async_progress_set_uint ()">ostree_async_progress_set_uint</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-uint64" title="ostree_async_progress_set_uint64 ()">ostree_async_progress_set_uint64</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-finish" title="ostree_async_progress_finish ()">ostree_async_progress_finish</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress">OstreeAsyncProgress</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations.description"></a><h2>Description</h2>
|
||||||
|
<p>For many asynchronous operations, it's desirable for callers to be
|
||||||
|
able to watch their status as they progress. For example, an user
|
||||||
|
interface calling an asynchronous download operation will want to
|
||||||
|
be able to see the total number of bytes downloaded.</p>
|
||||||
|
<p>This class provides a mechanism for callees of asynchronous
|
||||||
|
operations to communicate back with callers. It transparently
|
||||||
|
handles thread safety, ensuring that the progress change
|
||||||
|
notification occurs in the thread-default context of the calling
|
||||||
|
operation.</p>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-new"></a><h3>ostree_async_progress_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="returnvalue">OstreeAsyncProgress</span></a> *
|
||||||
|
ostree_async_progress_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-async-progress-new.returns"></a><h4>Returns</h4>
|
||||||
|
<p> A new progress object. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-new-and-connect"></a><h3>ostree_async_progress_new_and_connect ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="returnvalue">OstreeAsyncProgress</span></a> *
|
||||||
|
ostree_async_progress_new_and_connect (<em class="parameter"><code><span class="type">void</span> (*changed) (OstreeAsyncProgress *self, gpointer user_data)</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-get-status"></a><h3>ostree_async_progress_get_status ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">char</span> *
|
||||||
|
ostree_async_progress_get_status (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-get-uint"></a><h3>ostree_async_progress_get_uint ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">guint</span>
|
||||||
|
ostree_async_progress_get_uint (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-get-uint64"></a><h3>ostree_async_progress_get_uint64 ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">guint64</span>
|
||||||
|
ostree_async_progress_get_uint64 (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-set-status"></a><h3>ostree_async_progress_set_status ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_async_progress_set_status (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *status</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-set-uint"></a><h3>ostree_async_progress_set_uint ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_async_progress_set_uint (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint</span> value</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-set-uint64"></a><h3>ostree_async_progress_set_uint64 ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_async_progress_set_uint64 (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint64</span> value</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-async-progress-finish"></a><h3>ostree_async_progress_finish ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_async_progress_finish (<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *self</code></em>);</pre>
|
||||||
|
<p>Process any pending signals, ensuring the main context is cleared
|
||||||
|
of sources used by this object. Also ensures that no further
|
||||||
|
events will be queued.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-async-progress-finish.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Self</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Progress-notification-system-for-asynchronous-operations.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeAsyncProgress"></a><h3>OstreeAsyncProgress</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeAsyncProgress OstreeAsyncProgress;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,413 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>SELinux policy management: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-Progress-notification-system-for-asynchronous-operations.html" title="Progress notification system for asynchronous operations">
|
||||||
|
<link rel="next" href="ostree-Simple-upgrade-class.html" title="Simple upgrade class">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-SELinux-policy-management.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-Progress-notification-system-for-asynchronous-operations.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-Simple-upgrade-class.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-SELinux-policy-management"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-SELinux-policy-management.top_of_page"></a>SELinux policy management</span></h2>
|
||||||
|
<p>SELinux policy management — Read SELinux policy and manage filesystem labels</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-SELinux-policy-management.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="returnvalue">OstreeSePolicy</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-new" title="ostree_sepolicy_new ()">ostree_sepolicy_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GFile</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-get-path" title="ostree_sepolicy_get_path ()">ostree_sepolicy_get_path</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-get-name" title="ostree_sepolicy_get_name ()">ostree_sepolicy_get_name</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-get-label" title="ostree_sepolicy_get_label ()">ostree_sepolicy_get_label</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-get-csum" title="ostree_sepolicy_get_csum ()">ostree_sepolicy_get_csum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-restorecon" title="ostree_sepolicy_restorecon ()">ostree_sepolicy_restorecon</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-setfscreatecon" title="ostree_sepolicy_setfscreatecon ()">ostree_sepolicy_setfscreatecon</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-fscreatecon-cleanup" title="ostree_sepolicy_fscreatecon_cleanup ()">ostree_sepolicy_fscreatecon_cleanup</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-SELinux-policy-management.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy">OstreeSePolicy</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicyRestoreconFlags" title="enum OstreeSePolicyRestoreconFlags">OstreeSePolicyRestoreconFlags</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-SELinux-policy-management.description"></a><h2>Description</h2>
|
||||||
|
<p>A <a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> object can load the SELinux policy from a given
|
||||||
|
root and perform labeling.</p>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-SELinux-policy-management.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-new"></a><h3>ostree_sepolicy_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="returnvalue">OstreeSePolicy</span></a> *
|
||||||
|
ostree_sepolicy_new (<em class="parameter"><code><span class="type">GFile</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-new.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>path</p></td>
|
||||||
|
<td class="parameter_description"><p>Path to a root directory</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-new.returns"></a><h4>Returns</h4>
|
||||||
|
<p> An accessor object for SELinux policy in root located at <em class="parameter"><code>path</code></em>
|
||||||
|
. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-get-path"></a><h3>ostree_sepolicy_get_path ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GFile</span> *
|
||||||
|
ostree_sepolicy_get_path (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-get-path.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Path to rootfs. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-get-name"></a><h3>ostree_sepolicy_get_name ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_sepolicy_get_name (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-get-name.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Type of current policy. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-get-label"></a><h3>ostree_sepolicy_get_label ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sepolicy_get_label (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *relpath</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint32</span> unix_mode</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">char</span> **out_label</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Store in <em class="parameter"><code>out_label</code></em>
|
||||||
|
the security context for the given <em class="parameter"><code>relpath</code></em>
|
||||||
|
and
|
||||||
|
mode <em class="parameter"><code>unix_mode</code></em>
|
||||||
|
. If the policy does not specify a label, <code class="literal">NULL</code>
|
||||||
|
will be returned.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-get-label.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Self</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>relpath</p></td>
|
||||||
|
<td class="parameter_description"><p>Path</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>unix_mode</p></td>
|
||||||
|
<td class="parameter_description"><p>Unix mode</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_label</p></td>
|
||||||
|
<td class="parameter_description"><p> Return location for security context. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>][<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-get-csum"></a><h3>ostree_sepolicy_get_csum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_sepolicy_get_csum (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-get-csum.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Checksum of current policy. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-restorecon"></a><h3>ostree_sepolicy_restorecon ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sepolicy_restorecon (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFileInfo</span> *info</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *target</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicyRestoreconFlags" title="enum OstreeSePolicyRestoreconFlags"><span class="type">OstreeSePolicyRestoreconFlags</span></a> flags</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">char</span> **out_new_label</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Reset the security context of <em class="parameter"><code>target</code></em>
|
||||||
|
based on the SELinux policy.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-restorecon.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Self</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>path</p></td>
|
||||||
|
<td class="parameter_description"><p>Path string to use for policy lookup</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>info</p></td>
|
||||||
|
<td class="parameter_description"><p> File attributes. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>target</p></td>
|
||||||
|
<td class="parameter_description"><p>Physical path to target file</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>Flags controlling behavior</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_new_label</p></td>
|
||||||
|
<td class="parameter_description"><p> New label, or <code class="literal">NULL</code> if unchanged. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>][<a href="http://foldoc.org/out"><span class="acronym">out</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-setfscreatecon"></a><h3>ostree_sepolicy_setfscreatecon ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sepolicy_setfscreatecon (<em class="parameter"><code><a class="link" href="ostree-SELinux-policy-management.html#OstreeSePolicy" title="OstreeSePolicy"><span class="type">OstreeSePolicy</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">guint32</span> mode</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sepolicy-setfscreatecon.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Policy</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>path</p></td>
|
||||||
|
<td class="parameter_description"><p>Use this path to determine a label</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>mode</p></td>
|
||||||
|
<td class="parameter_description"><p>Used along with <em class="parameter"><code>path</code></em>
|
||||||
|
</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sepolicy-fscreatecon-cleanup"></a><h3>ostree_sepolicy_fscreatecon_cleanup ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_sepolicy_fscreatecon_cleanup (<em class="parameter"><code><span class="type">void</span> **unused</code></em>);</pre>
|
||||||
|
<p>Cleanup function for <a class="link" href="ostree-SELinux-policy-management.html#ostree-sepolicy-setfscreatecon" title="ostree_sepolicy_setfscreatecon ()"><code class="function">ostree_sepolicy_setfscreatecon()</code></a>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-SELinux-policy-management.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeSePolicy"></a><h3>OstreeSePolicy</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeSePolicy OstreeSePolicy;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeSePolicyRestoreconFlags"></a><h3>enum OstreeSePolicyRestoreconFlags</h3>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeSePolicyRestoreconFlags.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SEPOLICY-RESTORECON-FLAGS-NONE:CAPS"></a>OSTREE_SEPOLICY_RESTORECON_FLAGS_NONE</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SEPOLICY-RESTORECON-FLAGS-ALLOW-NOLABEL:CAPS"></a>OSTREE_SEPOLICY_RESTORECON_FLAGS_ALLOW_NOLABEL</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SEPOLICY-RESTORECON-FLAGS-KEEP-EXISTING:CAPS"></a>OSTREE_SEPOLICY_RESTORECON_FLAGS_KEEP_EXISTING</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,626 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>Simple upgrade class: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-SELinux-policy-management.html" title="SELinux policy management">
|
||||||
|
<link rel="next" href="ostree-GPG-signature-verification-results.html" title="GPG signature verification results">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-Simple-upgrade-class.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-SELinux-policy-management.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-GPG-signature-verification-results.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-Simple-upgrade-class"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-Simple-upgrade-class.top_of_page"></a>Simple upgrade class</span></h2>
|
||||||
|
<p>Simple upgrade class — Upgrade OSTree systems</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Simple-upgrade-class.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new" title="ostree_sysroot_upgrader_new ()">ostree_sysroot_upgrader_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new-for-os" title="ostree_sysroot_upgrader_new_for_os ()">ostree_sysroot_upgrader_new_for_os</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new-for-os-with-flags" title="ostree_sysroot_upgrader_new_for_os_with_flags ()">ostree_sysroot_upgrader_new_for_os_with_flags</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GKeyFile</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-get-origin" title="ostree_sysroot_upgrader_get_origin ()">ostree_sysroot_upgrader_get_origin</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GKeyFile</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-dup-origin" title="ostree_sysroot_upgrader_dup_origin ()">ostree_sysroot_upgrader_dup_origin</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-set-origin" title="ostree_sysroot_upgrader_set_origin ()">ostree_sysroot_upgrader_set_origin</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-get-origin-description" title="ostree_sysroot_upgrader_get_origin_description ()">ostree_sysroot_upgrader_get_origin_description</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-check-timestamps" title="ostree_sysroot_upgrader_check_timestamps ()">ostree_sysroot_upgrader_check_timestamps</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-pull" title="ostree_sysroot_upgrader_pull ()">ostree_sysroot_upgrader_pull</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-pull-one-dir" title="ostree_sysroot_upgrader_pull_one_dir ()">ostree_sysroot_upgrader_pull_one_dir</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-deploy" title="ostree_sysroot_upgrader_deploy ()">ostree_sysroot_upgrader_deploy</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Simple-upgrade-class.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader">OstreeSysrootUpgrader</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderFlags" title="enum OstreeSysrootUpgraderFlags">OstreeSysrootUpgraderFlags</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderPullFlags" title="enum OstreeSysrootUpgraderPullFlags">OstreeSysrootUpgraderPullFlags</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Simple-upgrade-class.description"></a><h2>Description</h2>
|
||||||
|
<p>The <a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> class allows performing simple upgrade
|
||||||
|
operations.</p>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Simple-upgrade-class.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-new"></a><h3>ostree_sysroot_upgrader_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
ostree_sysroot_upgrader_new (<em class="parameter"><code><a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a> *sysroot</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>sysroot</p></td>
|
||||||
|
<td class="parameter_description"><p>An <a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new.returns"></a><h4>Returns</h4>
|
||||||
|
<p> An upgrader. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os"></a><h3>ostree_sysroot_upgrader_new_for_os ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
ostree_sysroot_upgrader_new_for_os (<em class="parameter"><code><a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a> *sysroot</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *osname</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>sysroot</p></td>
|
||||||
|
<td class="parameter_description"><p>An <a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>osname</p></td>
|
||||||
|
<td class="parameter_description"><p> Operating system name. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os.returns"></a><h4>Returns</h4>
|
||||||
|
<p> An upgrader. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os-with-flags"></a><h3>ostree_sysroot_upgrader_new_for_os_with_flags ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="returnvalue">OstreeSysrootUpgrader</span></a> *
|
||||||
|
ostree_sysroot_upgrader_new_for_os_with_flags
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a> *sysroot</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *osname</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderFlags" title="enum OstreeSysrootUpgraderFlags"><span class="type">OstreeSysrootUpgraderFlags</span></a> flags</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os-with-flags.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>sysroot</p></td>
|
||||||
|
<td class="parameter_description"><p>An <a class="link" href="ostree-Root-partition-mount-point.html#OstreeSysroot" title="OstreeSysroot"><span class="type">OstreeSysroot</span></a></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>osname</p></td>
|
||||||
|
<td class="parameter_description"><p> Operating system name. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>Flags</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-new-for-os-with-flags.returns"></a><h4>Returns</h4>
|
||||||
|
<p> An upgrader. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin"></a><h3>ostree_sysroot_upgrader_get_origin ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GKeyFile</span> *
|
||||||
|
ostree_sysroot_upgrader_get_origin (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Sysroot</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin.returns"></a><h4>Returns</h4>
|
||||||
|
<p> The origin file, or <code class="literal">NULL</code> if unknown. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-dup-origin"></a><h3>ostree_sysroot_upgrader_dup_origin ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GKeyFile</span> *
|
||||||
|
ostree_sysroot_upgrader_dup_origin (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-dup-origin.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Sysroot</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-dup-origin.returns"></a><h4>Returns</h4>
|
||||||
|
<p> A copy of the origin file, or <code class="literal">NULL</code> if unknown. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-set-origin"></a><h3>ostree_sysroot_upgrader_set_origin ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sysroot_upgrader_set_origin (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GKeyFile</span> *origin</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Replace the origin with <em class="parameter"><code>origin</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-set-origin.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Sysroot</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>origin</p></td>
|
||||||
|
<td class="parameter_description"><p> The new origin. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin-description"></a><h3>ostree_sysroot_upgrader_get_origin_description ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">char</span> *
|
||||||
|
ostree_sysroot_upgrader_get_origin_description
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin-description.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Upgrader</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-get-origin-description.returns"></a><h4>Returns</h4>
|
||||||
|
<p> A one-line descriptive summary of the origin, or <code class="literal">NULL</code> if unknown</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-check-timestamps"></a><h3>ostree_sysroot_upgrader_check_timestamps ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sysroot_upgrader_check_timestamps
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepo" title="OstreeRepo"><span class="type">OstreeRepo</span></a> *repo</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *from_rev</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *to_rev</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Check that the timestamp on <em class="parameter"><code>to_rev</code></em>
|
||||||
|
is equal to or newer than
|
||||||
|
<em class="parameter"><code>from_rev</code></em>
|
||||||
|
. This protects systems against man-in-the-middle
|
||||||
|
attackers which provide a client with an older commit.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-check-timestamps.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>repo</p></td>
|
||||||
|
<td class="parameter_description"><p>Repo</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>from_rev</p></td>
|
||||||
|
<td class="parameter_description"><p>From revision</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>to_rev</p></td>
|
||||||
|
<td class="parameter_description"><p>To revision</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-pull"></a><h3>ostree_sysroot_upgrader_pull ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sysroot_upgrader_pull (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepoPullFlags" title="enum OstreeRepoPullFlags"><span class="type">OstreeRepoPullFlags</span></a> flags</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderPullFlags" title="enum OstreeSysrootUpgraderPullFlags"><span class="type">OstreeSysrootUpgraderPullFlags</span></a> upgrader_flags</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *progress</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">gboolean</span> *out_changed</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Perform a pull from the origin. First check if the ref has
|
||||||
|
changed, if so download the linked objects, and store the updated
|
||||||
|
ref locally. Then <em class="parameter"><code>out_changed</code></em>
|
||||||
|
will be <code class="literal">TRUE</code>.</p>
|
||||||
|
<p>If the origin remote is unchanged, <em class="parameter"><code>out_changed</code></em>
|
||||||
|
will be set to
|
||||||
|
<code class="literal">FALSE</code>.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-pull.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Upgrader</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>Flags controlling pull behavior</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>upgrader_flags</p></td>
|
||||||
|
<td class="parameter_description"><p>Flags controlling upgrader behavior</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>progress</p></td>
|
||||||
|
<td class="parameter_description"><p> Progress. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/allow-none"><span class="acronym">allow-none</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>out_changed</p></td>
|
||||||
|
<td class="parameter_description"><p> Whether or not the origin changed. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-pull-one-dir"></a><h3>ostree_sysroot_upgrader_pull_one_dir ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sysroot_upgrader_pull_one_dir (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *dir_to_pull</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepoPullFlags" title="enum OstreeRepoPullFlags"><span class="type">OstreeRepoPullFlags</span></a> flags</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderPullFlags" title="enum OstreeSysrootUpgraderPullFlags"><span class="type">OstreeSysrootUpgraderPullFlags</span></a> upgrader_flags</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress" title="OstreeAsyncProgress"><span class="type">OstreeAsyncProgress</span></a> *progress</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">gboolean</span> *out_changed</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Like <a class="link" href="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-pull" title="ostree_sysroot_upgrader_pull ()"><code class="function">ostree_sysroot_upgrader_pull()</code></a>, but allows retrieving just a
|
||||||
|
subpath of the tree. This can be used to download metadata files
|
||||||
|
from inside the tree such as package databases.</p>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-sysroot-upgrader-deploy"></a><h3>ostree_sysroot_upgrader_deploy ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_sysroot_upgrader_deploy (<em class="parameter"><code><a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Write the new deployment to disk, perform a configuration merge
|
||||||
|
with /etc, and update the bootloader configuration.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-sysroot-upgrader-deploy.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Self</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-Simple-upgrade-class.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeSysrootUpgrader"></a><h3>OstreeSysrootUpgrader</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeSysrootUpgrader OstreeSysrootUpgrader;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeSysrootUpgraderFlags"></a><h3>enum OstreeSysrootUpgraderFlags</h3>
|
||||||
|
<p>Flags controlling operation of an <a class="link" href="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader" title="OstreeSysrootUpgrader"><span class="type">OstreeSysrootUpgrader</span></a>.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeSysrootUpgraderFlags.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SYSROOT-UPGRADER-FLAGS-NONE:CAPS"></a>OSTREE_SYSROOT_UPGRADER_FLAGS_NONE</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p>No options</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SYSROOT-UPGRADER-FLAGS-IGNORE-UNCONFIGURED:CAPS"></a>OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED</p></td>
|
||||||
|
<td class="enum_member_description">
|
||||||
|
<p>Do not error if the origin has an unconfigured-state key</p>
|
||||||
|
</td>
|
||||||
|
<td class="enum_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeSysrootUpgraderPullFlags"></a><h3>enum OstreeSysrootUpgraderPullFlags</h3>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeSysrootUpgraderPullFlags.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SYSROOT-UPGRADER-PULL-FLAGS-NONE:CAPS"></a>OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_NONE</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-SYSROOT-UPGRADER-PULL-FLAGS-ALLOW-OLDER:CAPS"></a>OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_ALLOW_OLDER</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,261 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-bootconfig-parser: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-GPG-signature-verification-results.html" title="GPG signature verification results">
|
||||||
|
<link rel="next" href="ostree-ostree-chain-input-stream.html" title="ostree-chain-input-stream">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-bootconfig-parser.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-GPG-signature-verification-results.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-chain-input-stream.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-bootconfig-parser.top_of_page"></a>ostree-bootconfig-parser</span></h2>
|
||||||
|
<p>ostree-bootconfig-parser</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-new" title="ostree_bootconfig_parser_new ()">ostree_bootconfig_parser_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-clone" title="ostree_bootconfig_parser_clone ()">ostree_bootconfig_parser_clone</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-parse" title="ostree_bootconfig_parser_parse ()">ostree_bootconfig_parser_parse</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-parse-at" title="ostree_bootconfig_parser_parse_at ()">ostree_bootconfig_parser_parse_at</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-write" title="ostree_bootconfig_parser_write ()">ostree_bootconfig_parser_write</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-write-at" title="ostree_bootconfig_parser_write_at ()">ostree_bootconfig_parser_write_at</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-set" title="ostree_bootconfig_parser_set ()">ostree_bootconfig_parser_set</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-get" title="ostree_bootconfig_parser_get ()">ostree_bootconfig_parser_get</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="datatype_keyword"> </td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser">OstreeBootconfigParser</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-new"></a><h3>ostree_bootconfig_parser_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
ostree_bootconfig_parser_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-clone"></a><h3>ostree_bootconfig_parser_clone ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
ostree_bootconfig_parser_clone (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-bootconfig-parser-clone.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Bootconfig to clone</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-bootconfig-parser-clone.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Copy of <em class="parameter"><code>self</code></em>
|
||||||
|
. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-parse"></a><h3>ostree_bootconfig_parser_parse ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_bootconfig_parser_parse (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-parse-at"></a><h3>ostree_bootconfig_parser_parse_at ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_bootconfig_parser_parse_at (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> dfd</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Initialize a bootconfig from the given file.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-bootconfig-parser-parse-at.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Parser</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>dfd</p></td>
|
||||||
|
<td class="parameter_description"><p>Directory fd</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>path</p></td>
|
||||||
|
<td class="parameter_description"><p>File path</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-write"></a><h3>ostree_bootconfig_parser_write ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_bootconfig_parser_write (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *output</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-write-at"></a><h3>ostree_bootconfig_parser_write_at ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_bootconfig_parser_write_at (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> dfd</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *path</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-set"></a><h3>ostree_bootconfig_parser_set ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_bootconfig_parser_set (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *value</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-bootconfig-parser-get"></a><h3>ostree_bootconfig_parser_get ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_bootconfig_parser_get (<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *key</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-bootconfig-parser.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeBootconfigParser"></a><h3>OstreeBootconfigParser</h3>
|
||||||
|
<pre class="programlisting">typedef struct _OstreeBootconfigParser OstreeBootconfigParser;</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-chain-input-stream: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-ostree-bootconfig-parser.html" title="ostree-bootconfig-parser">
|
||||||
|
<link rel="next" href="ostree-ostree-checksum-input-stream.html" title="ostree-checksum-input-stream">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-chain-input-stream.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-ostree-bootconfig-parser.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-checksum-input-stream.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-chain-input-stream"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-chain-input-stream.top_of_page"></a>ostree-chain-input-stream</span></h2>
|
||||||
|
<p>ostree-chain-input-stream</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-chain-input-stream.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-chain-input-stream.html#OstreeChainInputStream" title="struct OstreeChainInputStream"><span class="returnvalue">OstreeChainInputStream</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-chain-input-stream.html#ostree-chain-input-stream-new" title="ostree_chain_input_stream_new ()">ostree_chain_input_stream_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-chain-input-stream.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="datatype_keyword">struct</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-chain-input-stream.html#OstreeChainInputStream" title="struct OstreeChainInputStream">OstreeChainInputStream</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-chain-input-stream.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-chain-input-stream.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-chain-input-stream-new"></a><h3>ostree_chain_input_stream_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-chain-input-stream.html#OstreeChainInputStream" title="struct OstreeChainInputStream"><span class="returnvalue">OstreeChainInputStream</span></a> *
|
||||||
|
ostree_chain_input_stream_new (<em class="parameter"><code><span class="type">GPtrArray</span> *streams</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-chain-input-stream.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeChainInputStream"></a><h3>struct OstreeChainInputStream</h3>
|
||||||
|
<pre class="programlisting">struct OstreeChainInputStream {
|
||||||
|
GInputStream parent_instance;
|
||||||
|
};
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-checksum-input-stream: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-ostree-chain-input-stream.html" title="ostree-chain-input-stream">
|
||||||
|
<link rel="next" href="ostree-ostree-deployment.html" title="ostree-deployment">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-checksum-input-stream.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-ostree-chain-input-stream.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-deployment.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-checksum-input-stream.top_of_page"></a>ostree-checksum-input-stream</span></h2>
|
||||||
|
<p>ostree-checksum-input-stream</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-checksum-input-stream.html#OstreeChecksumInputStream" title="struct OstreeChecksumInputStream"><span class="returnvalue">OstreeChecksumInputStream</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-checksum-input-stream.html#ostree-checksum-input-stream-new" title="ostree_checksum_input_stream_new ()">ostree_checksum_input_stream_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="datatype_keyword">struct</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-checksum-input-stream.html#OstreeChecksumInputStream" title="struct OstreeChecksumInputStream">OstreeChecksumInputStream</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-checksum-input-stream-new"></a><h3>ostree_checksum_input_stream_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-checksum-input-stream.html#OstreeChecksumInputStream" title="struct OstreeChecksumInputStream"><span class="returnvalue">OstreeChecksumInputStream</span></a> *
|
||||||
|
ostree_checksum_input_stream_new (<em class="parameter"><code><span class="type">GInputStream</span> *stream</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GChecksum</span> *checksum</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-checksum-input-stream.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeChecksumInputStream"></a><h3>struct OstreeChecksumInputStream</h3>
|
||||||
|
<pre class="programlisting">struct OstreeChecksumInputStream {
|
||||||
|
GFilterInputStream parent_instance;
|
||||||
|
};
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,527 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-deployment: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-ostree-checksum-input-stream.html" title="ostree-checksum-input-stream">
|
||||||
|
<link rel="next" href="ostree-ostree-diff.html" title="ostree-diff">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-deployment.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-ostree-checksum-input-stream.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-diff.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-deployment"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-deployment.top_of_page"></a>ostree-deployment</span></h2>
|
||||||
|
<p>ostree-deployment</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-deployment.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">guint</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-hash" title="ostree_deployment_hash ()">ostree_deployment_hash</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-equal" title="ostree_deployment_equal ()">ostree_deployment_equal</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="returnvalue">OstreeDeployment</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-new" title="ostree_deployment_new ()">ostree_deployment_new</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">int</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-index" title="ostree_deployment_get_index ()">ostree_deployment_get_index</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-osname" title="ostree_deployment_get_osname ()">ostree_deployment_get_osname</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">int</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-deployserial" title="ostree_deployment_get_deployserial ()">ostree_deployment_get_deployserial</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-csum" title="ostree_deployment_get_csum ()">ostree_deployment_get_csum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-bootcsum" title="ostree_deployment_get_bootcsum ()">ostree_deployment_get_bootcsum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">int</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-bootserial" title="ostree_deployment_get_bootserial ()">ostree_deployment_get_bootserial</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-bootconfig" title="ostree_deployment_get_bootconfig ()">ostree_deployment_get_bootconfig</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GKeyFile</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-origin" title="ostree_deployment_get_origin ()">ostree_deployment_get_origin</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-origin-relpath" title="ostree_deployment_get_origin_relpath ()">ostree_deployment_get_origin_relpath</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">OstreeDeploymentUnlockedState</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-get-unlocked" title="ostree_deployment_get_unlocked ()">ostree_deployment_get_unlocked</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-set-index" title="ostree_deployment_set_index ()">ostree_deployment_set_index</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-set-bootserial" title="ostree_deployment_set_bootserial ()">ostree_deployment_set_bootserial</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-set-bootconfig" title="ostree_deployment_set_bootconfig ()">ostree_deployment_set_bootconfig</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-set-origin" title="ostree_deployment_set_origin ()">ostree_deployment_set_origin</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="returnvalue">OstreeDeployment</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-clone" title="ostree_deployment_clone ()">ostree_deployment_clone</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-deployment.html#ostree-deployment-unlocked-state-to-string" title="ostree_deployment_unlocked_state_to_string ()">ostree_deployment_unlocked_state_to_string</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-deployment.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="datatype_keyword"> </td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment">OstreeDeployment</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-deployment.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-deployment.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-hash"></a><h3>ostree_deployment_hash ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">guint</span>
|
||||||
|
ostree_deployment_hash (<em class="parameter"><code><span class="type">gconstpointer</span> v</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-equal"></a><h3>ostree_deployment_equal ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_deployment_equal (<em class="parameter"><code><span class="type">gconstpointer</span> ap</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">gconstpointer</span> bp</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-equal.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>ap</p></td>
|
||||||
|
<td class="parameter_description"><p> A deployment. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/type"><span class="acronym">type</span></a> OstreeDeployment]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>bp</p></td>
|
||||||
|
<td class="parameter_description"><p> A deployment. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/type"><span class="acronym">type</span></a> OstreeDeployment]</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-equal.returns"></a><h4>Returns</h4>
|
||||||
|
<p> <code class="literal">TRUE</code> if deployments have the same osname, csum, and deployserial</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-new"></a><h3>ostree_deployment_new ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="returnvalue">OstreeDeployment</span></a> *
|
||||||
|
ostree_deployment_new (<em class="parameter"><code><span class="type">int</span> index</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *osname</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *csum</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> deployserial</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *bootcsum</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> bootserial</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-index"></a><h3>ostree_deployment_get_index ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">int</span>
|
||||||
|
ostree_deployment_get_index (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-osname"></a><h3>ostree_deployment_get_osname ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_deployment_get_osname (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-deployserial"></a><h3>ostree_deployment_get_deployserial ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">int</span>
|
||||||
|
ostree_deployment_get_deployserial (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-csum"></a><h3>ostree_deployment_get_csum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_deployment_get_csum (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-bootcsum"></a><h3>ostree_deployment_get_bootcsum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_deployment_get_bootcsum (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-bootserial"></a><h3>ostree_deployment_get_bootserial ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">int</span>
|
||||||
|
ostree_deployment_get_bootserial (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-bootconfig"></a><h3>ostree_deployment_get_bootconfig ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="returnvalue">OstreeBootconfigParser</span></a> *
|
||||||
|
ostree_deployment_get_bootconfig (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-bootconfig.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Deployment</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-bootconfig.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Boot configuration. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-origin"></a><h3>ostree_deployment_get_origin ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GKeyFile</span> *
|
||||||
|
ostree_deployment_get_origin (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-origin.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Deployment</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-origin.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Origin. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-origin-relpath"></a><h3>ostree_deployment_get_origin_relpath ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">char</span> *
|
||||||
|
ostree_deployment_get_origin_relpath (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
<p>Note this function only returns a *relative* path - if you want to
|
||||||
|
access, it, you must either use fd-relative api such as <code class="function">openat()</code>,
|
||||||
|
or concatenate it with the full <a class="link" href="ostree-Root-partition-mount-point.html#ostree-sysroot-get-path" title="ostree_sysroot_get_path ()"><code class="function">ostree_sysroot_get_path()</code></a>.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-origin-relpath.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>A deployment</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-get-origin-relpath.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Path to deployment root directory, relative to sysroot. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-get-unlocked"></a><h3>ostree_deployment_get_unlocked ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">OstreeDeploymentUnlockedState</span>
|
||||||
|
ostree_deployment_get_unlocked (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-set-index"></a><h3>ostree_deployment_set_index ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_deployment_set_index (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> index</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-set-bootserial"></a><h3>ostree_deployment_set_bootserial ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_deployment_set_bootserial (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> index</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-set-bootconfig"></a><h3>ostree_deployment_set_bootconfig ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_deployment_set_bootconfig (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *bootconfig</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-set-origin"></a><h3>ostree_deployment_set_origin ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_deployment_set_origin (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GKeyFile</span> *origin</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-clone"></a><h3>ostree_deployment_clone ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="returnvalue">OstreeDeployment</span></a> *
|
||||||
|
ostree_deployment_clone (<em class="parameter"><code><a class="link" href="ostree-ostree-deployment.html#OstreeDeployment" title="OstreeDeployment"><span class="type">OstreeDeployment</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-clone.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="parameter_name"><p>self</p></td>
|
||||||
|
<td class="parameter_description"><p>Deployment</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-deployment-clone.returns"></a><h4>Returns</h4>
|
||||||
|
<p> New deep copy of <em class="parameter"><code>self</code></em>
|
||||||
|
. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20full"><span class="acronym">transfer full</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-deployment-unlocked-state-to-string"></a><h3>ostree_deployment_unlocked_state_to_string ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_deployment_unlocked_state_to_string
|
||||||
|
(<em class="parameter"><code><span class="type">OstreeDeploymentUnlockedState</span> state</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-deployment.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeDeployment"></a><h3>OstreeDeployment</h3>
|
||||||
|
<pre class="programlisting">typedef struct {
|
||||||
|
GObject parent_instance;
|
||||||
|
|
||||||
|
int index;
|
||||||
|
char *osname;
|
||||||
|
char *csum;
|
||||||
|
int deployserial;
|
||||||
|
char *bootcsum;
|
||||||
|
int bootserial;
|
||||||
|
OstreeBootconfigParser *bootconfig;
|
||||||
|
GKeyFile *origin;
|
||||||
|
OstreeDeploymentUnlockedState unlocked;
|
||||||
|
} OstreeDeployment;
|
||||||
|
</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeDeployment.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="struct_members_name">
|
||||||
|
<col class="struct_members_description">
|
||||||
|
<col width="200px" class="struct_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">int</span> <em class="structfield"><code><a name="OstreeDeployment.index"></a>index</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>Global offset</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">char</span> *<em class="structfield"><code><a name="OstreeDeployment.osname"></a>osname</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"> </td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">char</span> *<em class="structfield"><code><a name="OstreeDeployment.csum"></a>csum</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>OSTree checksum of tree</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">int</span> <em class="structfield"><code><a name="OstreeDeployment.deployserial"></a>deployserial</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>How many times this particular csum appears in deployment list</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">char</span> *<em class="structfield"><code><a name="OstreeDeployment.bootcsum"></a>bootcsum</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>Checksum of kernel+initramfs</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">int</span> <em class="structfield"><code><a name="OstreeDeployment.bootserial"></a>bootserial</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>An integer assigned to this tree per its ${bootcsum}</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><a class="link" href="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser" title="OstreeBootconfigParser"><span class="type">OstreeBootconfigParser</span></a> *<em class="structfield"><code><a name="OstreeDeployment.bootconfig"></a>bootconfig</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>Bootloader configuration</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">GKeyFile</span> *<em class="structfield"><code><a name="OstreeDeployment.origin"></a>origin</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>How to construct an upgraded version of this tree</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="struct_member_name"><p><span class="type">OstreeDeploymentUnlockedState</span> <em class="structfield"><code><a name="OstreeDeployment.unlocked"></a>unlocked</code></em>;</p></td>
|
||||||
|
<td class="struct_member_description"><p>The unlocked state</p></td>
|
||||||
|
<td class="struct_member_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,282 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-diff: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-ostree-deployment.html" title="ostree-deployment">
|
||||||
|
<link rel="next" href="ostree-ostree-repo-file.html" title="ostree-repo-file">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-diff.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-ostree-deployment.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><a accesskey="n" href="ostree-ostree-repo-file.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-diff"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-diff.top_of_page"></a>ostree-diff</span></h2>
|
||||||
|
<p>ostree-diff</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-diff.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem"><span class="returnvalue">OstreeDiffItem</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-diff.html#ostree-diff-item-ref" title="ostree_diff_item_ref ()">ostree_diff_item_ref</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-diff.html#ostree-diff-item-unref" title="ostree_diff_item_unref ()">ostree_diff_item_unref</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-diff.html#ostree-diff-dirs" title="ostree_diff_dirs ()">ostree_diff_dirs</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-diff.html#ostree-diff-print" title="ostree_diff_print ()">ostree_diff_print</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-diff.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">enum</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-diff.html#OstreeDiffFlags" title="enum OstreeDiffFlags">OstreeDiffFlags</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="datatype_keyword">struct</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem">OstreeDiffItem</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-diff.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-diff.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-diff-item-ref"></a><h3>ostree_diff_item_ref ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem"><span class="returnvalue">OstreeDiffItem</span></a> *
|
||||||
|
ostree_diff_item_ref (<em class="parameter"><code><a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem"><span class="type">OstreeDiffItem</span></a> *diffitem</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-diff-item-unref"></a><h3>ostree_diff_item_unref ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_diff_item_unref (<em class="parameter"><code><a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem"><span class="type">OstreeDiffItem</span></a> *diffitem</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-diff-dirs"></a><h3>ostree_diff_dirs ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_diff_dirs (<em class="parameter"><code><a class="link" href="ostree-ostree-diff.html#OstreeDiffFlags" title="enum OstreeDiffFlags"><span class="type">OstreeDiffFlags</span></a> flags</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *a</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *b</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *modified</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *removed</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *added</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
<p>Compute the difference between directory <em class="parameter"><code>a</code></em>
|
||||||
|
and <em class="parameter"><code>b</code></em>
|
||||||
|
as 3 separate
|
||||||
|
sets of <a class="link" href="ostree-ostree-diff.html#OstreeDiffItem" title="struct OstreeDiffItem"><span class="type">OstreeDiffItem</span></a> in <em class="parameter"><code>modified</code></em>
|
||||||
|
, <em class="parameter"><code>removed</code></em>
|
||||||
|
, and <em class="parameter"><code>added</code></em>
|
||||||
|
.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-diff-dirs.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>flags</p></td>
|
||||||
|
<td class="parameter_description"><p>Flags</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>a</p></td>
|
||||||
|
<td class="parameter_description"><p>First directory path, or <code class="literal">NULL</code></p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>b</p></td>
|
||||||
|
<td class="parameter_description"><p>First directory path</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>modified</p></td>
|
||||||
|
<td class="parameter_description"><p> Modified files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> OstreeDiffItem]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>removed</p></td>
|
||||||
|
<td class="parameter_description"><p> Removed files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> Gio.File]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>added</p></td>
|
||||||
|
<td class="parameter_description"><p> Added files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> Gio.File]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>cancellable</p></td>
|
||||||
|
<td class="parameter_description"><p>Cancellable</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>error</p></td>
|
||||||
|
<td class="parameter_description"><p>Error</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-diff-print"></a><h3>ostree_diff_print ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_diff_print (<em class="parameter"><code><span class="type">GFile</span> *a</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFile</span> *b</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *modified</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *removed</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GPtrArray</span> *added</code></em>);</pre>
|
||||||
|
<p>Print the contents of a diff to stdout.</p>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-diff-print.parameters"></a><h4>Parameters</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="parameters_name">
|
||||||
|
<col class="parameters_description">
|
||||||
|
<col width="200px" class="parameters_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>a</p></td>
|
||||||
|
<td class="parameter_description"><p>First directory path</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>b</p></td>
|
||||||
|
<td class="parameter_description"><p>First directory path</p></td>
|
||||||
|
<td class="parameter_annotations"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>modified</p></td>
|
||||||
|
<td class="parameter_description"><p> Modified files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> OstreeDiffItem]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>removed</p></td>
|
||||||
|
<td class="parameter_description"><p> Removed files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> Gio.File]</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="parameter_name"><p>added</p></td>
|
||||||
|
<td class="parameter_description"><p> Added files. </p></td>
|
||||||
|
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> Gio.File]</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-diff.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeDiffFlags"></a><h3>enum OstreeDiffFlags</h3>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="OstreeDiffFlags.members"></a><h4>Members</h4>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="300px" class="enum_members_name">
|
||||||
|
<col class="enum_members_description">
|
||||||
|
<col width="200px" class="enum_members_annotations">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-DIFF-FLAGS-NONE:CAPS"></a>OSTREE_DIFF_FLAGS_NONE</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="enum_member_name"><p><a name="OSTREE-DIFF-FLAGS-IGNORE-XATTRS:CAPS"></a>OSTREE_DIFF_FLAGS_IGNORE_XATTRS</p></td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeDiffItem"></a><h3>struct OstreeDiffItem</h3>
|
||||||
|
<pre class="programlisting">struct OstreeDiffItem {
|
||||||
|
volatile gint refcount;
|
||||||
|
|
||||||
|
GFile *src;
|
||||||
|
GFile *target;
|
||||||
|
|
||||||
|
GFileInfo *src_info;
|
||||||
|
GFileInfo *target_info;
|
||||||
|
|
||||||
|
char *src_checksum;
|
||||||
|
char *target_checksum;
|
||||||
|
};
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,266 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>ostree-repo-file: OSTree API references</title>
|
||||||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
||||||
|
<link rel="home" href="index.html" title="OSTree API references">
|
||||||
|
<link rel="up" href="reference.html" title="API Reference">
|
||||||
|
<link rel="prev" href="ostree-ostree-diff.html" title="ostree-diff">
|
||||||
|
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
|
||||||
|
<link rel="stylesheet" href="style.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||||
|
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||||||
|
<td width="100%" align="left" class="shortcuts">
|
||||||
|
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
|
||||||
|
<a href="#ostree-ostree-repo-file.description" class="shortcut">Description</a></span>
|
||||||
|
</td>
|
||||||
|
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||||||
|
<td><a accesskey="u" href="reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||||||
|
<td><a accesskey="p" href="ostree-ostree-diff.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||||||
|
<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
|
||||||
|
</tr></table>
|
||||||
|
<div class="refentry">
|
||||||
|
<a name="ostree-ostree-repo-file"></a><div class="titlepage"></div>
|
||||||
|
<div class="refnamediv"><table width="100%"><tr>
|
||||||
|
<td valign="top">
|
||||||
|
<h2><span class="refentrytitle"><a name="ostree-ostree-repo-file.top_of_page"></a>ostree-repo-file</span></h2>
|
||||||
|
<p>ostree-repo-file</p>
|
||||||
|
</td>
|
||||||
|
<td class="gallery_image" valign="top" align="right"></td>
|
||||||
|
</tr></table></div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-repo-file.functions"></a><h2>Functions</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="functions_return">
|
||||||
|
<col class="functions_name">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-ensure-resolved" title="ostree_repo_file_ensure_resolved ()">ostree_repo_file_ensure_resolved</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-get-xattrs" title="ostree_repo_file_get_xattrs ()">ostree_repo_file_get_xattrs</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepo" title="OstreeRepo"><span class="returnvalue">OstreeRepo</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-get-repo" title="ostree_repo_file_get_repo ()">ostree_repo_file_get_repo</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="returnvalue">OstreeRepoFile</span></a> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-get-root" title="ostree_repo_file_get_root ()">ostree_repo_file_get_root</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">void</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-set-metadata" title="ostree_repo_file_tree_set_metadata ()">ostree_repo_file_tree_set_metadata</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-contents-checksum" title="ostree_repo_file_tree_get_contents_checksum ()">ostree_repo_file_tree_get_contents_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-metadata-checksum" title="ostree_repo_file_tree_get_metadata_checksum ()">ostree_repo_file_tree_get_metadata_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GVariant</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-contents" title="ostree_repo_file_tree_get_contents ()">ostree_repo_file_tree_get_contents</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">GVariant</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-metadata" title="ostree_repo_file_tree_get_metadata ()">ostree_repo_file_tree_get_metadata</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">const <span class="returnvalue">char</span> *
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-get-checksum" title="ostree_repo_file_get_checksum ()">ostree_repo_file_get_checksum</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">int</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-find-child" title="ostree_repo_file_tree_find_child ()">ostree_repo_file_tree_find_child</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="function_type">
|
||||||
|
<span class="returnvalue">gboolean</span>
|
||||||
|
</td>
|
||||||
|
<td class="function_name">
|
||||||
|
<a class="link" href="ostree-ostree-repo-file.html#ostree-repo-file-tree-query-child" title="ostree_repo_file_tree_query_child ()">ostree_repo_file_tree_query_child</a> <span class="c_punctuation">()</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-repo-file.other"></a><h2>Types and Values</h2>
|
||||||
|
<div class="informaltable"><table width="100%" border="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="150px" class="name">
|
||||||
|
<col class="description">
|
||||||
|
</colgroup>
|
||||||
|
<tbody><tr>
|
||||||
|
<td class="typedef_keyword">typedef</td>
|
||||||
|
<td class="function_name"><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile">OstreeRepoFile</a></td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table></div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-repo-file.description"></a><h2>Description</h2>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-repo-file.functions_details"></a><h2>Functions</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-ensure-resolved"></a><h3>ostree_repo_file_ensure_resolved ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_repo_file_ensure_resolved (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-get-xattrs"></a><h3>ostree_repo_file_get_xattrs ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_repo_file_get_xattrs (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GVariant</span> **out_xattrs</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-get-repo"></a><h3>ostree_repo_file_get_repo ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-Content-addressed-object-store.html#OstreeRepo" title="OstreeRepo"><span class="returnvalue">OstreeRepo</span></a> *
|
||||||
|
ostree_repo_file_get_repo (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-repo-file-get-repo.returns"></a><h4>Returns</h4>
|
||||||
|
<p> Repository. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-get-root"></a><h3>ostree_repo_file_get_root ()</h3>
|
||||||
|
<pre class="programlisting"><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="returnvalue">OstreeRepoFile</span></a> *
|
||||||
|
ostree_repo_file_get_root (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
<div class="refsect3">
|
||||||
|
<a name="ostree-repo-file-get-root.returns"></a><h4>Returns</h4>
|
||||||
|
<p> The root directory for the commit referenced by this file. </p>
|
||||||
|
<p><span class="annotation">[<a href="http://foldoc.org/transfer%20none"><span class="acronym">transfer none</span></a>]</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-set-metadata"></a><h3>ostree_repo_file_tree_set_metadata ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||||
|
ostree_repo_file_tree_set_metadata (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *checksum</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GVariant</span> *metadata</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-get-contents-checksum"></a><h3>ostree_repo_file_tree_get_contents_checksum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_repo_file_tree_get_contents_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-get-metadata-checksum"></a><h3>ostree_repo_file_tree_get_metadata_checksum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_repo_file_tree_get_metadata_checksum
|
||||||
|
(<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-get-contents"></a><h3>ostree_repo_file_tree_get_contents ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GVariant</span> *
|
||||||
|
ostree_repo_file_tree_get_contents (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-get-metadata"></a><h3>ostree_repo_file_tree_get_metadata ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">GVariant</span> *
|
||||||
|
ostree_repo_file_tree_get_metadata (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-get-checksum"></a><h3>ostree_repo_file_get_checksum ()</h3>
|
||||||
|
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||||
|
ostree_repo_file_get_checksum (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-find-child"></a><h3>ostree_repo_file_tree_find_child ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">int</span>
|
||||||
|
ostree_repo_file_tree_find_child (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">gboolean</span> *is_dir</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GVariant</span> **out_container</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="ostree-repo-file-tree-query-child"></a><h3>ostree_repo_file_tree_query_child ()</h3>
|
||||||
|
<pre class="programlisting"><span class="returnvalue">gboolean</span>
|
||||||
|
ostree_repo_file_tree_query_child (<em class="parameter"><code><a class="link" href="ostree-ostree-repo-file.html#OstreeRepoFile" title="OstreeRepoFile"><span class="type">OstreeRepoFile</span></a> *self</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">int</span> n</code></em>,
|
||||||
|
<em class="parameter"><code>const <span class="type">char</span> *attributes</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFileQueryInfoFlags</span> flags</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GFileInfo</span> **out_info</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
|
||||||
|
<em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="refsect1">
|
||||||
|
<a name="ostree-ostree-repo-file.other_details"></a><h2>Types and Values</h2>
|
||||||
|
<div class="refsect2">
|
||||||
|
<a name="OstreeRepoFile"></a><h3>OstreeRepoFile</h3>
|
||||||
|
<pre class="programlisting">typedef struct OstreeRepoFile OstreeRepoFile;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<hr>Generated by GTK-Doc V1.25</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,438 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<book xmlns="http://www.devhelp.net/book" title="OSTree API references" link="index.html" author="" name="ostree" version="2" language="c">
|
||||||
|
<chapters>
|
||||||
|
<sub name="API Reference" link="reference.html">
|
||||||
|
<sub name="Core repository-independent functions" link="ostree-Core-repository-independent-functions.html"/>
|
||||||
|
<sub name="Content-addressed object store" link="ostree-Content-addressed-object-store.html"/>
|
||||||
|
<sub name="In-memory modifiable filesystem tree" link="ostree-In-memory-modifiable-filesystem-tree.html"/>
|
||||||
|
<sub name="Root partition mount point" link="ostree-Root-partition-mount-point.html"/>
|
||||||
|
<sub name="Progress notification system for asynchronous operations" link="ostree-Progress-notification-system-for-asynchronous-operations.html"/>
|
||||||
|
<sub name="SELinux policy management" link="ostree-SELinux-policy-management.html"/>
|
||||||
|
<sub name="Simple upgrade class" link="ostree-Simple-upgrade-class.html"/>
|
||||||
|
<sub name="GPG signature verification results" link="ostree-GPG-signature-verification-results.html"/>
|
||||||
|
<sub name="ostree-bootconfig-parser" link="ostree-ostree-bootconfig-parser.html"/>
|
||||||
|
<sub name="ostree-chain-input-stream" link="ostree-ostree-chain-input-stream.html"/>
|
||||||
|
<sub name="ostree-checksum-input-stream" link="ostree-ostree-checksum-input-stream.html"/>
|
||||||
|
<sub name="ostree-deployment" link="ostree-ostree-deployment.html"/>
|
||||||
|
<sub name="ostree-diff" link="ostree-ostree-diff.html"/>
|
||||||
|
<sub name="ostree-repo-file" link="ostree-ostree-repo-file.html"/>
|
||||||
|
<sub name="API Index" link="reference.html#api-index-full"/>
|
||||||
|
</sub>
|
||||||
|
</chapters>
|
||||||
|
<functions>
|
||||||
|
<keyword type="macro" name="OSTREE_OBJECT_TYPE_IS_META()" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-IS-META:CAPS"/>
|
||||||
|
<keyword type="function" name="ostree_metadata_variant_type ()" link="ostree-Core-repository-independent-functions.html#ostree-metadata-variant-type"/>
|
||||||
|
<keyword type="function" name="ostree_validate_checksum_string ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-checksum-string"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_to_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-to-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_to_bytes_v ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-to-bytes-v"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_from_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-from-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_from_bytes_v ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-from-bytes-v"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_inplace_from_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-inplace-from-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_inplace_to_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-inplace-to-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_bytes_peek ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-bytes-peek"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_bytes_peek_validate ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-bytes-peek-validate"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_b64_from_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-b64-from-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_b64_to_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-b64-to-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_b64_inplace_from_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-b64-inplace-from-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_b64_inplace_to_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-b64-inplace-to-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_cmp_checksum_bytes ()" link="ostree-Core-repository-independent-functions.html#ostree-cmp-checksum-bytes"/>
|
||||||
|
<keyword type="function" name="ostree_validate_rev ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-rev"/>
|
||||||
|
<keyword type="function" name="ostree_parse_refspec ()" link="ostree-Core-repository-independent-functions.html#ostree-parse-refspec"/>
|
||||||
|
<keyword type="function" name="ostree_object_type_to_string ()" link="ostree-Core-repository-independent-functions.html#ostree-object-type-to-string"/>
|
||||||
|
<keyword type="function" name="ostree_object_type_from_string ()" link="ostree-Core-repository-independent-functions.html#ostree-object-type-from-string"/>
|
||||||
|
<keyword type="function" name="ostree_hash_object_name ()" link="ostree-Core-repository-independent-functions.html#ostree-hash-object-name"/>
|
||||||
|
<keyword type="function" name="ostree_object_name_serialize ()" link="ostree-Core-repository-independent-functions.html#ostree-object-name-serialize"/>
|
||||||
|
<keyword type="function" name="ostree_object_name_deserialize ()" link="ostree-Core-repository-independent-functions.html#ostree-object-name-deserialize"/>
|
||||||
|
<keyword type="function" name="ostree_object_to_string ()" link="ostree-Core-repository-independent-functions.html#ostree-object-to-string"/>
|
||||||
|
<keyword type="function" name="ostree_object_from_string ()" link="ostree-Core-repository-independent-functions.html#ostree-object-from-string"/>
|
||||||
|
<keyword type="function" name="ostree_content_stream_parse ()" link="ostree-Core-repository-independent-functions.html#ostree-content-stream-parse"/>
|
||||||
|
<keyword type="function" name="ostree_content_file_parse ()" link="ostree-Core-repository-independent-functions.html#ostree-content-file-parse"/>
|
||||||
|
<keyword type="function" name="ostree_content_file_parse_at ()" link="ostree-Core-repository-independent-functions.html#ostree-content-file-parse-at"/>
|
||||||
|
<keyword type="function" name="ostree_raw_file_to_archive_z2_stream ()" link="ostree-Core-repository-independent-functions.html#ostree-raw-file-to-archive-z2-stream"/>
|
||||||
|
<keyword type="function" name="ostree_raw_file_to_content_stream ()" link="ostree-Core-repository-independent-functions.html#ostree-raw-file-to-content-stream"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_file_from_input ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-file-from-input"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_file ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-file"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_file_async ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-file-async"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_file_async_finish ()" link="ostree-Core-repository-independent-functions.html#ostree-checksum-file-async-finish"/>
|
||||||
|
<keyword type="function" name="ostree_create_directory_metadata ()" link="ostree-Core-repository-independent-functions.html#ostree-create-directory-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_objtype ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-objtype"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_csum_v ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-csum-v"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_checksum_string ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-checksum-string"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_file_mode ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-file-mode"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_commit ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-commit"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_dirtree ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-dirtree"/>
|
||||||
|
<keyword type="function" name="ostree_validate_structureof_dirmeta ()" link="ostree-Core-repository-independent-functions.html#ostree-validate-structureof-dirmeta"/>
|
||||||
|
<keyword type="function" name="ostree_commit_get_parent ()" link="ostree-Core-repository-independent-functions.html#ostree-commit-get-parent"/>
|
||||||
|
<keyword type="function" name="ostree_commit_get_timestamp ()" link="ostree-Core-repository-independent-functions.html#ostree-commit-get-timestamp"/>
|
||||||
|
<keyword type="macro" name="OSTREE_MAX_METADATA_SIZE" link="ostree-Core-repository-independent-functions.html#OSTREE-MAX-METADATA-SIZE:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_MAX_METADATA_WARN_SIZE" link="ostree-Core-repository-independent-functions.html#OSTREE-MAX-METADATA-WARN-SIZE:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_MAX_RECURSION" link="ostree-Core-repository-independent-functions.html#OSTREE-MAX-RECURSION:CAPS"/>
|
||||||
|
<keyword type="enum" name="enum OstreeObjectType" link="ostree-Core-repository-independent-functions.html#OstreeObjectType"/>
|
||||||
|
<keyword type="macro" name="OSTREE_OBJECT_TYPE_LAST" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-LAST:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_DIRMETA_GVARIANT_STRING" link="ostree-Core-repository-independent-functions.html#OSTREE-DIRMETA-GVARIANT-STRING:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_DIRMETA_GVARIANT_FORMAT" link="ostree-Core-repository-independent-functions.html#OSTREE-DIRMETA-GVARIANT-FORMAT:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_FILEMETA_GVARIANT_STRING" link="ostree-Core-repository-independent-functions.html#OSTREE-FILEMETA-GVARIANT-STRING:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_FILEMETA_GVARIANT_FORMAT" link="ostree-Core-repository-independent-functions.html#OSTREE-FILEMETA-GVARIANT-FORMAT:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_TREE_GVARIANT_STRING" link="ostree-Core-repository-independent-functions.html#OSTREE-TREE-GVARIANT-STRING:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_TREE_GVARIANT_FORMAT" link="ostree-Core-repository-independent-functions.html#OSTREE-TREE-GVARIANT-FORMAT:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_COMMIT_GVARIANT_STRING" link="ostree-Core-repository-independent-functions.html#OSTREE-COMMIT-GVARIANT-STRING:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_COMMIT_GVARIANT_FORMAT" link="ostree-Core-repository-independent-functions.html#OSTREE-COMMIT-GVARIANT-FORMAT:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_SUMMARY_GVARIANT_STRING" link="ostree-Core-repository-independent-functions.html#OSTREE-SUMMARY-GVARIANT-STRING:CAPS"/>
|
||||||
|
<keyword type="macro" name="OSTREE_SUMMARY_GVARIANT_FORMAT" link="ostree-Core-repository-independent-functions.html#OSTREE-SUMMARY-GVARIANT-FORMAT:CAPS"/>
|
||||||
|
<keyword type="function" name="ostree_repo_mode_from_string ()" link="ostree-Content-addressed-object-store.html#ostree-repo-mode-from-string"/>
|
||||||
|
<keyword type="function" name="ostree_repo_new ()" link="ostree-Content-addressed-object-store.html#ostree-repo-new"/>
|
||||||
|
<keyword type="function" name="ostree_repo_new_for_sysroot_path ()" link="ostree-Content-addressed-object-store.html#ostree-repo-new-for-sysroot-path"/>
|
||||||
|
<keyword type="function" name="ostree_repo_new_default ()" link="ostree-Content-addressed-object-store.html#ostree-repo-new-default"/>
|
||||||
|
<keyword type="function" name="ostree_repo_open ()" link="ostree-Content-addressed-object-store.html#ostree-repo-open"/>
|
||||||
|
<keyword type="function" name="ostree_repo_set_disable_fsync ()" link="ostree-Content-addressed-object-store.html#ostree-repo-set-disable-fsync"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_disable_fsync ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-disable-fsync"/>
|
||||||
|
<keyword type="function" name="ostree_repo_is_system ()" link="ostree-Content-addressed-object-store.html#ostree-repo-is-system"/>
|
||||||
|
<keyword type="function" name="ostree_repo_is_writable ()" link="ostree-Content-addressed-object-store.html#ostree-repo-is-writable"/>
|
||||||
|
<keyword type="function" name="ostree_repo_create ()" link="ostree-Content-addressed-object-store.html#ostree-repo-create"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_path ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-path"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_mode ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-mode"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_config ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-config"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_dfd ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-dfd"/>
|
||||||
|
<keyword type="function" name="ostree_repo_copy_config ()" link="ostree-Content-addressed-object-store.html#ostree-repo-copy-config"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_add ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-add"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_delete ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-delete"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_change ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-change"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_list ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-list"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_get_url ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-get-url"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_get_gpg_verify ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-get-gpg-verify"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_get_gpg_verify_summary ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-get-gpg-verify-summary"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_gpg_import ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-gpg-import"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_fetch_summary ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-fetch-summary"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_fetch_summary_with_options ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-fetch-summary-with-options"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_remote_boolean_option ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-remote-boolean-option"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_remote_list_option ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-remote-list-option"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_remote_option ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-remote-option"/>
|
||||||
|
<keyword type="function" name="ostree_repo_get_parent ()" link="ostree-Content-addressed-object-store.html#ostree-repo-get-parent"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_config ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-config"/>
|
||||||
|
<keyword type="function" name="ostree_repo_scan_hardlinks ()" link="ostree-Content-addressed-object-store.html#ostree-repo-scan-hardlinks"/>
|
||||||
|
<keyword type="function" name="ostree_repo_prepare_transaction ()" link="ostree-Content-addressed-object-store.html#ostree-repo-prepare-transaction"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_transaction ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-transaction"/>
|
||||||
|
<keyword type="function" name="ostree_repo_abort_transaction ()" link="ostree-Content-addressed-object-store.html#ostree-repo-abort-transaction"/>
|
||||||
|
<keyword type="function" name="ostree_repo_transaction_set_refspec ()" link="ostree-Content-addressed-object-store.html#ostree-repo-transaction-set-refspec"/>
|
||||||
|
<keyword type="function" name="ostree_repo_transaction_set_ref ()" link="ostree-Content-addressed-object-store.html#ostree-repo-transaction-set-ref"/>
|
||||||
|
<keyword type="function" name="ostree_repo_set_ref_immediate ()" link="ostree-Content-addressed-object-store.html#ostree-repo-set-ref-immediate"/>
|
||||||
|
<keyword type="function" name="ostree_repo_set_cache_dir ()" link="ostree-Content-addressed-object-store.html#ostree-repo-set-cache-dir"/>
|
||||||
|
<keyword type="function" name="ostree_repo_sign_delta ()" link="ostree-Content-addressed-object-store.html#ostree-repo-sign-delta"/>
|
||||||
|
<keyword type="function" name="ostree_repo_has_object ()" link="ostree-Content-addressed-object-store.html#ostree-repo-has-object"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_metadata ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_metadata_async ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-metadata-async"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_metadata_finish ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-metadata-finish"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_content ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-content"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_metadata_trusted ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-metadata-trusted"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_metadata_stream_trusted ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-metadata-stream-trusted"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_content_trusted ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-content-trusted"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_content_async ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-content-async"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_content_finish ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-content-finish"/>
|
||||||
|
<keyword type="function" name="ostree_repo_resolve_rev ()" link="ostree-Content-addressed-object-store.html#ostree-repo-resolve-rev"/>
|
||||||
|
<keyword type="function" name="ostree_repo_resolve_rev_ext ()" link="ostree-Content-addressed-object-store.html#ostree-repo-resolve-rev-ext"/>
|
||||||
|
<keyword type="function" name="ostree_repo_list_refs ()" link="ostree-Content-addressed-object-store.html#ostree-repo-list-refs"/>
|
||||||
|
<keyword type="function" name="ostree_repo_list_refs_ext ()" link="ostree-Content-addressed-object-store.html#ostree-repo-list-refs-ext"/>
|
||||||
|
<keyword type="function" name="ostree_repo_remote_list_refs ()" link="ostree-Content-addressed-object-store.html#ostree-repo-remote-list-refs"/>
|
||||||
|
<keyword type="function" name="ostree_repo_load_variant ()" link="ostree-Content-addressed-object-store.html#ostree-repo-load-variant"/>
|
||||||
|
<keyword type="function" name="ostree_repo_load_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-load-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_load_variant_if_exists ()" link="ostree-Content-addressed-object-store.html#ostree-repo-load-variant-if-exists"/>
|
||||||
|
<keyword type="function" name="ostree_repo_load_file ()" link="ostree-Content-addressed-object-store.html#ostree-repo-load-file"/>
|
||||||
|
<keyword type="function" name="ostree_repo_load_object_stream ()" link="ostree-Content-addressed-object-store.html#ostree-repo-load-object-stream"/>
|
||||||
|
<keyword type="function" name="ostree_repo_query_object_storage_size ()" link="ostree-Content-addressed-object-store.html#ostree-repo-query-object-storage-size"/>
|
||||||
|
<keyword type="function" name="ostree_repo_import_object_from ()" link="ostree-Content-addressed-object-store.html#ostree-repo-import-object-from"/>
|
||||||
|
<keyword type="function" name="ostree_repo_import_object_from_with_trust ()" link="ostree-Content-addressed-object-store.html#ostree-repo-import-object-from-with-trust"/>
|
||||||
|
<keyword type="function" name="ostree_repo_import_archive_to_mtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-import-archive-to-mtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_export_tree_to_archive ()" link="ostree-Content-addressed-object-store.html#ostree-repo-export-tree-to-archive"/>
|
||||||
|
<keyword type="function" name="ostree_repo_delete_object ()" link="ostree-Content-addressed-object-store.html#ostree-repo-delete-object"/>
|
||||||
|
<keyword type="function" name="OstreeRepoCommitFilter ()" link="ostree-Content-addressed-object-store.html#OstreeRepoCommitFilter"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_new ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-new"/>
|
||||||
|
<keyword type="function" name="OstreeRepoCommitModifierXattrCallback ()" link="ostree-Content-addressed-object-store.html#OstreeRepoCommitModifierXattrCallback"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_set_xattr_callback ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-set-xattr-callback"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_set_sepolicy ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-set-sepolicy"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_set_devino_cache ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-set-devino-cache"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_ref ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-ref"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_modifier_unref ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-modifier-unref"/>
|
||||||
|
<keyword type="function" name="ostree_repo_devino_cache_new ()" link="ostree-Content-addressed-object-store.html#ostree-repo-devino-cache-new"/>
|
||||||
|
<keyword type="function" name="ostree_repo_devino_cache_ref ()" link="ostree-Content-addressed-object-store.html#ostree-repo-devino-cache-ref"/>
|
||||||
|
<keyword type="function" name="ostree_repo_devino_cache_unref ()" link="ostree-Content-addressed-object-store.html#ostree-repo-devino-cache-unref"/>
|
||||||
|
<keyword type="function" name="ostree_repo_devino_cache_get_type ()" link="ostree-Content-addressed-object-store.html#ostree-repo-devino-cache-get-type"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_directory_to_mtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-directory-to-mtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_dfd_to_mtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-dfd-to-mtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_archive_to_mtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-archive-to-mtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_mtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-mtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_commit_with_time ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-commit-with-time"/>
|
||||||
|
<keyword type="function" name="ostree_repo_read_commit_detached_metadata ()" link="ostree-Content-addressed-object-store.html#ostree-repo-read-commit-detached-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_repo_write_commit_detached_metadata ()" link="ostree-Content-addressed-object-store.html#ostree-repo-write-commit-detached-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_repo_checkout_tree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-checkout-tree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_checkout_tree_at ()" link="ostree-Content-addressed-object-store.html#ostree-repo-checkout-tree-at" deprecated=""/>
|
||||||
|
<keyword type="function" name="ostree_repo_checkout_at ()" link="ostree-Content-addressed-object-store.html#ostree-repo-checkout-at"/>
|
||||||
|
<keyword type="function" name="ostree_repo_checkout_gc ()" link="ostree-Content-addressed-object-store.html#ostree-repo-checkout-gc"/>
|
||||||
|
<keyword type="function" name="ostree_repo_read_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-read-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_list_objects ()" link="ostree-Content-addressed-object-store.html#ostree-repo-list-objects"/>
|
||||||
|
<keyword type="function" name="ostree_repo_list_commit_objects_starting_with ()" link="ostree-Content-addressed-object-store.html#ostree-repo-list-commit-objects-starting-with"/>
|
||||||
|
<keyword type="function" name="ostree_repo_list_static_delta_names ()" link="ostree-Content-addressed-object-store.html#ostree-repo-list-static-delta-names"/>
|
||||||
|
<keyword type="function" name="ostree_repo_static_delta_generate ()" link="ostree-Content-addressed-object-store.html#ostree-repo-static-delta-generate"/>
|
||||||
|
<keyword type="function" name="ostree_repo_static_delta_execute_offline ()" link="ostree-Content-addressed-object-store.html#ostree-repo-static-delta-execute-offline"/>
|
||||||
|
<keyword type="function" name="ostree_repo_traverse_new_reachable ()" link="ostree-Content-addressed-object-store.html#ostree-repo-traverse-new-reachable"/>
|
||||||
|
<keyword type="function" name="ostree_repo_traverse_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-traverse-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_traverse_commit_union ()" link="ostree-Content-addressed-object-store.html#ostree-repo-traverse-commit-union"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_cleanup ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-cleanup"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_clear ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-clear"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_get_dir ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-get-dir"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_get_file ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-get-file"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_init_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-init-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_init_dirtree ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-init-dirtree"/>
|
||||||
|
<keyword type="function" name="ostree_repo_commit_traverse_iter_next ()" link="ostree-Content-addressed-object-store.html#ostree-repo-commit-traverse-iter-next"/>
|
||||||
|
<keyword type="function" name="ostree_repo_prune ()" link="ostree-Content-addressed-object-store.html#ostree-repo-prune"/>
|
||||||
|
<keyword type="function" name="ostree_repo_prune_static_deltas ()" link="ostree-Content-addressed-object-store.html#ostree-repo-prune-static-deltas"/>
|
||||||
|
<keyword type="function" name="ostree_repo_pull ()" link="ostree-Content-addressed-object-store.html#ostree-repo-pull"/>
|
||||||
|
<keyword type="function" name="ostree_repo_pull_one_dir ()" link="ostree-Content-addressed-object-store.html#ostree-repo-pull-one-dir"/>
|
||||||
|
<keyword type="function" name="ostree_repo_pull_with_options ()" link="ostree-Content-addressed-object-store.html#ostree-repo-pull-with-options"/>
|
||||||
|
<keyword type="function" name="ostree_repo_pull_default_console_progress_changed ()" link="ostree-Content-addressed-object-store.html#ostree-repo-pull-default-console-progress-changed"/>
|
||||||
|
<keyword type="function" name="ostree_repo_sign_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-sign-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_append_gpg_signature ()" link="ostree-Content-addressed-object-store.html#ostree-repo-append-gpg-signature"/>
|
||||||
|
<keyword type="function" name="ostree_repo_add_gpg_signature_summary ()" link="ostree-Content-addressed-object-store.html#ostree-repo-add-gpg-signature-summary"/>
|
||||||
|
<keyword type="function" name="ostree_repo_gpg_verify_data ()" link="ostree-Content-addressed-object-store.html#ostree-repo-gpg-verify-data"/>
|
||||||
|
<keyword type="function" name="ostree_repo_verify_commit ()" link="ostree-Content-addressed-object-store.html#ostree-repo-verify-commit"/>
|
||||||
|
<keyword type="function" name="ostree_repo_verify_commit_ext ()" link="ostree-Content-addressed-object-store.html#ostree-repo-verify-commit-ext"/>
|
||||||
|
<keyword type="function" name="ostree_repo_verify_summary ()" link="ostree-Content-addressed-object-store.html#ostree-repo-verify-summary"/>
|
||||||
|
<keyword type="function" name="ostree_repo_regenerate_summary ()" link="ostree-Content-addressed-object-store.html#ostree-repo-regenerate-summary"/>
|
||||||
|
<keyword type="typedef" name="OstreeRepo" link="ostree-Content-addressed-object-store.html#OstreeRepo"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoMode" link="ostree-Content-addressed-object-store.html#OstreeRepoMode"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoRemoteChange" link="ostree-Content-addressed-object-store.html#OstreeRepoRemoteChange"/>
|
||||||
|
<keyword type="struct" name="struct OstreeRepoTransactionStats" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoCommitFilterResult" link="ostree-Content-addressed-object-store.html#OstreeRepoCommitFilterResult"/>
|
||||||
|
<keyword type="typedef" name="OstreeRepoCommitModifier" link="ostree-Content-addressed-object-store.html#OstreeRepoCommitModifier"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoCommitModifierFlags" link="ostree-Content-addressed-object-store.html#OstreeRepoCommitModifierFlags"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoCheckoutMode" link="ostree-Content-addressed-object-store.html#OstreeRepoCheckoutMode"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoCheckoutOverwriteMode" link="ostree-Content-addressed-object-store.html#OstreeRepoCheckoutOverwriteMode"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoListObjectsFlags" link="ostree-Content-addressed-object-store.html#OstreeRepoListObjectsFlags"/>
|
||||||
|
<keyword type="macro" name="OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-LIST-OBJECTS-VARIANT-TYPE:CAPS"/>
|
||||||
|
<keyword type="enum" name="enum OstreeStaticDeltaGenerateOpt" link="ostree-Content-addressed-object-store.html#OstreeStaticDeltaGenerateOpt"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoPruneFlags" link="ostree-Content-addressed-object-store.html#OstreeRepoPruneFlags"/>
|
||||||
|
<keyword type="enum" name="enum OstreeRepoPullFlags" link="ostree-Content-addressed-object-store.html#OstreeRepoPullFlags"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_new ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-new"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_set_metadata_checksum ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-set-metadata-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_get_metadata_checksum ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-metadata-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_set_contents_checksum ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-set-contents-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_get_contents_checksum ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-contents-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_replace_file ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-replace-file"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_ensure_dir ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-ensure-dir"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_lookup ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-lookup"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_ensure_parent_dirs ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-ensure-parent-dirs"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_walk ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-walk"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_get_subdirs ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-subdirs"/>
|
||||||
|
<keyword type="function" name="ostree_mutable_tree_get_files ()" link="ostree-In-memory-modifiable-filesystem-tree.html#ostree-mutable-tree-get-files"/>
|
||||||
|
<keyword type="typedef" name="OstreeMutableTree" link="ostree-In-memory-modifiable-filesystem-tree.html#OstreeMutableTree"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_new ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-new"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_new_default ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-new-default"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_path ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-path"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_load ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-load"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_load_if_changed ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-load-if-changed"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_lock ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-lock"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_try_lock ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-try-lock"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_lock_async ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-lock-async"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_lock_finish ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-lock-finish"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_unlock ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-unlock"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_unload ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-unload"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_fd ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-fd"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_ensure_initialized ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-ensure-initialized"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_bootversion ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-bootversion"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_subbootversion ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-subbootversion"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_deployments ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-deployments"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_booted_deployment ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-booted-deployment"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_deployment_directory ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-deployment-directory"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_deployment_dirpath ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-deployment-dirpath"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_deployment_origin_path ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-deployment-origin-path"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_cleanup ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-cleanup"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_prepare_cleanup ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-prepare-cleanup"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_repo ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-repo"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_init_osname ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-init-osname"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_deployment_set_kargs ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-deployment-set-kargs"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_deployment_set_mutable ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-deployment-set-mutable"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_deployment_unlock ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-deployment-unlock"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_write_deployments ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-write-deployments"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_write_origin_file ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-write-origin-file"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_deploy_tree ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-deploy-tree"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_get_merge_deployment ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-get-merge-deployment"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_origin_new_from_refspec ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-origin-new-from-refspec"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_simple_write_deployment ()" link="ostree-Root-partition-mount-point.html#ostree-sysroot-simple-write-deployment"/>
|
||||||
|
<keyword type="typedef" name="OstreeSysroot" link="ostree-Root-partition-mount-point.html#OstreeSysroot"/>
|
||||||
|
<keyword type="enum" name="enum OstreeSysrootSimpleWriteDeploymentFlags" link="ostree-Root-partition-mount-point.html#OstreeSysrootSimpleWriteDeploymentFlags"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_new ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-new"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_new_and_connect ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-new-and-connect"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_get_status ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-status"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_get_uint ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-uint"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_get_uint64 ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-get-uint64"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_set_status ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-status"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_set_uint ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-uint"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_set_uint64 ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-set-uint64"/>
|
||||||
|
<keyword type="function" name="ostree_async_progress_finish ()" link="ostree-Progress-notification-system-for-asynchronous-operations.html#ostree-async-progress-finish"/>
|
||||||
|
<keyword type="typedef" name="OstreeAsyncProgress" link="ostree-Progress-notification-system-for-asynchronous-operations.html#OstreeAsyncProgress"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_new ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-new"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_get_path ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-get-path"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_get_name ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-get-name"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_get_label ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-get-label"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_get_csum ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-get-csum"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_restorecon ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-restorecon"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_setfscreatecon ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-setfscreatecon"/>
|
||||||
|
<keyword type="function" name="ostree_sepolicy_fscreatecon_cleanup ()" link="ostree-SELinux-policy-management.html#ostree-sepolicy-fscreatecon-cleanup"/>
|
||||||
|
<keyword type="typedef" name="OstreeSePolicy" link="ostree-SELinux-policy-management.html#OstreeSePolicy"/>
|
||||||
|
<keyword type="enum" name="enum OstreeSePolicyRestoreconFlags" link="ostree-SELinux-policy-management.html#OstreeSePolicyRestoreconFlags"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_new ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_new_for_os ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new-for-os"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_new_for_os_with_flags ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-new-for-os-with-flags"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_get_origin ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-get-origin"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_dup_origin ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-dup-origin"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_set_origin ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-set-origin"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_get_origin_description ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-get-origin-description"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_check_timestamps ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-check-timestamps"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_pull ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-pull"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_pull_one_dir ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-pull-one-dir"/>
|
||||||
|
<keyword type="function" name="ostree_sysroot_upgrader_deploy ()" link="ostree-Simple-upgrade-class.html#ostree-sysroot-upgrader-deploy"/>
|
||||||
|
<keyword type="typedef" name="OstreeSysrootUpgrader" link="ostree-Simple-upgrade-class.html#OstreeSysrootUpgrader"/>
|
||||||
|
<keyword type="enum" name="enum OstreeSysrootUpgraderFlags" link="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderFlags"/>
|
||||||
|
<keyword type="enum" name="enum OstreeSysrootUpgraderPullFlags" link="ostree-Simple-upgrade-class.html#OstreeSysrootUpgraderPullFlags"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_count_all ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-all"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_count_valid ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-count-valid"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_lookup ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-lookup"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_get ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_get_all ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-get-all"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_describe ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_describe_variant ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-describe-variant"/>
|
||||||
|
<keyword type="function" name="ostree_gpg_verify_result_require_valid_signature ()" link="ostree-GPG-signature-verification-results.html#ostree-gpg-verify-result-require-valid-signature"/>
|
||||||
|
<keyword type="typedef" name="OstreeGpgVerifyResult" link="ostree-GPG-signature-verification-results.html#OstreeGpgVerifyResult"/>
|
||||||
|
<keyword type="enum" name="enum OstreeGpgSignatureAttr" link="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureAttr"/>
|
||||||
|
<keyword type="enum" name="enum OstreeGpgSignatureFormatFlags" link="ostree-GPG-signature-verification-results.html#OstreeGpgSignatureFormatFlags"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_new ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-new"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_clone ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-clone"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_parse ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-parse"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_parse_at ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-parse-at"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_write ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-write"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_write_at ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-write-at"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_set ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-set"/>
|
||||||
|
<keyword type="function" name="ostree_bootconfig_parser_get ()" link="ostree-ostree-bootconfig-parser.html#ostree-bootconfig-parser-get"/>
|
||||||
|
<keyword type="struct" name="OstreeBootconfigParser" link="ostree-ostree-bootconfig-parser.html#OstreeBootconfigParser"/>
|
||||||
|
<keyword type="function" name="ostree_chain_input_stream_new ()" link="ostree-ostree-chain-input-stream.html#ostree-chain-input-stream-new"/>
|
||||||
|
<keyword type="struct" name="struct OstreeChainInputStream" link="ostree-ostree-chain-input-stream.html#OstreeChainInputStream"/>
|
||||||
|
<keyword type="function" name="ostree_checksum_input_stream_new ()" link="ostree-ostree-checksum-input-stream.html#ostree-checksum-input-stream-new"/>
|
||||||
|
<keyword type="struct" name="struct OstreeChecksumInputStream" link="ostree-ostree-checksum-input-stream.html#OstreeChecksumInputStream"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_hash ()" link="ostree-ostree-deployment.html#ostree-deployment-hash"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_equal ()" link="ostree-ostree-deployment.html#ostree-deployment-equal"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_new ()" link="ostree-ostree-deployment.html#ostree-deployment-new"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_index ()" link="ostree-ostree-deployment.html#ostree-deployment-get-index"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_osname ()" link="ostree-ostree-deployment.html#ostree-deployment-get-osname"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_deployserial ()" link="ostree-ostree-deployment.html#ostree-deployment-get-deployserial"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_csum ()" link="ostree-ostree-deployment.html#ostree-deployment-get-csum"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_bootcsum ()" link="ostree-ostree-deployment.html#ostree-deployment-get-bootcsum"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_bootserial ()" link="ostree-ostree-deployment.html#ostree-deployment-get-bootserial"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_bootconfig ()" link="ostree-ostree-deployment.html#ostree-deployment-get-bootconfig"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_origin ()" link="ostree-ostree-deployment.html#ostree-deployment-get-origin"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_origin_relpath ()" link="ostree-ostree-deployment.html#ostree-deployment-get-origin-relpath"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_get_unlocked ()" link="ostree-ostree-deployment.html#ostree-deployment-get-unlocked"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_set_index ()" link="ostree-ostree-deployment.html#ostree-deployment-set-index"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_set_bootserial ()" link="ostree-ostree-deployment.html#ostree-deployment-set-bootserial"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_set_bootconfig ()" link="ostree-ostree-deployment.html#ostree-deployment-set-bootconfig"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_set_origin ()" link="ostree-ostree-deployment.html#ostree-deployment-set-origin"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_clone ()" link="ostree-ostree-deployment.html#ostree-deployment-clone"/>
|
||||||
|
<keyword type="function" name="ostree_deployment_unlocked_state_to_string ()" link="ostree-ostree-deployment.html#ostree-deployment-unlocked-state-to-string"/>
|
||||||
|
<keyword type="struct" name="OstreeDeployment" link="ostree-ostree-deployment.html#OstreeDeployment"/>
|
||||||
|
<keyword type="function" name="ostree_diff_item_ref ()" link="ostree-ostree-diff.html#ostree-diff-item-ref"/>
|
||||||
|
<keyword type="function" name="ostree_diff_item_unref ()" link="ostree-ostree-diff.html#ostree-diff-item-unref"/>
|
||||||
|
<keyword type="function" name="ostree_diff_dirs ()" link="ostree-ostree-diff.html#ostree-diff-dirs"/>
|
||||||
|
<keyword type="function" name="ostree_diff_print ()" link="ostree-ostree-diff.html#ostree-diff-print"/>
|
||||||
|
<keyword type="enum" name="enum OstreeDiffFlags" link="ostree-ostree-diff.html#OstreeDiffFlags"/>
|
||||||
|
<keyword type="struct" name="struct OstreeDiffItem" link="ostree-ostree-diff.html#OstreeDiffItem"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_ensure_resolved ()" link="ostree-ostree-repo-file.html#ostree-repo-file-ensure-resolved"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_get_xattrs ()" link="ostree-ostree-repo-file.html#ostree-repo-file-get-xattrs"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_get_repo ()" link="ostree-ostree-repo-file.html#ostree-repo-file-get-repo"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_get_root ()" link="ostree-ostree-repo-file.html#ostree-repo-file-get-root"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_set_metadata ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-set-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_get_contents_checksum ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-contents-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_get_metadata_checksum ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-metadata-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_get_contents ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-contents"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_get_metadata ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-get-metadata"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_get_checksum ()" link="ostree-ostree-repo-file.html#ostree-repo-file-get-checksum"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_find_child ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-find-child"/>
|
||||||
|
<keyword type="function" name="ostree_repo_file_tree_query_child ()" link="ostree-ostree-repo-file.html#ostree-repo-file-tree-query-child"/>
|
||||||
|
<keyword type="typedef" name="OstreeRepoFile" link="ostree-ostree-repo-file.html#OstreeRepoFile"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_FILE" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-FILE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_DIR_TREE" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-DIR-TREE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_DIR_META" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-DIR-META:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_COMMIT" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-COMMIT:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-TOMBSTONE-COMMIT:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_OBJECT_TYPE_COMMIT_META" link="ostree-Core-repository-independent-functions.html#OSTREE-OBJECT-TYPE-COMMIT-META:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_MODE_BARE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-MODE-BARE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_MODE_ARCHIVE_Z2" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-MODE-ARCHIVE-Z2:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_MODE_BARE_USER" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-MODE-BARE-USER:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_REMOTE_CHANGE_ADD" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-REMOTE-CHANGE-ADD:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-REMOTE-CHANGE-ADD-IF-NOT-EXISTS:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_REMOTE_CHANGE_DELETE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-REMOTE-CHANGE-DELETE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-REMOTE-CHANGE-DELETE-IF-EXISTS:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_COMMIT_FILTER_ALLOW" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-COMMIT-FILTER-ALLOW:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_COMMIT_FILTER_SKIP" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-COMMIT-FILTER-SKIP:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_NONE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-SKIP-XATTRS:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-GENERATE-SIZES:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_MODE_NONE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-CHECKOUT-MODE-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_MODE_USER" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-CHECKOUT-MODE-USER:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_OVERWRITE_NONE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-CHECKOUT-OVERWRITE-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-CHECKOUT-OVERWRITE-UNION-FILES:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_LIST_OBJECTS_LOOSE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-LIST-OBJECTS-LOOSE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_LIST_OBJECTS_PACKED" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-LIST-OBJECTS-PACKED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_LIST_OBJECTS_ALL" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-LIST-OBJECTS-ALL:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY" link="ostree-Content-addressed-object-store.html#OSTREE-STATIC-DELTA-GENERATE-OPT-LOWLATENCY:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR" link="ostree-Content-addressed-object-store.html#OSTREE-STATIC-DELTA-GENERATE-OPT-MAJOR:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PRUNE_FLAGS_NONE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PRUNE-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PRUNE-FLAGS-NO-PRUNE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PRUNE-FLAGS-REFS-ONLY:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PULL_FLAGS_NONE" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PULL-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PULL_FLAGS_MIRROR" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PULL-FLAGS-MIRROR:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PULL_FLAGS_COMMIT_ONLY" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PULL-FLAGS-COMMIT-ONLY:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_REPO_PULL_FLAGS_UNTRUSTED" link="ostree-Content-addressed-object-store.html#OSTREE-REPO-PULL-FLAGS-UNTRUSTED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NONE" link="ostree-Root-partition-mount-point.html#OSTREE-SYSROOT-SIMPLE-WRITE-DEPLOYMENT-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN" link="ostree-Root-partition-mount-point.html#OSTREE-SYSROOT-SIMPLE-WRITE-DEPLOYMENT-FLAGS-RETAIN:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NOT_DEFAULT" link="ostree-Root-partition-mount-point.html#OSTREE-SYSROOT-SIMPLE-WRITE-DEPLOYMENT-FLAGS-NOT-DEFAULT:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SEPOLICY_RESTORECON_FLAGS_NONE" link="ostree-SELinux-policy-management.html#OSTREE-SEPOLICY-RESTORECON-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SEPOLICY_RESTORECON_FLAGS_ALLOW_NOLABEL" link="ostree-SELinux-policy-management.html#OSTREE-SEPOLICY-RESTORECON-FLAGS-ALLOW-NOLABEL:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SEPOLICY_RESTORECON_FLAGS_KEEP_EXISTING" link="ostree-SELinux-policy-management.html#OSTREE-SEPOLICY-RESTORECON-FLAGS-KEEP-EXISTING:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_UPGRADER_FLAGS_NONE" link="ostree-Simple-upgrade-class.html#OSTREE-SYSROOT-UPGRADER-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED" link="ostree-Simple-upgrade-class.html#OSTREE-SYSROOT-UPGRADER-FLAGS-IGNORE-UNCONFIGURED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_NONE" link="ostree-Simple-upgrade-class.html#OSTREE-SYSROOT-UPGRADER-PULL-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_ALLOW_OLDER" link="ostree-Simple-upgrade-class.html#OSTREE-SYSROOT-UPGRADER-PULL-FLAGS-ALLOW-OLDER:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_VALID" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-VALID:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_SIG_EXPIRED" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-SIG-EXPIRED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_KEY_EXPIRED" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-KEY-EXPIRED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_KEY_REVOKED" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-KEY-REVOKED:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_KEY_MISSING" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-KEY-MISSING:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-FINGERPRINT:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_TIMESTAMP" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-TIMESTAMP:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_EXP_TIMESTAMP" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-EXP-TIMESTAMP:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_PUBKEY_ALGO_NAME" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-PUBKEY-ALGO-NAME:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_HASH_ALGO_NAME" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-HASH-ALGO-NAME:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_USER_NAME" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-USER-NAME:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_ATTR_USER_EMAIL" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-ATTR-USER-EMAIL:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT" link="ostree-GPG-signature-verification-results.html#OSTREE-GPG-SIGNATURE-FORMAT-DEFAULT:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_DIFF_FLAGS_NONE" link="ostree-ostree-diff.html#OSTREE-DIFF-FLAGS-NONE:CAPS"/>
|
||||||
|
<keyword type="constant" name="OSTREE_DIFF_FLAGS_IGNORE_XATTRS" link="ostree-ostree-diff.html#OSTREE-DIFF-FLAGS-IGNORE-XATTRS:CAPS"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.metadata-objects-total" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.metadata-objects-total"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.metadata-objects-written" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.metadata-objects-written"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.content-objects-total" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.content-objects-total"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.content-objects-written" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.content-objects-written"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.content-bytes-written" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.content-bytes-written"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.padding1" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.padding1"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.padding2" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.padding2"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.padding3" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.padding3"/>
|
||||||
|
<keyword type="member" name="OstreeRepoTransactionStats.padding4" link="ostree-Content-addressed-object-store.html#OstreeRepoTransactionStats.padding4"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.index" link="ostree-ostree-deployment.html#OstreeDeployment.index"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.osname" link="ostree-ostree-deployment.html#OstreeDeployment.osname"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.csum" link="ostree-ostree-deployment.html#OstreeDeployment.csum"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.deployserial" link="ostree-ostree-deployment.html#OstreeDeployment.deployserial"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.bootcsum" link="ostree-ostree-deployment.html#OstreeDeployment.bootcsum"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.bootserial" link="ostree-ostree-deployment.html#OstreeDeployment.bootserial"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.bootconfig" link="ostree-ostree-deployment.html#OstreeDeployment.bootconfig"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.origin" link="ostree-ostree-deployment.html#OstreeDeployment.origin"/>
|
||||||
|
<keyword type="member" name="OstreeDeployment.unlocked" link="ostree-ostree-deployment.html#OstreeDeployment.unlocked"/>
|
||||||
|
</functions>
|
||||||
|
</book>
|
||||||
|
After Width: | Height: | Size: 373 B |
|
After Width: | Height: | Size: 261 B |
|
|
@ -0,0 +1,479 @@
|
||||||
|
body
|
||||||
|
{
|
||||||
|
font-family: cantarell, sans-serif;
|
||||||
|
}
|
||||||
|
.synopsis, .classsynopsis
|
||||||
|
{
|
||||||
|
/* tango:aluminium 1/2 */
|
||||||
|
background: #eeeeec;
|
||||||
|
background: rgba(238, 238, 236, 0.5);
|
||||||
|
border: solid 1px rgb(238, 238, 236);
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
.programlisting
|
||||||
|
{
|
||||||
|
/* tango:sky blue 0/1 */
|
||||||
|
/* fallback for no rgba support */
|
||||||
|
background: #e6f3ff;
|
||||||
|
border: solid 1px #729fcf;
|
||||||
|
background: rgba(114, 159, 207, 0.1);
|
||||||
|
border: solid 1px rgba(114, 159, 207, 0.2);
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
.variablelist
|
||||||
|
{
|
||||||
|
padding: 4px;
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
.variablelist td:first-child
|
||||||
|
{
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gallery-float
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
div.gallery-float img
|
||||||
|
{
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
div.gallery-spacer
|
||||||
|
{
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited
|
||||||
|
{
|
||||||
|
text-decoration: none;
|
||||||
|
/* tango:sky blue 2 */
|
||||||
|
color: #3465a4;
|
||||||
|
}
|
||||||
|
a:hover
|
||||||
|
{
|
||||||
|
text-decoration: underline;
|
||||||
|
/* tango:sky blue 1 */
|
||||||
|
color: #729fcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.informaltable table
|
||||||
|
{
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 1em 0.3em;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.informaltable table td, div.informaltable table th
|
||||||
|
{
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.function_type,
|
||||||
|
.variable_type,
|
||||||
|
.property_type,
|
||||||
|
.signal_type,
|
||||||
|
.parameter_name,
|
||||||
|
.struct_member_name,
|
||||||
|
.union_member_name,
|
||||||
|
.define_keyword,
|
||||||
|
.datatype_keyword,
|
||||||
|
.typedef_keyword
|
||||||
|
{
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* dim non-primary columns */
|
||||||
|
.c_punctuation,
|
||||||
|
.function_type,
|
||||||
|
.variable_type,
|
||||||
|
.property_type,
|
||||||
|
.signal_type,
|
||||||
|
.define_keyword,
|
||||||
|
.datatype_keyword,
|
||||||
|
.typedef_keyword,
|
||||||
|
.property_flags,
|
||||||
|
.signal_flags,
|
||||||
|
.parameter_annotations,
|
||||||
|
.enum_member_annotations,
|
||||||
|
.struct_member_annotations,
|
||||||
|
.union_member_annotations
|
||||||
|
{
|
||||||
|
color: #888a85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.function_type a,
|
||||||
|
.function_type a:visited,
|
||||||
|
.function_type a:hover,
|
||||||
|
.property_type a,
|
||||||
|
.property_type a:visited,
|
||||||
|
.property_type a:hover,
|
||||||
|
.signal_type a,
|
||||||
|
.signal_type a:visited,
|
||||||
|
.signal_type a:hover,
|
||||||
|
.signal_flags a,
|
||||||
|
.signal_flags a:visited,
|
||||||
|
.signal_flags a:hover
|
||||||
|
{
|
||||||
|
color: #729fcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
td p
|
||||||
|
{
|
||||||
|
margin: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table table
|
||||||
|
{
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0px;
|
||||||
|
/* tango:aluminium 3 */
|
||||||
|
border: solid 1px #babdb6;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table table td, div.table table th
|
||||||
|
{
|
||||||
|
/* tango:aluminium 3 */
|
||||||
|
border: solid 1px #babdb6;
|
||||||
|
padding: 3px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table table th
|
||||||
|
{
|
||||||
|
/* tango:aluminium 2 */
|
||||||
|
background-color: #d3d7cf;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4
|
||||||
|
{
|
||||||
|
color: #555753;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr
|
||||||
|
{
|
||||||
|
/* tango:aluminium 1 */
|
||||||
|
color: #d3d7cf;
|
||||||
|
background: #d3d7cf;
|
||||||
|
border: none 0px;
|
||||||
|
height: 1px;
|
||||||
|
clear: both;
|
||||||
|
margin: 2.0em 0em 2.0em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl.toc dt
|
||||||
|
{
|
||||||
|
padding-bottom: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl.toc > dt
|
||||||
|
{
|
||||||
|
padding-top: 0.25em;
|
||||||
|
padding-bottom: 0.25em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl.toc > dl
|
||||||
|
{
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parameter
|
||||||
|
{
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer
|
||||||
|
{
|
||||||
|
padding-top: 3.5em;
|
||||||
|
/* tango:aluminium 3 */
|
||||||
|
color: #babdb6;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.informalfigure,
|
||||||
|
.figure
|
||||||
|
{
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.informalexample,
|
||||||
|
.example
|
||||||
|
{
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning
|
||||||
|
{
|
||||||
|
/* tango:orange 0/1 */
|
||||||
|
background: #ffeed9;
|
||||||
|
background: rgba(252, 175, 62, 0.1);
|
||||||
|
border-color: #ffb04f;
|
||||||
|
border-color: rgba(252, 175, 62, 0.2);
|
||||||
|
}
|
||||||
|
.note
|
||||||
|
{
|
||||||
|
/* tango:chameleon 0/0.5 */
|
||||||
|
background: #d8ffb2;
|
||||||
|
background: rgba(138, 226, 52, 0.1);
|
||||||
|
border-color: #abf562;
|
||||||
|
border-color: rgba(138, 226, 52, 0.2);
|
||||||
|
}
|
||||||
|
div.blockquote
|
||||||
|
{
|
||||||
|
border-color: #eeeeec;
|
||||||
|
}
|
||||||
|
.note, .warning, div.blockquote
|
||||||
|
{
|
||||||
|
padding: 0.5em;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
margin: 2em;
|
||||||
|
}
|
||||||
|
.note p, .warning p
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.warning h3.title,
|
||||||
|
div.note h3.title
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
p + div.section
|
||||||
|
{
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.refnamediv,
|
||||||
|
div.refsynopsisdiv,
|
||||||
|
div.refsect1,
|
||||||
|
div.refsect2,
|
||||||
|
div.toc,
|
||||||
|
div.section
|
||||||
|
{
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* blob links */
|
||||||
|
h2 .extralinks, h3 .extralinks
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
/* tango:aluminium 3 */
|
||||||
|
color: #babdb6;
|
||||||
|
font-size: 80%;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lineart
|
||||||
|
{
|
||||||
|
color: #d3d7cf;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.annotation
|
||||||
|
{
|
||||||
|
/* tango:aluminium 5 */
|
||||||
|
color: #555753;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.structfield
|
||||||
|
{
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
acronym,abbr
|
||||||
|
{
|
||||||
|
border-bottom: 1px dotted gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* code listings */
|
||||||
|
|
||||||
|
.listing_code .programlisting .normal,
|
||||||
|
.listing_code .programlisting .normal a,
|
||||||
|
.listing_code .programlisting .number,
|
||||||
|
.listing_code .programlisting .cbracket,
|
||||||
|
.listing_code .programlisting .symbol { color: #555753; }
|
||||||
|
.listing_code .programlisting .comment,
|
||||||
|
.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
|
||||||
|
.listing_code .programlisting .function,
|
||||||
|
.listing_code .programlisting .function a,
|
||||||
|
.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
|
||||||
|
.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */
|
||||||
|
.listing_code .programlisting .keyword,
|
||||||
|
.listing_code .programlisting .usertype,
|
||||||
|
.listing_code .programlisting .type,
|
||||||
|
.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */
|
||||||
|
|
||||||
|
.listing_frame {
|
||||||
|
/* tango:sky blue 1 */
|
||||||
|
border: solid 1px #729fcf;
|
||||||
|
border: solid 1px rgba(114, 159, 207, 0.2);
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.listing_lines, .listing_code {
|
||||||
|
margin-top: 0px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
.listing_lines {
|
||||||
|
/* tango:sky blue 0.5 */
|
||||||
|
background: #a6c5e3;
|
||||||
|
background: rgba(114, 159, 207, 0.2);
|
||||||
|
/* tango:aluminium 6 */
|
||||||
|
color: #2e3436;
|
||||||
|
}
|
||||||
|
.listing_code {
|
||||||
|
/* tango:sky blue 0 */
|
||||||
|
background: #e6f3ff;
|
||||||
|
background: rgba(114, 159, 207, 0.1);
|
||||||
|
}
|
||||||
|
.listing_code .programlisting {
|
||||||
|
/* override from previous */
|
||||||
|
border: none 0px;
|
||||||
|
padding: 0px;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
.listing_lines pre, .listing_code pre {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen {
|
||||||
|
/* these have a <sup> as a first child, but since there are no parent selectors
|
||||||
|
* we can't use that. */
|
||||||
|
a.footnote
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
top: 0em ! important;
|
||||||
|
}
|
||||||
|
/* this is needed so that the local anchors are displayed below the naviagtion */
|
||||||
|
div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
top:-5em;
|
||||||
|
}
|
||||||
|
/* this seems to be a bug in the xsl style sheets when generating indexes */
|
||||||
|
div.index div.index
|
||||||
|
{
|
||||||
|
top: 0em;
|
||||||
|
}
|
||||||
|
/* make space for the fixed navigation bar and add space at the bottom so that
|
||||||
|
* link targets appear somewhat close to top
|
||||||
|
*/
|
||||||
|
body
|
||||||
|
{
|
||||||
|
padding-top: 2.5em;
|
||||||
|
padding-bottom: 500px;
|
||||||
|
max-width: 60em;
|
||||||
|
}
|
||||||
|
p
|
||||||
|
{
|
||||||
|
max-width: 60em;
|
||||||
|
}
|
||||||
|
/* style and size the navigation bar */
|
||||||
|
table.navigation#top
|
||||||
|
{
|
||||||
|
position: fixed;
|
||||||
|
background: #e2e2e2;
|
||||||
|
border-bottom: solid 1px #babdb6;
|
||||||
|
border-spacing: 5px;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
table.navigation#top td
|
||||||
|
{
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
}
|
||||||
|
.navigation a, .navigation a:visited
|
||||||
|
{
|
||||||
|
/* tango:sky blue 3 */
|
||||||
|
color: #204a87;
|
||||||
|
}
|
||||||
|
.navigation a:hover
|
||||||
|
{
|
||||||
|
/* tango:sky blue 2 */
|
||||||
|
color: #3465a4;
|
||||||
|
}
|
||||||
|
td.shortcuts
|
||||||
|
{
|
||||||
|
/* tango:sky blue 2 */
|
||||||
|
color: #3465a4;
|
||||||
|
font-size: 80%;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
td.shortcuts .dim
|
||||||
|
{
|
||||||
|
color: #babdb6;
|
||||||
|
}
|
||||||
|
.navigation .title
|
||||||
|
{
|
||||||
|
font-size: 80%;
|
||||||
|
max-width: none;
|
||||||
|
margin: 0px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 60em) {
|
||||||
|
/* screen larger than 60em */
|
||||||
|
body { margin: auto; }
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 60em) {
|
||||||
|
/* screen less than 60em */
|
||||||
|
#nav_hierarchy { display: none; }
|
||||||
|
#nav_interfaces { display: none; }
|
||||||
|
#nav_prerequisites { display: none; }
|
||||||
|
#nav_derived_interfaces { display: none; }
|
||||||
|
#nav_implementations { display: none; }
|
||||||
|
#nav_child_properties { display: none; }
|
||||||
|
#nav_style_properties { display: none; }
|
||||||
|
#nav_index { display: none; }
|
||||||
|
#nav_glossary { display: none; }
|
||||||
|
.gallery_image { display: none; }
|
||||||
|
.property_flags { display: none; }
|
||||||
|
.signal_flags { display: none; }
|
||||||
|
.parameter_annotations { display: none; }
|
||||||
|
.enum_member_annotations { display: none; }
|
||||||
|
.struct_member_annotations { display: none; }
|
||||||
|
.union_member_annotations { display: none; }
|
||||||
|
/* now that a column is hidden, optimize space */
|
||||||
|
col.parameters_name { width: auto; }
|
||||||
|
col.parameters_description { width: auto; }
|
||||||
|
col.struct_members_name { width: auto; }
|
||||||
|
col.struct_members_description { width: auto; }
|
||||||
|
col.enum_members_name { width: auto; }
|
||||||
|
col.enum_members_description { width: auto; }
|
||||||
|
col.union_members_name { width: auto; }
|
||||||
|
col.union_members_description { width: auto; }
|
||||||
|
.listing_lines { display: none; }
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
table.navigation {
|
||||||
|
visibility: collapse;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.titlepage table.navigation {
|
||||||
|
visibility: visible;
|
||||||
|
display: table;
|
||||||
|
background: #e2e2e2;
|
||||||
|
border: solid 1px #babdb6;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 3em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 374 B |
|
After Width: | Height: | Size: 260 B |
|
|
@ -99,6 +99,8 @@ ostree_checksum_inplace_from_bytes
|
||||||
ostree_checksum_inplace_to_bytes
|
ostree_checksum_inplace_to_bytes
|
||||||
ostree_checksum_bytes_peek
|
ostree_checksum_bytes_peek
|
||||||
ostree_checksum_bytes_peek_validate
|
ostree_checksum_bytes_peek_validate
|
||||||
|
ostree_checksum_b64_from_bytes
|
||||||
|
ostree_checksum_b64_to_bytes
|
||||||
ostree_checksum_b64_inplace_from_bytes
|
ostree_checksum_b64_inplace_from_bytes
|
||||||
ostree_checksum_b64_inplace_to_bytes
|
ostree_checksum_b64_inplace_to_bytes
|
||||||
ostree_cmp_checksum_bytes
|
ostree_cmp_checksum_bytes
|
||||||
|
|
@ -342,6 +344,7 @@ OstreeRepoCheckoutMode
|
||||||
OstreeRepoCheckoutOverwriteMode
|
OstreeRepoCheckoutOverwriteMode
|
||||||
ostree_repo_checkout_tree
|
ostree_repo_checkout_tree
|
||||||
ostree_repo_checkout_tree_at
|
ostree_repo_checkout_tree_at
|
||||||
|
ostree_repo_checkout_at
|
||||||
ostree_repo_checkout_gc
|
ostree_repo_checkout_gc
|
||||||
ostree_repo_read_commit
|
ostree_repo_read_commit
|
||||||
OstreeRepoListObjectsFlags
|
OstreeRepoListObjectsFlags
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
ostree_async_progress_get_type
|
||||||
|
ostree_bootconfig_parser_get_type
|
||||||
|
ostree_chain_input_stream_get_type
|
||||||
|
ostree_checksum_input_stream_get_type
|
||||||
|
ostree_deployment_get_type
|
||||||
|
ostree_diff_item_get_type
|
||||||
|
ostree_gpg_verify_result_get_type
|
||||||
|
ostree_mutable_tree_get_type
|
||||||
|
ostree_repo_commit_modifier_get_type
|
||||||
|
ostree_repo_devino_cache_get_type
|
||||||
|
ostree_repo_file_get_type
|
||||||
|
ostree_repo_get_type
|
||||||
|
ostree_repo_transaction_stats_get_type
|
||||||
|
ostree_sepolicy_get_type
|
||||||
|
ostree_sysroot_get_type
|
||||||
|
ostree_sysroot_upgrader_flags_get_type
|
||||||
|
ostree_sysroot_upgrader_get_type
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
2016.8
|
||||||
|
|
@ -36,6 +36,9 @@ fi
|
||||||
sed -e 's,$(libglnx_srcpath),libglnx,g' < libglnx/Makefile-libglnx.am >libglnx/Makefile-libglnx.am.inc
|
sed -e 's,$(libglnx_srcpath),libglnx,g' < libglnx/Makefile-libglnx.am >libglnx/Makefile-libglnx.am.inc
|
||||||
sed -e 's,$(libbsdiff_srcpath),bsdiff,g' < bsdiff/Makefile-bsdiff.am >bsdiff/Makefile-bsdiff.am.inc
|
sed -e 's,$(libbsdiff_srcpath),bsdiff,g' < bsdiff/Makefile-bsdiff.am >bsdiff/Makefile-bsdiff.am.inc
|
||||||
|
|
||||||
|
# FIXME - figure out how to get aclocal to find this by default
|
||||||
|
ln -sf ../libglnx/libglnx.m4 buildutil/libglnx.m4
|
||||||
|
|
||||||
autoreconf --force --install --verbose
|
autoreconf --force --install --verbose
|
||||||
|
|
||||||
test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
|
test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
.deps/*
|
|
||||||
.libs/*
|
|
||||||
*.lo
|
|
||||||
*.o
|
|
||||||
.dirstamp
|
|
||||||
Makefile-bsdiff.am.inc
|
|
||||||
AUTHORS
|
|
||||||
NEWS
|
|
||||||
README
|
|
||||||
ChangeLog
|
|
||||||
COPYING
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Copyright (C) 2015 Giuseppe Scrivano <gscrivan@redhat.com>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted providing that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
EXTRA_DIST += bsdiff/bsdiff.h bsdiff/bspatch.h bsdiff/LICENSE bsdiff/README.md
|
||||||
|
|
||||||
|
libbsdiff_la_SOURCES = \
|
||||||
|
bsdiff/bsdiff.c \
|
||||||
|
bsdiff/bspatch.c \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
libbsdiff_la_CFLAGS = $(AM_CFLAGS)
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
bin_PROGRAMS = bsdiff bspatch
|
|
||||||
|
|
||||||
bsdiff_SOURCES = bsdiff.c
|
|
||||||
|
|
||||||
bspatch_SOURCES = bspatch.c
|
|
||||||
|
|
||||||
bsdiff_CFLAGS = -DBSDIFF_EXECUTABLE
|
|
||||||
bspatch_CFLAGS = -DBSPATCH_EXECUTABLE
|
|
||||||
|
|
||||||
EXTRA_DIST = bsdiff.h bspatch.h
|
|
||||||
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
touch AUTHORS NEWS README ChangeLog
|
|
||||||
cp LICENSE COPYING
|
|
||||||
|
|
||||||
autoreconf -fis
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
# -*- Autoconf -*-
|
|
||||||
# Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
AC_PREREQ([2.69])
|
|
||||||
AC_INIT([bsdiff], [0.1])
|
|
||||||
AC_CONFIG_SRCDIR([bsdiff.c])
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
|
||||||
AM_INIT_AUTOMAKE([1.9])
|
|
||||||
|
|
||||||
# Checks for programs.
|
|
||||||
AC_PROG_CC
|
|
||||||
|
|
||||||
# Checks for libraries.
|
|
||||||
# FIXME: Replace `main' with a function in `-lbz2':
|
|
||||||
AC_CHECK_LIB([bz2], [BZ2_bzReadOpen])
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([fcntl.h limits.h stddef.h stdint.h stdlib.h string.h unistd.h])
|
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_TYPE_INT64_T
|
|
||||||
AC_TYPE_OFF_T
|
|
||||||
AC_TYPE_SIZE_T
|
|
||||||
AC_TYPE_UINT8_T
|
|
||||||
|
|
||||||
# Checks for library functions.
|
|
||||||
AC_FUNC_MALLOC
|
|
||||||
AC_CHECK_FUNCS([memset])
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
|
||||||
AC_OUTPUT
|
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent tools from complaining about whitespace usage.
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
file_conv=
|
||||||
|
|
||||||
|
# func_file_conv build_file lazy
|
||||||
|
# Convert a $build file to $host form and store it in $file
|
||||||
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
|
# type is listed in (the comma separated) LAZY, no conversion will
|
||||||
|
# take place.
|
||||||
|
func_file_conv ()
|
||||||
|
{
|
||||||
|
file=$1
|
||||||
|
case $file in
|
||||||
|
/ | /[!/]*) # absolute file, and not a UNC file
|
||||||
|
if test -z "$file_conv"; then
|
||||||
|
# lazily determine how to convert abs files
|
||||||
|
case `uname -s` in
|
||||||
|
MINGW*)
|
||||||
|
file_conv=mingw
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
file_conv=cygwin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
file_conv=wine
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $file_conv/,$2, in
|
||||||
|
*,$file_conv,*)
|
||||||
|
;;
|
||||||
|
mingw/*)
|
||||||
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
|
;;
|
||||||
|
cygwin/*)
|
||||||
|
file=`cygpath -m "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
wine/*)
|
||||||
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashL linkdir
|
||||||
|
# Make cl look for libraries in LINKDIR
|
||||||
|
func_cl_dashL ()
|
||||||
|
{
|
||||||
|
func_file_conv "$1"
|
||||||
|
if test -z "$lib_path"; then
|
||||||
|
lib_path=$file
|
||||||
|
else
|
||||||
|
lib_path="$lib_path;$file"
|
||||||
|
fi
|
||||||
|
linker_opts="$linker_opts -LIBPATH:$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashl library
|
||||||
|
# Do a library search-path lookup for cl
|
||||||
|
func_cl_dashl ()
|
||||||
|
{
|
||||||
|
lib=$1
|
||||||
|
found=no
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=';'
|
||||||
|
for dir in $lib_path $LIB
|
||||||
|
do
|
||||||
|
IFS=$save_IFS
|
||||||
|
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.dll.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/$lib.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/lib$lib.a"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/lib$lib.a
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
if test "$found" != yes; then
|
||||||
|
lib=$lib.lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_wrapper cl arg...
|
||||||
|
# Adjust compile command to suit cl
|
||||||
|
func_cl_wrapper ()
|
||||||
|
{
|
||||||
|
# Assume a capable shell
|
||||||
|
lib_path=
|
||||||
|
shared=:
|
||||||
|
linker_opts=
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.[oO][bB][jJ])
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fo"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fe"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-I)
|
||||||
|
eat=1
|
||||||
|
func_file_conv "$2" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-I*)
|
||||||
|
func_file_conv "${1#-I}" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashl "$2"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
func_cl_dashl "${1#-l}"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashL "$2"
|
||||||
|
;;
|
||||||
|
-L*)
|
||||||
|
func_cl_dashL "${1#-L}"
|
||||||
|
;;
|
||||||
|
-static)
|
||||||
|
shared=false
|
||||||
|
;;
|
||||||
|
-Wl,*)
|
||||||
|
arg=${1#-Wl,}
|
||||||
|
save_ifs="$IFS"; IFS=','
|
||||||
|
for flag in $arg; do
|
||||||
|
IFS="$save_ifs"
|
||||||
|
linker_opts="$linker_opts $flag"
|
||||||
|
done
|
||||||
|
IFS="$save_ifs"
|
||||||
|
;;
|
||||||
|
-Xlinker)
|
||||||
|
eat=1
|
||||||
|
linker_opts="$linker_opts $2"
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||||
|
func_file_conv "$1"
|
||||||
|
set x "$@" -Tp"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||||
|
func_file_conv "$1" mingw
|
||||||
|
set x "$@" "$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if test -n "$linker_opts"; then
|
||||||
|
linker_opts="-link$linker_opts"
|
||||||
|
fi
|
||||||
|
exec "$@" $linker_opts
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
eat=
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file 'INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||||
|
func_cl_wrapper "$@" # Doesn't return...
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
# So we strip '-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no '-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# '.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
|
|
@ -0,0 +1,791 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2013-05-30.07; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||||
|
as side-effects.
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
depmode Dependency tracking mode.
|
||||||
|
source Source file read by 'PROGRAMS ARGS'.
|
||||||
|
object Object file output by 'PROGRAMS ARGS'.
|
||||||
|
DEPDIR directory where to store dependencies.
|
||||||
|
depfile Dependency file to output.
|
||||||
|
tmpdepfile Temporary file to use when outputting dependencies.
|
||||||
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Get the directory component of the given path, and save it in the
|
||||||
|
# global variables '$dir'. Note that this directory component will
|
||||||
|
# be either empty or ending with a '/' character. This is deliberate.
|
||||||
|
set_dir_from ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||||
|
*) dir=;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the suffix-stripped basename of the given path, and save it the
|
||||||
|
# global variable '$base'.
|
||||||
|
set_base_from ()
|
||||||
|
{
|
||||||
|
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no dependency file was actually created by the compiler invocation,
|
||||||
|
# we still have to create a dummy depfile, to avoid errors with the
|
||||||
|
# Makefile "include basename.Plo" scheme.
|
||||||
|
make_dummy_depfile ()
|
||||||
|
{
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Factor out some common post-processing of the generated depfile.
|
||||||
|
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||||
|
aix_post_process_depfile ()
|
||||||
|
{
|
||||||
|
# If the compiler actually managed to produce a dependency file,
|
||||||
|
# post-process it.
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form 'foo.o: dependency.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# $object: dependency.h
|
||||||
|
# and one to simply output
|
||||||
|
# dependency.h:
|
||||||
|
# which is needed to avoid the deleted-header problem.
|
||||||
|
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||||
|
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||||
|
} > "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# A tabulation character.
|
||||||
|
tab=' '
|
||||||
|
# A newline character.
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
# Character ranges might be problematic outside the C locale.
|
||||||
|
# These definitions help.
|
||||||
|
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
|
lower=abcdefghijklmnopqrstuvwxyz
|
||||||
|
digits=0123456789
|
||||||
|
alpha=${upper}${lower}
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||||
|
depfile=${depfile-`echo "$object" |
|
||||||
|
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Avoid interferences from the environment.
|
||||||
|
gccflag= dashmflag=
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
cygpath_u="cygpath -u -f -"
|
||||||
|
if test "$depmode" = msvcmsys; then
|
||||||
|
# This is just like msvisualcpp but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvisualcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = msvc7msys; then
|
||||||
|
# This is just like msvc7 but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvc7
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = xlc; then
|
||||||
|
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||||
|
gccflag=-qmakedep=gcc,-MF
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||||
|
## the command line argument order; so add the flags where they
|
||||||
|
## appear in depend2.am. Note that the slowdown incurred here
|
||||||
|
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||||
|
*) set fnord "$@" "$arg" ;;
|
||||||
|
esac
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
done
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||||
|
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||||
|
## (see the conditional assignment to $gccflag above).
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||||
|
## supported by the other compilers which use the 'gcc' depmode.
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The second -e expression handles DOS-style file names with drive
|
||||||
|
# letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the "deleted header file" problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
## Some versions of gcc put a space before the ':'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||||
|
## to the object. Take care to not repeat it in the output.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||||
|
| tr "$nl" ' ' >> "$depfile"
|
||||||
|
echo >> "$depfile"
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> "$depfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
xlc)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. In older versions, this file always lives in the
|
||||||
|
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||||
|
# start of each line; $object doesn't have directory information.
|
||||||
|
# Version 6 uses the directory in both cases.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$base.u
|
||||||
|
tmpdepfile3=$dir.libs/$base.u
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$dir$base.u
|
||||||
|
tmpdepfile3=$dir$base.u
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
aix_post_process_depfile
|
||||||
|
;;
|
||||||
|
|
||||||
|
tcc)
|
||||||
|
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||||
|
# FIXME: That version still under development at the moment of writing.
|
||||||
|
# Make that this statement remains true also for stable, released
|
||||||
|
# versions.
|
||||||
|
# It will wrap lines (doesn't matter whether long or short) with a
|
||||||
|
# trailing '\', as in:
|
||||||
|
#
|
||||||
|
# foo.o : \
|
||||||
|
# foo.c \
|
||||||
|
# foo.h \
|
||||||
|
#
|
||||||
|
# It will put a trailing '\' even on the last line, and will use leading
|
||||||
|
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||||
|
# "Emit spaces for -MD").
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||||
|
# We have to change lines of the first kind to '$object: \'.
|
||||||
|
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||||
|
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||||
|
# dummy dependency, to avoid the deleted-header problem.
|
||||||
|
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
## The order of this option in the case statement is important, since the
|
||||||
|
## shell code in configure will try each of these formats in the order
|
||||||
|
## listed in this file. A plain '-MD' option would be understood by many
|
||||||
|
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||||
|
pgcc)
|
||||||
|
# Portland's C compiler understands '-MD'.
|
||||||
|
# Will always output deps to 'file.d' where file is the root name of the
|
||||||
|
# source file under compilation, even if file resides in a subdirectory.
|
||||||
|
# The object file name does not affect the name of the '.d' file.
|
||||||
|
# pgcc 10.2 will output
|
||||||
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
|
# and will wrap long lines using '\' :
|
||||||
|
# foo.o: sub/foo.c ... \
|
||||||
|
# sub/foo.h ... \
|
||||||
|
# ...
|
||||||
|
set_dir_from "$object"
|
||||||
|
# Use the source, not the object, to determine the base name, since
|
||||||
|
# that's sadly what pgcc will do too.
|
||||||
|
set_base_from "$source"
|
||||||
|
tmpdepfile=$base.d
|
||||||
|
|
||||||
|
# For projects that build the same source file twice into different object
|
||||||
|
# files, the pgcc approach of using the *source* file root name can cause
|
||||||
|
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||||
|
# the same $tmpdepfile.
|
||||||
|
lockdir=$base.d-lock
|
||||||
|
trap "
|
||||||
|
echo '$0: caught signal, cleaning up...' >&2
|
||||||
|
rmdir '$lockdir'
|
||||||
|
exit 1
|
||||||
|
" 1 2 13 15
|
||||||
|
numtries=100
|
||||||
|
i=$numtries
|
||||||
|
while test $i -gt 0; do
|
||||||
|
# mkdir is a portable test-and-set.
|
||||||
|
if mkdir "$lockdir" 2>/dev/null; then
|
||||||
|
# This process acquired the lock.
|
||||||
|
"$@" -MD
|
||||||
|
stat=$?
|
||||||
|
# Release the lock.
|
||||||
|
rmdir "$lockdir"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
# If the lock is being held by a different process, wait
|
||||||
|
# until the winning process is done or we timeout.
|
||||||
|
while test -d "$lockdir" && test $i -gt 0; do
|
||||||
|
sleep 1
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
trap - 1 2 13 15
|
||||||
|
if test $i -le 0; then
|
||||||
|
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||||
|
echo "$0: check lockdir '$lockdir'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each line is of the form `foo.o: dependent.h',
|
||||||
|
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp2)
|
||||||
|
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||||
|
# compilers, which have integrated preprocessors. The correct option
|
||||||
|
# to use with these is +Maked; it writes dependencies to a file named
|
||||||
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
|
# happens to be.
|
||||||
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
"$@" -Wc,+Maked
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
"$@" +Maked
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
|
# Add 'dependent.h:' lines.
|
||||||
|
sed -ne '2,${
|
||||||
|
s/^ *//
|
||||||
|
s/ \\*$//
|
||||||
|
s/$/:/
|
||||||
|
p
|
||||||
|
}' "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in 'foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||||
|
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||||
|
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
# Same post-processing that is required for AIX mode.
|
||||||
|
aix_post_process_depfile
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
showIncludes=-Wc,-showIncludes
|
||||||
|
else
|
||||||
|
showIncludes=-showIncludes
|
||||||
|
fi
|
||||||
|
"$@" $showIncludes > "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The first sed program below extracts the file names and escapes
|
||||||
|
# backslashes for cygpath. The second sed program outputs the file
|
||||||
|
# name when reading, but also accumulates all include files in the
|
||||||
|
# hold buffer in order to output them again at the end. This only
|
||||||
|
# works with sed implementations that can handle large buffers.
|
||||||
|
sed < "$tmpdepfile" -n '
|
||||||
|
/^Note: including file: *\(.*\)/ {
|
||||||
|
s//\1/
|
||||||
|
s/\\/\\\\/g
|
||||||
|
p
|
||||||
|
}' | $cygpath_u | sort -u | sed -n '
|
||||||
|
s/ /\\ /g
|
||||||
|
s/\(.*\)/'"$tab"'\1 \\/p
|
||||||
|
s/.\(.*\) \\/\1:/
|
||||||
|
H
|
||||||
|
$ {
|
||||||
|
s/.*/'"$tab"'/
|
||||||
|
G
|
||||||
|
p
|
||||||
|
}' >> "$depfile"
|
||||||
|
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7msys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
# Require at least two characters before searching for ':'
|
||||||
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
|
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||||
|
"$@" $dashmflag |
|
||||||
|
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# Remove any Libtool call
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no eat=no
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
if test $eat = yes; then
|
||||||
|
eat=no
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
# Strip any option that makedepend may not understand. Remove
|
||||||
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-arch)
|
||||||
|
eat=yes ;;
|
||||||
|
-*|$object)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
# makedepend may prepend the VPATH from the source file name to the object.
|
||||||
|
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||||
|
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed '1,2d' "$tmpdepfile" \
|
||||||
|
| tr ' ' "$nl" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E \
|
||||||
|
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E 2>/dev/null |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||||
|
echo "$tab" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvcmsys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
|
|
@ -0,0 +1,501 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2013-12-25.23; # UTC
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# 'make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
doit_exec=${doit:-exec}
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp}
|
||||||
|
chmodprog=${CHMODPROG-chmod}
|
||||||
|
chownprog=${CHOWNPROG-chown}
|
||||||
|
cmpprog=${CMPPROG-cmp}
|
||||||
|
cpprog=${CPPROG-cp}
|
||||||
|
mkdirprog=${MKDIRPROG-mkdir}
|
||||||
|
mvprog=${MVPROG-mv}
|
||||||
|
rmprog=${RMPROG-rm}
|
||||||
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chgrpcmd=
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
mvcmd=$mvprog
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
stripcmd=
|
||||||
|
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dst_arg=
|
||||||
|
|
||||||
|
copy_on_change=false
|
||||||
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
-c (ignored)
|
||||||
|
-C install only if different (preserve the last data modification time)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
|
RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) ;;
|
||||||
|
|
||||||
|
-C) copy_on_change=true;;
|
||||||
|
|
||||||
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
case $mode in
|
||||||
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t)
|
||||||
|
is_target_a_directory=always
|
||||||
|
dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dst_arg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call 'install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $src in
|
||||||
|
-* | [=\(\)!]) src=./$src;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dst_arg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst_arg
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test "$is_target_a_directory" = never; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
dstdir=`dirname "$dst"`
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix='/';;
|
||||||
|
[-=\(\)!]*) prefix='./';;
|
||||||
|
*) prefix='';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test X"$d" = X && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
|
if $copy_on_change &&
|
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
set +f &&
|
||||||
|
test "$old" = "$new" &&
|
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
rm -f "$dsttmp"
|
||||||
|
else
|
||||||
|
# Rename the file to the real destination.
|
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
{
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
test ! -f "$dst" ||
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
|
} ||
|
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
fi || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
|
|
@ -0,0 +1,215 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Common wrapper for a few potentially missing GNU programs.
|
||||||
|
|
||||||
|
scriptversion=2013-10-28.13; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||||
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try '$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
--is-lightweight)
|
||||||
|
# Used by our autoconf macros to check whether the available missing
|
||||||
|
# script is modern enough.
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--run)
|
||||||
|
# Back-compat with the calling convention used by older automake.
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||||
|
to PROGRAM being missing or too old.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal autoconf autoheader autom4te automake makeinfo
|
||||||
|
bison yacc flex lex help2man
|
||||||
|
|
||||||
|
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||||
|
'g' are ignored when checking the name.
|
||||||
|
|
||||||
|
Send bug reports to <bug-automake@gnu.org>."
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing $scriptversion (GNU Automake)"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: unknown '$1' option"
|
||||||
|
echo 1>&2 "Try '$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Run the given program, remember its exit status.
|
||||||
|
"$@"; st=$?
|
||||||
|
|
||||||
|
# If it succeeded, we are done.
|
||||||
|
test $st -eq 0 && exit 0
|
||||||
|
|
||||||
|
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||||
|
# passed; such an option is passed most likely to detect whether the
|
||||||
|
# program is present and works.
|
||||||
|
case $2 in --version|--help) exit $st;; esac
|
||||||
|
|
||||||
|
# Exit code 63 means version mismatch. This often happens when the user
|
||||||
|
# tries to use an ancient version of a tool on a file that requires a
|
||||||
|
# minimum version.
|
||||||
|
if test $st -eq 63; then
|
||||||
|
msg="probably too old"
|
||||||
|
elif test $st -eq 127; then
|
||||||
|
# Program was missing.
|
||||||
|
msg="missing on your system"
|
||||||
|
else
|
||||||
|
# Program was found and executed, but failed. Give up.
|
||||||
|
exit $st
|
||||||
|
fi
|
||||||
|
|
||||||
|
perl_URL=http://www.perl.org/
|
||||||
|
flex_URL=http://flex.sourceforge.net/
|
||||||
|
gnu_software_URL=http://www.gnu.org/software
|
||||||
|
|
||||||
|
program_details ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
aclocal|automake)
|
||||||
|
echo "The '$1' program is part of the GNU Automake package:"
|
||||||
|
echo "<$gnu_software_URL/automake>"
|
||||||
|
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||||
|
echo "<$gnu_software_URL/autoconf>"
|
||||||
|
echo "<$gnu_software_URL/m4/>"
|
||||||
|
echo "<$perl_URL>"
|
||||||
|
;;
|
||||||
|
autoconf|autom4te|autoheader)
|
||||||
|
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||||
|
echo "<$gnu_software_URL/autoconf/>"
|
||||||
|
echo "It also requires GNU m4 and Perl in order to run:"
|
||||||
|
echo "<$gnu_software_URL/m4/>"
|
||||||
|
echo "<$perl_URL>"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
give_advice ()
|
||||||
|
{
|
||||||
|
# Normalize program name to check for.
|
||||||
|
normalized_program=`echo "$1" | sed '
|
||||||
|
s/^gnu-//; t
|
||||||
|
s/^gnu//; t
|
||||||
|
s/^g//; t'`
|
||||||
|
|
||||||
|
printf '%s\n' "'$1' is $msg."
|
||||||
|
|
||||||
|
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||||
|
case $normalized_program in
|
||||||
|
autoconf*)
|
||||||
|
echo "You should only need it if you modified 'configure.ac',"
|
||||||
|
echo "or m4 files included by it."
|
||||||
|
program_details 'autoconf'
|
||||||
|
;;
|
||||||
|
autoheader*)
|
||||||
|
echo "You should only need it if you modified 'acconfig.h' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'autoheader'
|
||||||
|
;;
|
||||||
|
automake*)
|
||||||
|
echo "You should only need it if you modified 'Makefile.am' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'automake'
|
||||||
|
;;
|
||||||
|
aclocal*)
|
||||||
|
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'aclocal'
|
||||||
|
;;
|
||||||
|
autom4te*)
|
||||||
|
echo "You might have modified some maintainer files that require"
|
||||||
|
echo "the 'autom4te' program to be rebuilt."
|
||||||
|
program_details 'autom4te'
|
||||||
|
;;
|
||||||
|
bison*|yacc*)
|
||||||
|
echo "You should only need it if you modified a '.y' file."
|
||||||
|
echo "You may want to install the GNU Bison package:"
|
||||||
|
echo "<$gnu_software_URL/bison/>"
|
||||||
|
;;
|
||||||
|
lex*|flex*)
|
||||||
|
echo "You should only need it if you modified a '.l' file."
|
||||||
|
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||||
|
echo "<$flex_URL>"
|
||||||
|
;;
|
||||||
|
help2man*)
|
||||||
|
echo "You should only need it if you modified a dependency" \
|
||||||
|
"of a man page."
|
||||||
|
echo "You may want to install the GNU Help2man package:"
|
||||||
|
echo "<$gnu_software_URL/help2man/>"
|
||||||
|
;;
|
||||||
|
makeinfo*)
|
||||||
|
echo "You should only need it if you modified a '.texi' file, or"
|
||||||
|
echo "any other file indirectly affecting the aspect of the manual."
|
||||||
|
echo "You might want to install the Texinfo package:"
|
||||||
|
echo "<$gnu_software_URL/texinfo/>"
|
||||||
|
echo "The spurious makeinfo call might also be the consequence of"
|
||||||
|
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||||
|
echo "want to install GNU make:"
|
||||||
|
echo "<$gnu_software_URL/make/>"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "You might have modified some files without having the proper"
|
||||||
|
echo "tools for further handling them. Check the 'README' file, it"
|
||||||
|
echo "often tells you about the needed prerequisites for installing"
|
||||||
|
echo "this package. You may also peek at any GNU archive site, in"
|
||||||
|
echo "case some other package contains this missing '$1' program."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||||
|
-e '2,$s/^/ /' >&2
|
||||||
|
|
||||||
|
# Propagate the correct exit status (expected to be 127 for a program
|
||||||
|
# not found, 63 for a program that failed due to version mismatch).
|
||||||
|
exit $st
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
|
|
@ -0,0 +1,148 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# test-driver - basic testsuite driver script.
|
||||||
|
|
||||||
|
scriptversion=2013-07-13.22; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 2011-2014 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
# Make unconditional expansion of undefined variables an error. This
|
||||||
|
# helps a lot in preventing typo-related bugs.
|
||||||
|
set -u
|
||||||
|
|
||||||
|
usage_error ()
|
||||||
|
{
|
||||||
|
echo "$0: $*" >&2
|
||||||
|
print_usage >&2
|
||||||
|
exit 2
|
||||||
|
}
|
||||||
|
|
||||||
|
print_usage ()
|
||||||
|
{
|
||||||
|
cat <<END
|
||||||
|
Usage:
|
||||||
|
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
|
||||||
|
[--expect-failure={yes|no}] [--color-tests={yes|no}]
|
||||||
|
[--enable-hard-errors={yes|no}] [--]
|
||||||
|
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
|
||||||
|
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
|
||||||
|
END
|
||||||
|
}
|
||||||
|
|
||||||
|
test_name= # Used for reporting.
|
||||||
|
log_file= # Where to save the output of the test script.
|
||||||
|
trs_file= # Where to save the metadata of the test run.
|
||||||
|
expect_failure=no
|
||||||
|
color_tests=no
|
||||||
|
enable_hard_errors=yes
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case $1 in
|
||||||
|
--help) print_usage; exit $?;;
|
||||||
|
--version) echo "test-driver $scriptversion"; exit $?;;
|
||||||
|
--test-name) test_name=$2; shift;;
|
||||||
|
--log-file) log_file=$2; shift;;
|
||||||
|
--trs-file) trs_file=$2; shift;;
|
||||||
|
--color-tests) color_tests=$2; shift;;
|
||||||
|
--expect-failure) expect_failure=$2; shift;;
|
||||||
|
--enable-hard-errors) enable_hard_errors=$2; shift;;
|
||||||
|
--) shift; break;;
|
||||||
|
-*) usage_error "invalid option: '$1'";;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
missing_opts=
|
||||||
|
test x"$test_name" = x && missing_opts="$missing_opts --test-name"
|
||||||
|
test x"$log_file" = x && missing_opts="$missing_opts --log-file"
|
||||||
|
test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
|
||||||
|
if test x"$missing_opts" != x; then
|
||||||
|
usage_error "the following mandatory options are missing:$missing_opts"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
usage_error "missing argument"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $color_tests = yes; then
|
||||||
|
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
|
||||||
|
red='[0;31m' # Red.
|
||||||
|
grn='[0;32m' # Green.
|
||||||
|
lgn='[1;32m' # Light green.
|
||||||
|
blu='[1;34m' # Blue.
|
||||||
|
mgn='[0;35m' # Magenta.
|
||||||
|
std='[m' # No color.
|
||||||
|
else
|
||||||
|
red= grn= lgn= blu= mgn= std=
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
|
||||||
|
trap "st=129; $do_exit" 1
|
||||||
|
trap "st=130; $do_exit" 2
|
||||||
|
trap "st=141; $do_exit" 13
|
||||||
|
trap "st=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Test script is run here.
|
||||||
|
"$@" >$log_file 2>&1
|
||||||
|
estatus=$?
|
||||||
|
|
||||||
|
if test $enable_hard_errors = no && test $estatus -eq 99; then
|
||||||
|
tweaked_estatus=1
|
||||||
|
else
|
||||||
|
tweaked_estatus=$estatus
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $tweaked_estatus:$expect_failure in
|
||||||
|
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
|
||||||
|
0:*) col=$grn res=PASS recheck=no gcopy=no;;
|
||||||
|
77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
|
||||||
|
99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
|
||||||
|
*:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
|
||||||
|
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Report the test outcome and exit status in the logs, so that one can
|
||||||
|
# know whether the test passed or failed simply by looking at the '.log'
|
||||||
|
# file, without the need of also peaking into the corresponding '.trs'
|
||||||
|
# file (automake bug#11814).
|
||||||
|
echo "$res $test_name (exit status: $estatus)" >>$log_file
|
||||||
|
|
||||||
|
# Report outcome to console.
|
||||||
|
echo "${col}${res}${std}: $test_name"
|
||||||
|
|
||||||
|
# Register the test result, and other relevant metadata.
|
||||||
|
echo ":test-result: $res" > $trs_file
|
||||||
|
echo ":global-test-result: $res" >> $trs_file
|
||||||
|
echo ":recheck: $recheck" >> $trs_file
|
||||||
|
echo ":copy-in-global-log: $gcopy" >> $trs_file
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
|
|
@ -1,207 +0,0 @@
|
||||||
eval '(exit $?0)' && eval 'exec perl -wST "$0" ${1+"$@"}'
|
|
||||||
& eval 'exec perl -wST "$0" $argv:q'
|
|
||||||
if 0;
|
|
||||||
# Detect instances of "if (p) free (p);".
|
|
||||||
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
|
|
||||||
|
|
||||||
my $VERSION = '2012-01-06 07:23'; # UTC
|
|
||||||
# The definition above must lie within the first 8 lines in order
|
|
||||||
# for the Emacs time-stamp write hook (at end) to update it.
|
|
||||||
# If you change this file with Emacs, please let the write hook
|
|
||||||
# do its job. Otherwise, update this string manually.
|
|
||||||
|
|
||||||
# Copyright (C) 2008-2014 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program 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 General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# Written by Jim Meyering
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use Getopt::Long;
|
|
||||||
|
|
||||||
(my $ME = $0) =~ s|.*/||;
|
|
||||||
|
|
||||||
# use File::Coda; # http://meyering.net/code/Coda/
|
|
||||||
END {
|
|
||||||
defined fileno STDOUT or return;
|
|
||||||
close STDOUT and return;
|
|
||||||
warn "$ME: failed to close standard output: $!\n";
|
|
||||||
$? ||= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub usage ($)
|
|
||||||
{
|
|
||||||
my ($exit_code) = @_;
|
|
||||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
|
||||||
if ($exit_code != 0)
|
|
||||||
{
|
|
||||||
print $STREAM "Try '$ME --help' for more information.\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print $STREAM <<EOF;
|
|
||||||
Usage: $ME [OPTIONS] FILE...
|
|
||||||
|
|
||||||
Detect any instance in FILE of a useless "if" test before a free call, e.g.,
|
|
||||||
"if (p) free (p);". Any such test may be safely removed without affecting
|
|
||||||
the semantics of the C code in FILE. Use --name=FOO --name=BAR to also
|
|
||||||
detect free-like functions named FOO and BAR.
|
|
||||||
|
|
||||||
OPTIONS:
|
|
||||||
|
|
||||||
--list print only the name of each matching FILE (\\0-terminated)
|
|
||||||
--name=N add name N to the list of \'free\'-like functions to detect;
|
|
||||||
may be repeated
|
|
||||||
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
Exit status:
|
|
||||||
|
|
||||||
0 one or more matches
|
|
||||||
1 no match
|
|
||||||
2 an error
|
|
||||||
|
|
||||||
EXAMPLE:
|
|
||||||
|
|
||||||
For example, this command prints all removable "if" tests before "free"
|
|
||||||
and "kfree" calls in the linux kernel sources:
|
|
||||||
|
|
||||||
git ls-files -z |xargs -0 $ME --name=kfree
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
exit $exit_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub is_NULL ($)
|
|
||||||
{
|
|
||||||
my ($expr) = @_;
|
|
||||||
return ($expr eq 'NULL' || $expr eq '0');
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
sub EXIT_MATCH {0}
|
|
||||||
sub EXIT_NO_MATCH {1}
|
|
||||||
sub EXIT_ERROR {2}
|
|
||||||
my $err = EXIT_NO_MATCH;
|
|
||||||
|
|
||||||
my $list;
|
|
||||||
my @name = qw(free);
|
|
||||||
GetOptions
|
|
||||||
(
|
|
||||||
help => sub { usage 0 },
|
|
||||||
version => sub { print "$ME version $VERSION\n"; exit },
|
|
||||||
list => \$list,
|
|
||||||
'name=s@' => \@name,
|
|
||||||
) or usage 1;
|
|
||||||
|
|
||||||
# Make sure we have the right number of non-option arguments.
|
|
||||||
# Always tell the user why we fail.
|
|
||||||
@ARGV < 1
|
|
||||||
and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
|
|
||||||
|
|
||||||
my $or = join '|', @name;
|
|
||||||
my $regexp = qr/(?:$or)/;
|
|
||||||
|
|
||||||
# Set the input record separator.
|
|
||||||
# Note: this makes it impractical to print line numbers.
|
|
||||||
$/ = '"';
|
|
||||||
|
|
||||||
my $found_match = 0;
|
|
||||||
FILE:
|
|
||||||
foreach my $file (@ARGV)
|
|
||||||
{
|
|
||||||
open FH, '<', $file
|
|
||||||
or (warn "$ME: can't open '$file' for reading: $!\n"),
|
|
||||||
$err = EXIT_ERROR, next;
|
|
||||||
while (defined (my $line = <FH>))
|
|
||||||
{
|
|
||||||
while ($line =~
|
|
||||||
/\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
|
|
||||||
# 1 2 3
|
|
||||||
(?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;|
|
|
||||||
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
|
|
||||||
{
|
|
||||||
my $all = $1;
|
|
||||||
my ($lhs, $rhs) = ($2, $3);
|
|
||||||
my ($free_opnd, $braced_free_opnd) = ($4, $5);
|
|
||||||
my $non_NULL;
|
|
||||||
if (!defined $rhs) { $non_NULL = $lhs }
|
|
||||||
elsif (is_NULL $rhs) { $non_NULL = $lhs }
|
|
||||||
elsif (is_NULL $lhs) { $non_NULL = $rhs }
|
|
||||||
else { next }
|
|
||||||
|
|
||||||
# Compare the non-NULL part of the "if" expression and the
|
|
||||||
# free'd expression, without regard to white space.
|
|
||||||
$non_NULL =~ tr/ \t//d;
|
|
||||||
my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
|
|
||||||
$e2 =~ tr/ \t//d;
|
|
||||||
if ($non_NULL eq $e2)
|
|
||||||
{
|
|
||||||
$found_match = 1;
|
|
||||||
$list
|
|
||||||
and (print "$file\0"), next FILE;
|
|
||||||
print "$file: $all\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
{
|
|
||||||
close FH;
|
|
||||||
}
|
|
||||||
|
|
||||||
$found_match && $err == EXIT_NO_MATCH
|
|
||||||
and $err = EXIT_MATCH;
|
|
||||||
|
|
||||||
exit $err;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $foo = <<'EOF';
|
|
||||||
# The above is to *find* them.
|
|
||||||
# This adjusts them, removing the unnecessary "if (p)" part.
|
|
||||||
|
|
||||||
# FIXME: do something like this as an option (doesn't do braces):
|
|
||||||
free=xfree
|
|
||||||
git grep -l -z "$free *(" \
|
|
||||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
|
||||||
| xargs -0 perl -0x3b -pi -e \
|
|
||||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s'
|
|
||||||
|
|
||||||
# Use the following to remove redundant uses of kfree inside braces.
|
|
||||||
# Note that -0777 puts perl in slurp-whole-file mode;
|
|
||||||
# but we have plenty of memory, these days...
|
|
||||||
free=kfree
|
|
||||||
git grep -l -z "$free *(" \
|
|
||||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
|
||||||
| xargs -0 perl -0777 -pi -e \
|
|
||||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
|
|
||||||
|
|
||||||
Be careful that the result of the above transformation is valid.
|
|
||||||
If the matched string is followed by "else", then obviously, it won't be.
|
|
||||||
|
|
||||||
When modifying files, refuse to process anything other than a regular file.
|
|
||||||
EOF
|
|
||||||
|
|
||||||
## Local Variables:
|
|
||||||
## mode: perl
|
|
||||||
## indent-tabs-mode: nil
|
|
||||||
## eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
## time-stamp-start: "my $VERSION = '"
|
|
||||||
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
|
||||||
## time-stamp-time-zone: "UTC"
|
|
||||||
## time-stamp-end: "'; # UTC"
|
|
||||||
## End:
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# List version-controlled file names.
|
|
||||||
|
|
||||||
# Print a version string.
|
|
||||||
scriptversion=2011-05-16.22; # UTC
|
|
||||||
|
|
||||||
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program 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 General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
# List the specified version-controlled files.
|
|
||||||
# With no argument, list them all. With a single DIRECTORY argument,
|
|
||||||
# list the version-controlled files in that directory.
|
|
||||||
|
|
||||||
# If there's an argument, it must be a single, "."-relative directory name.
|
|
||||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
|
||||||
|
|
||||||
postprocess=
|
|
||||||
case $1 in
|
|
||||||
--help) cat <<EOF
|
|
||||||
Usage: $0 [-C SRCDIR] [DIR...]
|
|
||||||
|
|
||||||
Output a list of version-controlled files in DIR (default .), relative to
|
|
||||||
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--help print this help, then exit
|
|
||||||
--version print version number, then exit
|
|
||||||
-C SRCDIR change directory to SRCDIR before generating list
|
|
||||||
|
|
||||||
Report bugs and patches to <bug-gnulib@gnu.org>.
|
|
||||||
EOF
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
--version)
|
|
||||||
year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
|
|
||||||
cat <<EOF
|
|
||||||
vc-list-files $scriptversion
|
|
||||||
Copyright (C) $year Free Software Foundation, Inc,
|
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
|
||||||
This is free software: you are free to change and redistribute it.
|
|
||||||
There is NO WARRANTY, to the extent permitted by law.
|
|
||||||
EOF
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
-C)
|
|
||||||
test "$2" = . || postprocess="| sed 's|^|$2/|'"
|
|
||||||
cd "$2" || exit 1
|
|
||||||
shift; shift ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
test $# = 0 && set .
|
|
||||||
|
|
||||||
for dir
|
|
||||||
do
|
|
||||||
if test -d .git; then
|
|
||||||
test "x$dir" = x. \
|
|
||||||
&& dir= sed_esc= \
|
|
||||||
|| { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
|
|
||||||
# Ignore git symlinks - either they point into the tree, in which case
|
|
||||||
# we don't need to visit the target twice, or they point somewhere
|
|
||||||
# else (often into a submodule), in which case the content does not
|
|
||||||
# belong to this package.
|
|
||||||
eval exec git ls-tree -r 'HEAD:"$dir"' \
|
|
||||||
\| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
|
|
||||||
elif test -d .hg; then
|
|
||||||
eval exec hg locate '"$dir/*"' $postprocess
|
|
||||||
elif test -d .bzr; then
|
|
||||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
|
||||||
eval exec bzr ls -R --versioned '"$dir"' $postprocess
|
|
||||||
elif test -d CVS; then
|
|
||||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
|
||||||
if test -x build-aux/cvsu; then
|
|
||||||
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
|
|
||||||
elif (cvsu --help) >/dev/null 2>&1; then
|
|
||||||
eval cvsu --find --types=AFGM '"$dir"' $postprocess
|
|
||||||
else
|
|
||||||
eval awk -F/ \''{ \
|
|
||||||
if (!$1 && $3 !~ /^-/) { \
|
|
||||||
f=FILENAME; \
|
|
||||||
if (f ~ /CVS\/Entries$/) \
|
|
||||||
f = substr(f, 1, length(f)-11); \
|
|
||||||
print f $2; \
|
|
||||||
}}'\'' \
|
|
||||||
`find "$dir" -name Entries -print` /dev/null' $postprocess
|
|
||||||
fi
|
|
||||||
elif test -d .svn; then
|
|
||||||
eval exec svn list -R '"$dir"' $postprocess
|
|
||||||
else
|
|
||||||
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Local variables:
|
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
||||||
|
|
@ -0,0 +1,292 @@
|
||||||
|
dnl Macros to check the presence of generic (non-typed) symbols.
|
||||||
|
dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
|
||||||
|
dnl Copyright (c) 2006-2008 xine project
|
||||||
|
dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
|
||||||
|
dnl
|
||||||
|
dnl This program is free software; you can redistribute it and/or modify
|
||||||
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
dnl any later version.
|
||||||
|
dnl
|
||||||
|
dnl This program is distributed in the hope that it will be useful,
|
||||||
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
dnl GNU General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with this program; if not, write to the Free Software
|
||||||
|
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
dnl 02110-1301, USA.
|
||||||
|
dnl
|
||||||
|
dnl As a special exception, the copyright owners of the
|
||||||
|
dnl macro gives unlimited permission to copy, distribute and modify the
|
||||||
|
dnl configure scripts that are the output of Autoconf when processing the
|
||||||
|
dnl Macro. You need not follow the terms of the GNU General Public
|
||||||
|
dnl License when using or distributing such scripts, even though portions
|
||||||
|
dnl of the text of the Macro appear in them. The GNU General Public
|
||||||
|
dnl License (GPL) does govern all other use of the material that
|
||||||
|
dnl constitutes the Autoconf Macro.
|
||||||
|
dnl
|
||||||
|
dnl This special exception to the GPL applies to versions of the
|
||||||
|
dnl Autoconf Macro released by this project. When you make and
|
||||||
|
dnl distribute a modified version of the Autoconf Macro, you may extend
|
||||||
|
dnl this special exception to the GPL to apply to your modified version as
|
||||||
|
dnl well.
|
||||||
|
|
||||||
|
dnl Check if FLAG in ENV-VAR is supported by compiler and append it
|
||||||
|
dnl to WHERE-TO-APPEND variable. Note that we invert -Wno-* checks to
|
||||||
|
dnl -W* as gcc cannot test for negated warnings. If a C snippet is passed,
|
||||||
|
dnl use it, otherwise use a simple main() definition that just returns 0.
|
||||||
|
dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG], [C-SNIPPET])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_CHECK_FLAG_APPEND], [
|
||||||
|
AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
|
||||||
|
AS_TR_SH([cc_cv_$2_$3]),
|
||||||
|
[eval "AS_TR_SH([cc_save_$2])='${$2}'"
|
||||||
|
eval "AS_TR_SH([$2])='${cc_save_$2} -Werror `echo "$3" | sed 's/^-Wno-/-W/'`'"
|
||||||
|
AC_LINK_IFELSE([AC_LANG_SOURCE(ifelse([$4], [],
|
||||||
|
[int main(void) { return 0; } ],
|
||||||
|
[$4]))],
|
||||||
|
[eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
|
||||||
|
[eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
|
||||||
|
eval "AS_TR_SH([$2])='$cc_save_$2'"])
|
||||||
|
|
||||||
|
AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
|
||||||
|
[eval "$1='${$1} $3'"])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2], [C-SNIPPET])
|
||||||
|
AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
|
||||||
|
for flag in [$3]; do
|
||||||
|
CC_CHECK_FLAG_APPEND([$1], [$2], $flag, [$4])
|
||||||
|
done
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Check if the flag is supported by linker (cacheable)
|
||||||
|
dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_CHECK_LDFLAGS], [
|
||||||
|
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||||
|
AS_TR_SH([cc_cv_ldflags_$1]),
|
||||||
|
[ac_save_LDFLAGS="$LDFLAGS"
|
||||||
|
LDFLAGS="$LDFLAGS $1"
|
||||||
|
AC_LINK_IFELSE([int main() { return 1; }],
|
||||||
|
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
|
||||||
|
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
|
||||||
|
LDFLAGS="$ac_save_LDFLAGS"
|
||||||
|
])
|
||||||
|
|
||||||
|
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
|
||||||
|
[$2], [$3])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
|
||||||
|
dnl the current linker to avoid undefined references in a shared object.
|
||||||
|
AC_DEFUN([CC_NOUNDEFINED], [
|
||||||
|
dnl We check $host for which systems to enable this for.
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
|
||||||
|
case $host in
|
||||||
|
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
|
||||||
|
dnl are requested, as different implementations are present; to avoid problems
|
||||||
|
dnl use -Wl,-z,defs only for those platform not behaving this way.
|
||||||
|
*-freebsd* | *-openbsd*) ;;
|
||||||
|
*)
|
||||||
|
dnl First of all check for the --no-undefined variant of GNU ld. This allows
|
||||||
|
dnl for a much more readable command line, so that people can understand what
|
||||||
|
dnl it does without going to look for what the heck -z defs does.
|
||||||
|
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
|
||||||
|
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
|
||||||
|
break
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_SUBST([LDFLAGS_NOUNDEFINED])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
|
||||||
|
dnl and ICC flag that tells the compiler to treat all the warnings
|
||||||
|
dnl as fatal. We usually need this option to make sure that some
|
||||||
|
dnl constructs (like attributes) are not simply ignored.
|
||||||
|
dnl
|
||||||
|
dnl Other compilers don't support -Werror per se, but they support
|
||||||
|
dnl an equivalent flag:
|
||||||
|
dnl - Sun Studio compiler supports -errwarn=%all
|
||||||
|
AC_DEFUN([CC_CHECK_WERROR], [
|
||||||
|
AC_CACHE_CHECK(
|
||||||
|
[for $CC way to treat warnings as errors],
|
||||||
|
[cc_cv_werror],
|
||||||
|
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
|
||||||
|
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
|
||||||
|
AC_REQUIRE([CC_CHECK_WERROR])
|
||||||
|
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
|
||||||
|
AS_TR_SH([cc_cv_attribute_$1]),
|
||||||
|
[ac_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
|
||||||
|
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
|
||||||
|
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
])
|
||||||
|
|
||||||
|
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
|
||||||
|
[AC_DEFINE(
|
||||||
|
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
|
||||||
|
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
|
||||||
|
)
|
||||||
|
$4],
|
||||||
|
[$5])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[constructor],,
|
||||||
|
[void __attribute__((constructor)) ctor() { int a; }],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[format], [format(printf, n, n)],
|
||||||
|
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[format_arg], [format_arg(printf)],
|
||||||
|
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[visibility_$1], [visibility("$1")],
|
||||||
|
[void __attribute__((visibility("$1"))) $1_function() { }],
|
||||||
|
[$2], [$3])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[nonnull], [nonnull()],
|
||||||
|
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[unused], ,
|
||||||
|
[void some_function(void *foo, __attribute__((unused)) void *bar);],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[sentinel], ,
|
||||||
|
[void some_function(void *foo, ...) __attribute__((sentinel));],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[deprecated], ,
|
||||||
|
[void some_function(void *foo, ...) __attribute__((deprecated));],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[alias], [weak, alias],
|
||||||
|
[void other_function(void *foo) { }
|
||||||
|
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[malloc], ,
|
||||||
|
[void * __attribute__((malloc)) my_alloc(int n);],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[packed], ,
|
||||||
|
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_CONST], [
|
||||||
|
CC_CHECK_ATTRIBUTE(
|
||||||
|
[const], ,
|
||||||
|
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
|
||||||
|
[$1], [$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_FLAG_VISIBILITY], [
|
||||||
|
AC_REQUIRE([CC_CHECK_WERROR])
|
||||||
|
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
|
||||||
|
[cc_cv_flag_visibility],
|
||||||
|
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||||
|
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
|
||||||
|
cc_cv_flag_visibility='yes',
|
||||||
|
cc_cv_flag_visibility='no')
|
||||||
|
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
|
||||||
|
|
||||||
|
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
|
||||||
|
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
|
||||||
|
[Define this if the compiler supports the -fvisibility flag])
|
||||||
|
$1],
|
||||||
|
[$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_FUNC_EXPECT], [
|
||||||
|
AC_REQUIRE([CC_CHECK_WERROR])
|
||||||
|
AC_CACHE_CHECK([if compiler has __builtin_expect function],
|
||||||
|
[cc_cv_func_expect],
|
||||||
|
[ac_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
||||||
|
[int some_function() {
|
||||||
|
int a = 3;
|
||||||
|
return (int)__builtin_expect(a, 3);
|
||||||
|
}])],
|
||||||
|
[cc_cv_func_expect=yes],
|
||||||
|
[cc_cv_func_expect=no])
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
])
|
||||||
|
|
||||||
|
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
|
||||||
|
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
|
||||||
|
[Define this if the compiler supports __builtin_expect() function])
|
||||||
|
$1],
|
||||||
|
[$2])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
|
||||||
|
AC_REQUIRE([CC_CHECK_WERROR])
|
||||||
|
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
|
||||||
|
[cc_cv_attribute_aligned],
|
||||||
|
[ac_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||||
|
for cc_attribute_align_try in 64 32 16 8 4 2; do
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||||
|
int main() {
|
||||||
|
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
|
||||||
|
return c;
|
||||||
|
}])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
|
||||||
|
done
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "x$cc_cv_attribute_aligned" != "x"; then
|
||||||
|
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
|
||||||
|
[Define the highest alignment supported])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
dnl -*- mode: autoconf -*-
|
||||||
|
|
||||||
|
# serial 2
|
||||||
|
|
||||||
|
dnl Usage:
|
||||||
|
dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
|
||||||
|
AC_DEFUN([GTK_DOC_CHECK],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||||
|
AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||||
|
|
||||||
|
ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"])
|
||||||
|
AC_MSG_CHECKING([for gtk-doc])
|
||||||
|
PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])
|
||||||
|
AC_MSG_RESULT($have_gtk_doc)
|
||||||
|
|
||||||
|
if test "$have_gtk_doc" = "no"; then
|
||||||
|
AC_MSG_WARN([
|
||||||
|
You will not be able to create source packages with 'make dist'
|
||||||
|
because $gtk_doc_requires is not found.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl check for tools we added during development
|
||||||
|
dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that
|
||||||
|
dnl may not be writable by the user. Currently, automake requires that the
|
||||||
|
dnl test name must end in '.test'.
|
||||||
|
dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638
|
||||||
|
AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test])
|
||||||
|
AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check])
|
||||||
|
AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
|
||||||
|
AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
|
||||||
|
|
||||||
|
dnl for overriding the documentation installation directory
|
||||||
|
AC_ARG_WITH([html-dir],
|
||||||
|
AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
|
||||||
|
[with_html_dir='${datadir}/gtk-doc/html'])
|
||||||
|
HTML_DIR="$with_html_dir"
|
||||||
|
AC_SUBST([HTML_DIR])
|
||||||
|
|
||||||
|
dnl enable/disable documentation building
|
||||||
|
AC_ARG_ENABLE([gtk-doc],
|
||||||
|
AS_HELP_STRING([--enable-gtk-doc],
|
||||||
|
[use gtk-doc to build documentation [[default=no]]]),,
|
||||||
|
[enable_gtk_doc=no])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to build gtk-doc documentation])
|
||||||
|
AC_MSG_RESULT($enable_gtk_doc)
|
||||||
|
|
||||||
|
if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then
|
||||||
|
AC_MSG_ERROR([
|
||||||
|
You must have $gtk_doc_requires installed to build documentation for
|
||||||
|
$PACKAGE_NAME. Please install gtk-doc or disable building the
|
||||||
|
documentation by adding '--disable-gtk-doc' to '[$]0'.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl don't check for glib if we build glib
|
||||||
|
if test "x$PACKAGE_NAME" != "xglib"; then
|
||||||
|
dnl don't fail if someone does not have glib
|
||||||
|
PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl enable/disable output formats
|
||||||
|
AC_ARG_ENABLE([gtk-doc-html],
|
||||||
|
AS_HELP_STRING([--enable-gtk-doc-html],
|
||||||
|
[build documentation in html format [[default=yes]]]),,
|
||||||
|
[enable_gtk_doc_html=yes])
|
||||||
|
AC_ARG_ENABLE([gtk-doc-pdf],
|
||||||
|
AS_HELP_STRING([--enable-gtk-doc-pdf],
|
||||||
|
[build documentation in pdf format [[default=no]]]),,
|
||||||
|
[enable_gtk_doc_pdf=no])
|
||||||
|
|
||||||
|
if test -z "$GTKDOC_MKPDF"; then
|
||||||
|
enable_gtk_doc_pdf=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$AM_DEFAULT_VERBOSITY"; then
|
||||||
|
AM_DEFAULT_VERBOSITY=1
|
||||||
|
fi
|
||||||
|
AC_SUBST([AM_DEFAULT_VERBOSITY])
|
||||||
|
|
||||||
|
AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes])
|
||||||
|
AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
|
||||||
|
AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
|
||||||
|
AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
|
||||||
|
AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
|
||||||
|
AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
|
||||||
|
])
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
AC_DEFUN([LIBGLNX_CONFIGURE],
|
||||||
|
[
|
||||||
|
AC_CHECK_DECLS([
|
||||||
|
renameat2,
|
||||||
|
],
|
||||||
|
[], [], [[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/mount.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sched.h>
|
||||||
|
#include <linux/loop.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
]])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(otmpfile,
|
||||||
|
[AS_HELP_STRING([--disable-otmpfile],
|
||||||
|
[Disable use of O_TMPFILE [default=no]])],,
|
||||||
|
[enable_otmpfile=yes])
|
||||||
|
AS_IF([test $enable_otmpfile = yes], [], [
|
||||||
|
AC_DEFINE([DISABLE_OTMPFILE], 1, [Define if we should avoid using O_TMPFILE])])
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
|
@ -0,0 +1,437 @@
|
||||||
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
# Written by Gary V. Vaughan, 2004
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 8 ltoptions.m4
|
||||||
|
|
||||||
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||||
|
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
||||||
|
# ------------------------------------------
|
||||||
|
m4_define([_LT_MANGLE_OPTION],
|
||||||
|
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
||||||
|
# ---------------------------------------
|
||||||
|
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
||||||
|
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
||||||
|
# saved as a flag.
|
||||||
|
m4_define([_LT_SET_OPTION],
|
||||||
|
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||||
|
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||||
|
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||||
|
[m4_warning([Unknown $1 option '$2'])])[]dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||||
|
m4_define([_LT_IF_OPTION],
|
||||||
|
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
||||||
|
# -------------------------------------------------------
|
||||||
|
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
||||||
|
# are set.
|
||||||
|
m4_define([_LT_UNLESS_OPTIONS],
|
||||||
|
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||||
|
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
||||||
|
[m4_define([$0_found])])])[]dnl
|
||||||
|
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
||||||
|
])[]dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
||||||
|
# ----------------------------------------
|
||||||
|
# OPTION-LIST is a space-separated list of Libtool options associated
|
||||||
|
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
||||||
|
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
||||||
|
# the unknown option and exit.
|
||||||
|
m4_defun([_LT_SET_OPTIONS],
|
||||||
|
[# Set options
|
||||||
|
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||||
|
[_LT_SET_OPTION([$1], _LT_Option)])
|
||||||
|
|
||||||
|
m4_if([$1],[LT_INIT],[
|
||||||
|
dnl
|
||||||
|
dnl Simply set some default values (i.e off) if boolean options were not
|
||||||
|
dnl specified:
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
||||||
|
])
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
||||||
|
])
|
||||||
|
dnl
|
||||||
|
dnl If no reference was made to various pairs of opposing options, then
|
||||||
|
dnl we run the default mode handler for the pair. For example, if neither
|
||||||
|
dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
|
||||||
|
dnl archives by default:
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||||
|
[_LT_ENABLE_FAST_INSTALL])
|
||||||
|
_LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
|
||||||
|
[_LT_WITH_AIX_SONAME([aix])])
|
||||||
|
])
|
||||||
|
])# _LT_SET_OPTIONS
|
||||||
|
|
||||||
|
|
||||||
|
## --------------------------------- ##
|
||||||
|
## Macros to handle LT_INIT options. ##
|
||||||
|
## --------------------------------- ##
|
||||||
|
|
||||||
|
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
||||||
|
# -----------------------------------------
|
||||||
|
m4_define([_LT_MANGLE_DEFUN],
|
||||||
|
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
||||||
|
|
||||||
|
|
||||||
|
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
||||||
|
# -----------------------------------------------
|
||||||
|
m4_define([LT_OPTION_DEFINE],
|
||||||
|
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
||||||
|
])# LT_OPTION_DEFINE
|
||||||
|
|
||||||
|
|
||||||
|
# dlopen
|
||||||
|
# ------
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
||||||
|
])
|
||||||
|
|
||||||
|
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||||
|
put the 'dlopen' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
||||||
|
|
||||||
|
|
||||||
|
# win32-dll
|
||||||
|
# ---------
|
||||||
|
# Declare package support for building win32 dll's.
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
||||||
|
[enable_win32_dll=yes
|
||||||
|
|
||||||
|
case $host in
|
||||||
|
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||||
|
AC_CHECK_TOOL(AS, as, false)
|
||||||
|
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||||
|
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
test -z "$AS" && AS=as
|
||||||
|
_LT_DECL([], [AS], [1], [Assembler program])dnl
|
||||||
|
|
||||||
|
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
||||||
|
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
|
||||||
|
|
||||||
|
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||||
|
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
|
||||||
|
])# win32-dll
|
||||||
|
|
||||||
|
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||||
|
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||||
|
put the 'win32-dll' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_ENABLE_SHARED([DEFAULT])
|
||||||
|
# ----------------------------
|
||||||
|
# implement the --enable-shared flag, and supports the 'shared' and
|
||||||
|
# 'disable-shared' LT_INIT options.
|
||||||
|
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||||
|
m4_define([_LT_ENABLE_SHARED],
|
||||||
|
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||||
|
AC_ARG_ENABLE([shared],
|
||||||
|
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
||||||
|
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
||||||
|
[p=${PACKAGE-default}
|
||||||
|
case $enableval in
|
||||||
|
yes) enable_shared=yes ;;
|
||||||
|
no) enable_shared=no ;;
|
||||||
|
*)
|
||||||
|
enable_shared=no
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||||
|
for pkg in $enableval; do
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
if test "X$pkg" = "X$p"; then
|
||||||
|
enable_shared=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
|
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||||
|
|
||||||
|
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
||||||
|
[Whether or not to build shared libraries])
|
||||||
|
])# _LT_ENABLE_SHARED
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
||||||
|
|
||||||
|
# Old names:
|
||||||
|
AC_DEFUN([AC_ENABLE_SHARED],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([AC_DISABLE_SHARED],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
||||||
|
])
|
||||||
|
|
||||||
|
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
||||||
|
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
||||||
|
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_ENABLE_STATIC([DEFAULT])
|
||||||
|
# ----------------------------
|
||||||
|
# implement the --enable-static flag, and support the 'static' and
|
||||||
|
# 'disable-static' LT_INIT options.
|
||||||
|
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||||
|
m4_define([_LT_ENABLE_STATIC],
|
||||||
|
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||||
|
AC_ARG_ENABLE([static],
|
||||||
|
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
||||||
|
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
||||||
|
[p=${PACKAGE-default}
|
||||||
|
case $enableval in
|
||||||
|
yes) enable_static=yes ;;
|
||||||
|
no) enable_static=no ;;
|
||||||
|
*)
|
||||||
|
enable_static=no
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||||
|
for pkg in $enableval; do
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
if test "X$pkg" = "X$p"; then
|
||||||
|
enable_static=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
|
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||||
|
|
||||||
|
_LT_DECL([build_old_libs], [enable_static], [0],
|
||||||
|
[Whether or not to build static libraries])
|
||||||
|
])# _LT_ENABLE_STATIC
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
||||||
|
|
||||||
|
# Old names:
|
||||||
|
AC_DEFUN([AC_ENABLE_STATIC],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([AC_DISABLE_STATIC],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
||||||
|
])
|
||||||
|
|
||||||
|
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
||||||
|
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
||||||
|
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||||
|
# ----------------------------------
|
||||||
|
# implement the --enable-fast-install flag, and support the 'fast-install'
|
||||||
|
# and 'disable-fast-install' LT_INIT options.
|
||||||
|
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||||
|
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||||
|
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||||
|
AC_ARG_ENABLE([fast-install],
|
||||||
|
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
||||||
|
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
||||||
|
[p=${PACKAGE-default}
|
||||||
|
case $enableval in
|
||||||
|
yes) enable_fast_install=yes ;;
|
||||||
|
no) enable_fast_install=no ;;
|
||||||
|
*)
|
||||||
|
enable_fast_install=no
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||||
|
for pkg in $enableval; do
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
if test "X$pkg" = "X$p"; then
|
||||||
|
enable_fast_install=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
|
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||||
|
|
||||||
|
_LT_DECL([fast_install], [enable_fast_install], [0],
|
||||||
|
[Whether or not to optimize for fast installation])dnl
|
||||||
|
])# _LT_ENABLE_FAST_INSTALL
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
||||||
|
|
||||||
|
# Old names:
|
||||||
|
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||||
|
the 'fast-install' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||||
|
the 'disable-fast-install' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||||
|
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_WITH_AIX_SONAME([DEFAULT])
|
||||||
|
# ----------------------------------
|
||||||
|
# implement the --with-aix-soname flag, and support the `aix-soname=aix'
|
||||||
|
# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
|
||||||
|
# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
|
||||||
|
m4_define([_LT_WITH_AIX_SONAME],
|
||||||
|
[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
|
||||||
|
shared_archive_member_spec=
|
||||||
|
case $host,$enable_shared in
|
||||||
|
power*-*-aix[[5-9]]*,yes)
|
||||||
|
AC_MSG_CHECKING([which variant of shared library versioning to provide])
|
||||||
|
AC_ARG_WITH([aix-soname],
|
||||||
|
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
|
||||||
|
[shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
|
||||||
|
[case $withval in
|
||||||
|
aix|svr4|both)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_ERROR([Unknown argument to --with-aix-soname])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
lt_cv_with_aix_soname=$with_aix_soname],
|
||||||
|
[AC_CACHE_VAL([lt_cv_with_aix_soname],
|
||||||
|
[lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
|
||||||
|
with_aix_soname=$lt_cv_with_aix_soname])
|
||||||
|
AC_MSG_RESULT([$with_aix_soname])
|
||||||
|
if test aix != "$with_aix_soname"; then
|
||||||
|
# For the AIX way of multilib, we name the shared archive member
|
||||||
|
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
|
||||||
|
# and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
|
||||||
|
# Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
|
||||||
|
# the AIX toolchain works better with OBJECT_MODE set (default 32).
|
||||||
|
if test 64 = "${OBJECT_MODE-32}"; then
|
||||||
|
shared_archive_member_spec=shr_64
|
||||||
|
else
|
||||||
|
shared_archive_member_spec=shr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
with_aix_soname=aix
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
_LT_DECL([], [shared_archive_member_spec], [0],
|
||||||
|
[Shared archive member basename, for filename based shared library versioning on AIX])dnl
|
||||||
|
])# _LT_WITH_AIX_SONAME
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_WITH_PIC([MODE])
|
||||||
|
# --------------------
|
||||||
|
# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
|
||||||
|
# LT_INIT options.
|
||||||
|
# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
|
||||||
|
m4_define([_LT_WITH_PIC],
|
||||||
|
[AC_ARG_WITH([pic],
|
||||||
|
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||||
|
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||||
|
[lt_p=${PACKAGE-default}
|
||||||
|
case $withval in
|
||||||
|
yes|no) pic_mode=$withval ;;
|
||||||
|
*)
|
||||||
|
pic_mode=default
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||||
|
for lt_pkg in $withval; do
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
if test "X$lt_pkg" = "X$lt_p"; then
|
||||||
|
pic_mode=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$lt_save_ifs
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
|
[pic_mode=m4_default([$1], [default])])
|
||||||
|
|
||||||
|
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||||
|
])# _LT_WITH_PIC
|
||||||
|
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||||
|
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||||
|
|
||||||
|
# Old name:
|
||||||
|
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||||
|
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||||
|
AC_DIAGNOSE([obsolete],
|
||||||
|
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||||
|
put the 'pic-only' option into LT_INIT's first parameter.])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-1.4 backwards compatibility:
|
||||||
|
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||||
|
|
||||||
|
## ----------------- ##
|
||||||
|
## LTDL_INIT Options ##
|
||||||
|
## ----------------- ##
|
||||||
|
|
||||||
|
m4_define([_LTDL_MODE], [])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||||
|
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||||
|
[m4_define([_LTDL_MODE], [recursive])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||||
|
[m4_define([_LTDL_MODE], [subproject])])
|
||||||
|
|
||||||
|
m4_define([_LTDL_TYPE], [])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||||
|
[m4_define([_LTDL_TYPE], [installable])])
|
||||||
|
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||||
|
[m4_define([_LTDL_TYPE], [convenience])])
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
# Written by Gary V. Vaughan, 2004
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 6 ltsugar.m4
|
||||||
|
|
||||||
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||||
|
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_join(SEP, ARG1, [ARG2...])
|
||||||
|
# -----------------------------
|
||||||
|
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||||
|
# associated separator.
|
||||||
|
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||||
|
# versions in m4sugar had bugs.
|
||||||
|
m4_define([lt_join],
|
||||||
|
[m4_if([$#], [1], [],
|
||||||
|
[$#], [2], [[$2]],
|
||||||
|
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||||
|
m4_define([_lt_join],
|
||||||
|
[m4_if([$#$2], [2], [],
|
||||||
|
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_car(LIST)
|
||||||
|
# lt_cdr(LIST)
|
||||||
|
# ------------
|
||||||
|
# Manipulate m4 lists.
|
||||||
|
# These macros are necessary as long as will still need to support
|
||||||
|
# Autoconf-2.59, which quotes differently.
|
||||||
|
m4_define([lt_car], [[$1]])
|
||||||
|
m4_define([lt_cdr],
|
||||||
|
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||||
|
[$#], 1, [],
|
||||||
|
[m4_dquote(m4_shift($@))])])
|
||||||
|
m4_define([lt_unquote], $1)
|
||||||
|
|
||||||
|
|
||||||
|
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||||
|
# ------------------------------------------
|
||||||
|
# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
|
||||||
|
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||||
|
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||||
|
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||||
|
# than defined and empty).
|
||||||
|
#
|
||||||
|
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||||
|
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||||
|
m4_define([lt_append],
|
||||||
|
[m4_define([$1],
|
||||||
|
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# Produce a SEP delimited list of all paired combinations of elements of
|
||||||
|
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||||
|
# has the form PREFIXmINFIXSUFFIXn.
|
||||||
|
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||||
|
m4_define([lt_combine],
|
||||||
|
[m4_if(m4_eval([$# > 3]), [1],
|
||||||
|
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||||
|
[[m4_foreach([_Lt_prefix], [$2],
|
||||||
|
[m4_foreach([_Lt_suffix],
|
||||||
|
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||||
|
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||||
|
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||||
|
m4_define([lt_if_append_uniq],
|
||||||
|
[m4_ifdef([$1],
|
||||||
|
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||||
|
[lt_append([$1], [$2], [$3])$4],
|
||||||
|
[$5])],
|
||||||
|
[lt_append([$1], [$2], [$3])$4])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_add(DICT, KEY, VALUE)
|
||||||
|
# -----------------------------
|
||||||
|
m4_define([lt_dict_add],
|
||||||
|
[m4_define([$1($2)], [$3])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||||
|
# --------------------------------------------
|
||||||
|
m4_define([lt_dict_add_subkey],
|
||||||
|
[m4_define([$1($2:$3)], [$4])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||||
|
# ----------------------------------
|
||||||
|
m4_define([lt_dict_fetch],
|
||||||
|
[m4_ifval([$3],
|
||||||
|
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||||
|
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
m4_define([lt_if_dict_fetch],
|
||||||
|
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||||
|
[$5],
|
||||||
|
[$6])])
|
||||||
|
|
||||||
|
|
||||||
|
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
m4_define([lt_dict_filter],
|
||||||
|
[m4_if([$5], [], [],
|
||||||
|
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||||
|
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||||
|
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||||
|
])
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
|
||||||
|
# Written by Scott James Remnant, 2004
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# serial 4179 ltversion.m4
|
||||||
|
# This file is part of GNU Libtool
|
||||||
|
|
||||||
|
m4_define([LT_PACKAGE_VERSION], [2.4.6])
|
||||||
|
m4_define([LT_PACKAGE_REVISION], [2.4.6])
|
||||||
|
|
||||||
|
AC_DEFUN([LTVERSION_VERSION],
|
||||||
|
[macro_version='2.4.6'
|
||||||
|
macro_revision='2.4.6'
|
||||||
|
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||||
|
_LT_DECL(, macro_revision, 0)
|
||||||
|
])
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
# Written by Scott James Remnant, 2004.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 5 lt~obsolete.m4
|
||||||
|
|
||||||
|
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||||
|
#
|
||||||
|
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
|
||||||
|
# which have later been changed to m4_define as they aren't part of the
|
||||||
|
# exported API, or moved to Autoconf or Automake where they belong.
|
||||||
|
#
|
||||||
|
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||||
|
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||||
|
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||||
|
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||||
|
# and doesn't know about Autoconf macros at all.)
|
||||||
|
#
|
||||||
|
# So we provide this file, which has a silly filename so it's always
|
||||||
|
# included after everything else. This provides aclocal with the
|
||||||
|
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||||
|
# because those macros already exist, or will be overwritten later.
|
||||||
|
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||||
|
#
|
||||||
|
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||||
|
# Yes, that means every name once taken will need to remain here until
|
||||||
|
# we give up compatibility with versions before 1.7, at which point
|
||||||
|
# we need to keep only those names which we still refer to.
|
||||||
|
|
||||||
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||||
|
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||||
|
|
||||||
|
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||||
|
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||||
|
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||||
|
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||||
|
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||||
|
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||||
|
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||||
|
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||||
|
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||||
|
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||||
|
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||||
|
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||||
|
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||||
|
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||||
|
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||||
|
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||||
|
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||||
|
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||||
|
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||||
|
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||||
|
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||||
|
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||||
|
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||||
|
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||||
|
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||||
|
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||||
|
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||||
|
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||||
|
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||||
|
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||||
|
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||||
|
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||||
|
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||||
|
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||||
|
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
||||||
30
cfg.mk
|
|
@ -1,30 +0,0 @@
|
||||||
export VC_LIST_EXCEPT_DEFAULT=^(docs/.*|git.mk|lib/.*|m4/.*|md5/.*|build-aux/.*|src/gettext\.h|.*ChangeLog|buildutil/.*)$$
|
|
||||||
|
|
||||||
local-checks-to-skip = \
|
|
||||||
sc_const_long_option \
|
|
||||||
sc_error_message_uppercase \
|
|
||||||
sc_file_system \
|
|
||||||
sc_immutable_NEWS \
|
|
||||||
sc_copyright_check \
|
|
||||||
sc_makefile_path_separator_check \
|
|
||||||
sc_require_config_h \
|
|
||||||
sc_require_config_h_first \
|
|
||||||
sc_two_space_separator_in_usage \
|
|
||||||
sc_useless_cpp_parens \
|
|
||||||
\
|
|
||||||
sc_prohibit_atoi_atof \
|
|
||||||
sc_prohibit_strcmp \
|
|
||||||
sc_cast_of_alloca_return_value \
|
|
||||||
sc_cast_of_x_alloc_return_value \
|
|
||||||
sc_prohibit_S_IS_definition \
|
|
||||||
\
|
|
||||||
sc_program_name \
|
|
||||||
sc_bindtextdomain \
|
|
||||||
sc_prohibit_path_max_allocation \
|
|
||||||
sc_trailing_blank \
|
|
||||||
|
|
||||||
#SHELL=bash -x
|
|
||||||
show-vc-list-except:
|
|
||||||
@$(VC_LIST_EXCEPT)
|
|
||||||
|
|
||||||
VC_LIST_ALWAYS_EXCLUDE_REGEX = ^ABOUT-NLS|maint.mk|*.gpg|*.sig|.xz$$
|
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define if we should avoid using O_TMPFILE */
|
||||||
|
#undef DISABLE_OTMPFILE
|
||||||
|
|
||||||
|
/* The system grub2-mkconfig executible name */
|
||||||
|
#undef GRUB2_MKCONFIG_PATH
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `archive_read_support_filter_all' function. */
|
||||||
|
#undef HAVE_ARCHIVE_READ_SUPPORT_FILTER_ALL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `', and to 0 if you don't. */
|
||||||
|
#undef HAVE_DECL_
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `renameat2', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_RENAMEAT2
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define if we have libarchive.pc */
|
||||||
|
#undef HAVE_LIBARCHIVE
|
||||||
|
|
||||||
|
/* Define if we have libmount.pc */
|
||||||
|
#undef HAVE_LIBMOUNT
|
||||||
|
|
||||||
|
/* Define if we have libsoup.pc */
|
||||||
|
#undef HAVE_LIBSOUP
|
||||||
|
|
||||||
|
/* Define if we have libsoup client certs */
|
||||||
|
#undef HAVE_LIBSOUP_CLIENT_CERTS
|
||||||
|
|
||||||
|
/* Define if we have libsystemd */
|
||||||
|
#undef HAVE_LIBSYSTEMD
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define if we have libselinux.pc */
|
||||||
|
#undef HAVE_SELINUX
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||||
|
#undef LT_OBJDIR
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define if using internal ostree-grub-generator */
|
||||||
|
#undef USE_BUILTIN_GRUB2_MKCONFIG
|
||||||
|
|
||||||
|
/* Enable extensions on AIX 3, Interix. */
|
||||||
|
#ifndef _ALL_SOURCE
|
||||||
|
# undef _ALL_SOURCE
|
||||||
|
#endif
|
||||||
|
/* Enable GNU extensions on systems that have them. */
|
||||||
|
#ifndef _GNU_SOURCE
|
||||||
|
# undef _GNU_SOURCE
|
||||||
|
#endif
|
||||||
|
/* Enable threading extensions on Solaris. */
|
||||||
|
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||||
|
# undef _POSIX_PTHREAD_SEMANTICS
|
||||||
|
#endif
|
||||||
|
/* Enable extensions on HP NonStop. */
|
||||||
|
#ifndef _TANDEM_SOURCE
|
||||||
|
# undef _TANDEM_SOURCE
|
||||||
|
#endif
|
||||||
|
/* Enable general extensions on Solaris. */
|
||||||
|
#ifndef __EXTENSIONS__
|
||||||
|
# undef __EXTENSIONS__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||||
|
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||||
|
# define _DARWIN_USE_64_BIT_INODE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
|
||||||
|
/* Define for large files, on AIX-style hosts. */
|
||||||
|
#undef _LARGE_FILES
|
||||||
|
|
||||||
|
/* Define to 1 if on MINIX. */
|
||||||
|
#undef _MINIX
|
||||||
|
|
||||||
|
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||||
|
this defined. */
|
||||||
|
#undef _POSIX_1_SOURCE
|
||||||
|
|
||||||
|
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||||
|
#undef _POSIX_SOURCE
|
||||||
32
configure.ac
|
|
@ -1,5 +1,5 @@
|
||||||
AC_PREREQ([2.63])
|
AC_PREREQ([2.63])
|
||||||
AC_INIT([ostree], [2016.7], [walters@verbum.org])
|
AC_INIT([ostree], [2016.8], [walters@verbum.org])
|
||||||
AC_CONFIG_HEADER([config.h])
|
AC_CONFIG_HEADER([config.h])
|
||||||
AC_CONFIG_MACRO_DIR([buildutil])
|
AC_CONFIG_MACRO_DIR([buildutil])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
|
|
@ -15,16 +15,22 @@ AC_PROG_CC
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AC_PROG_YACC
|
AC_PROG_YACC
|
||||||
|
|
||||||
changequote(,)dnl
|
CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\
|
||||||
if test "x$GCC" = "xyes"; then
|
-pipe \
|
||||||
WARN_CFLAGS="-Wall -Wempty-body -Wstrict-prototypes -Werror=missing-prototypes \
|
-Wall \
|
||||||
-Werror=implicit-function-declaration \
|
-Werror=empty-body \
|
||||||
-Werror=pointer-arith -Werror=init-self -Werror=format=2 \
|
-Werror=strict-prototypes \
|
||||||
-Werror=format-security \
|
-Werror=missing-prototypes \
|
||||||
-Werror=missing-include-dirs -Werror=aggregate-return \
|
-Werror=implicit-function-declaration \
|
||||||
-Werror=declaration-after-statement"
|
"-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \
|
||||||
fi
|
-Werror=pointer-arith -Werror=init-self \
|
||||||
changequote([,])dnl
|
-Werror=missing-declarations \
|
||||||
|
-Werror=return-type \
|
||||||
|
-Werror=overflow \
|
||||||
|
-Werror=int-conversion \
|
||||||
|
-Werror=missing-include-dirs -Werror=aggregate-return \
|
||||||
|
-Werror=declaration-after-statement \
|
||||||
|
])
|
||||||
AC_SUBST(WARN_CFLAGS)
|
AC_SUBST(WARN_CFLAGS)
|
||||||
|
|
||||||
# Initialize libtool
|
# Initialize libtool
|
||||||
|
|
@ -35,6 +41,7 @@ OSTREE_FEATURES=""
|
||||||
AC_SUBST([OSTREE_FEATURES])
|
AC_SUBST([OSTREE_FEATURES])
|
||||||
|
|
||||||
GLIB_TESTS
|
GLIB_TESTS
|
||||||
|
LIBGLNX_CONFIGURE
|
||||||
|
|
||||||
AC_CHECK_HEADER([sys/xattr.h],,[AC_MSG_ERROR([You must have sys/xattr.h from glibc])])
|
AC_CHECK_HEADER([sys/xattr.h],,[AC_MSG_ERROR([You must have sys/xattr.h from glibc])])
|
||||||
|
|
||||||
|
|
@ -47,7 +54,7 @@ AM_PATH_GLIB_2_0
|
||||||
dnl When bumping the gio-unix-2.0 dependency (or glib-2.0 in general),
|
dnl When bumping the gio-unix-2.0 dependency (or glib-2.0 in general),
|
||||||
dnl remember to bump GLIB_VERSION_MIN_REQUIRED and
|
dnl remember to bump GLIB_VERSION_MIN_REQUIRED and
|
||||||
dnl GLIB_VERSION_MAX_ALLOWED in Makefile.am
|
dnl GLIB_VERSION_MAX_ALLOWED in Makefile.am
|
||||||
GIO_DEPENDENCY="gio-unix-2.0 >= 2.40.0 libgsystem >= 2015.1"
|
GIO_DEPENDENCY="gio-unix-2.0 >= 2.40.0"
|
||||||
PKG_CHECK_MODULES(OT_DEP_GIO_UNIX, $GIO_DEPENDENCY)
|
PKG_CHECK_MODULES(OT_DEP_GIO_UNIX, $GIO_DEPENDENCY)
|
||||||
|
|
||||||
dnl 5.1.0 is an arbitrary version here
|
dnl 5.1.0 is an arbitrary version here
|
||||||
|
|
@ -319,6 +326,7 @@ echo "
|
||||||
libmount: $with_libmount
|
libmount: $with_libmount
|
||||||
libarchive (parse tar files directly): $with_libarchive
|
libarchive (parse tar files directly): $with_libarchive
|
||||||
static deltas: yes (always enabled now)
|
static deltas: yes (always enabled now)
|
||||||
|
O_TMPFILE: $enable_otmpfile
|
||||||
man pages (xsltproc): $enable_man
|
man pages (xsltproc): $enable_man
|
||||||
api docs (gtk-doc): $enable_gtk_doc
|
api docs (gtk-doc): $enable_gtk_doc
|
||||||
gjs-based tests: $have_gjs
|
gjs-based tests: $have_gjs
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
Portions of this code are derived from:
|
|
||||||
|
|
||||||
https://github.com/dradtke/gotk3
|
|
||||||
|
|
||||||
Copyright (c) 2013 Conformal Systems LLC.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
This file contains demonstration FFI bindings for using `-lostree-1`
|
|
||||||
and `-larchive` from golang.
|
|
||||||
|
|
@ -1,201 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2013 Conformal Systems <info@conformal.com>
|
|
||||||
*
|
|
||||||
* This file originated from: http://opensource.conformal.com/
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
|
||||||
* copyright notice and this permission notice appear in all copies.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package ostree
|
|
||||||
|
|
||||||
// #cgo pkg-config: glib-2.0 gobject-2.0
|
|
||||||
// #include <glib.h>
|
|
||||||
// #include <glib-object.h>
|
|
||||||
// #include <gio/gio.h>
|
|
||||||
// #include "glibobject.go.h"
|
|
||||||
// #include <stdlib.h>
|
|
||||||
import "C"
|
|
||||||
import (
|
|
||||||
"unsafe"
|
|
||||||
"runtime"
|
|
||||||
"fmt"
|
|
||||||
"errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GBool(b bool) C.gboolean {
|
|
||||||
if b {
|
|
||||||
return C.gboolean(1)
|
|
||||||
}
|
|
||||||
return C.gboolean(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GoBool(b C.gboolean) bool {
|
|
||||||
if b != 0 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
type GError struct {
|
|
||||||
ptr unsafe.Pointer
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGError() GError {
|
|
||||||
return GError{nil}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *GError) Native() *C.GError {
|
|
||||||
if e == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return (*C.GError)(e.ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ConvertGError(e *C.GError) error {
|
|
||||||
defer C.g_error_free(e)
|
|
||||||
return errors.New(C.GoString((*C.char)(C._g_error_get_message(e))))
|
|
||||||
}
|
|
||||||
|
|
||||||
type GType uint
|
|
||||||
|
|
||||||
func (t GType) Name() string {
|
|
||||||
return C.GoString((*C.char)(C.g_type_name(C.GType(t))))
|
|
||||||
}
|
|
||||||
|
|
||||||
type GVariant struct {
|
|
||||||
ptr unsafe.Pointer
|
|
||||||
}
|
|
||||||
|
|
||||||
func GVariantNew(p unsafe.Pointer) *GVariant {
|
|
||||||
o := &GVariant{p}
|
|
||||||
runtime.SetFinalizer(o, (*GVariant).Unref)
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
func GVariantNewSink(p unsafe.Pointer) *GVariant {
|
|
||||||
o := &GVariant{p}
|
|
||||||
runtime.SetFinalizer(o, (*GVariant).Unref)
|
|
||||||
o.RefSink()
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) native() *C.GVariant {
|
|
||||||
return (*C.GVariant)(v.ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) Ref() {
|
|
||||||
C.g_variant_ref(v.native())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) Unref() {
|
|
||||||
C.g_variant_unref(v.native())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) RefSink() {
|
|
||||||
C.g_variant_ref_sink(v.native())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) TypeString() string {
|
|
||||||
cs := (*C.char)(C.g_variant_get_type_string(v.native()))
|
|
||||||
return C.GoString(cs)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) GetChildValue(i int) *GVariant {
|
|
||||||
cchild := C.g_variant_get_child_value(v.native(), C.gsize(i))
|
|
||||||
return GVariantNew(unsafe.Pointer(cchild));
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GVariant) LookupString(key string) (string, error) {
|
|
||||||
ckey := C.CString(key)
|
|
||||||
defer C.free(unsafe.Pointer(ckey))
|
|
||||||
// TODO: Find a way to have constant C strings in golang
|
|
||||||
cstr := C._g_variant_lookup_string(v.native(), ckey)
|
|
||||||
if cstr == nil {
|
|
||||||
return "", fmt.Errorf("No such key: %s", key)
|
|
||||||
}
|
|
||||||
return C.GoString(cstr), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GObject
|
|
||||||
*/
|
|
||||||
|
|
||||||
// IObject is an interface type implemented by Object and all types which embed
|
|
||||||
// an Object. It is meant to be used as a type for function arguments which
|
|
||||||
// require GObjects or any subclasses thereof.
|
|
||||||
type IObject interface {
|
|
||||||
toGObject() *C.GObject
|
|
||||||
ToObject() *GObject
|
|
||||||
}
|
|
||||||
|
|
||||||
// Object is a representation of GLib's GObject.
|
|
||||||
type GObject struct {
|
|
||||||
ptr unsafe.Pointer
|
|
||||||
}
|
|
||||||
|
|
||||||
func GObjectNew(p unsafe.Pointer) *GObject {
|
|
||||||
o := &GObject{p}
|
|
||||||
runtime.SetFinalizer(o, (*GObject).Unref)
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) Ptr() unsafe.Pointer {
|
|
||||||
return v.ptr
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) Native() *C.GObject {
|
|
||||||
if v == nil || v.ptr == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return (*C.GObject)(v.ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) toGObject() *C.GObject {
|
|
||||||
if v == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return v.Native()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) Ref() {
|
|
||||||
C.g_object_ref(C.gpointer(v.ptr))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) Unref() {
|
|
||||||
C.g_object_unref(C.gpointer(v.ptr))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) RefSink() {
|
|
||||||
C.g_object_ref_sink(C.gpointer(v.ptr))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) IsFloating() bool {
|
|
||||||
c := C.g_object_is_floating(C.gpointer(v.ptr))
|
|
||||||
return GoBool(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *GObject) ForceFloating() {
|
|
||||||
C.g_object_force_floating((*C.GObject)(v.ptr))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GIO types
|
|
||||||
|
|
||||||
type GCancellable struct {
|
|
||||||
*GObject
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *GCancellable) native() *C.GCancellable {
|
|
||||||
return (*C.GCancellable)(self.ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// At the moment, no cancellable API, just pass nil
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
static char *
|
|
||||||
_g_error_get_message (GError *error)
|
|
||||||
{
|
|
||||||
g_assert (error != NULL);
|
|
||||||
return error->message;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
_g_variant_lookup_string (GVariant *v, const char *key)
|
|
||||||
{
|
|
||||||
const char *r;
|
|
||||||
if (g_variant_lookup (v, key, "&s", &r))
|
|
||||||
return r;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
// +build linux
|
|
||||||
|
|
||||||
// Public API specification for libostree Go bindings
|
|
||||||
|
|
||||||
package ostree
|
|
||||||
|
|
||||||
import (
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
// #cgo pkg-config: ostree-1
|
|
||||||
// #include <stdlib.h>
|
|
||||||
// #include <glib.h>
|
|
||||||
// #include <ostree.h>
|
|
||||||
// #include "ostree.go.h"
|
|
||||||
import "C"
|
|
||||||
|
|
||||||
type Repo struct {
|
|
||||||
*GObject
|
|
||||||
}
|
|
||||||
|
|
||||||
func RepoGetType() GType {
|
|
||||||
return GType(C.ostree_repo_get_type())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Repo) native() *C.OstreeRepo {
|
|
||||||
return (*C.OstreeRepo)(r.ptr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func repoFromNative(p *C.OstreeRepo) *Repo {
|
|
||||||
if p == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
o := GObjectNew(unsafe.Pointer(p))
|
|
||||||
r := &Repo{o}
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
func RepoNewOpen(path string) (*Repo, error) {
|
|
||||||
var cerr *C.GError = nil
|
|
||||||
cpath := C.CString(path)
|
|
||||||
pathc := C.g_file_new_for_path(cpath);
|
|
||||||
defer C.g_object_unref(C.gpointer(pathc))
|
|
||||||
crepo := C.ostree_repo_new(pathc)
|
|
||||||
repo := repoFromNative(crepo);
|
|
||||||
r := GoBool(C.ostree_repo_open(repo.native(), nil, &cerr))
|
|
||||||
if !r {
|
|
||||||
return nil, ConvertGError(cerr)
|
|
||||||
}
|
|
||||||
return repo, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Repo) GetParent() *Repo {
|
|
||||||
return repoFromNative(C.ostree_repo_get_parent(r.native()))
|
|
||||||
}
|
|
||||||
|
|
||||||
type ObjectType int
|
|
||||||
|
|
||||||
const (
|
|
||||||
OBJECT_TYPE_FILE ObjectType = C.OSTREE_OBJECT_TYPE_FILE
|
|
||||||
OBJECT_TYPE_DIR_TREE = C.OSTREE_OBJECT_TYPE_DIR_TREE
|
|
||||||
OBJECT_TYPE_DIR_META = C.OSTREE_OBJECT_TYPE_DIR_META
|
|
||||||
OBJECT_TYPE_COMMIT = C.OSTREE_OBJECT_TYPE_COMMIT
|
|
||||||
OBJECT_TYPE_TOMBSTONE_COMMIT = C.OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT
|
|
||||||
)
|
|
||||||
|
|
||||||
func (repo *Repo) LoadVariant(t ObjectType, checksum string) (*GVariant, error) {
|
|
||||||
var cerr *C.GError = nil
|
|
||||||
var cvariant *C.GVariant = nil
|
|
||||||
|
|
||||||
r := GoBool(C.ostree_repo_load_variant(repo.native(), C.OstreeObjectType(t), C.CString(checksum), &cvariant, &cerr))
|
|
||||||
if !r {
|
|
||||||
return nil, ConvertGError(cerr)
|
|
||||||
}
|
|
||||||
variant := GVariantNew(unsafe.Pointer(cvariant))
|
|
||||||
return variant, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (repo *Repo) ResolveRev(ref string) (string, error) {
|
|
||||||
var cerr *C.GError = nil
|
|
||||||
var crev *C.char = nil
|
|
||||||
|
|
||||||
r := GoBool(C.ostree_repo_resolve_rev(repo.native(), C.CString(ref), GBool(true), &crev, &cerr))
|
|
||||||
if !r {
|
|
||||||
return "", ConvertGError(cerr)
|
|
||||||
}
|
|
||||||
defer C.free(unsafe.Pointer(crev))
|
|
||||||
return C.GoString(crev), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (commit *GVariant) CommitGetMetadataKeyString(key string) (string, error) {
|
|
||||||
cmeta := GVariantNew(unsafe.Pointer(C.g_variant_get_child_value(commit.native(), 0)))
|
|
||||||
return cmeta.LookupString(key)
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
#include <ostree.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ostree_repo_checkout_options_init_docker_union (OstreeRepoCheckoutOptions *opts)
|
|
||||||
{
|
|
||||||
memset (opts, 0, sizeof (*opts));
|
|
||||||
opts->mode = OSTREE_REPO_CHECKOUT_MODE_USER;
|
|
||||||
opts->overwrite_mode = OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES;
|
|
||||||
opts->disable_fsync = 1;
|
|
||||||
opts->process_whiteouts = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
_g_variant_lookup_string (GVariant *v, const char *key)
|
|
||||||
{
|
|
||||||
const char *r;
|
|
||||||
if (g_variant_lookup (v, key, "&s", &r))
|
|
||||||
return r;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
// +build linux
|
|
||||||
|
|
||||||
// Public API specification for libostree Go bindings
|
|
||||||
|
|
||||||
package ostree
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestTypeName(t *testing.T) {
|
|
||||||
name := RepoGetType().Name();
|
|
||||||
if name != "OstreeRepo" {
|
|
||||||
t.Errorf("%s != OstreeRepo");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRepoNew(t *testing.T) {
|
|
||||||
r, err := RepoNewOpen("/ostree/repo")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%s", err);
|
|
||||||
return
|
|
||||||
}
|
|
||||||
parent := r.GetParent()
|
|
||||||
if parent != nil {
|
|
||||||
t.Errorf("Expected no parent")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRepoGetMetadataVersion(t *testing.T) {
|
|
||||||
r, err := RepoNewOpen("/ostree/repo")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%s", err);
|
|
||||||
return
|
|
||||||
}
|
|
||||||
commit,err := r.ResolveRev("rhel-atomic-host/7/x86_64/standard")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
commitv,err := r.LoadVariant(OBJECT_TYPE_COMMIT, commit)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ver, err := commitv.CommitGetMetadataKeyString("version")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if ver != "7.1.3" {
|
|
||||||
t.Errorf("expected 7.1.3")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
||||||
Submitting patches
|
|
||||||
------------------
|
|
||||||
|
|
||||||
A majority of current maintainers prefer the Github pull request
|
|
||||||
model, and this motivated moving the primary git repository to
|
|
||||||
<https://github.com/ostreedev/ostree>.
|
|
||||||
|
|
||||||
However, we do not use the "Merge pull request" button, because we do
|
|
||||||
not like merge commits for one-patch pull requests, among other
|
|
||||||
reasons. See [this issue](https://github.com/isaacs/github/issues/2)
|
|
||||||
for more information. Instead, we use an instance of
|
|
||||||
[Homu](https://github.com/servo/homu), currently known as
|
|
||||||
`cgwalters-bot`.
|
|
||||||
|
|
||||||
As a review proceeeds, the preferred method is to push `fixup!`
|
|
||||||
commits via `git commit --fixup`. Homu knows how to use
|
|
||||||
`--autosquash` when performing the final merge. See the
|
|
||||||
[Git documentation](https://git-scm.com/docs/git-rebase]) for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
Alternative methods if you don't like Github (also fully supported):
|
|
||||||
|
|
||||||
1. Send mail to <ostree-list@gnome.org>, with the patch attached
|
|
||||||
1. Attach them to <https://bugzilla.gnome.org/>
|
|
||||||
|
|
||||||
It is likely however once a patch is ready to apply a maintainer
|
|
||||||
will push it to a github PR, and merge via Homu.
|
|
||||||
|
|
||||||
Commit message style
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
Please look at `git log` and match the commit log style, which is very
|
|
||||||
similar to the
|
|
||||||
[Linux kernel](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git).
|
|
||||||
|
|
||||||
You may use `Signed-off-by`, but we're not requiring it.
|
|
||||||
|
|
||||||
Running the test suite
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
OSTree uses both `make check` and supports the
|
|
||||||
[Installed Tests](https://wiki.gnome.org/GnomeGoals/InstalledTests)
|
|
||||||
model as well (if `--enable-installed-tests` is provided).
|
|
||||||
|
|
||||||
Coding style
|
|
||||||
------------
|
|
||||||
|
|
||||||
Indentation is GNU. Files should start with the appropriate mode lines.
|
|
||||||
|
|
||||||
Use GCC `__attribute__((cleanup))` wherever possible. If interacting
|
|
||||||
with a third party library, try defining local cleanup macros.
|
|
||||||
|
|
||||||
Use GError and GCancellable where appropriate.
|
|
||||||
|
|
||||||
Prefer returning `gboolean` to signal success/failure, and have output
|
|
||||||
values as parameters.
|
|
||||||
|
|
||||||
Prefer linear control flow inside functions (aside from standard
|
|
||||||
loops). In other words, avoid "early exits" or use of `goto` besides
|
|
||||||
`goto out;`.
|
|
||||||
|
|
||||||
This is an example of an "early exit":
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
myfunc (...)
|
|
||||||
{
|
|
||||||
gboolean ret = FALSE;
|
|
||||||
|
|
||||||
/* some code */
|
|
||||||
|
|
||||||
/* some more code */
|
|
||||||
|
|
||||||
if (condition)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* some more code */
|
|
||||||
|
|
||||||
ret = TRUE;
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
If you must shortcut, use:
|
|
||||||
|
|
||||||
if (condition)
|
|
||||||
{
|
|
||||||
ret = TRUE;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
A consequence of this restriction is that you are encouraged to avoid
|
|
||||||
deep nesting of loops or conditionals. Create internal static helper
|
|
||||||
functions, particularly inside loops. For example, rather than:
|
|
||||||
|
|
||||||
while (condition)
|
|
||||||
{
|
|
||||||
/* some code */
|
|
||||||
if (condition)
|
|
||||||
{
|
|
||||||
for (i = 0; i < somevalue; i++)
|
|
||||||
{
|
|
||||||
if (condition)
|
|
||||||
{
|
|
||||||
/* deeply nested code */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* more nested code */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Instead do this:
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
helperfunc (..., GError **error)
|
|
||||||
{
|
|
||||||
if (condition)
|
|
||||||
{
|
|
||||||
/* deeply nested code */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* more nested code */
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (condition)
|
|
||||||
{
|
|
||||||
/* some code */
|
|
||||||
if (!condition)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
for (i = 0; i < somevalue; i++)
|
|
||||||
{
|
|
||||||
if (!helperfunc (..., i, error))
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../README.md
|
|
||||||
|
|
@ -1,159 +0,0 @@
|
||||||
# Adapting existing mainstream distributions
|
|
||||||
|
|
||||||
## System layout
|
|
||||||
|
|
||||||
First, OSTree encourages systems to implement
|
|
||||||
[UsrMove](http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/)
|
|
||||||
This is simply to avoid the need for more bind mounts. By default
|
|
||||||
OSTree's dracut hook creates a read-only bind mount over `/usr`; you
|
|
||||||
can of course generate individual bind-mounts for `/bin`, all the
|
|
||||||
`/lib` variants, etc. So it is not intended to be a hard requirement.
|
|
||||||
|
|
||||||
Remember, because by default the system is booted into a `chroot`
|
|
||||||
equivalent, there has to be some way to refer to the actual physical
|
|
||||||
root filesystem. Therefore, your operating system tree should contain
|
|
||||||
an empty `/sysroot` directory; at boot time, OSTree will make this a
|
|
||||||
bind mount to the physical / root directory. There is precedent for
|
|
||||||
this name in the initramfs context. You should furthermore make a
|
|
||||||
toplevel symbolic link `/ostree` which points to `/sysroot/ostree`, so
|
|
||||||
that the OSTree tool at runtime can consistently find the system data
|
|
||||||
regardless of whether it's operating on a physical root or inside a
|
|
||||||
deployment.
|
|
||||||
|
|
||||||
Because OSTree only preserves `/var` across upgrades (each
|
|
||||||
deployment's chroot directory will be garbage collected
|
|
||||||
eventually), you will need to choose how to handle other
|
|
||||||
toplevel writable directories specified by the [Filesystem Hierarchy Standard](http://www.pathname.com/fhs/).
|
|
||||||
Your operating system may of course choose
|
|
||||||
not to support some of these such as `/usr/local`, but following is the
|
|
||||||
recommended set:
|
|
||||||
|
|
||||||
- `/home` → `/var/home`
|
|
||||||
- `/opt` → `/var/opt`
|
|
||||||
- `/srv` → `/var/srv`
|
|
||||||
- `/root` → `/var/roothome`
|
|
||||||
- `/usr/local` → `/var/local`
|
|
||||||
- `/mnt` → `/var/mnt`
|
|
||||||
- `/tmp` → `/sysroot/tmp`
|
|
||||||
|
|
||||||
Furthermore, since `/var` is empty by default, your operating system
|
|
||||||
will need to dynamically create the *targets* of these at boot. A
|
|
||||||
good way to do this is using `systemd-tmpfiles`, if your OS uses
|
|
||||||
systemd. For example:
|
|
||||||
|
|
||||||
```
|
|
||||||
d /var/log/journal 0755 root root -
|
|
||||||
L /var/home - - - - ../sysroot/home
|
|
||||||
d /var/opt 0755 root root -
|
|
||||||
d /var/srv 0755 root root -
|
|
||||||
d /var/roothome 0700 root root -
|
|
||||||
d /var/usrlocal 0755 root root -
|
|
||||||
d /var/usrlocal/bin 0755 root root -
|
|
||||||
d /var/usrlocal/etc 0755 root root -
|
|
||||||
d /var/usrlocal/games 0755 root root -
|
|
||||||
d /var/usrlocal/include 0755 root root -
|
|
||||||
d /var/usrlocal/lib 0755 root root -
|
|
||||||
d /var/usrlocal/man 0755 root root -
|
|
||||||
d /var/usrlocal/sbin 0755 root root -
|
|
||||||
d /var/usrlocal/share 0755 root root -
|
|
||||||
d /var/usrlocal/src 0755 root root -
|
|
||||||
d /var/mnt 0755 root root -
|
|
||||||
d /run/media 0755 root root -
|
|
||||||
```
|
|
||||||
|
|
||||||
Particularly note here the double indirection of `/home`. By default,
|
|
||||||
each deployment will share the global toplevel `/home` directory on
|
|
||||||
the physical root filesystem. It is then up to higher levels of
|
|
||||||
management tools to keep `/etc/passwd` or equivalent synchronized
|
|
||||||
between operating systems. Each deployment can easily be reconfigured
|
|
||||||
to have its own home directory set simply by making `/var/home` a real
|
|
||||||
directory.
|
|
||||||
|
|
||||||
## Booting and initramfs technology
|
|
||||||
|
|
||||||
OSTree comes with optional dracut+systemd integration code that parses
|
|
||||||
the `ostree=` kernel command line argument in the initramfs, and then
|
|
||||||
sets up the read-only bind mount on `/usr`, a bind mount on the
|
|
||||||
deployment's `/sysroot` to the physical `/`, and then finally uses
|
|
||||||
`mount(MS_MOVE)` to make the deployment root appear to be the root
|
|
||||||
filesystem before telling systemd to switch root.
|
|
||||||
|
|
||||||
If you are not using dracut or systemd, using OSTree should still be
|
|
||||||
possible, but you will have to write the integration code. Patches to
|
|
||||||
support other initramfs technologies and init systems, if sufficiently
|
|
||||||
clean, will likely be accepted upstream.
|
|
||||||
|
|
||||||
A further specific note regarding `sysvinit`: OSTree used to support
|
|
||||||
recording device files such the `/dev/initctl` FIFO, but no longer
|
|
||||||
does. It's recommended to just patch your initramfs to create this at
|
|
||||||
boot.
|
|
||||||
|
|
||||||
## /usr/lib/passwd
|
|
||||||
|
|
||||||
Unlike traditional package systems, OSTree trees contain *numeric* uid
|
|
||||||
and gids. Furthermore, it does not have a `%post` type mechanism
|
|
||||||
where `useradd` could be invoked. In order to ship an OS that
|
|
||||||
contains both system users and users dynamically created on client
|
|
||||||
machines, you will need to choose a solution for `/etc/passwd`. The
|
|
||||||
core problem is that if you add a user to the system for a daemon, the
|
|
||||||
OSTree upgrade process for `/etc` will simply notice that because
|
|
||||||
`/etc/passwd` differs from the previous default, it will keep the
|
|
||||||
modified config file, and your new OS user will not be visible. The
|
|
||||||
solution chosen for the [Gnome Continuous](https://live.gnome.org/Projects/GnomeContinuous) operating
|
|
||||||
system is to create `/usr/lib/passwd`, and to include a NSS module
|
|
||||||
[nss-altfiles](https://github.com/aperezdc/nss-altfiles) which
|
|
||||||
instructs glibc to read from it. Then, the build system places all
|
|
||||||
system users there, freeing up `/etc/passwd` to be purely a database
|
|
||||||
of local users. See also a more recent effort from [Systemd Stateless](http://0pointer.de/blog/projects/stateless.html)
|
|
||||||
|
|
||||||
## Adapting existing package managers
|
|
||||||
|
|
||||||
The largest endeavor is likely to be redesigning your distribution's
|
|
||||||
package manager to be on top of OSTree, particularly if you want to
|
|
||||||
keep compatibility with the "old way" of installing into the physical
|
|
||||||
`/`. This section will use examples from both `dpkg` and `rpm` as the
|
|
||||||
author has familiarity with both; but the abstract concepts should
|
|
||||||
apply to most traditional package managers.
|
|
||||||
|
|
||||||
There are many levels of possible integration; initially, we will
|
|
||||||
describe the most naive implementation which is the simplest but also
|
|
||||||
the least efficient. We will assume here that the admin is booted
|
|
||||||
into an OSTree-enabled system, and wants to add a set of packages.
|
|
||||||
|
|
||||||
Many package managers store their state in `/var`; but since in the
|
|
||||||
OSTree model that directory is shared between independent versions,
|
|
||||||
the package database must first be found in the per-deployment `/usr`
|
|
||||||
directory. It becomes read-only; remember, all upgrades involve
|
|
||||||
constructing a new filesystem tree, so your package manager will also
|
|
||||||
need to create a copy of its database. Most likely, if you want to
|
|
||||||
continue supporting non-OSTree deployments, simply have your package
|
|
||||||
manager fall back to the legacy `/var` location if the one in `/usr`
|
|
||||||
is not found.
|
|
||||||
|
|
||||||
To install a set of new packages (without removing any existing ones),
|
|
||||||
enumerate the set of packages in the currently booted deployment, and
|
|
||||||
perform dependency resolution to compute the complete set of new
|
|
||||||
packages. Download and unpack these new packages to a temporary
|
|
||||||
directory.
|
|
||||||
|
|
||||||
Now, because we are merely installing new packages and not
|
|
||||||
removing anything, we can make the major optimization of reusing
|
|
||||||
our existing filesystem tree, and merely
|
|
||||||
*layering* the composed filesystem tree of
|
|
||||||
these new packages on top. A command like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree commit -b osname/releasename/description
|
|
||||||
--tree=ref=$osname/$releasename/$description
|
|
||||||
--tree=dir=/var/tmp/newpackages.13A8D0/
|
|
||||||
```
|
|
||||||
|
|
||||||
will create a new commit in the `$osname/$releasename/$description`
|
|
||||||
branch. The OSTree SHA256 checksum of all the files in
|
|
||||||
`/var/tmp/newpackages.13A8D0/` will be computed, but we will not
|
|
||||||
re-checksum the present existing tree. In this layering model,
|
|
||||||
earlier directories will take precedence, but files in later layers
|
|
||||||
will silently override earlier layers.
|
|
||||||
|
|
||||||
Then to actually deploy this tree for the next boot:
|
|
||||||
`ostree admin deploy $osname/$releasename/$description`
|
|
||||||
|
|
@ -1,118 +0,0 @@
|
||||||
# Atomic Upgrades
|
|
||||||
|
|
||||||
## You can turn off the power anytime you want...
|
|
||||||
|
|
||||||
OSTree is designed to implement fully atomic and safe upgrades;
|
|
||||||
more generally, atomic transitions between lists of bootable
|
|
||||||
deployments. If the system crashes or you pull the power, you
|
|
||||||
will have either the old system, or the new one.
|
|
||||||
|
|
||||||
## Simple upgrades via HTTP
|
|
||||||
|
|
||||||
First, the most basic model OSTree supports is one where it replicates
|
|
||||||
pre-generated filesystem trees from a server over HTTP, tracking
|
|
||||||
exactly one ref, which is stored in the `.origin` file for the
|
|
||||||
deployment. The command `ostree admin upgrade`
|
|
||||||
implements this.
|
|
||||||
|
|
||||||
To begin a simple upgrade, OSTree fetches the contents of the ref from
|
|
||||||
the remote server. Suppose we're tracking a ref named
|
|
||||||
`exampleos/buildmaster/x86_64-runtime`. OSTree fetches the URL
|
|
||||||
`http://example.com/repo/refs/exampleos/buildmaster/x86_64-runtime`,
|
|
||||||
which contains a SHA256 checksum. This determines the tree to deploy,
|
|
||||||
and `/etc` will be merged from currently booted tree.
|
|
||||||
|
|
||||||
If we do not have this commit, then, then we perform a pull process.
|
|
||||||
At present (without static deltas), this involves quite simply just
|
|
||||||
fetching each individual object that we do not have, asynchronously.
|
|
||||||
Put in other words, we only download changed files (zlib-compressed).
|
|
||||||
Each object has its checksum validated and is stored in `/ostree/repo/objects/`.
|
|
||||||
|
|
||||||
Once the pull is complete, we have all the objects locally
|
|
||||||
we need to perform a deployment.
|
|
||||||
|
|
||||||
## Upgrades via external tools (e.g. package managers)
|
|
||||||
|
|
||||||
As mentioned in the introduction, OSTree is also designed to allow a
|
|
||||||
model where filesystem trees are computed on the client. It is
|
|
||||||
completely agnostic as to how those trees are generated; they could be
|
|
||||||
computed with traditional packages, packages with post-deployment
|
|
||||||
scripts on top, or built by developers directly from revision control
|
|
||||||
locally, etc.
|
|
||||||
|
|
||||||
At a practical level, most package managers today (`dpkg` and `rpm`)
|
|
||||||
operate "live" on the currently booted filesystem. The way they could
|
|
||||||
work with OSTree is instead to take the list of installed packages in
|
|
||||||
the currently booted tree, and compute a new filesystem from that. A
|
|
||||||
later chapter describes in more details how this could work:
|
|
||||||
[Adapting Existing Systems](adapting-existing.md).
|
|
||||||
|
|
||||||
For the purposes of this section, let's assume that we have a
|
|
||||||
newly generated filesystem tree stored in the repo (which shares
|
|
||||||
storage with the existing booted tree). We can then move on to
|
|
||||||
checking it back out of the repo into a deployment.
|
|
||||||
|
|
||||||
## Assembling a new deployment directory
|
|
||||||
|
|
||||||
Given a commit to deploy, OSTree first allocates a directory for
|
|
||||||
it. This is of the form `/boot/loader/entries/ostree-$osname-$checksum.$serial.conf`.
|
|
||||||
The `$serial` is normally `0`, but if a
|
|
||||||
given commit is deployed more than once, it will be incremented.
|
|
||||||
This is supported because the previous deployment may have
|
|
||||||
configuration in `/etc` that we do not want to use or overwrite.
|
|
||||||
|
|
||||||
Now that we have a deployment directory, a 3-way merge is
|
|
||||||
performed between the (by default) currently booted deployment's
|
|
||||||
`/etc`, its default
|
|
||||||
configuration, and the new deployment (based on its `/usr/etc`).
|
|
||||||
|
|
||||||
## Atomically swapping boot configuration
|
|
||||||
|
|
||||||
At this point, a new deployment directory has been created as a
|
|
||||||
hardlink farm; the running system is untouched, and the bootloader
|
|
||||||
configuration is untouched. We want to add this deployment o the
|
|
||||||
"deployment list".
|
|
||||||
|
|
||||||
To support a more general case, OSTree supports atomic transitioning
|
|
||||||
between arbitrary sets of deployments, with the restriction that the
|
|
||||||
currently booted deployment must always be in the new set. In the
|
|
||||||
normal case, we have exactly one deployment, which is the booted one,
|
|
||||||
and we want to add the new deployment to the list. A more complex
|
|
||||||
command might allow creating 100 deployments as part of one atomic
|
|
||||||
transaction, so that one can set up an automated system to bisect
|
|
||||||
across them.
|
|
||||||
|
|
||||||
## The bootversion
|
|
||||||
|
|
||||||
OSTree allows swapping between boot configurations by implementing the
|
|
||||||
"swapped directory pattern" in `/boot`. This means it is a symbolic
|
|
||||||
link to one of two directories `/ostree/boot.[0|1]`. To swap the
|
|
||||||
contents atomically, if the current version is `0`, we create
|
|
||||||
`/ostree/boot.1`, populate it with the new contents, then atomically
|
|
||||||
swap the symbolic link. Finally, the old contents can be garbage
|
|
||||||
collected at any point.
|
|
||||||
|
|
||||||
## The /ostree/boot directory
|
|
||||||
|
|
||||||
However, we want to optimize for the case where the set of
|
|
||||||
kernel/initramfs pairs is the same between both the old and new
|
|
||||||
deployment lists. This happens when doing an upgrade that does not
|
|
||||||
include the kernel; think of a simple translation update. OSTree
|
|
||||||
optimizes for this case because on some systems `/boot` may be on a
|
|
||||||
separate medium such as flash storage not optimized for significant
|
|
||||||
amounts of write traffic. Related to this, modern OSTree has support
|
|
||||||
for having `/boot` be a read-only mount by default - it will
|
|
||||||
automatically remount read-write just for the portion of time
|
|
||||||
necessary to update the bootloader configuration.
|
|
||||||
|
|
||||||
To implement this, OSTree also maintains the directory
|
|
||||||
`/ostree/boot.$bootversion`, which is a set
|
|
||||||
of symbolic links to the deployment directories. The
|
|
||||||
`$bootversion` here must match the version of
|
|
||||||
`/boot`. However, in order to allow atomic transitions of
|
|
||||||
*this* directory, this is also a swapped directory,
|
|
||||||
so just like `/boot`, it has a version of `0` or `1` appended.
|
|
||||||
|
|
||||||
Each bootloader entry has a special `ostree=` argument which refers to
|
|
||||||
one of these symbolic links. This is parsed at runtime in the
|
|
||||||
initramfs.
|
|
||||||
|
|
@ -1,185 +0,0 @@
|
||||||
# Writing a buildsystem and managing repositories
|
|
||||||
|
|
||||||
OSTree is not a package system. It does not directly support building
|
|
||||||
source code. Rather, it is a tool for transporting and managing
|
|
||||||
content, along with package-system independent aspects like bootloader
|
|
||||||
management for updates.
|
|
||||||
|
|
||||||
We'll assume here that we're planning to generate commits on a build
|
|
||||||
server, then have client systems replicate it. Doing client-side
|
|
||||||
assembly is also possible of course, but this discussion will focus
|
|
||||||
primarily on server-side concerns.
|
|
||||||
|
|
||||||
## Build vs buy
|
|
||||||
|
|
||||||
Therefore, you need to either pick an existing tool for writing
|
|
||||||
content into an OSTree repository, or to write your own. An example
|
|
||||||
tool is [rpm-ostree](https://github.com/projectatomic/rpm-ostree) - it
|
|
||||||
takes as input RPMs, and commits them (currently oriented for a server
|
|
||||||
side, but aiming to do client side too).
|
|
||||||
|
|
||||||
## Initializing
|
|
||||||
|
|
||||||
For this initial discussion, we're assuming you have a single
|
|
||||||
`archive-z2` repository:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir repo
|
|
||||||
ostree --repo=repo init --mode=archive-z2
|
|
||||||
```
|
|
||||||
|
|
||||||
You can export this via a static webserver, and configure clients to
|
|
||||||
pull from it.
|
|
||||||
|
|
||||||
## Writing your own OSTree buildsystem
|
|
||||||
|
|
||||||
There exist many, many systems that basically follow this pattern:
|
|
||||||
|
|
||||||
```
|
|
||||||
$pkg --installroot=/path/to/tmpdir install foo bar baz
|
|
||||||
$imagesystem commit --root=/path/to/tmpdir
|
|
||||||
```
|
|
||||||
|
|
||||||
For various values of `$pkg` such as `yum`, `apt-get`, etc., and
|
|
||||||
values of `$imagesystem` could be simple tarballs, Amazon Machine
|
|
||||||
Images, ISOs, etc.
|
|
||||||
|
|
||||||
Now obviously in this document, we're going to talk about the
|
|
||||||
situation where `$imagesystem` is OSTree. The general idea with
|
|
||||||
OSTree is that wherever you might store a series of tarballs for
|
|
||||||
applications or OS images, OSTree is likely going to be better. For
|
|
||||||
example, it supports GPG signatures, binary deltas, writing bootloader
|
|
||||||
configuration, etc.
|
|
||||||
|
|
||||||
OSTree does not include a package/component build system simply
|
|
||||||
because there already exist plenty of good ones - rather, it is
|
|
||||||
intended to provide an infrastructure layer.
|
|
||||||
|
|
||||||
The above mentioned `rpm-ostree compose tree` chooses RPM as the value
|
|
||||||
of `$pkg` - so binaries are built as RPMs, then committed as a whole
|
|
||||||
into an OSTree commit.
|
|
||||||
|
|
||||||
But let's discuss building our own. If you're just experimenting,
|
|
||||||
it's quite easy to start with the command line. We'll assume for this
|
|
||||||
purpose that you have a build process that outputs a directory tree -
|
|
||||||
we'll call this tool `$pkginstallroot` (which could be `yum
|
|
||||||
--installroot` or `debootstrap`, etc.).
|
|
||||||
|
|
||||||
Your initial prototype is going to look like:
|
|
||||||
|
|
||||||
```
|
|
||||||
$pkginstallroot /path/to/tmpdir
|
|
||||||
ostree --repo=repo commit -s 'build' -b exampleos/x86_64/standard --tree=dir=/path/to/tmpdir
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, if your build system can generate a tarball, you can
|
|
||||||
commit that tarball into OSTree. For example,
|
|
||||||
[OpenEmbedded](http://www.openembedded.org/) can output a tarball, and
|
|
||||||
one can commit it via:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree commit -s 'build' -b exampleos/x86_64/standard --tree=tar=myos.tar
|
|
||||||
```
|
|
||||||
|
|
||||||
## Constructing trees from unions
|
|
||||||
|
|
||||||
The above is a very simplistic model, and you will quickly notice that
|
|
||||||
it's slow. This is because OSTree has to re-checksum and recompress
|
|
||||||
the content each time it's committed. (Most of the CPU time is spent
|
|
||||||
in compression which gets thrown away if the content turns out to be
|
|
||||||
already stored).
|
|
||||||
|
|
||||||
A more advanced approach is to store components in OSTree itself, then
|
|
||||||
union them, and recommit them. At this point, we recommend taking a
|
|
||||||
look at the OSTree API, and choose a programming language supported by
|
|
||||||
[GObject Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection)
|
|
||||||
to write your buildsystem scripts. Python may be a good choice, or
|
|
||||||
you could choose custom C code, etc.
|
|
||||||
|
|
||||||
For the purposes of this tutorial we will use shell script, but it's
|
|
||||||
strongly recommended to choose a real programming language for your
|
|
||||||
build system.
|
|
||||||
|
|
||||||
Let's say that your build system produces separate artifacts (whether
|
|
||||||
those are RPMs, zip files, or whatever). These artifacts should be
|
|
||||||
the result of `make install DESTDIR=` or similar. Basically
|
|
||||||
equivalent to RPMs/debs.
|
|
||||||
|
|
||||||
Further, in order to make things fast, we will need a separate
|
|
||||||
`bare-user` repository in order to perform checkouts quickly via
|
|
||||||
hardlinks. We'll then export content into the `archive-z2` repository
|
|
||||||
for use by client systems.
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir build-repo
|
|
||||||
ostree --repo=build-repo init --mode=bare-user
|
|
||||||
```
|
|
||||||
|
|
||||||
You can begin committing those as individual branches:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=build-repo commit -b exampleos/x86_64/bash --tree=tar=bash-4.2-bin.tar.gz
|
|
||||||
ostree --repo=build-repo commit -b exampleos/x86_64/systemd --tree=tar=systemd-224-bin.tar.gz
|
|
||||||
```
|
|
||||||
|
|
||||||
Set things up so that whenever a package changes, you redo the
|
|
||||||
`commit` with the new package version - conceptually, the branch
|
|
||||||
tracks the individual package versions over time, and defaults to
|
|
||||||
"latest". This isn't required - one could also include the version in
|
|
||||||
the branch name, and have metadata outside to determine "latest" (or
|
|
||||||
the desired version).
|
|
||||||
|
|
||||||
Now, to construct our final tree:
|
|
||||||
|
|
||||||
```
|
|
||||||
rm -rf exampleos-build
|
|
||||||
for package in bash systemd; do
|
|
||||||
ostree --repo=build-repo checkout -U --union exampleos/x86_64/${package} exampleos-build
|
|
||||||
done
|
|
||||||
# Set up a "rofiles-fuse" mount point; this ensures that any processes
|
|
||||||
# we run for post-processing of the tree don't corrupt the hardlinks.
|
|
||||||
mkdir -p mnt
|
|
||||||
rofiles-fuse exampleos-build mnt
|
|
||||||
# Now run global "triggers", generate cache files:
|
|
||||||
ldconfig -r mnt
|
|
||||||
(Insert other programs here)
|
|
||||||
fusermount -u mnt
|
|
||||||
ostree --repo=build-repo commit -b exampleos/x86_64/standard --link-checkout-speedup exampleos-build
|
|
||||||
```
|
|
||||||
|
|
||||||
There are a number of interesting things going on here. The major
|
|
||||||
architectural change is that we're using `--link-checkout-speedup`.
|
|
||||||
This is a way to tell OSTree that our checkout is made via hardlinks,
|
|
||||||
and to scan the repository in order to build up a reverse `(device,
|
|
||||||
inode) -> checksum` mapping.
|
|
||||||
|
|
||||||
In order for this mapping to be accurate, we needed the `rofiles-fuse`
|
|
||||||
to ensure that any changed files had new inodes (and hence a new
|
|
||||||
checksum).
|
|
||||||
|
|
||||||
## Migrating content between repositories
|
|
||||||
|
|
||||||
Now that we have content in our `build-repo` repository (in
|
|
||||||
`bare-user` mode), we need to move the `exampleos/x86_64/standard`
|
|
||||||
branch content into the repository just named `repo` (in `archive-z2`
|
|
||||||
mode) for export, which will involve zlib compression of new objects.
|
|
||||||
We likely want to generate static deltas after that as well.
|
|
||||||
|
|
||||||
Let's copy the content:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo pull-local build-repo exampleos/x86_64/standard
|
|
||||||
```
|
|
||||||
|
|
||||||
Clients can now incrementally download new objects - however, this
|
|
||||||
would also be a good time to generate a delta from the previous
|
|
||||||
commit.
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo static-delta generate exampleos/x86_64/standard
|
|
||||||
```
|
|
||||||
|
|
||||||
## More sophisticated repository management
|
|
||||||
|
|
||||||
Next, see [Repository Management](repository-management.md) for the
|
|
||||||
next steps in managing content in OSTree repositories.
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
||||||
# Deployments
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
Built on top of the OSTree versioning filesystem core is a layer
|
|
||||||
that knows how to deploy, parallel install, and manage Unix-like
|
|
||||||
operating systems (accessible via `ostree admin`). The core content of these operating systems
|
|
||||||
are treated as read-only, but they transparently share storage.
|
|
||||||
|
|
||||||
A deployment is physically located at a path of the form
|
|
||||||
`/ostree/deploy/$osname/deploy/$checksum`.
|
|
||||||
OSTree is designed to boot directly into exactly one deployment
|
|
||||||
at a time; each deployment is intended to be a target for
|
|
||||||
`chroot()` or equivalent.
|
|
||||||
|
|
||||||
### "osname": Group of deployments that share /var
|
|
||||||
|
|
||||||
Each deployment is grouped in exactly one "osname". From above, you
|
|
||||||
can see that an osname is physically represented in the
|
|
||||||
`/ostree/deploy/$osname` directory. For example, OSTree can allow
|
|
||||||
parallel installing Debian in `/ostree/deploy/debian` and Red Hat
|
|
||||||
Enterprise Linux in `/ostree/deploy/rhel` (subject to operating system
|
|
||||||
support, present released versions of these operating systems may not
|
|
||||||
support this).
|
|
||||||
|
|
||||||
Each osname has exactly one copy of the traditional Unix `/var`,
|
|
||||||
stored physically in `/ostree/deploy/$osname/var`. OSTree provides
|
|
||||||
support tools for `systemd` to create a Linux bind mount that ensures
|
|
||||||
the booted deployment sees the shared copy of `/var`.
|
|
||||||
|
|
||||||
OSTree does not touch the contents of `/var`. Operating system
|
|
||||||
components such as daemon services are required to create any
|
|
||||||
directories they require there at runtime
|
|
||||||
(e.g. `/var/cache/$daemonname`), and to manage upgrading data formats
|
|
||||||
inside those directories.
|
|
||||||
|
|
||||||
### Contents of a deployment
|
|
||||||
|
|
||||||
A deployment begins with a specific commit (represented as a
|
|
||||||
SHA256 hash) in the OSTree repository in `/ostree/repo`. This commit refers
|
|
||||||
to a filesystem tree that represents the underlying basis of a
|
|
||||||
deployment. For short, we will call this the "tree", to
|
|
||||||
distinguish it from the concept of a deployment.
|
|
||||||
|
|
||||||
First, the tree must include a kernel stored as
|
|
||||||
`/boot/vmlinuz-$checksum`. The checksum should be a SHA256 hash of
|
|
||||||
the kernel contents; it must be pre-computed before storing the kernel
|
|
||||||
in the repository. Optionally, the tree can contain an initramfs,
|
|
||||||
stored as `/boot/initramfs-$checksum`. If this exists, the checksum
|
|
||||||
must include both the kernel and initramfs contents. OSTree will use
|
|
||||||
this to determine which kernels are shared. The rationale for this is
|
|
||||||
to avoid computing checksums on the client by default.
|
|
||||||
|
|
||||||
The deployment should not have a traditional UNIX `/etc`; instead, it
|
|
||||||
should include `/usr/etc`. This is the "default configuration". When
|
|
||||||
OSTree creates a deployment, it performs a 3-way merge using the
|
|
||||||
*old* default configuration, the active system's `/etc`, and the new
|
|
||||||
default configuration. In the final filesystem tree for a deployment
|
|
||||||
then, `/etc` is a regular writable directory.
|
|
||||||
|
|
||||||
Besides the exceptions of `/var` and `/etc` then, the rest of the
|
|
||||||
contents of the tree are checked out as hard links into the
|
|
||||||
repository. It's strongly recommended that operating systems ship all
|
|
||||||
of their content in `/usr`, but this is not a hard requirement.
|
|
||||||
|
|
||||||
Finally, a deployment may have a `.origin` file, stored next to its
|
|
||||||
directory. This file tells `ostree admin upgrade` how to upgrade it.
|
|
||||||
At the moment, OSTree only supports upgrading a single refspec.
|
|
||||||
However, in the future OSTree may support a syntax for composing
|
|
||||||
layers of trees, for example.
|
|
||||||
|
|
||||||
### The system /boot
|
|
||||||
|
|
||||||
While OSTree parallel installs deployments cleanly inside the
|
|
||||||
`/ostree` directory, ultimately it has to control the system's `/boot`
|
|
||||||
directory. The way this works is via the
|
|
||||||
[Boot Loader Specification](http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec),
|
|
||||||
which is a standard for bootloader-independent drop-in configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
When a tree is deployed, it will have a configuration file generated
|
|
||||||
of the form
|
|
||||||
`/boot/loader/entries/ostree-$osname-$checksum.$serial.conf`. This
|
|
||||||
configuration file will include a special `ostree=` kernel argument
|
|
||||||
that allows the initramfs to find (and `chroot()` into) the specified
|
|
||||||
deployment.
|
|
||||||
|
|
||||||
At present, not all bootloaders implement the BootLoaderSpec, so
|
|
||||||
OSTree contains code for some of these to regenerate native config
|
|
||||||
files (such as `/boot/syslinux/syslinux.conf`) based on the entries.
|
|
||||||
|
|
@ -1,180 +0,0 @@
|
||||||
# OSTree data formats
|
|
||||||
|
|
||||||
## On the topic of "smart servers"
|
|
||||||
|
|
||||||
One really crucial difference between OSTree and git is that git has a
|
|
||||||
"smart server". Even when fetching over `https://`, it isn't just a
|
|
||||||
static webserver, but one that e.g. dynamically computes and
|
|
||||||
compresses pack files for each client.
|
|
||||||
|
|
||||||
In contrast, the author of OSTree feels that for operating system
|
|
||||||
updates, many deployments will want to use simple static webservers,
|
|
||||||
the same target most package systems were designed to use. The
|
|
||||||
primary advantages are security and compute efficiency. Services like
|
|
||||||
Amazon S3 and CDNs are a canonical target, as well as a stock static
|
|
||||||
nginx server.
|
|
||||||
|
|
||||||
## The archive-z2 format
|
|
||||||
|
|
||||||
In the [repo](repo) section, the concept of objects was introduced,
|
|
||||||
where file/content objects are checksummed and managed individually.
|
|
||||||
(Unlike a package system, which operates on compressed aggregates).
|
|
||||||
|
|
||||||
The archive-z2 format simply gzip-compresses each content object.
|
|
||||||
Metadata objects are stored uncompressed. This means that it's easy
|
|
||||||
to serve via static HTTP.
|
|
||||||
|
|
||||||
When you commit new content, you will see new `.filez` files appearing
|
|
||||||
in `objects/`.
|
|
||||||
|
|
||||||
## archive-z2 efficiency
|
|
||||||
|
|
||||||
The advantages of `archive-z2`:
|
|
||||||
|
|
||||||
- It's easy to understand and implement
|
|
||||||
- Can be served directly over plain HTTP by a static webserver
|
|
||||||
- Clients can download/unpack updates incrementally
|
|
||||||
- Space efficient on the server
|
|
||||||
|
|
||||||
The biggest disadvantage of this format is that for a client to
|
|
||||||
perform an update, one HTTP request per changed file is required. In
|
|
||||||
some scenarios, this actually isn't bad at all, particularly with
|
|
||||||
techniques to reduce HTTP overhead, such as
|
|
||||||
[HTTP/2](https://en.wikipedia.org/wiki/HTTP/2).
|
|
||||||
|
|
||||||
In order to make this format work well, you should design your content
|
|
||||||
such that large data that changes infrequently (e.g. graphic images)
|
|
||||||
are stored separately from small frequently changing data (application
|
|
||||||
code).
|
|
||||||
|
|
||||||
Other disadvantages of `archive-z2`:
|
|
||||||
|
|
||||||
- It's quite bad when clients are performing an initial pull (without HTTP/2),
|
|
||||||
- One doesn't know the total size (compressed or uncompressed) of content
|
|
||||||
before downloading everything
|
|
||||||
|
|
||||||
## Aside: the bare and bare-user formats
|
|
||||||
|
|
||||||
The most common operation is to pull from an `archive-z2` repository
|
|
||||||
into a `bare` or `bare-user` formatted repository. These latter two
|
|
||||||
are not compressed on disk. In other words, pulling to them is
|
|
||||||
similar to unpacking (but not installing) an RPM/deb package.
|
|
||||||
|
|
||||||
The `bare-user` format is a bit special in that the uid/gid and xattrs
|
|
||||||
from the content are ignored. This is primarily useful if you want to
|
|
||||||
have the same OSTree-managed content that can be run on a host system
|
|
||||||
or an unprivileged container.
|
|
||||||
|
|
||||||
## Static deltas
|
|
||||||
|
|
||||||
OSTree itself was originally focused on a continuous delivery model, where
|
|
||||||
client systems are expected to update regularly. However, many OS vendors
|
|
||||||
would like to supply content that's updated e.g. once a month or less often.
|
|
||||||
|
|
||||||
For this model, we can do a lot better to support batched updates than
|
|
||||||
a basic `archive-z2` repo. However, we still want to preserve the
|
|
||||||
model of "static webserver only". Given this, OSTree has gained the
|
|
||||||
concept of a "static delta".
|
|
||||||
|
|
||||||
These deltas are targeted to be a delta between two specific commit
|
|
||||||
objects, including "bsdiff" and "rsync-style" deltas within a content
|
|
||||||
object. Static deltas also support `from NULL`, where the client can
|
|
||||||
more efficiently download a commit object from scratch.
|
|
||||||
|
|
||||||
Effectively, we're spending server-side storage (and one-time compute
|
|
||||||
cost), and gaining efficiency in client network bandwidth.
|
|
||||||
|
|
||||||
## Static delta repository layout
|
|
||||||
|
|
||||||
Since static deltas may not exist, the client first needs to attempt
|
|
||||||
to locate one. Suppose a client wants to retrieve commit `${new}`
|
|
||||||
while currently running `${current}`.
|
|
||||||
|
|
||||||
The first thing to understand is that in order to save space, these
|
|
||||||
two commits are "modified base64" - the `/` character is replaced with
|
|
||||||
`_`.
|
|
||||||
|
|
||||||
Like the commit objects, a "prefix directory" is used to make
|
|
||||||
management easier for filesystem tools
|
|
||||||
|
|
||||||
A delta is named `$(mbase64 $from)-$(mbase64 $to)`, for example
|
|
||||||
`GpTyZaVut2jXFPWnO4LJiKEdRTvOw_mFUCtIKW1NIX0-L8f+VVDkEBKNc1Ncd+mDUrSVR4EyybQGCkuKtkDnTwk`,
|
|
||||||
which in SHA256 format is
|
|
||||||
`1a94f265a56eb768d714f5a73b82c988a11d453bcec3f985502b48296d4d217d-2fc7fe5550e410128d73535c77e98352b495478132c9b4060a4b8ab640e74f09`.
|
|
||||||
|
|
||||||
Finally, the actual content can be found in
|
|
||||||
`deltas/$fromprefix/$fromsuffix-$to`.
|
|
||||||
|
|
||||||
## Static delta internal structure
|
|
||||||
|
|
||||||
A delta is itself a directory. Inside, there is a file called
|
|
||||||
`superblock` which contains metadata. The rest of the files will be
|
|
||||||
integers bearing packs of content.
|
|
||||||
|
|
||||||
The file format of static deltas should be currently considered an
|
|
||||||
OSTree implementation detail. Obviously, nothing stops one from
|
|
||||||
writing code which is compatible with OSTree today. However, we would
|
|
||||||
like the flexibility to expand and change things, and having multiple
|
|
||||||
codebases makes that more problematic. Please contact the authors
|
|
||||||
with any requests.
|
|
||||||
|
|
||||||
That said, one critical thing to understand about the design is that
|
|
||||||
delta payloads are a bit more like "restricted programs" than they are
|
|
||||||
raw data. There's a "compilation" phase which generates output that
|
|
||||||
the client executes.
|
|
||||||
|
|
||||||
This "updates as code" model allows for multiple content generation
|
|
||||||
strategies. The design of this was inspired by that of Chromium:
|
|
||||||
[ChromiumOS Autoupdate](http://dev.chromium.org/chromium-os/chromiumos-design-docs/filesystem-autoupdate).
|
|
||||||
|
|
||||||
### The delta superblock
|
|
||||||
|
|
||||||
The superblock contains:
|
|
||||||
|
|
||||||
- arbitrary metadata
|
|
||||||
- delta generation timestamp
|
|
||||||
- the new commit object
|
|
||||||
- An array of recursive deltas to apply
|
|
||||||
- An array of per-part metadata, including total object sizes (compressed and uncompressed),
|
|
||||||
- An array of fallback objects
|
|
||||||
|
|
||||||
Let's define a delta part, then return to discuss details:
|
|
||||||
|
|
||||||
## A delta part
|
|
||||||
|
|
||||||
A delta part is a combination of a raw blob of data, plus a very
|
|
||||||
restricted bytecode that operates on it. Say for example two files
|
|
||||||
happen to share a common section. It's possible for the delta
|
|
||||||
compilation to include that section once in the delta data blob, then
|
|
||||||
generate instructions to write out that blob twice when generating
|
|
||||||
both objects.
|
|
||||||
|
|
||||||
Realistically though, it's very common for most of a delta to just be
|
|
||||||
"stream of new objects" - if one considers it, it doesn't make sense
|
|
||||||
to have too much duplication inside operating system content at this
|
|
||||||
level.
|
|
||||||
|
|
||||||
So then, what's more interesting is that OSTree static deltas support
|
|
||||||
a per-file delta algorithm called
|
|
||||||
[bsdiff](https://github.com/mendsley/bsdiff) that most notably works
|
|
||||||
well on executable code.
|
|
||||||
|
|
||||||
The current delta compiler scans for files with matching basenames in
|
|
||||||
each commit that have a similar size, and attempts a bsdiff between
|
|
||||||
them. (It would make sense later to have a build system provide a
|
|
||||||
hint for this - for example, files within a same package).
|
|
||||||
|
|
||||||
A generated bsdiff is included in the payload blob, and applying it is
|
|
||||||
an instruction.
|
|
||||||
|
|
||||||
## Fallback objects
|
|
||||||
|
|
||||||
It's possible for there to be large-ish files which might be resistant
|
|
||||||
to bsdiff. A good example is that it's common for operating systems
|
|
||||||
to use an "initramfs", which is itself a compressed filesystem. This
|
|
||||||
"internal compression" defeats bsdiff analysis.
|
|
||||||
|
|
||||||
For these types of objects, the delta superblock contains an array of
|
|
||||||
"fallback objects". These objects aren't included in the delta
|
|
||||||
parts - the client simply fetches them from the underlying `.filez`
|
|
||||||
object.
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
# OSTree Overview
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
OSTree an upgrade system for Linux-based operating systems that
|
|
||||||
performs atomic upgrades of complete filesystem trees. It is
|
|
||||||
not a package system; rather, it is intended to complement them.
|
|
||||||
A primary model is composing packages on a server, and then
|
|
||||||
replicating them to clients.
|
|
||||||
|
|
||||||
The underlying architecture might be summarized as "git for
|
|
||||||
operating system binaries". It operates in userspace, and will
|
|
||||||
work on top of any Linux filesystem. At its core is a git-like
|
|
||||||
content-addressed object store, and layered on top of that is
|
|
||||||
bootloader configuration, management of
|
|
||||||
`/etc`, and other functions to perform an
|
|
||||||
upgrade beyond just replicating files.
|
|
||||||
|
|
||||||
You can use OSTree standalone in the pure replication model,
|
|
||||||
but another approach is to add a package manager on top,
|
|
||||||
thus creating a hybrid tree/package system.
|
|
||||||
|
|
||||||
## Comparison with "package managers"
|
|
||||||
|
|
||||||
Because OSTree is designed for deploying core operating
|
|
||||||
systems, a comparison with traditional "package managers" such
|
|
||||||
as dpkg and rpm is illustrative. Packages are traditionally
|
|
||||||
composed of partial filesystem trees with metadata and scripts
|
|
||||||
attached, and these are dynamically assembled on the client
|
|
||||||
machine, after a process of dependency resolution.
|
|
||||||
|
|
||||||
In contrast, OSTree only supports recording and deploying
|
|
||||||
*complete* (bootable) filesystem trees. It
|
|
||||||
has no built-in knowledge of how a given filesystem tree was
|
|
||||||
generated or the origin of individual files, or dependencies,
|
|
||||||
descriptions of individual components. Put another way, OSTree
|
|
||||||
only handles delivery and deployment; you will likely still want
|
|
||||||
to include inside each tree metadata about the individual
|
|
||||||
components that went into the tree. For example, a system
|
|
||||||
administrator may want to know what version of OpenSSL was
|
|
||||||
included in your tree, so you should support the equivalent of
|
|
||||||
`rpm -q` or `dpkg -L`.
|
|
||||||
|
|
||||||
The OSTree core emphasizes replicating read-only OS trees via
|
|
||||||
HTTP, and where the OS includes (if desired) an entirely
|
|
||||||
separate mechanism to install applications, stored in `/var` if they're system global, or
|
|
||||||
`/home` for per-user
|
|
||||||
application installation. An example application mechanism is
|
|
||||||
<http://docker.io/>
|
|
||||||
|
|
||||||
However, it is entirely possible to use OSTree underneath a
|
|
||||||
package system, where the contents of `/usr` are computed on the client.
|
|
||||||
For example, when installing a package, rather than changing the
|
|
||||||
currently running filesystem, the package manager could assemble
|
|
||||||
a new filesystem tree that layers the new packages on top of a
|
|
||||||
base tree, record it in the local OSTree repository, and then
|
|
||||||
set it up for the next boot. To support this model, OSTree
|
|
||||||
provides an (introspectable) C shared library.
|
|
||||||
|
|
||||||
## Comparison with block/image replication
|
|
||||||
|
|
||||||
OSTree shares some similarity with "dumb" replication and
|
|
||||||
stateless deployments, such as the model common in "cloud"
|
|
||||||
deployments where nodes are booted from an (effectively)
|
|
||||||
readonly disk, and user data is kept on a different volumes.
|
|
||||||
The advantage of "dumb" replication, shared by both OSTree and
|
|
||||||
the cloud model, is that it's *reliable*
|
|
||||||
and *predictable*.
|
|
||||||
|
|
||||||
But unlike many default image-based deployments, OSTree supports
|
|
||||||
exactly two persistent writable directories that are preserved across
|
|
||||||
upgrades: `/etc` and `/var`.
|
|
||||||
|
|
||||||
Because OSTree operates at the Unix filesystem layer, it works
|
|
||||||
on top of any filesystem or block storage layout; it's possible
|
|
||||||
to replicate a given filesystem tree from an OSTree repository
|
|
||||||
into plain ext4, BTRFS, XFS, or in general any Unix-compatible
|
|
||||||
filesystem that supports hard links. Note: OSTree will
|
|
||||||
transparently take advantage of some BTRFS features if deployed
|
|
||||||
on it.
|
|
||||||
|
|
||||||
OSTree is orthogonal to virtualization mechanisms like AMIs and qcow2
|
|
||||||
images, though it's most useful though if you plan to update stateful
|
|
||||||
VMs in-place, rather than generating new images.
|
|
||||||
|
|
||||||
In practice, users of "bare metal" configurations will find the OSTree
|
|
||||||
model most useful.
|
|
||||||
|
|
||||||
## Atomic transitions between parallel-installable read-only filesystem trees
|
|
||||||
|
|
||||||
Another deeply fundamental difference between both package
|
|
||||||
managers and image-based replication is that OSTree is
|
|
||||||
designed to parallel-install *multiple versions* of multiple
|
|
||||||
*independent* operating systems. OSTree
|
|
||||||
relies on a new toplevel `ostree` directory; it can in fact
|
|
||||||
parallel install inside an existing OS or distribution
|
|
||||||
occupying the physical `/` root.
|
|
||||||
|
|
||||||
On each client machine, there is an OSTree repository stored
|
|
||||||
in `/ostree/repo`, and a set of "deployments" stored in `/ostree/deploy/$OSNAME/$CHECKSUM`.
|
|
||||||
Each deployment is primarily composed of a set of hardlinks
|
|
||||||
into the repository. This means each version is deduplicated;
|
|
||||||
an upgrade process only costs disk space proportional to the
|
|
||||||
new files, plus some constant overhead.
|
|
||||||
|
|
||||||
The model OSTree emphasizes is that the OS read-only content
|
|
||||||
is kept in the classic Unix `/usr`; it comes with code to
|
|
||||||
create a Linux read-only bind mount to prevent inadvertent
|
|
||||||
corruption. There is exactly one `/var` writable directory shared
|
|
||||||
between each deployment for a given OS. The OSTree core code
|
|
||||||
does not touch content in this directory; it is up to the code
|
|
||||||
in each operating system for how to manage and upgrade state.
|
|
||||||
|
|
||||||
Finally, each deployment has its own writable copy of the
|
|
||||||
configuration store `/etc`. On upgrade, OSTree will
|
|
||||||
perform a basic 3-way diff, and apply any local changes to the
|
|
||||||
new copy, while leaving the old untouched.
|
|
||||||
|
|
@ -1,315 +0,0 @@
|
||||||
# Related Projects
|
|
||||||
|
|
||||||
OSTree is in many ways very evolutionary. It builds on concepts and
|
|
||||||
ideas introduced from many different projects such as
|
|
||||||
[Systemd Stateless](http://0pointer.net/blog/projects/stateless.html),
|
|
||||||
[Systemd Bootloader Spec](https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/),
|
|
||||||
[Chromium Autoupdate](http://dev.chromium.org/chromium-os/chromiumos-design-docs/filesystem-autoupdate),
|
|
||||||
the much older
|
|
||||||
[Fedora/Red Hat Stateless Project](https://fedoraproject.org/wiki/StatelessLinux),
|
|
||||||
[Linux VServer](http://linux-vserver.org/index.php?title=util-vserver:Vhashify&oldid=2285)
|
|
||||||
and many more.
|
|
||||||
|
|
||||||
As mentioned elsewhere, OSTree is strongly influenced by package
|
|
||||||
manager designs as well. This page is not intended to be an
|
|
||||||
exhaustive list of such projects, but we will try to keep it up to
|
|
||||||
date, and relatively agnostic.
|
|
||||||
|
|
||||||
Broadly speaking, projects in this area fall into two camps; either
|
|
||||||
a tool to snapshot systems on the client side (dpkg/rpm + BTRFS/LVM),
|
|
||||||
or a tool to compose on a server and replicate (ChromiumOS, Clear
|
|
||||||
Linux). OSTree is flexible enough to do both.
|
|
||||||
|
|
||||||
## Combining dpkg/rpm + (BTRFS/LVM)
|
|
||||||
|
|
||||||
In this approach, one uses a block/filesystem snapshot tool underneath
|
|
||||||
the system package manager.
|
|
||||||
|
|
||||||
The
|
|
||||||
[oVirt Node imgbased](https://gerrit.ovirt.org/gitweb?p=imgbased.git)
|
|
||||||
tool is an example of this approach, as are a few others below.
|
|
||||||
|
|
||||||
Regarding [BTRFS](https://btrfs.wiki.kernel.org/index.php/Main_Page)
|
|
||||||
in particular - the OSTree author believes that Linux storage is a
|
|
||||||
wide world, and while BTRFS is quite good, it is not everywhere now,
|
|
||||||
nor will it be in the near future. There are other recently developed
|
|
||||||
filesystems like [f2fs](https://en.wikipedia.org/wiki/F2FS), and Red
|
|
||||||
Hat Enterprise Linux still defaults to
|
|
||||||
[XFS](https://en.wikipedia.org/wiki/XFS).
|
|
||||||
|
|
||||||
Using a snapshot tool underneath a package manager does help
|
|
||||||
significantly. In the rest of this text, we will use "BTRFS" as a
|
|
||||||
mostly generic tool for filesystem snapshots.
|
|
||||||
|
|
||||||
The obvious thing to do is layer BTRFS under dpkg/rpm, and have a
|
|
||||||
separate subvolume for `/home` so rollbacks don't lose your data. See
|
|
||||||
e.g. [Fedora BTRFS Rollback Feature](http://fedoraproject.org/wiki/Features/SystemRollbackWithBtrfs).
|
|
||||||
|
|
||||||
More generally, if you want to use BTRFS to roll back changes made by
|
|
||||||
dpkg/rpm, you have to carefully set up the partition layout so that
|
|
||||||
the files laid out by dpkg/rpm are installed in a subvolume to
|
|
||||||
snapshot.
|
|
||||||
|
|
||||||
This problem in many ways is addressed by the changes OSTree forces,
|
|
||||||
such as putting all local state in `/var` (e.g. `/usr/local` ->
|
|
||||||
`/var/usrlocal`). Then one can BTRFS snapshot `/usr`. This gets pretty
|
|
||||||
far, except handling `/etc` is messy. This is something OSTree does
|
|
||||||
well.
|
|
||||||
|
|
||||||
In general, if one really tries to flesh out the BTRFS approach, a
|
|
||||||
nontrivial middle layer of code between dpkg/rpm and BTRFS (or deep
|
|
||||||
awareness of BTRFS in dpkg/rpm itself) will be required.
|
|
||||||
|
|
||||||
The OSTree author believes that having total freedom at the block
|
|
||||||
storage layer is better for general purpose operating systems. For
|
|
||||||
example, with OSTree, one is free to use BTRFS in any way you like -
|
|
||||||
you may decide to use a subvolume for `/home`, or not.
|
|
||||||
|
|
||||||
Furthermore, in its most basic incarnation, the rpm/dpkg + BTRFS
|
|
||||||
doesn't solve the race conditions that happen when unpacking packages
|
|
||||||
into the live system, such as deleting the files underneath Firefox
|
|
||||||
while it's running. One could unpack packages into a separate root,
|
|
||||||
and switch to that, which gets closer to the OSTree architecture.
|
|
||||||
|
|
||||||
Note though OSTree does take advantage of BTRFS if installed on top of
|
|
||||||
it! In particular, it will use reflink for the copies of `/etc` if
|
|
||||||
available.
|
|
||||||
|
|
||||||
All of the above also applies if one replaces "BTRFS" with "LVM
|
|
||||||
snapshots" except for the reflinks.
|
|
||||||
|
|
||||||
OSTree supports using "bare-user" repositories, which do not require
|
|
||||||
root to use. Using a filesystem-level layer without root is more
|
|
||||||
difficult and would likely require a setuid helper or privileged service.
|
|
||||||
|
|
||||||
Finally, see the next portion around ChromiumOS for why a hybrid but
|
|
||||||
integrated package/image system improves on this.
|
|
||||||
|
|
||||||
## ChromiumOS updater
|
|
||||||
|
|
||||||
Many people who look at OSTree are most interested in using
|
|
||||||
it as an updater for embedded or fixed-purpose systems, similar to use cases
|
|
||||||
from the [ChromiumOS updater](http://dev.chromium.org/chromium-os/chromiumos-design-docs/filesystem-autoupdate).
|
|
||||||
|
|
||||||
The ChromiumOS approach uses two partitions that are swapped via the
|
|
||||||
bootloader. It has a very network-efficient update protocol, using a
|
|
||||||
custom binary delta scheme between filesystem snapshots.
|
|
||||||
|
|
||||||
This model even allows for switching filesystem types in an update.
|
|
||||||
|
|
||||||
A major downside of this approach is that the OS size is doubled on
|
|
||||||
disk always. In contrast, OSTree uses plain Unix hardlinks, which
|
|
||||||
means it essentially only requires disk space proportional to the
|
|
||||||
changed files, plus some small fixed overhead.
|
|
||||||
|
|
||||||
This means with OSTree, one can easily have more than two trees
|
|
||||||
(deployments). Another example is that the system OSTree repository
|
|
||||||
could *also* be used for application containers.
|
|
||||||
|
|
||||||
Finally, the author of OSTree believes that what one really wants for
|
|
||||||
many cases is image replication *with* the ability to layer on some
|
|
||||||
additional components (e.g. packages) - a hybrid model. This is what
|
|
||||||
[rpm-ostree](https://github.com/projectatomic/rpm-ostree/) is aiming
|
|
||||||
to support.
|
|
||||||
|
|
||||||
## Ubuntu Image Based Updates
|
|
||||||
|
|
||||||
See <https://wiki.ubuntu.com/ImageBasedUpgrades>. Very architecturally
|
|
||||||
similar to ChromeOS, although more interesting is discussion for
|
|
||||||
supporting package installation on top, similar to
|
|
||||||
[rpm-ostree package layering](https://github.com/projectatomic/rpm-ostree/pull/107).
|
|
||||||
|
|
||||||
## Clear Linux Software update
|
|
||||||
|
|
||||||
The
|
|
||||||
[Clear Linux Software update](https://clearlinux.org/features/software-update)
|
|
||||||
system is not very well documented.
|
|
||||||
[This mailing list post](https://lists.clearlinux.org/pipermail/dev/2016-January/000159.html)
|
|
||||||
has some reverse-engineered design documentation.
|
|
||||||
|
|
||||||
Like OSTree static deltas, it also uses bsdiff for network efficiency.
|
|
||||||
|
|
||||||
More information will be filled in here over time. The OSTree author
|
|
||||||
believes that at the moment, the "CL updater" is not truly atomic in
|
|
||||||
the sense that because it applies updates live, there is a window
|
|
||||||
where the OS root may be inconsistent.
|
|
||||||
|
|
||||||
## Mender.io
|
|
||||||
|
|
||||||
[Mender.io](https://mender.io/) is another implementation of the dual
|
|
||||||
partition approach.
|
|
||||||
|
|
||||||
## OLPC update
|
|
||||||
|
|
||||||
OSTree is basically a generalization of olpc-update, except using
|
|
||||||
plain HTTP instead of rsync. OSTree has the notion of separate trees
|
|
||||||
that one can track independently or parallel install, while still
|
|
||||||
sharing storage via the hardlinked repository, whereas olpc-update
|
|
||||||
uses version numbers for a single OS.
|
|
||||||
|
|
||||||
OSTree has built-in plain old HTTP replication which can be served
|
|
||||||
from a static webserver, whereas olpc-update uses `rsync` (more server
|
|
||||||
load, but more efficient on the network side). The OSTree solution to
|
|
||||||
improving network bandwidth consumption is via static deltas.
|
|
||||||
|
|
||||||
See
|
|
||||||
[this comment](http://blog.verbum.org/2013/08/26/ostree-v2013-6-released/#comment-1169)
|
|
||||||
for a comparison.
|
|
||||||
|
|
||||||
## NixOS / Nix
|
|
||||||
|
|
||||||
See [NixOS](http://nixos.org/). It was a very influential project for OSTree.
|
|
||||||
NixOS and OSTree both support the idea of independent "roots" that are bootable.
|
|
||||||
|
|
||||||
In NixOS, files in a package are accessed by a path depending on the checksums
|
|
||||||
of package inputs (build dependencies) - see
|
|
||||||
[Nix store](http://nixos.org/nix/manual/#chap-package-management/).
|
|
||||||
However, OSTree uses a commit/deploy model - it isn't tied to any particular
|
|
||||||
directory layout, and you can put whatever data you want inside an OSTree, for
|
|
||||||
example the standard FHS layout. A both positive and negative of the Nix model
|
|
||||||
is that a change in the build dependencies (e.g. being built with a newer gcc),
|
|
||||||
requires a cascading rebuild of everything. It's good because it makes it easy
|
|
||||||
to do massive system-wide changes such as gcc upgrades, and allows installing
|
|
||||||
multiple versions of packages at once. However, a security update to e.g. glibc
|
|
||||||
forces a rebuild of everything from scratch, and so Nix is not practical at
|
|
||||||
scale. OSTree supports using a build system that just rebuilds individual
|
|
||||||
components (packages) as they change, without forcing a rebuild of their
|
|
||||||
dependencies.
|
|
||||||
|
|
||||||
Nix automatically detects runtime package dependencies by scanning content for
|
|
||||||
hashes. OSTree only supports only system-level images, and doesn't do dependency
|
|
||||||
management. Nix can store arbitrary files, using nix-store --add, but, more
|
|
||||||
commonly, paths are added as the result of running a derivation file generated
|
|
||||||
using the Nix language. OSTree is build-system agnostic; filesystem trees are
|
|
||||||
committed using a simple C API, and this is the only way to commit files.
|
|
||||||
|
|
||||||
OSTree automatically shares the storage of identical data using hard links into
|
|
||||||
a content-addressed store. Nix can deduplicate using hard links as well, using
|
|
||||||
the auto-optimise-store option, but this is not on by default, and Nix does not
|
|
||||||
guarantee that all of its files are in the content-addressed store. OSTree
|
|
||||||
provides a git-like command line interface for browsing the content-addressed
|
|
||||||
store, while Nix does not have this functionality.
|
|
||||||
|
|
||||||
Nix used to use the immutable bit to prevent modifications to /nix/store, but
|
|
||||||
now it uses a read-only bind mount. The bind mount can be privately remounted,
|
|
||||||
allowing per-process privileged write access. OSTree uses the immutable
|
|
||||||
bit on the root of the deployment, and mounts /usr as read-only.
|
|
||||||
|
|
||||||
NixOS supports switching OS images on-the-fly, by maintaining both booted-system
|
|
||||||
and current-system roots. It is not clear how well this approach works. OSTree
|
|
||||||
currently requries a reboot to switch images.
|
|
||||||
|
|
||||||
Finally, NixOS supports installing user-specific packages from trusted
|
|
||||||
repositories without requiring root, using a trusted daemon.
|
|
||||||
[Flatpak](https://lwn.net/Articles/687909/), based on OSTree, similarly has a
|
|
||||||
policykit-based system helper that allows you to authenticate via polkit to
|
|
||||||
install into the system repository.
|
|
||||||
|
|
||||||
## Solaris IPS
|
|
||||||
|
|
||||||
See
|
|
||||||
[Solaris IPS](http://hub.opensolaris.org/bin/view/Project+pkg/). Broadly,
|
|
||||||
this is a similar design as to a combination of BTRFS+RPM/deb. There
|
|
||||||
is a bootloader management system which combines with the snapshots.
|
|
||||||
It's relatively well thought through - however, it is a client-side
|
|
||||||
system assembly. If one wants to image servers and replicate
|
|
||||||
reliably, that'd be a different system.
|
|
||||||
|
|
||||||
|
|
||||||
## Conary
|
|
||||||
|
|
||||||
See
|
|
||||||
[Conary Updates and Rollbacks](http://wiki.rpath.com/wiki/Conary:Updates_and_Rollbacks). If
|
|
||||||
rpm/dpkg are like CVS, Conary is closer to Subversion. It's not bad,
|
|
||||||
but e.g. its rollback model is rather ad-hoc and not atomic. It also
|
|
||||||
is a fully client side system and doesn't have an image-like
|
|
||||||
replication with deltas.
|
|
||||||
|
|
||||||
## bmap
|
|
||||||
|
|
||||||
See
|
|
||||||
[bmap](https://source.tizen.org/documentation/reference/bmaptool/introduction).
|
|
||||||
A tool for optimized copying of disk images. Intended for offline use,
|
|
||||||
so not directly comparable.
|
|
||||||
|
|
||||||
## Git
|
|
||||||
|
|
||||||
Although OSTree has been called "Git for Binaries", and the two share the idea
|
|
||||||
of a hashed content store, the implementation details are quite different.
|
|
||||||
OSTree supports extended attributes and uses SHA256 instead of Git's SHA1. It
|
|
||||||
"checks out" files via hardlinks, rather than copying, and thus requires the
|
|
||||||
checkout to be immutable. At the moment, OSTree commits may have at most one
|
|
||||||
parent, as opposed to Git which allows an arbitrary number. Git uses a
|
|
||||||
smart-delta protocol for updates, while OSTree uses 1 HTTP request per changed
|
|
||||||
file, or can generate static deltas.
|
|
||||||
|
|
||||||
## Conda
|
|
||||||
|
|
||||||
[Conda](http://conda.pydata.org/docs/) is an "OS-agnostic, system-level binary
|
|
||||||
package manager and ecosystem"; although most well-known for its accompanying
|
|
||||||
Python distribution anaconda, its scope has been expanding quickly. The package
|
|
||||||
format is very similar to well-known ones such as RPM. However, unlike typical
|
|
||||||
RPMs, the packages are built to be relocatable. Also, the package manager runs
|
|
||||||
natively on Windows. Conda's main advantage is its ability to install
|
|
||||||
collections of packages into "environments" by unpacking them all to the same
|
|
||||||
directory. Conda reduces duplication across environments using hardlinks,
|
|
||||||
similar to OSTree's sharing between deployments (although Conda uses package /
|
|
||||||
file path instead of file hash). Overall, it is quite similar to rpm-ostree in
|
|
||||||
functionality and scope.
|
|
||||||
|
|
||||||
## rpm-ostree
|
|
||||||
|
|
||||||
This builds on top of ostree to support building RPMs into OSTree images, and
|
|
||||||
even composing RPMs on-the-fly using an overlay filesystem. It is being
|
|
||||||
developed by Fedora, Red Hat, and CentOS as part of Project Atomic.
|
|
||||||
|
|
||||||
## GNOME Continuous
|
|
||||||
|
|
||||||
This is a service that incrementally rebuilds and tests GNOME on every commit.
|
|
||||||
The need to make and distribute snapshots for this system was the original
|
|
||||||
inspiration for ostree.
|
|
||||||
|
|
||||||
## Docker
|
|
||||||
|
|
||||||
It makes sense to compare OSTree and Docker as far as *wire formats*
|
|
||||||
go. OSTree is not itself a container tool, but can be used as a
|
|
||||||
transport/storage format for container tools.
|
|
||||||
|
|
||||||
Docker has (at the time of this writing) two format versions (v1 and
|
|
||||||
v2). v1 is deprecated, so we'll look at [format version 2](https://github.com/docker/docker/blob/master/image/spec/v1.1.md).
|
|
||||||
|
|
||||||
A Docker image is a series of layers, and a layer is essentially JSON
|
|
||||||
metadata plus a tarball. The tarballs capture changes between layers,
|
|
||||||
including handling deleting files in higher layers.
|
|
||||||
|
|
||||||
Because the payload format is just tar, Docker hence captures
|
|
||||||
(numeric) uid/gid and xattrs.
|
|
||||||
|
|
||||||
This "layering" model is an interesting and powerful part of Docker,
|
|
||||||
allowing different images to reference a shared base. OSTree doesn't
|
|
||||||
implement this natively, but it's not difficult to implement in higher
|
|
||||||
level tools. For example in
|
|
||||||
[flatpak](https://github.com/flatpak/flatpak), there's a concept of a
|
|
||||||
SDK and runtime, and it would make a lot of sense for the SDK to
|
|
||||||
depend on the runtime, to avoid clients downloading data twice (even
|
|
||||||
if it's deduplicated on disk).
|
|
||||||
|
|
||||||
That gets to an advantage of OSTree over Docker; OSTree checksums
|
|
||||||
individual files (not tarballs), and uses this for deduplication.
|
|
||||||
Docker (natively) only shares storage via layering.
|
|
||||||
|
|
||||||
The biggest feature OSTree has over Docker though is support for
|
|
||||||
(static) deltas, and even without pre-configured static deltas, the
|
|
||||||
archive-z2 format has "natural" deltas. Particularly for a "base
|
|
||||||
operating system", one really wants on-wire deltas. It'd likely be
|
|
||||||
possible to extend Docker with this concept.
|
|
||||||
|
|
||||||
A core challenge both share is around metadata (particularly signing)
|
|
||||||
and search/discovery (the ostree `summary` file doesn't scale very
|
|
||||||
well).
|
|
||||||
|
|
||||||
One major issue Docker has is that it [checksums compressed data](https://github.com/projectatomic/skopeo/issues/11),
|
|
||||||
and furthermore the tar format is flexible, with multiple ways to represent data,
|
|
||||||
making it hard to impossible to reassemble and verify from on-disk state.
|
|
||||||
The [tarsum](https://github.com/docker/docker/blob/master/pkg/tarsum/tarsum_spec.md) effort
|
|
||||||
was intended to address this, but it was not adopted in the end for v2.
|
|
||||||
|
|
@ -1,137 +0,0 @@
|
||||||
# Anatomy of an OSTree repository
|
|
||||||
|
|
||||||
## Core object types and data model
|
|
||||||
|
|
||||||
OSTree is deeply inspired by git; the core layer is a userspace
|
|
||||||
content-addressed versioning filesystem. It is worth taking some time
|
|
||||||
to familiarize yourself with
|
|
||||||
[Git Internals](http://git-scm.com/book/en/Git-Internals), as this
|
|
||||||
section will assume some knowledge of how git works.
|
|
||||||
|
|
||||||
Its object types are similar to git; it has commit objects and content
|
|
||||||
objects. Git has "tree" objects, whereas OSTree splits them into
|
|
||||||
"dirtree" and "dirmeta" objects. But unlike git, OSTree's checksums
|
|
||||||
are SHA256. And most crucially, its content objects include uid, gid,
|
|
||||||
and extended attributes (but still no timestamps).
|
|
||||||
|
|
||||||
### Commit objects
|
|
||||||
|
|
||||||
A commit object contains metadata such as a timestamp, a log
|
|
||||||
message, and most importantly, a reference to a
|
|
||||||
dirtree/dirmeta pair of checksums which describe the root
|
|
||||||
directory of the filesystem.
|
|
||||||
Also like git, each commit in OSTree can have a parent. It is
|
|
||||||
designed to store a history of your binary builds, just like git
|
|
||||||
stores a history of source control. However, OSTree also makes
|
|
||||||
it easy to delete data, under the assumption that you can
|
|
||||||
regenerate it from source code.
|
|
||||||
|
|
||||||
### Dirtree objects
|
|
||||||
|
|
||||||
A dirtree contains a sorted array of (filename, checksum)
|
|
||||||
pairs for content objects, and a second sorted array of
|
|
||||||
(filename, dirtree checksum, dirmeta checksum), which are
|
|
||||||
subdirectories.
|
|
||||||
|
|
||||||
### Dirmeta objects
|
|
||||||
|
|
||||||
In git, tree objects contain the metadata such as permissions
|
|
||||||
for their children. But OSTree splits this into a separate
|
|
||||||
object to avoid duplicating extended attribute listings.
|
|
||||||
|
|
||||||
### Content objects
|
|
||||||
|
|
||||||
Unlike the first three object types which are metadata, designed to be
|
|
||||||
`mmap()`ed, the content object has a separate internal header and
|
|
||||||
payload sections. The header contains uid, gid, mode, and symbolic
|
|
||||||
link target (for symlinks), as well as extended attributes. After the
|
|
||||||
header, for regular files, the content follows.
|
|
||||||
|
|
||||||
The OSTree data format intentionally does not contain timestamps. The reasoning
|
|
||||||
is that data files may be downloaded at different times, and by different build
|
|
||||||
systems, and so will have different timestamps but identical physical content.
|
|
||||||
These files may be large, so most users would like them to be shared, both in
|
|
||||||
the repository and between the repository and deployments.
|
|
||||||
|
|
||||||
This could cause problems with programs that check if files are out-of-date by
|
|
||||||
comparing timestamps. For Git, the logical choice is to not mess with
|
|
||||||
timestamps, because unnecessary rebuilding is better than a broken tree.
|
|
||||||
However, OSTree has to hardlink files to check them out, and commits are assumed
|
|
||||||
to be internally consistent with no build steps needed. For this reason, OSTree
|
|
||||||
acts as though all timestamps are set to time_t 1, so that comparisons will be
|
|
||||||
considered up-to-date. 1 is a better choice than 0 because some programs use 0
|
|
||||||
as a special value; for example, GNU Tar warns of an "implausibly old time
|
|
||||||
stamp" with 0.
|
|
||||||
|
|
||||||
# Repository types and locations
|
|
||||||
|
|
||||||
Also unlike git, an OSTree repository can be in one of three separate
|
|
||||||
modes: `bare`, `bare-user`, and `archive-z2`. A bare repository is
|
|
||||||
one where content files are just stored as regular files; it's
|
|
||||||
designed to be the source of a "hardlink farm", where each operating
|
|
||||||
system checkout is merely links into it. If you want to store files
|
|
||||||
owned by e.g. root in this mode, you must run OSTree as root.
|
|
||||||
|
|
||||||
The `bare-user` is a later addition that is like `bare` in that files
|
|
||||||
are unpacked, but it can (and should generally) be created as
|
|
||||||
non-root. In this mode, extended metadata such as owner uid, gid, and
|
|
||||||
extended attributes are stored but not actually applied.
|
|
||||||
The `bare-user` mode is useful for build systems that run as non-root
|
|
||||||
but want to generate root-owned content, as well as non-root container
|
|
||||||
systems.
|
|
||||||
|
|
||||||
In contrast, the `archive-z2` mode is designed for serving via plain
|
|
||||||
HTTP. Like tar files, it can be read/written by non-root users.
|
|
||||||
|
|
||||||
On an OSTree-deployed system, the "system repository" is
|
|
||||||
`/ostree/repo`. It can be read by any uid, but only written by root.
|
|
||||||
Unless the `--repo` argument is given to the <command>ostree</command>
|
|
||||||
command, it will operate on the system repository.
|
|
||||||
|
|
||||||
## Refs
|
|
||||||
|
|
||||||
Like git, OSTree uses the terminology "references" (abbreviated
|
|
||||||
"refs") which are text files that name (refer to) to particular
|
|
||||||
commits. See the
|
|
||||||
[Git Documentation](https://git-scm.com/book/en/v2/Git-Internals-Git-References)
|
|
||||||
for information on how git uses them. Unlike git though, it doesn't
|
|
||||||
usually make sense to have a "master" branch. There is a convention
|
|
||||||
for references in OSTree that looks like this:
|
|
||||||
`exampleos/buildmaster/x86_64-runtime` and
|
|
||||||
`exampleos/buildmaster/x86_64-devel-debug`. These two refs point to
|
|
||||||
two different generated filesystem trees. In this example, the
|
|
||||||
"runtime" tree contains just enough to run a basic system, and
|
|
||||||
"devel-debug" contains all of the developer tools and debuginfo.
|
|
||||||
|
|
||||||
The `ostree` supports a simple syntax using the caret `^` to refer to
|
|
||||||
the parent of a given commit. For example,
|
|
||||||
`exampleos/buildmaster/x86_64-runtime^` refers to the previous build,
|
|
||||||
and `exampleos/buildmaster/x86_64-runtime^^` refers to the one before
|
|
||||||
that.
|
|
||||||
|
|
||||||
## The summary file
|
|
||||||
|
|
||||||
A later addition to OSTree is the concept of a "summary" file, created
|
|
||||||
via the `ostree summary -u` command. This was introduced for a few
|
|
||||||
reasons. A primary use case is to be a target a
|
|
||||||
[Metalink](https://en.wikipedia.org/wiki/Metalink), which requires a
|
|
||||||
single file with a known checksum as a target.
|
|
||||||
|
|
||||||
The summary file primarily contains two mappings:
|
|
||||||
|
|
||||||
- A mapping of the refs and their checksums, equivalent to fetching
|
|
||||||
the ref file individually
|
|
||||||
- A list of all static deltas, along with their metadata checksums
|
|
||||||
|
|
||||||
This currently means that it grows linearly with both items. On the
|
|
||||||
other hand, using the summary file, a client can enumerate branches.
|
|
||||||
|
|
||||||
Further, the summary file is fetched over e.g. pinned TLS, this
|
|
||||||
creates a strong end-to-end verification of the commit or static delta.
|
|
||||||
|
|
||||||
The summary file can also be GPG signed (detached), and currently this
|
|
||||||
is the only way provide GPG signatures (transitively) on deltas.
|
|
||||||
|
|
||||||
If a repository administrator creates a summary file, they must
|
|
||||||
thereafter run `ostree summary -u` to update it whenever a commit is
|
|
||||||
made or a static delta is generated.
|
|
||||||
|
|
@ -1,233 +0,0 @@
|
||||||
# Managing content in OSTree repositories
|
|
||||||
|
|
||||||
Once you have a build system going, if you actually want client
|
|
||||||
systems to retrieve the content, you will quickly feel a need for
|
|
||||||
"repository management".
|
|
||||||
|
|
||||||
The command line tool `ostree` does cover some core functionality, but
|
|
||||||
doesn't include very high level workflows. One reason is that how
|
|
||||||
content is delivered and managed has concerns very specific to the
|
|
||||||
organization. For example, some operating system content vendors may
|
|
||||||
want integration with a specific errata notification system when
|
|
||||||
generating commits.
|
|
||||||
|
|
||||||
In this section, we will describe some high level ideas and methods
|
|
||||||
for managing content in OSTree repositories, mostly independent of any
|
|
||||||
particular model or tool. That said, a goal is to include at least
|
|
||||||
some sample scripts and workflows upstream in a potential new
|
|
||||||
"contrib" git repository.
|
|
||||||
|
|
||||||
One example of software which can assist in managing OSTree
|
|
||||||
repositories today is the [Pulp Project](http://www.pulpproject.org/),
|
|
||||||
which has a
|
|
||||||
[Pulp OSTree plugin](https://pulp-ostree.readthedocs.org/en/latest/).
|
|
||||||
|
|
||||||
## Mirroring repositories
|
|
||||||
|
|
||||||
It's very common to want to perform a full or partial mirror, in
|
|
||||||
particular across organizational boundaries (e.g. an upstream OS
|
|
||||||
provider, and a user that wants offline and faster access to the
|
|
||||||
content). OSTree supports both full and partial mirroring of the base
|
|
||||||
`archive-z2` content, although not yet of static deltas.
|
|
||||||
|
|
||||||
To create a mirror, first create an `archive-z2` repository (you don't
|
|
||||||
need to run this as root), then add the upstream as a remote, then use
|
|
||||||
`pull --mirror`.
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo init --mode=archive-z2
|
|
||||||
ostree --repo=repo remote add exampleos https://exampleos.com/ostree/repo
|
|
||||||
ostree --repo=repo pull --mirror exampleos:exampleos/x86_64/standard
|
|
||||||
```
|
|
||||||
|
|
||||||
You can use the `--depth=-1` option to retrieve all history, or a
|
|
||||||
positive integer like `3` to retrieve just the last 3 commits.
|
|
||||||
|
|
||||||
## Separate development vs release repositories
|
|
||||||
|
|
||||||
By default, OSTree accumulates server side history. This is actually
|
|
||||||
optional in that your build system can (using the API) write a commit
|
|
||||||
with no parent. But first, we'll investigate the ramifications of
|
|
||||||
server side history.
|
|
||||||
|
|
||||||
Many content vendors will want to separate their internal development
|
|
||||||
with what is made public to the world. Therefore, you will want (at
|
|
||||||
least) two OSTree repositories, we'll call them "dev" and "prod".
|
|
||||||
|
|
||||||
To phrase this another way, let's say you have a continuous delivery
|
|
||||||
system which is building from git and committing into your "dev"
|
|
||||||
OSTree repository. This might happen tens to hundreds of times per
|
|
||||||
day. That's a substantial amount of history over time, and it's
|
|
||||||
unlikely most of your content consumers (i.e. not developers/testers)
|
|
||||||
will be interested in all of it.
|
|
||||||
|
|
||||||
The original vision of OSTree was to fulfill this "dev" role, and in
|
|
||||||
particular the "archive-z2" format was designed for it.
|
|
||||||
|
|
||||||
Then, what you'll want to do is promote content from "dev" to "prod".
|
|
||||||
We'll discuss this later, but first, let's talk about promotion
|
|
||||||
*inside* our "dev" repository.
|
|
||||||
|
|
||||||
## Promoting content along OSTree branches - "buildmaster", "smoketested"
|
|
||||||
|
|
||||||
Besides multiple repositories, OSTree also supports multiple branches
|
|
||||||
inside one repository, equivalent to git's branches. We saw in an
|
|
||||||
earlier section an example branch name like
|
|
||||||
`exampleos/x86_64/standard`. Choosing the branch name for your "prod"
|
|
||||||
repository is absolutely critical as client systems will reference it.
|
|
||||||
It becomes an important part of your face to the world, in the same
|
|
||||||
way the "master" branch in a git repository is.
|
|
||||||
|
|
||||||
But with your "dev" repository internally, it can be very useful to
|
|
||||||
use OSTree's branching concepts to represent different stages in a
|
|
||||||
software delivery pipeline.
|
|
||||||
|
|
||||||
Deriving from `exampleos/x86_64/standard`, let's say our "dev"
|
|
||||||
repository contains `exampleos/x86_64/buildmaster/standard`. We choose the
|
|
||||||
term "buildmaster" to represent something that came straight from git
|
|
||||||
master. It may not be tested very much.
|
|
||||||
|
|
||||||
Our next step should be to hook up a testing system (Jenkins,
|
|
||||||
Buildbot, etc.) to this. When a build (commit) passes some tests, we
|
|
||||||
want to "promote" that commit. Let's create a new branch called
|
|
||||||
`smoketested` to say that some basic sanity checks pass on the
|
|
||||||
complete system. This might be where human testers get involved, for
|
|
||||||
example.
|
|
||||||
|
|
||||||
The build system can "promote" the `buildmaster` commit that passed
|
|
||||||
testing like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree commit -b exampleos/x86_64/smoketested/standard -s 'Passed tests' --tree=ref=aec070645fe53...
|
|
||||||
```
|
|
||||||
|
|
||||||
Here we're generating a new commit object (perhaps include in the commit
|
|
||||||
log links to build logs, etc.), but we're reusing the *content* from the `buildmaster`
|
|
||||||
commit `aec070645fe53` that passed the smoketests.
|
|
||||||
|
|
||||||
We can easily generalize this model to have an arbitrary number of
|
|
||||||
stages like `exampleos/x86_64/stage-1-pass/standard`,
|
|
||||||
`exampleos/x86_64/stage-2-pass/standard`, etc. depending on business
|
|
||||||
requirements and logic.
|
|
||||||
|
|
||||||
In this suggested model, the "stages" are increasingly expensive. The
|
|
||||||
logic is that we don't want to spend substantial time on e.g. network
|
|
||||||
performance tests if something basic like a systemd unit file fails on
|
|
||||||
bootup.
|
|
||||||
|
|
||||||
|
|
||||||
## Promoting content between OSTree repositories
|
|
||||||
|
|
||||||
Now, we have our internal continuous delivery stream flowing, it's
|
|
||||||
being tested and works. We want to periodically take the latest
|
|
||||||
commit on `exampleos/x86_64/stage-3-pass/standard` and expose it in
|
|
||||||
our "prod" repository as `exampleos/x86_64/standard`, with a much
|
|
||||||
smaller history.
|
|
||||||
|
|
||||||
We'll have other business requirements such as writing release notes
|
|
||||||
(and potentially putting them in the OSTree commit message), etc.
|
|
||||||
|
|
||||||
In [Build Systems](buildsystem-and-repos.md) we saw how the
|
|
||||||
`pull-local` command can be used to migrate content from the "build"
|
|
||||||
repository (in `bare-user` mode) into an `archive-z2` repository for
|
|
||||||
serving to client systems.
|
|
||||||
|
|
||||||
Following this section, we now have three repositories, let's call
|
|
||||||
them `repo-build`, `repo-dev`, and `repo-prod`. We've been pulling
|
|
||||||
content from `repo-build` into `repo-dev` (which involves gzip
|
|
||||||
compression among other things since it is a format change).
|
|
||||||
|
|
||||||
When using `pull-local` to migrate content between two `archive-z2`
|
|
||||||
repositories, the binary content is taken unmodified. Let's go ahead
|
|
||||||
and generate a new commit in our prod repository:
|
|
||||||
|
|
||||||
```
|
|
||||||
checksum=$(ostree --repo=repo-dev rev-parse exampleos/x86_64/stage-3-pass/standard`)
|
|
||||||
ostree --repo=repo-prod pull-local repo-dev ${checksum}
|
|
||||||
ostree --repo=repo-prod commit -b exampleos/x86_64/standard \
|
|
||||||
-s 'Release 1.2.3' --add-metadata-string=ostree.version=1.2.3 \
|
|
||||||
--tree=ref=${checksum}
|
|
||||||
```
|
|
||||||
|
|
||||||
There are a few things going on here. First, we found the latest
|
|
||||||
commit checksum for the "stage-3 dev", and told `pull-local` to copy
|
|
||||||
it, without using the branch name. We do this because we don't want
|
|
||||||
to expose the `exampleos/x86_64/stage-3-pass/standard` branch name in
|
|
||||||
our "prod" repository.
|
|
||||||
|
|
||||||
Next, we generate a new commit in prod that's referencing the exact
|
|
||||||
binary content in dev. If the "dev" and "prod" repositories are on
|
|
||||||
the same Unix filesystem, (like git) OSTree will make use of hard
|
|
||||||
links to avoid copying any content at all - making the process very
|
|
||||||
fast.
|
|
||||||
|
|
||||||
Another interesting thing to notice here is that we're adding an
|
|
||||||
`ostree.version` metadata string to the commit. This is an optional
|
|
||||||
piece of metadata, but we are encouraging its use in the OSTree
|
|
||||||
ecosystem of tools. Commands like `ostree admin status` show it by
|
|
||||||
default.
|
|
||||||
|
|
||||||
## Derived data - static deltas and the summary file
|
|
||||||
|
|
||||||
As discussed in [Formats](formats.md), the `archive-z2` repository we
|
|
||||||
use for "prod" requires one HTTP fetch per client request by default.
|
|
||||||
If we're only performing a release e.g. once a week, it's appropriate
|
|
||||||
to use "static deltas" to speed up client updates.
|
|
||||||
|
|
||||||
So once we've used the above command to pull content from `repo-dev`
|
|
||||||
into `repo-prod`, let's generate a delta against the previous commit:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo-prod static-delta generate exampleos/x86_64/standard
|
|
||||||
```
|
|
||||||
|
|
||||||
We may also want to support client systems upgrading from *two*
|
|
||||||
commits previous.
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo-prod static-delta generate --from=exampleos/x86_64/standard^^ --to=exampleos/x86_64/standard
|
|
||||||
```
|
|
||||||
|
|
||||||
Generating a full permutation of deltas across all prior versions can
|
|
||||||
get expensive, and there is some support in the OSTree core for static
|
|
||||||
deltas which "recurse" to a parent. This can help create a model
|
|
||||||
where clients download a chain of deltas. Support for this is not
|
|
||||||
fully implemented yet however.
|
|
||||||
|
|
||||||
Regardless of whether or not you choose to generate static deltas,
|
|
||||||
you should update the summary file:
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo-prod summary -u
|
|
||||||
```
|
|
||||||
|
|
||||||
(Remember, the `summary` command cannot be run concurrently, so this
|
|
||||||
should be triggered serially by other jobs).
|
|
||||||
|
|
||||||
There is some more information on the design of the summary file in
|
|
||||||
[Repo](repo.md).
|
|
||||||
|
|
||||||
## Pruning our build and dev repositories
|
|
||||||
|
|
||||||
First, the OSTree author believes you should *not* use OSTree as a
|
|
||||||
"primary content store". The binaries in an OSTree repository should
|
|
||||||
be derived from a git repository. Your build system should record
|
|
||||||
proper metadata such as the configuration options used to generate the
|
|
||||||
build, and you should be able to rebuild it if necessary. Art assets
|
|
||||||
should be stored in a system that's designed for that
|
|
||||||
(e.g. [Git LFS](https://git-lfs.github.com/)).
|
|
||||||
|
|
||||||
Another way to say this is that five years down the line, we are
|
|
||||||
unlikely to care about retaining the exact binaries from an OS build
|
|
||||||
on Wednesday afternoon three years ago.
|
|
||||||
|
|
||||||
We want to save space and prune our "dev" repository.
|
|
||||||
|
|
||||||
```
|
|
||||||
ostree --repo=repo-dev prune --refs-only --keep-younger-than="6 months ago"
|
|
||||||
```
|
|
||||||
|
|
||||||
That will truncate the history older than 6 months. Deleted commits
|
|
||||||
will have "tombstone markers" added so that you know they were
|
|
||||||
explicitly deleted, but all content in them (that is not referenced by
|
|
||||||
a still retained commit) will be garbage collected.
|
|
||||||
348
git.mk
|
|
@ -1,348 +0,0 @@
|
||||||
# git.mk, a small Makefile to autogenerate .gitignore files
|
|
||||||
# for autotools-based projects.
|
|
||||||
#
|
|
||||||
# Copyright 2009, Red Hat, Inc.
|
|
||||||
# Copyright 2010,2011,2012,2013 Behdad Esfahbod
|
|
||||||
# Written by Behdad Esfahbod
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification,
|
|
||||||
# is permitted in any medium without royalty provided the copyright
|
|
||||||
# notice and this notice are preserved.
|
|
||||||
#
|
|
||||||
# The latest version of this file can be downloaded from:
|
|
||||||
GIT_MK_URL = https://raw.githubusercontent.com/behdad/git.mk/master/git.mk
|
|
||||||
#
|
|
||||||
# Bugs, etc, should be reported upstream at:
|
|
||||||
# https://github.com/behdad/git.mk
|
|
||||||
#
|
|
||||||
# To use in your project, import this file in your git repo's toplevel,
|
|
||||||
# then do "make -f git.mk". This modifies all Makefile.am files in
|
|
||||||
# your project to -include git.mk. Remember to add that line to new
|
|
||||||
# Makefile.am files you create in your project, or just rerun the
|
|
||||||
# "make -f git.mk".
|
|
||||||
#
|
|
||||||
# This enables automatic .gitignore generation. If you need to ignore
|
|
||||||
# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
|
|
||||||
# But think twice before doing that. If a file has to be in .gitignore,
|
|
||||||
# chances are very high that it's a generated file and should be in one
|
|
||||||
# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
|
|
||||||
#
|
|
||||||
# The only case that you need to manually add a file to GITIGNOREFILES is
|
|
||||||
# when remove files in one of mostlyclean-local, clean-local, distclean-local,
|
|
||||||
# or maintainer-clean-local make targets.
|
|
||||||
#
|
|
||||||
# Note that for files like editor backup, etc, there are better places to
|
|
||||||
# ignore them. See "man gitignore".
|
|
||||||
#
|
|
||||||
# If "make maintainer-clean" removes the files but they are not recognized
|
|
||||||
# by this script (that is, if "git status" shows untracked files still), send
|
|
||||||
# me the output of "git status" as well as your Makefile.am and Makefile for
|
|
||||||
# the directories involved and I'll diagnose.
|
|
||||||
#
|
|
||||||
# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
|
|
||||||
# Makefile.am.sample in the git.mk git repo.
|
|
||||||
#
|
|
||||||
# Don't EXTRA_DIST this file. It is supposed to only live in git clones,
|
|
||||||
# not tarballs. It serves no useful purpose in tarballs and clutters the
|
|
||||||
# build dir.
|
|
||||||
#
|
|
||||||
# This file knows how to handle autoconf, automake, libtool, gtk-doc,
|
|
||||||
# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu, appdata,
|
|
||||||
# appstream.
|
|
||||||
#
|
|
||||||
# This makefile provides the following targets:
|
|
||||||
#
|
|
||||||
# - all: "make all" will build all gitignore files.
|
|
||||||
# - gitignore: makes all gitignore files in the current dir and subdirs.
|
|
||||||
# - .gitignore: make gitignore file for the current dir.
|
|
||||||
# - gitignore-recurse: makes all gitignore files in the subdirs.
|
|
||||||
#
|
|
||||||
# KNOWN ISSUES:
|
|
||||||
#
|
|
||||||
# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
|
|
||||||
# submodule doesn't find us. If you have configure.{in,ac} files in
|
|
||||||
# subdirs, add a proxy git.mk file in those dirs that simply does:
|
|
||||||
# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste.
|
|
||||||
# And add those files to git. See vte/gnome-pty-helper/git.mk for
|
|
||||||
# example.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Variables user modules may want to add to toplevel MAINTAINERCLEANFILES:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Most autotools-using modules should be fine including this variable in their
|
|
||||||
# toplevel MAINTAINERCLEANFILES:
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL = \
|
|
||||||
$(srcdir)/aclocal.m4 \
|
|
||||||
$(srcdir)/autoscan.log \
|
|
||||||
$(srcdir)/configure.scan \
|
|
||||||
`AUX_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_AUX_DIR:$$1' ./configure.ac); \
|
|
||||||
test "x$$AUX_DIR" = "x$(srcdir)/" && AUX_DIR=$(srcdir); \
|
|
||||||
for x in \
|
|
||||||
ar-lib \
|
|
||||||
compile \
|
|
||||||
config.guess \
|
|
||||||
config.sub \
|
|
||||||
depcomp \
|
|
||||||
install-sh \
|
|
||||||
ltmain.sh \
|
|
||||||
missing \
|
|
||||||
mkinstalldirs \
|
|
||||||
test-driver \
|
|
||||||
ylwrap \
|
|
||||||
; do echo "$$AUX_DIR/$$x"; done` \
|
|
||||||
`cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_HEADERS:$$1' ./configure.ac | \
|
|
||||||
head -n 1 | while read f; do echo "$(srcdir)/$$f.in"; done`
|
|
||||||
#
|
|
||||||
# All modules should also be fine including the following variable, which
|
|
||||||
# removes automake-generated Makefile.in files:
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN = \
|
|
||||||
`cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' ./configure.ac | \
|
|
||||||
while read f; do \
|
|
||||||
case $$f in Makefile|*/Makefile) \
|
|
||||||
test -f "$(srcdir)/$$f.am" && echo "$(srcdir)/$$f.in";; esac; \
|
|
||||||
done`
|
|
||||||
#
|
|
||||||
# Modules that use libtool and use AC_CONFIG_MACRO_DIR() may also include this,
|
|
||||||
# though it's harmless to include regardless.
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL = \
|
|
||||||
`MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' ./configure.ac); \
|
|
||||||
if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \
|
|
||||||
for x in \
|
|
||||||
libtool.m4 \
|
|
||||||
ltoptions.m4 \
|
|
||||||
ltsugar.m4 \
|
|
||||||
ltversion.m4 \
|
|
||||||
lt~obsolete.m4 \
|
|
||||||
; do echo "$$MACRO_DIR/$$x"; done; \
|
|
||||||
fi`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Default rule is to install ourselves in all Makefile.am files:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
git-all: git-mk-install
|
|
||||||
|
|
||||||
git-mk-install:
|
|
||||||
@echo "Installing git makefile"
|
|
||||||
@any_failed=; \
|
|
||||||
find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while read x; do \
|
|
||||||
if grep 'include .*/git.mk' $$x >/dev/null; then \
|
|
||||||
echo "$$x already includes git.mk"; \
|
|
||||||
else \
|
|
||||||
failed=; \
|
|
||||||
echo "Updating $$x"; \
|
|
||||||
{ cat $$x; \
|
|
||||||
echo ''; \
|
|
||||||
echo '-include $$(top_srcdir)/git.mk'; \
|
|
||||||
} > $$x.tmp || failed=1; \
|
|
||||||
if test x$$failed = x; then \
|
|
||||||
mv $$x.tmp $$x || failed=1; \
|
|
||||||
fi; \
|
|
||||||
if test x$$failed = x; then : else \
|
|
||||||
echo "Failed updating $$x"; >&2 \
|
|
||||||
any_failed=1; \
|
|
||||||
fi; \
|
|
||||||
fi; done; test -z "$$any_failed"
|
|
||||||
|
|
||||||
git-mk-update:
|
|
||||||
wget $(GIT_MK_URL) -O $(top_srcdir)/git.mk
|
|
||||||
|
|
||||||
.PHONY: git-all git-mk-install git-mk-update
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Actual .gitignore generation:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk
|
|
||||||
@echo "git.mk: Generating $@"
|
|
||||||
@{ \
|
|
||||||
if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(DOC_MODULE)-decl-list.txt \
|
|
||||||
$(DOC_MODULE)-decl.txt \
|
|
||||||
tmpl/$(DOC_MODULE)-unused.sgml \
|
|
||||||
"tmpl/*.bak" \
|
|
||||||
$(REPORT_FILES) \
|
|
||||||
$(DOC_MODULE).pdf \
|
|
||||||
xml html \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
FLAVOR=$$(cd $(top_srcdir); $(AUTOCONF) --trace 'GTK_DOC_CHECK:$$2' ./configure.ac); \
|
|
||||||
case $$FLAVOR in *no-tmpl*) echo /tmpl;; esac; \
|
|
||||||
if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-types"; then \
|
|
||||||
echo "/$(DOC_MODULE).types"; \
|
|
||||||
fi; \
|
|
||||||
if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-sections"; then \
|
|
||||||
echo "/$(DOC_MODULE)-sections.txt"; \
|
|
||||||
fi; \
|
|
||||||
if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
|
||||||
for x in \
|
|
||||||
$(SETUP_FILES) \
|
|
||||||
$(DOC_MODULE).types \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \
|
|
||||||
for lc in $(DOC_LINGUAS); do \
|
|
||||||
for x in \
|
|
||||||
$(if $(DOC_MODULE),$(DOC_MODULE).xml) \
|
|
||||||
$(DOC_PAGES) \
|
|
||||||
$(DOC_INCLUDES) \
|
|
||||||
; do echo "/$$lc/$$x"; done; \
|
|
||||||
done; \
|
|
||||||
for x in \
|
|
||||||
$(_DOC_OMF_ALL) \
|
|
||||||
$(_DOC_DSK_ALL) \
|
|
||||||
$(_DOC_HTML_ALL) \
|
|
||||||
$(_DOC_MOFILES) \
|
|
||||||
$(DOC_H_FILE) \
|
|
||||||
"*/.xml2po.mo" \
|
|
||||||
"*/*.omf.out" \
|
|
||||||
; do echo /$$x; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \
|
|
||||||
for lc in $(HELP_LINGUAS); do \
|
|
||||||
for x in \
|
|
||||||
$(HELP_FILES) \
|
|
||||||
"$$lc.stamp" \
|
|
||||||
"$$lc.mo" \
|
|
||||||
; do echo "/$$lc/$$x"; done; \
|
|
||||||
done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(gsettings_SCHEMAS)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(gsettings_SCHEMAS:.xml=.valid) \
|
|
||||||
$(gsettings__enum_file) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(appdata_XML)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(appdata_XML:.xml=.valid) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(appstream_XML)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(appstream_XML:.xml=.valid) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test -f $(srcdir)/po/Makefile.in.in; then \
|
|
||||||
for x in \
|
|
||||||
po/Makefile.in.in \
|
|
||||||
po/Makefile.in.in~ \
|
|
||||||
po/Makefile.in \
|
|
||||||
po/Makefile \
|
|
||||||
po/Makevars.template \
|
|
||||||
po/POTFILES \
|
|
||||||
po/Rules-quot \
|
|
||||||
po/stamp-it \
|
|
||||||
po/stamp-po \
|
|
||||||
po/.intltool-merge-cache \
|
|
||||||
"po/*.gmo" \
|
|
||||||
"po/*.header" \
|
|
||||||
"po/*.mo" \
|
|
||||||
"po/*.sed" \
|
|
||||||
"po/*.sin" \
|
|
||||||
po/$(GETTEXT_PACKAGE).pot \
|
|
||||||
intltool-extract.in \
|
|
||||||
intltool-merge.in \
|
|
||||||
intltool-update.in \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test -f $(srcdir)/configure; then \
|
|
||||||
for x in \
|
|
||||||
autom4te.cache \
|
|
||||||
configure \
|
|
||||||
config.h \
|
|
||||||
stamp-h1 \
|
|
||||||
libtool \
|
|
||||||
config.lt \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(DEJATOOL)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(DEJATOOL) \
|
|
||||||
; do echo "/$$x.sum"; echo "/$$x.log"; done; \
|
|
||||||
echo /site.exp; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(am__dirstamp)" = x; then :; else \
|
|
||||||
echo "$(am__dirstamp)"; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(findstring libtool,$(LTCOMPILE))" = x -a "x$(findstring libtool,$(LTCXXCOMPILE))" = x -a "x$(GTKDOC_RUN)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
"*.lo" \
|
|
||||||
".libs" "_libs" \
|
|
||||||
; do echo "$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
for x in \
|
|
||||||
.gitignore \
|
|
||||||
$(GITIGNOREFILES) \
|
|
||||||
$(CLEANFILES) \
|
|
||||||
$(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \
|
|
||||||
$(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \
|
|
||||||
$(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \
|
|
||||||
so_locations \
|
|
||||||
$(MOSTLYCLEANFILES) \
|
|
||||||
$(TEST_LOGS) \
|
|
||||||
$(TEST_LOGS:.log=.trs) \
|
|
||||||
$(TEST_SUITE_LOG) \
|
|
||||||
$(TESTS:=.test) \
|
|
||||||
"*.gcda" \
|
|
||||||
"*.gcno" \
|
|
||||||
$(DISTCLEANFILES) \
|
|
||||||
$(am__CONFIG_DISTCLEAN_FILES) \
|
|
||||||
$(CONFIG_CLEAN_FILES) \
|
|
||||||
TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
|
|
||||||
"*.tab.c" \
|
|
||||||
$(MAINTAINERCLEANFILES) \
|
|
||||||
$(BUILT_SOURCES) \
|
|
||||||
$(patsubst %.vala,%.c,$(filter %.vala,$(SOURCES))) \
|
|
||||||
$(filter %_vala.stamp,$(DIST_COMMON)) \
|
|
||||||
$(filter %.vapi,$(DIST_COMMON)) \
|
|
||||||
$(filter $(addprefix %,$(notdir $(patsubst %.vapi,%.h,$(filter %.vapi,$(DIST_COMMON))))),$(DIST_COMMON)) \
|
|
||||||
Makefile \
|
|
||||||
Makefile.in \
|
|
||||||
"*.orig" \
|
|
||||||
"*.rej" \
|
|
||||||
"*.bak" \
|
|
||||||
"*~" \
|
|
||||||
".*.sw[nop]" \
|
|
||||||
".dirstamp" \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
for x in \
|
|
||||||
"*.$(OBJEXT)" \
|
|
||||||
$(DEPDIR) \
|
|
||||||
; do echo "$$x"; done; \
|
|
||||||
} | \
|
|
||||||
sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
|
|
||||||
sed 's@/[.]/@/@g' | \
|
|
||||||
LC_ALL=C sort | uniq > $@.tmp && \
|
|
||||||
mv $@.tmp $@;
|
|
||||||
|
|
||||||
all: $(srcdir)/.gitignore gitignore-recurse-maybe
|
|
||||||
gitignore: $(srcdir)/.gitignore gitignore-recurse
|
|
||||||
|
|
||||||
gitignore-recurse-maybe:
|
|
||||||
@for subdir in $(DIST_SUBDIRS); do \
|
|
||||||
case " $(SUBDIRS) " in \
|
|
||||||
*" $$subdir "*) :;; \
|
|
||||||
*) test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore || echo "Skipping $$subdir");; \
|
|
||||||
esac; \
|
|
||||||
done
|
|
||||||
gitignore-recurse:
|
|
||||||
@for subdir in $(DIST_SUBDIRS); do \
|
|
||||||
test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore || echo "Skipping $$subdir"); \
|
|
||||||
done
|
|
||||||
|
|
||||||
maintainer-clean: gitignore-clean
|
|
||||||
gitignore-clean:
|
|
||||||
-rm -f $(srcdir)/.gitignore
|
|
||||||
|
|
||||||
.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe
|
|
||||||
|
|
@ -0,0 +1,304 @@
|
||||||
|
# -*- mode: makefile -*-
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# Everything below here is generic #
|
||||||
|
####################################
|
||||||
|
|
||||||
|
if GTK_DOC_USE_LIBTOOL
|
||||||
|
GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
||||||
|
GTKDOC_RUN = $(LIBTOOL) --mode=execute
|
||||||
|
else
|
||||||
|
GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
||||||
|
GTKDOC_RUN =
|
||||||
|
endif
|
||||||
|
|
||||||
|
# We set GPATH here; this gives us semantics for GNU make
|
||||||
|
# which are more like other make's VPATH, when it comes to
|
||||||
|
# whether a source that is a target of one rule is then
|
||||||
|
# searched for in VPATH/GPATH.
|
||||||
|
#
|
||||||
|
GPATH = $(srcdir)
|
||||||
|
|
||||||
|
TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
|
||||||
|
|
||||||
|
SETUP_FILES = \
|
||||||
|
$(content_files) \
|
||||||
|
$(expand_content_files) \
|
||||||
|
$(DOC_MAIN_SGML_FILE) \
|
||||||
|
$(DOC_MODULE)-sections.txt \
|
||||||
|
$(DOC_MODULE)-overrides.txt
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
$(HTML_IMAGES) \
|
||||||
|
$(SETUP_FILES)
|
||||||
|
|
||||||
|
DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \
|
||||||
|
html-build.stamp pdf-build.stamp \
|
||||||
|
sgml.stamp html.stamp pdf.stamp
|
||||||
|
|
||||||
|
SCANOBJ_FILES = \
|
||||||
|
$(DOC_MODULE).args \
|
||||||
|
$(DOC_MODULE).hierarchy \
|
||||||
|
$(DOC_MODULE).interfaces \
|
||||||
|
$(DOC_MODULE).prerequisites \
|
||||||
|
$(DOC_MODULE).signals
|
||||||
|
|
||||||
|
REPORT_FILES = \
|
||||||
|
$(DOC_MODULE)-undocumented.txt \
|
||||||
|
$(DOC_MODULE)-undeclared.txt \
|
||||||
|
$(DOC_MODULE)-unused.txt
|
||||||
|
|
||||||
|
gtkdoc-check.test: Makefile
|
||||||
|
$(AM_V_GEN)echo "#!/bin/sh -e" > $@; \
|
||||||
|
echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \
|
||||||
|
chmod +x $@
|
||||||
|
|
||||||
|
CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test
|
||||||
|
|
||||||
|
if GTK_DOC_BUILD_HTML
|
||||||
|
HTML_BUILD_STAMP=html-build.stamp
|
||||||
|
else
|
||||||
|
HTML_BUILD_STAMP=
|
||||||
|
endif
|
||||||
|
if GTK_DOC_BUILD_PDF
|
||||||
|
PDF_BUILD_STAMP=pdf-build.stamp
|
||||||
|
else
|
||||||
|
PDF_BUILD_STAMP=
|
||||||
|
endif
|
||||||
|
|
||||||
|
all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
|
||||||
|
.PHONY: all-gtk-doc
|
||||||
|
|
||||||
|
if ENABLE_GTK_DOC
|
||||||
|
all-local: all-gtk-doc
|
||||||
|
endif
|
||||||
|
|
||||||
|
docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
|
||||||
|
|
||||||
|
$(REPORT_FILES): sgml-build.stamp
|
||||||
|
|
||||||
|
#### setup ####
|
||||||
|
|
||||||
|
GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V))
|
||||||
|
GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_SETUP_0=@echo " DOC Preparing build";
|
||||||
|
|
||||||
|
setup-build.stamp:
|
||||||
|
-$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
||||||
|
files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \
|
||||||
|
if test "x$$files" != "x" ; then \
|
||||||
|
for file in $$files ; do \
|
||||||
|
destdir=`dirname $(abs_builddir)/$$file`; \
|
||||||
|
test -d "$$destdir" || mkdir -p "$$destdir"; \
|
||||||
|
test -f $(abs_srcdir)/$$file && \
|
||||||
|
cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
$(AM_V_at)touch setup-build.stamp
|
||||||
|
|
||||||
|
|
||||||
|
#### scan ####
|
||||||
|
|
||||||
|
GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V))
|
||||||
|
GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files";
|
||||||
|
|
||||||
|
GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V))
|
||||||
|
GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects";
|
||||||
|
|
||||||
|
scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB)
|
||||||
|
$(GTK_DOC_V_SCAN)_source_dir='' ; \
|
||||||
|
for i in $(DOC_SOURCE_DIR) ; do \
|
||||||
|
_source_dir="$${_source_dir} --source-dir=$$i" ; \
|
||||||
|
done ; \
|
||||||
|
gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
|
||||||
|
$(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
|
||||||
|
scanobj_options=""; \
|
||||||
|
gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
scanobj_options="--verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
|
||||||
|
gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
|
||||||
|
else \
|
||||||
|
for i in $(SCANOBJ_FILES) ; do \
|
||||||
|
test -f $$i || touch $$i ; \
|
||||||
|
done \
|
||||||
|
fi
|
||||||
|
$(AM_V_at)touch scan-build.stamp
|
||||||
|
|
||||||
|
$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
|
||||||
|
@true
|
||||||
|
|
||||||
|
#### xml ####
|
||||||
|
|
||||||
|
GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V))
|
||||||
|
GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_XML_0=@echo " DOC Building XML";
|
||||||
|
|
||||||
|
sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent
|
||||||
|
$(GTK_DOC_V_XML)_source_dir='' ; \
|
||||||
|
for i in $(DOC_SOURCE_DIR) ; do \
|
||||||
|
_source_dir="$${_source_dir} --source-dir=$$i" ; \
|
||||||
|
done ; \
|
||||||
|
gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
|
||||||
|
$(AM_V_at)touch sgml-build.stamp
|
||||||
|
|
||||||
|
sgml.stamp: sgml-build.stamp
|
||||||
|
@true
|
||||||
|
|
||||||
|
xml/gtkdocentities.ent: Makefile
|
||||||
|
$(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \
|
||||||
|
echo "<!ENTITY package \"$(PACKAGE)\">"; \
|
||||||
|
echo "<!ENTITY package_bugreport \"$(PACKAGE_BUGREPORT)\">"; \
|
||||||
|
echo "<!ENTITY package_name \"$(PACKAGE_NAME)\">"; \
|
||||||
|
echo "<!ENTITY package_string \"$(PACKAGE_STRING)\">"; \
|
||||||
|
echo "<!ENTITY package_tarname \"$(PACKAGE_TARNAME)\">"; \
|
||||||
|
echo "<!ENTITY package_url \"$(PACKAGE_URL)\">"; \
|
||||||
|
echo "<!ENTITY package_version \"$(PACKAGE_VERSION)\">"; \
|
||||||
|
) > $@
|
||||||
|
|
||||||
|
#### html ####
|
||||||
|
|
||||||
|
GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V))
|
||||||
|
GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_HTML_0=@echo " DOC Building HTML";
|
||||||
|
|
||||||
|
GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V))
|
||||||
|
GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references";
|
||||||
|
|
||||||
|
html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files)
|
||||||
|
$(GTK_DOC_V_HTML)rm -rf html && mkdir html && \
|
||||||
|
mkhtml_options=""; \
|
||||||
|
gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
mkhtml_options="$$mkhtml_options --verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
|
||||||
|
fi; \
|
||||||
|
cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
|
||||||
|
-@test "x$(HTML_IMAGES)" = "x" || \
|
||||||
|
for file in $(HTML_IMAGES) ; do \
|
||||||
|
if test -f $(abs_srcdir)/$$file ; then \
|
||||||
|
cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(abs_builddir)/$$file ; then \
|
||||||
|
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
|
||||||
|
fi; \
|
||||||
|
done;
|
||||||
|
$(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
|
||||||
|
$(AM_V_at)touch html-build.stamp
|
||||||
|
|
||||||
|
#### pdf ####
|
||||||
|
|
||||||
|
GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V))
|
||||||
|
GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY))
|
||||||
|
GTK_DOC_V_PDF_0=@echo " DOC Building PDF";
|
||||||
|
|
||||||
|
pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files)
|
||||||
|
$(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \
|
||||||
|
mkpdf_options=""; \
|
||||||
|
gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
|
||||||
|
if test "$$?" = "0"; then \
|
||||||
|
if test "x$(V)" = "x1"; then \
|
||||||
|
mkpdf_options="$$mkpdf_options --verbose"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
if test "x$(HTML_IMAGES)" != "x"; then \
|
||||||
|
for img in $(HTML_IMAGES); do \
|
||||||
|
part=`dirname $$img`; \
|
||||||
|
echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
|
||||||
|
if test $$? != 0; then \
|
||||||
|
mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
|
||||||
|
$(AM_V_at)touch pdf-build.stamp
|
||||||
|
|
||||||
|
##############
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
@rm -f *~ *.bak
|
||||||
|
@rm -rf .libs
|
||||||
|
@if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \
|
||||||
|
rm -f $(DOC_MODULE).types; \
|
||||||
|
fi
|
||||||
|
@if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \
|
||||||
|
rm -f $(DOC_MODULE)-sections.txt; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
distclean-local:
|
||||||
|
@rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
|
||||||
|
$(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
|
||||||
|
@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
||||||
|
rm -f $(SETUP_FILES) $(DOC_MODULE).types; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
maintainer-clean-local:
|
||||||
|
@rm -rf xml html
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
@installfiles=`echo $(builddir)/html/*`; \
|
||||||
|
if test "$$installfiles" = '$(builddir)/html/*'; \
|
||||||
|
then echo 1>&2 'Nothing to install' ; \
|
||||||
|
else \
|
||||||
|
if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
|
||||||
|
else \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)"; \
|
||||||
|
fi; \
|
||||||
|
$(mkinstalldirs) $${installdir} ; \
|
||||||
|
for i in $$installfiles; do \
|
||||||
|
echo ' $(INSTALL_DATA) '$$i ; \
|
||||||
|
$(INSTALL_DATA) $$i $${installdir}; \
|
||||||
|
done; \
|
||||||
|
if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
|
||||||
|
$${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
|
||||||
|
fi; \
|
||||||
|
$(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
@if test -n "$(DOC_MODULE_VERSION)"; then \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
|
||||||
|
else \
|
||||||
|
installdir="$(DESTDIR)$(TARGET_DIR)"; \
|
||||||
|
fi; \
|
||||||
|
rm -rf $${installdir}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Require gtk-doc when making dist
|
||||||
|
#
|
||||||
|
if HAVE_GTK_DOC
|
||||||
|
dist-check-gtkdoc: docs
|
||||||
|
else
|
||||||
|
dist-check-gtkdoc:
|
||||||
|
@echo "*** gtk-doc is needed to run 'make dist'. ***"
|
||||||
|
@echo "*** gtk-doc was not found when 'configure' ran. ***"
|
||||||
|
@echo "*** please install gtk-doc and rerun 'configure'. ***"
|
||||||
|
@false
|
||||||
|
endif
|
||||||
|
|
||||||
|
dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local
|
||||||
|
@mkdir $(distdir)/html
|
||||||
|
@cp ./html/* $(distdir)/html
|
||||||
|
@-cp ./$(DOC_MODULE).pdf $(distdir)/
|
||||||
|
@-cp ./$(DOC_MODULE).types $(distdir)/
|
||||||
|
@-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
|
||||||
|
@cd $(distdir) && rm -f $(DISTCLEANFILES)
|
||||||
|
@$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
|
||||||
|
|
||||||
|
.PHONY : dist-hook-local docs
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
# A path ostree writes to work around automake bug with
|
|
||||||
# subdir-objects
|
|
||||||
Makefile-libglnx.am.inc
|
|
||||||
|
|
||||||
# Some standard bits
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
.dirstamp
|
|
||||||
*.typelib
|
|
||||||
*.la
|
|
||||||
*.lo
|
|
||||||
*.o
|
|
||||||
*.pyc
|
|
||||||
*.stamp
|
|
||||||
*~
|
|
||||||
|
|
||||||
|
|
@ -37,6 +37,8 @@ libglnx_la_SOURCES = \
|
||||||
$(libglnx_srcpath)/glnx-lockfile.c \
|
$(libglnx_srcpath)/glnx-lockfile.c \
|
||||||
$(libglnx_srcpath)/glnx-libcontainer.h \
|
$(libglnx_srcpath)/glnx-libcontainer.h \
|
||||||
$(libglnx_srcpath)/glnx-libcontainer.c \
|
$(libglnx_srcpath)/glnx-libcontainer.c \
|
||||||
|
$(libglnx_srcpath)/glnx-missing-syscall.h \
|
||||||
|
$(libglnx_srcpath)/glnx-missing.h \
|
||||||
$(libglnx_srcpath)/glnx-xattrs.h \
|
$(libglnx_srcpath)/glnx-xattrs.h \
|
||||||
$(libglnx_srcpath)/glnx-xattrs.c \
|
$(libglnx_srcpath)/glnx-xattrs.c \
|
||||||
$(libglnx_srcpath)/glnx-shutil.h \
|
$(libglnx_srcpath)/glnx-shutil.h \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Copyright (C) 2015 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.
|
||||||
|
|
||||||
|
EXTRA_DIST += libglnx/README.md libglnx/COPYING
|
||||||
|
|
||||||
|
libglnx_la_SOURCES = \
|
||||||
|
libglnx/glnx-alloca.h \
|
||||||
|
libglnx/glnx-backport-autocleanups.h \
|
||||||
|
libglnx/glnx-backport-autoptr.h \
|
||||||
|
libglnx/glnx-backports.h \
|
||||||
|
libglnx/glnx-backports.c \
|
||||||
|
libglnx/glnx-local-alloc.h \
|
||||||
|
libglnx/glnx-local-alloc.c \
|
||||||
|
libglnx/glnx-errors.h \
|
||||||
|
libglnx/glnx-errors.c \
|
||||||
|
libglnx/glnx-console.h \
|
||||||
|
libglnx/glnx-console.c \
|
||||||
|
libglnx/glnx-dirfd.h \
|
||||||
|
libglnx/glnx-dirfd.c \
|
||||||
|
libglnx/glnx-fdio.h \
|
||||||
|
libglnx/glnx-fdio.c \
|
||||||
|
libglnx/glnx-lockfile.h \
|
||||||
|
libglnx/glnx-lockfile.c \
|
||||||
|
libglnx/glnx-libcontainer.h \
|
||||||
|
libglnx/glnx-libcontainer.c \
|
||||||
|
libglnx/glnx-missing-syscall.h \
|
||||||
|
libglnx/glnx-missing.h \
|
||||||
|
libglnx/glnx-xattrs.h \
|
||||||
|
libglnx/glnx-xattrs.c \
|
||||||
|
libglnx/glnx-shutil.h \
|
||||||
|
libglnx/glnx-shutil.c \
|
||||||
|
libglnx/libglnx.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
libglnx_la_CFLAGS = $(AM_CFLAGS) $(libglnx_cflags)
|
||||||
|
libglnx_la_LDFLAGS = -avoid-version -Bsymbolic-functions -export-symbols-regex "^glnx_" -no-undefined -export-dynamic
|
||||||
|
libglnx_la_LIBADD = $(libglnx_libs)
|
||||||
|
|
@ -221,9 +221,11 @@ text_percent_internal (const char *text,
|
||||||
|
|
||||||
if (percentage == -1)
|
if (percentage == -1)
|
||||||
{
|
{
|
||||||
const guint spacelen = ncolumns - input_textlen;
|
|
||||||
fwrite (text, 1, input_textlen, stdout);
|
fwrite (text, 1, input_textlen, stdout);
|
||||||
printpad (spaces, n_spaces, spacelen);
|
|
||||||
|
/* Overwrite remaining space, if any */
|
||||||
|
if (ncolumns > input_textlen)
|
||||||
|
printpad (spaces, n_spaces, ncolumns - input_textlen);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,10 +37,255 @@
|
||||||
|
|
||||||
#include <glnx-fdio.h>
|
#include <glnx-fdio.h>
|
||||||
#include <glnx-dirfd.h>
|
#include <glnx-dirfd.h>
|
||||||
|
#include <glnx-alloca.h>
|
||||||
#include <glnx-errors.h>
|
#include <glnx-errors.h>
|
||||||
#include <glnx-xattrs.h>
|
#include <glnx-xattrs.h>
|
||||||
#include <glnx-backport-autoptr.h>
|
#include <glnx-backport-autoptr.h>
|
||||||
#include <glnx-local-alloc.h>
|
#include <glnx-local-alloc.h>
|
||||||
|
#include <glnx-missing.h>
|
||||||
|
|
||||||
|
/* Returns the number of chars needed to format variables of the
|
||||||
|
* specified type as a decimal string. Adds in extra space for a
|
||||||
|
* negative '-' prefix (hence works correctly on signed
|
||||||
|
* types). Includes space for the trailing NUL. */
|
||||||
|
#define DECIMAL_STR_MAX(type) \
|
||||||
|
(2+(sizeof(type) <= 1 ? 3 : \
|
||||||
|
sizeof(type) <= 2 ? 5 : \
|
||||||
|
sizeof(type) <= 4 ? 10 : \
|
||||||
|
sizeof(type) <= 8 ? 20 : sizeof(int[-2*(sizeof(type) > 8)])))
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
rename_file_noreplace_at (int olddirfd, const char *oldpath,
|
||||||
|
int newdirfd, const char *newpath,
|
||||||
|
gboolean ignore_eexist,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
if (renameat2 (olddirfd, oldpath, newdirfd, newpath, RENAME_NOREPLACE) < 0)
|
||||||
|
{
|
||||||
|
if (errno == EINVAL || errno == ENOSYS)
|
||||||
|
{
|
||||||
|
/* Fall through */
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else if (errno == EEXIST && ignore_eexist)
|
||||||
|
{
|
||||||
|
(void) unlinkat (olddirfd, oldpath, 0);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (linkat (olddirfd, oldpath, newdirfd, newpath, 0) < 0)
|
||||||
|
{
|
||||||
|
if (errno == EEXIST && ignore_eexist)
|
||||||
|
/* Fall through */
|
||||||
|
;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlinkat (olddirfd, oldpath, 0) < 0)
|
||||||
|
{
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
glnx_open_tmpfile_linkable_at (int dfd,
|
||||||
|
const char *subpath,
|
||||||
|
int flags,
|
||||||
|
int *out_fd,
|
||||||
|
char **out_path,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
glnx_fd_close int fd = -1;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
/* Don't allow O_EXCL, as that has a special meaning for O_TMPFILE */
|
||||||
|
g_return_val_if_fail ((flags & O_EXCL) == 0, FALSE);
|
||||||
|
|
||||||
|
/* Creates a temporary file, that shall be renamed to "target"
|
||||||
|
* later. If possible, this uses O_TMPFILE – in which case
|
||||||
|
* "ret_path" will be returned as NULL. If not possible a the
|
||||||
|
* tempoary path name used is returned in "ret_path". Use
|
||||||
|
* link_tmpfile() below to rename the result after writing the file
|
||||||
|
* in full. */
|
||||||
|
#if defined(O_TMPFILE) && !defined(DISABLE_OTMPFILE)
|
||||||
|
fd = openat (dfd, subpath, O_TMPFILE|flags, 0600);
|
||||||
|
if (fd == -1 && !(errno == ENOSYS || errno == EISDIR || errno == EOPNOTSUPP))
|
||||||
|
{
|
||||||
|
glnx_set_prefix_error_from_errno (error, "%s", "open(O_TMPFILE)");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (fd != -1)
|
||||||
|
{
|
||||||
|
*out_fd = fd;
|
||||||
|
fd = -1;
|
||||||
|
*out_path = NULL;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
/* Fallthrough */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
{ g_autofree char *tmp = g_strconcat (subpath, "/tmp.XXXXXX", NULL);
|
||||||
|
const guint count_max = 100;
|
||||||
|
|
||||||
|
for (count = 0; count < count_max; count++)
|
||||||
|
{
|
||||||
|
glnx_gen_temp_name (tmp);
|
||||||
|
|
||||||
|
fd = openat (dfd, tmp, O_CREAT|O_EXCL|O_NOFOLLOW|O_NOCTTY|flags, 0600);
|
||||||
|
if (fd < 0)
|
||||||
|
{
|
||||||
|
if (errno == EEXIST)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glnx_set_prefix_error_from_errno (error, "%s", "Creating temp file");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*out_fd = fd;
|
||||||
|
fd = -1;
|
||||||
|
*out_path = g_steal_pointer (&tmp);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_EXISTS,
|
||||||
|
"Exhausted %u attempts to create temporary file", count);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
glnx_link_tmpfile_at (int dfd,
|
||||||
|
GLnxLinkTmpfileReplaceMode mode,
|
||||||
|
int fd,
|
||||||
|
const char *tmpfile_path,
|
||||||
|
int target_dfd,
|
||||||
|
const char *target,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
const gboolean replace = (mode == GLNX_LINK_TMPFILE_REPLACE);
|
||||||
|
const gboolean ignore_eexist = (mode == GLNX_LINK_TMPFILE_NOREPLACE_IGNORE_EXIST);
|
||||||
|
|
||||||
|
g_return_val_if_fail (fd >= 0, FALSE);
|
||||||
|
|
||||||
|
/* Unlike the original systemd code, this function also supports
|
||||||
|
* replacing existing files.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* We have `tmpfile_path` for old systems without O_TMPFILE. */
|
||||||
|
if (tmpfile_path)
|
||||||
|
{
|
||||||
|
if (replace)
|
||||||
|
{
|
||||||
|
/* We have a regular tempfile, we're overwriting - this is a
|
||||||
|
* simple renameat().
|
||||||
|
*/
|
||||||
|
if (renameat (dfd, tmpfile_path, target_dfd, target) < 0)
|
||||||
|
{
|
||||||
|
(void) unlinkat (dfd, tmpfile_path, 0);
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* We need to use renameat2(..., NOREPLACE) or emulate it */
|
||||||
|
if (!rename_file_noreplace_at (dfd, tmpfile_path, target_dfd, target,
|
||||||
|
ignore_eexist,
|
||||||
|
error))
|
||||||
|
{
|
||||||
|
(void) unlinkat (dfd, tmpfile_path, 0);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* This case we have O_TMPFILE, so our reference to it is via /proc/self/fd */
|
||||||
|
char proc_fd_path[strlen("/proc/self/fd/") + DECIMAL_STR_MAX(fd) + 1];
|
||||||
|
|
||||||
|
sprintf (proc_fd_path, "/proc/self/fd/%i", fd);
|
||||||
|
|
||||||
|
if (replace)
|
||||||
|
{
|
||||||
|
/* In this case, we had our temp file atomically hidden, but now
|
||||||
|
* we need to make it visible in the FS so we can do a rename.
|
||||||
|
* Ideally, linkat() would gain AT_REPLACE or so.
|
||||||
|
*/
|
||||||
|
/* TODO - avoid double alloca, we can just alloca a copy of
|
||||||
|
* the pathname plus space for tmp.XXXXX */
|
||||||
|
char *dnbuf = strdupa (target);
|
||||||
|
const char *dn = dirname (dnbuf);
|
||||||
|
char *tmpname_buf = glnx_strjoina (dn, "/tmp.XXXXXX");
|
||||||
|
guint count;
|
||||||
|
const guint count_max = 100;
|
||||||
|
|
||||||
|
for (count = 0; count < count_max; count++)
|
||||||
|
{
|
||||||
|
glnx_gen_temp_name (tmpname_buf);
|
||||||
|
|
||||||
|
if (linkat (AT_FDCWD, proc_fd_path, target_dfd, tmpname_buf, AT_SYMLINK_FOLLOW) < 0)
|
||||||
|
{
|
||||||
|
if (errno == EEXIST)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (count == count_max)
|
||||||
|
{
|
||||||
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_EXISTS,
|
||||||
|
"Exhausted %u attempts to create temporary file", count);
|
||||||
|
}
|
||||||
|
if (renameat (target_dfd, tmpname_buf, target_dfd, target) < 0)
|
||||||
|
{
|
||||||
|
/* This is currently the only case where we need to have
|
||||||
|
* a cleanup unlinkat() still with O_TMPFILE.
|
||||||
|
*/
|
||||||
|
(void) unlinkat (target_dfd, tmpname_buf, 0);
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (linkat (AT_FDCWD, proc_fd_path, target_dfd, target, AT_SYMLINK_FOLLOW) < 0)
|
||||||
|
{
|
||||||
|
if (errno == EEXIST && mode == GLNX_LINK_TMPFILE_NOREPLACE_IGNORE_EXIST)
|
||||||
|
;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static guint8*
|
static guint8*
|
||||||
glnx_fd_readall_malloc (int fd,
|
glnx_fd_readall_malloc (int fd,
|
||||||
|
|
@ -658,38 +903,45 @@ glnx_file_replace_contents_with_perms_at (int dfd,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
|
||||||
int r;
|
int r;
|
||||||
/* We use the /proc/self trick as there's no mkostemp_at() yet */
|
char *dnbuf = strdupa (subpath);
|
||||||
g_autofree char *tmppath = g_strdup_printf ("/proc/self/fd/%d/.tmpXXXXXX", dfd);
|
const char *dn = dirname (dnbuf);
|
||||||
|
g_autofree char *tmpfile_path = NULL;
|
||||||
glnx_fd_close int fd = -1;
|
glnx_fd_close int fd = -1;
|
||||||
|
|
||||||
dfd = glnx_dirfd_canonicalize (dfd);
|
dfd = glnx_dirfd_canonicalize (dfd);
|
||||||
|
|
||||||
if ((fd = g_mkstemp_full (tmppath, O_WRONLY | O_CLOEXEC,
|
/* With O_TMPFILE we can't use umask, and we can't sanely query the
|
||||||
mode == (mode_t) -1 ? 0666 : mode)) == -1)
|
* umask...let's assume something relatively standard.
|
||||||
{
|
*/
|
||||||
glnx_set_error_from_errno (error);
|
if (mode == (mode_t) -1)
|
||||||
goto out;
|
mode = 0644;
|
||||||
}
|
|
||||||
|
if (!glnx_open_tmpfile_linkable_at (dfd, dn, O_WRONLY | O_CLOEXEC,
|
||||||
|
&fd, &tmpfile_path,
|
||||||
|
error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (len == -1)
|
if (len == -1)
|
||||||
len = strlen ((char*)buf);
|
len = strlen ((char*)buf);
|
||||||
|
|
||||||
/* Note that posix_fallocate does *not* set errno but returns it. */
|
/* Note that posix_fallocate does *not* set errno but returns it. */
|
||||||
r = posix_fallocate (fd, 0, len);
|
if (len > 0)
|
||||||
if (r != 0)
|
|
||||||
{
|
{
|
||||||
errno = r;
|
r = posix_fallocate (fd, 0, len);
|
||||||
glnx_set_error_from_errno (error);
|
if (r != 0)
|
||||||
goto out;
|
{
|
||||||
|
errno = r;
|
||||||
|
glnx_set_error_from_errno (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((r = glnx_loop_write (fd, buf, len)) != 0)
|
if ((r = glnx_loop_write (fd, buf, len)) != 0)
|
||||||
{
|
{
|
||||||
errno = -r;
|
errno = -r;
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
goto out;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & GLNX_FILE_REPLACE_NODATASYNC))
|
if (!(flags & GLNX_FILE_REPLACE_NODATASYNC))
|
||||||
|
|
@ -702,7 +954,7 @@ glnx_file_replace_contents_with_perms_at (int dfd,
|
||||||
if (errno != ENOENT)
|
if (errno != ENOENT)
|
||||||
{
|
{
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
goto out;
|
return FALSE;
|
||||||
}
|
}
|
||||||
do_sync = (flags & GLNX_FILE_REPLACE_DATASYNC_NEW) > 0;
|
do_sync = (flags & GLNX_FILE_REPLACE_DATASYNC_NEW) > 0;
|
||||||
}
|
}
|
||||||
|
|
@ -714,7 +966,7 @@ glnx_file_replace_contents_with_perms_at (int dfd,
|
||||||
if (fdatasync (fd) != 0)
|
if (fdatasync (fd) != 0)
|
||||||
{
|
{
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
goto out;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -724,31 +976,21 @@ glnx_file_replace_contents_with_perms_at (int dfd,
|
||||||
if (fchown (fd, uid, gid) != 0)
|
if (fchown (fd, uid, gid) != 0)
|
||||||
{
|
{
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
goto out;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If a mode was forced, override umask */
|
if (fchmod (fd, mode) != 0)
|
||||||
if (mode != (mode_t) -1)
|
|
||||||
{
|
|
||||||
if (fchmod (fd, mode) != 0)
|
|
||||||
{
|
|
||||||
glnx_set_error_from_errno (error);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (renameat (dfd, tmppath, dfd, subpath) != 0)
|
|
||||||
{
|
{
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
goto out;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = TRUE;
|
if (!glnx_link_tmpfile_at (dfd, GLNX_LINK_TMPFILE_REPLACE,
|
||||||
out:
|
fd, tmpfile_path, dfd, subpath, error))
|
||||||
if (!ret)
|
return FALSE;
|
||||||
(void) unlink (tmppath);
|
|
||||||
return ret;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,29 @@ const char *glnx_basename (const char *path)
|
||||||
return (basename) (path);
|
return (basename) (path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
glnx_open_tmpfile_linkable_at (int dfd,
|
||||||
|
const char *subpath,
|
||||||
|
int flags,
|
||||||
|
int *out_fd,
|
||||||
|
char **out_path,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GLNX_LINK_TMPFILE_REPLACE,
|
||||||
|
GLNX_LINK_TMPFILE_NOREPLACE,
|
||||||
|
GLNX_LINK_TMPFILE_NOREPLACE_IGNORE_EXIST
|
||||||
|
} GLnxLinkTmpfileReplaceMode;
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
glnx_link_tmpfile_at (int dfd,
|
||||||
|
GLnxLinkTmpfileReplaceMode flags,
|
||||||
|
int fd,
|
||||||
|
const char *tmpfile_path,
|
||||||
|
int target_dfd,
|
||||||
|
const char *target,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
GBytes *
|
GBytes *
|
||||||
glnx_fd_readall_bytes (int fd,
|
glnx_fd_readall_bytes (int fd,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
#include <gio/gunixoutputstream.h>
|
#include <gio/gunixoutputstream.h>
|
||||||
|
|
||||||
#include "glnx-libcontainer.h"
|
#include "glnx-libcontainer.h"
|
||||||
|
#include "glnx-dirfd.h"
|
||||||
|
|
||||||
#include "glnx-backport-autocleanups.h"
|
#include "glnx-backport-autocleanups.h"
|
||||||
#include "glnx-local-alloc.h"
|
#include "glnx-local-alloc.h"
|
||||||
|
|
@ -104,9 +105,9 @@ glnx_libcontainer_bind_mount_readonly (const char *path, GError **error)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Based on code from nspawn.c */
|
/* Based on code from nspawn.c; assumes process cwd is the target */
|
||||||
static int
|
static int
|
||||||
glnx_libcontainer_make_api_mounts (const char *dest)
|
glnx_libcontainer_make_api_mounts (void)
|
||||||
{
|
{
|
||||||
typedef struct MountPoint {
|
typedef struct MountPoint {
|
||||||
const char *what;
|
const char *what;
|
||||||
|
|
@ -134,10 +135,11 @@ glnx_libcontainer_make_api_mounts (const char *dest)
|
||||||
|
|
||||||
for (k = 0; k < G_N_ELEMENTS(mount_table); k++)
|
for (k = 0; k < G_N_ELEMENTS(mount_table); k++)
|
||||||
{
|
{
|
||||||
g_autofree char *where = NULL;
|
const char *where = mount_table[k].where;
|
||||||
int t;
|
int t;
|
||||||
|
|
||||||
where = g_build_filename (dest, mount_table[k].where, NULL);
|
g_assert (where[0] == '/');
|
||||||
|
where++;
|
||||||
|
|
||||||
t = mkdir (where, 0755);
|
t = mkdir (where, 0755);
|
||||||
if (t < 0 && errno != EEXIST)
|
if (t < 0 && errno != EEXIST)
|
||||||
|
|
@ -201,9 +203,9 @@ glnx_libcontainer_prep_dev (const char *dest_devdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t
|
pid_t
|
||||||
glnx_libcontainer_run_chroot_private (const char *dest,
|
glnx_libcontainer_run_chroot_at_private (int dfd,
|
||||||
const char *binary,
|
const char *binary,
|
||||||
char **argv)
|
char **argv)
|
||||||
{
|
{
|
||||||
/* Make most new namespaces; note our use of CLONE_NEWNET means we
|
/* Make most new namespaces; note our use of CLONE_NEWNET means we
|
||||||
* have no networking in the container root.
|
* have no networking in the container root.
|
||||||
|
|
@ -250,12 +252,12 @@ glnx_libcontainer_run_chroot_private (const char *dest,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chdir (dest) != 0)
|
if (fchdir (dfd) != 0)
|
||||||
_perror_fatal ("chdir: ");
|
_perror_fatal ("fchdir: ");
|
||||||
|
|
||||||
if (!in_container)
|
if (!in_container)
|
||||||
{
|
{
|
||||||
if (glnx_libcontainer_make_api_mounts (dest) != 0)
|
if (glnx_libcontainer_make_api_mounts () != 0)
|
||||||
_perror_fatal ("preparing api mounts: ");
|
_perror_fatal ("preparing api mounts: ");
|
||||||
|
|
||||||
if (glnx_libcontainer_prep_dev ("dev") != 0)
|
if (glnx_libcontainer_prep_dev ("dev") != 0)
|
||||||
|
|
@ -264,7 +266,7 @@ glnx_libcontainer_run_chroot_private (const char *dest,
|
||||||
if (mount (".", ".", NULL, MS_BIND | MS_PRIVATE, NULL) != 0)
|
if (mount (".", ".", NULL, MS_BIND | MS_PRIVATE, NULL) != 0)
|
||||||
_perror_fatal ("mount (MS_BIND)");
|
_perror_fatal ("mount (MS_BIND)");
|
||||||
|
|
||||||
if (mount (dest, "/", NULL, MS_MOVE, NULL) != 0)
|
if (mount (".", "/", NULL, MS_MOVE, NULL) != 0)
|
||||||
_perror_fatal ("mount (MS_MOVE)");
|
_perror_fatal ("mount (MS_MOVE)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -295,3 +297,17 @@ glnx_libcontainer_run_chroot_private (const char *dest,
|
||||||
|
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pid_t
|
||||||
|
glnx_libcontainer_run_chroot_private (const char *dest,
|
||||||
|
const char *binary,
|
||||||
|
char **argv)
|
||||||
|
{
|
||||||
|
glnx_fd_close int dfd = -1;
|
||||||
|
|
||||||
|
dfd = glnx_opendirat_with_errno (AT_FDCWD, dest, TRUE);
|
||||||
|
if (dfd < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return glnx_libcontainer_run_chroot_at_private (dfd, binary, argv);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,10 @@
|
||||||
#include <sys/capability.h>
|
#include <sys/capability.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
|
|
||||||
|
pid_t glnx_libcontainer_run_chroot_at_private (int root_dfd,
|
||||||
|
const char *binary,
|
||||||
|
char **argv);
|
||||||
|
|
||||||
pid_t glnx_libcontainer_run_chroot_private (const char *dest,
|
pid_t glnx_libcontainer_run_chroot_private (const char *dest,
|
||||||
const char *binary,
|
const char *binary,
|
||||||
char **argv);
|
char **argv);
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,8 @@ void glnx_release_lock_file(GLnxLockFile *f) {
|
||||||
f->path = NULL;
|
f->path = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) close (f->fd);
|
if (f->fd != -1)
|
||||||
|
(void) close (f->fd);
|
||||||
f->fd = -1;
|
f->fd = -1;
|
||||||
f->operation = 0;
|
f->operation = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||