694b798c73
Tracking issue: https://github.com/projectatomic/rpm-ostree/issues/1081 To briefly recap: Let's experiment with doing ostree-in-RPM, basically the "compose" process injects additional data (SELinux labels for example) in an "ostree image" RPM, like `fedora-atomic-host-27.8-1.x86_64.rpm`. That "ostree image" RPM will contain the OSTree commit+metadata, and tell us what RPMs we need need to download. For updates, like `yum update` we only download changed RPMs, plus the new "oirpm". But SELinux labeling, depsolving, etc. are still done server side, and we still have a reliable OSTree commit checksum. This is a lot like [Jigdo](http://atterer.org/jigdo/) Here we fully demonstrate the concept working end-to-end; we use the "traditional" `compose tree` to commit a bunch of RPMs to an OSTree repo, which has a checksum, version etc. Then the new `ex commit2jigdo` generates the "oirpm". This is the "server side" operation. Next simulating the client side, `jigdo2commit` takes the OIRPM and uses it and downloads the "jigdo set" RPMs, fully regenerating *bit for bit* the final OSTree commit. If you want to play with this, I'd take a look at the `test-jigdo.sh`; from there you can find other useful bits like the example `fedora-atomic-host.spec` file (though the canonical copy of this will likely land in the [fedora-atomic](http://pagure.io/fedora-atomic) manifest git repo. Closes: #1103 Approved by: jlebon
96 lines
3.2 KiB
Plaintext
96 lines
3.2 KiB
Plaintext
# 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.
|
|
|
|
noinst_LTLIBRARIES += librpmostreepriv.la
|
|
|
|
librpmostreepriv_la_SOURCES = \
|
|
src/libpriv/rpmostree-postprocess.c \
|
|
src/libpriv/rpmostree-postprocess.h \
|
|
src/libpriv/rpmostree-json-parsing.c \
|
|
src/libpriv/rpmostree-json-parsing.h \
|
|
src/libpriv/rpmostree-util.c \
|
|
src/libpriv/rpmostree-util.h \
|
|
src/libpriv/rpmostree-passwd-util.c \
|
|
src/libpriv/rpmostree-passwd-util.h \
|
|
src/libpriv/rpmostree-refts.h \
|
|
src/libpriv/rpmostree-refts.c \
|
|
src/libpriv/rpmostree-core.c \
|
|
src/libpriv/rpmostree-core.h \
|
|
src/libpriv/rpmostree-bwrap.c \
|
|
src/libpriv/rpmostree-bwrap.h \
|
|
src/libpriv/rpmostree-kernel.c \
|
|
src/libpriv/rpmostree-kernel.h \
|
|
src/libpriv/rpmostree-origin.c \
|
|
src/libpriv/rpmostree-origin.h \
|
|
src/libpriv/rpmostree-scripts.c \
|
|
src/libpriv/rpmostree-scripts.h \
|
|
src/libpriv/rpmostree-refsack.h \
|
|
src/libpriv/rpmostree-refsack.c \
|
|
src/libpriv/rpmostree-cleanup.h \
|
|
src/libpriv/rpmostree-rpm-util.c \
|
|
src/libpriv/rpmostree-rpm-util.h \
|
|
src/libpriv/rpmostree-importer.c \
|
|
src/libpriv/rpmostree-importer.h \
|
|
src/libpriv/rpmostree-jigdo-assembler.c \
|
|
src/libpriv/rpmostree-jigdo-assembler.h \
|
|
src/libpriv/rpmostree-jigdo-core.h \
|
|
src/libpriv/rpmostree-unpacker-core.c \
|
|
src/libpriv/rpmostree-unpacker-core.h \
|
|
src/libpriv/rpmostree-output.c \
|
|
src/libpriv/rpmostree-output.h \
|
|
src/libpriv/rpmostree-kargs-process.c \
|
|
src/libpriv/rpmostree-kargs-process.h \
|
|
src/libpriv/rpmostree-editor.c \
|
|
src/libpriv/rpmostree-editor.h \
|
|
src/libpriv/libsd-locale-util.c \
|
|
src/libpriv/libsd-locale-util.h \
|
|
src/libpriv/rpmostree-libarchive-input-stream.c \
|
|
src/libpriv/rpmostree-libarchive-input-stream.h \
|
|
$(NULL)
|
|
|
|
librpmostreepriv_la_CFLAGS = \
|
|
$(AM_CFLAGS) \
|
|
-I$(srcdir)/src/lib \
|
|
-I$(srcdir)/src/libpriv \
|
|
-I$(libglnx_srcpath) \
|
|
-DPKGLIBDIR=\"$(pkglibdir)\" \
|
|
$(PKGDEP_RPMOSTREE_CFLAGS) \
|
|
$(NULL)
|
|
|
|
librpmostreepriv_la_LIBADD = \
|
|
$(PKGDEP_RPMOSTREE_LIBS) \
|
|
libglnx.la \
|
|
$(CAP_LIBS) \
|
|
$(NULL)
|
|
|
|
# bundled libdnf
|
|
EXTRA_librpmostreepriv_la_DEPENDENCIES = libdnf.so.1
|
|
|
|
gperf_gperf_sources = src/libpriv/rpmostree-script-gperf.gperf
|
|
BUILT_SOURCES += $(gperf_gperf_sources:-gperf.gperf=-gperf.c)
|
|
CLEANFILES += $(gperf_gperf_sources:-gperf.gperf=-gperf.c)
|
|
|
|
nodist_librpmostreepriv_la_SOURCES = src/libpriv/rpmostree-script-gperf.c
|
|
|
|
AM_V_GPERF = $(AM_V_GPERF_$(V))
|
|
AM_V_GPERF_ = $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY))
|
|
AM_V_GPERF_0 = @echo " GPERF " $@;
|
|
|
|
src/%.c: src/%.gperf Makefile
|
|
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
|
$(AM_V_GPERF)$(GPERF) < $< > $@.tmp && mv $@.tmp $@
|