Skip to contentSkip to conversation

libostree: new package

PATCH RESEND Superseded Marcus Folkesson 3 participants 5 messages Oct 29, 2017

v4 of 8 Superseded Latest is v8 →

lore
Share & tools
lore
#0 lore raw

PATCH RESEND v4 1/1 libostree: new package

OSTree is an upgrade system for Linux-based operating systems

---

v4:
- bump version to 2017.12

v3:
- move with the package within Config.in to match the chronological order (the former name was just 'ostree')

v2:
- add e2fsprogs as dependency

 DEVELOPERS                                         |  3 ++
 package/Config.in                                  |  1 +
 ...Use-autoreconf-from-the-build-environment.patch | 42 ++++++++++++++++++++++
 package/libostree/Config.in                        | 12 +++++++
 package/libostree/libostree.mk                     | 22 ++++++++++++
 5 files changed, 80 insertions(+)
 create mode 100644 package/libostree/0001-Use-autoreconf-from-the-build-environment.patch
 create mode 100644 package/libostree/Config.in
 create mode 100644 package/libostree/libostree.mk
DEVELOPERS +3 -0
index 942abcf836..602122cfed 100644
@@ -1129,6 +1129,9 @@ F:	package/turbolua/
 N:	Marcin Nowakowski <[email protected]>
 F:	package/libkcapi/
 
+N:	Marcus Folkesson <[email protected]>
+F:	package/libostree/
+
 N:	Marek Belisko <[email protected]>
 F:	package/libatasmart/
 F:	package/polkit/
package/Config.in +1 -0
index d4cf62708a..8fbc213610 100644
@@ -1913,6 +1913,7 @@ menu "System tools"
 	source "package/keyutils/Config.in"
 	source "package/kmod/Config.in"
 	source "package/kvmtool/Config.in"
+	source "package/libostree/Config.in"
 	source "package/lxc/Config.in"
 	source "package/monit/Config.in"
 	source "package/ncdu/Config.in"
package/libostree/0001-Use-autoreconf-from-the-build-environment.patch new file +42 -0

42 lines not on this page · raw message

package/libostree/Config.in new file +12 -0
new file mode 100644
index 0000000000..520e76ce6a
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBOSTREE
+	bool "libostree"
+	select BR2_PACKAGE_LIBGLIB2
+	select BR2_PACKAGE_PKGCONF
+	select BR2_PACKAGE_XZ
+	select BR2_PACKAGE_E2FSPROGS
+	select BR2_PACKAGE_LIBFUSE
+	select BR2_PACKAGE_LIBGPGME
+	help
+	  OSTree is an upgrade system for Linux-based operating systems.
+
+	  https://ostree.readthedocs.io/en/latest/
package/libostree/libostree.mk new file +22 -0
new file mode 100644
index 0000000000..5d0483665c
@@ -0,0 +1,22 @@
+################################################################################
+#
+# libostree
+#
+################################################################################
+
+LIBOSTREE_VERSION = v2017.12
+LIBOSTREE_SITE = https://github.com/ostreedev/ostree.git
+LIBOSTREE_SITE_METHOD = git
+LIBOSTREE_GIT_SUBMODULES = yes
+LIBOSTREE_LICENSE = GPLv2
+LIBOSTREE_LICENSE_FILES = COPYING
+LIBOSTREE_AUTORECONF = YES
+LIBOSTREE_DEPENDENCIES = libgpgme libglib2 xz libfuse pkgconf e2fsprogs
+
+# Use their special autogen.sh script to workaround automake bug with subdir-objects and computed paths
+define LIBOSTREE_RUN_AUTOGEN
+	cd $(@D) && PATH=$(BR_PATH) ./autogen.sh
+endef
+LIBOSTREE_PRE_CONFIGURE_HOOKS += LIBOSTREE_RUN_AUTOGEN
+
+$(eval $(autotools-package))
Signature · 1 line
2.13.1
#1 lore raw

PATCH RESEND v4 1/1 libostree: new package

Hi Marcus,

Am Sun, 29 Oct 2017 10:37:56 +0100 schrieb Marcus Folkesson:

you need to propagate some dependencies from packages libostree depends on.

package/libostree/Config.in line 3

Quoted 9 lines
package/libostree/Config.in new file +3 -0
new file mode 100644
index 0000000000..520e76ce6a
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBOSTREE
+	bool "libostree"
+	select BR2_PACKAGE_LIBGLIB2

libglib2 contains:

depends on BR2_USE_WCHAR # gettext
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_MMU # fork()

package/libostree/Config.in line 4

Quoted 1 line
package/libostree/Config.in new file +1 -0
+	select BR2_PACKAGE_PKGCONF

Is pkgconf really needed for the target?

package/libostree/Config.in line 6

Quoted 2 lines
package/libostree/Config.in new file +2 -0
+	select BR2_PACKAGE_XZ
+	select BR2_PACKAGE_E2FSPROGS

e2fsprogs contains:

depends on BR2_USE_MMU # util-linux/libblkid

package/libostree/Config.in line 7

Quoted 1 line
package/libostree/Config.in new file +1 -0
+	select BR2_PACKAGE_LIBFUSE

libfuse contains:

depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_MMU # fork()

package/libostree/Config.in line 8

Quoted 1 line
package/libostree/Config.in new file +1 -0
+	select BR2_PACKAGE_LIBGPGME

libgpgme contains:

depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error depends on BR2_USE_MMU # libassuan

package/libostree/

Quoted 5 lines
package/libostree/Config.in new file +4 -0
+	help
+	  OSTree is an upgrade system for Linux-based operating systems.
+
+	  https://ostree.readthedocs.io/en/latest/
package/libostree/ renamed from package/libostree/libostree.mk +0 -0

libostree.mk

package/libostree/libostree.mk

Quoted 6 lines

new file mode 100644
index 0000000000..5d0483665c

package/libostree/libostree.mk new file +0 -0
@@ -0,0 +1,22 @@

+################################################################################

package/libostree/libostree.mk line 4

Quoted 4 lines
package/libostree/libostree.mk new file +3 -0
+#
+# libostree
+#

+################################################################################

package/libostree/libostree.mk line 10

Quoted 5 lines
package/libostree/libostree.mk new file +5 -0
+
+LIBOSTREE_VERSION = v2017.12
+LIBOSTREE_SITE = https://github.com/ostreedev/ostree.git
+LIBOSTREE_SITE_METHOD = git
+LIBOSTREE_GIT_SUBMODULES = yes

What about using the tarball provided by upstream?

LIBOSTREE_VERSION = 2017.12
LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v
$(LIBOSTREE_VERSION)

It contains the git submodules as well so you can drop autoreconf and patch 0001. Please also add a hash file.

package/libostree/libostree.mk line 14

Quoted 4 lines
package/libostree/libostree.mk new file +4 -0
+LIBOSTREE_LICENSE = GPLv2
+LIBOSTREE_LICENSE_FILES = COPYING
+LIBOSTREE_AUTORECONF = YES
+LIBOSTREE_DEPENDENCIES = libgpgme libglib2 xz libfuse pkgconf e2fsprogs

Please sort this list alphabetically and add host-pkgconf as it is used by configure.

package/libostree/libostree.mk line 13

Quoted 1 line
package/libostree/libostree.mk new file +1 -0
+# Use their special autogen.sh script to workaround automake bug with 

subdir-objects and computed paths

Please wrap this line to 72 chars.

package/libostree/libostree.mk line 22

Quoted 6 lines
package/libostree/libostree.mk new file +6 -0
+define LIBOSTREE_RUN_AUTOGEN
+	cd $(@D) && PATH=$(BR_PATH) ./autogen.sh
+endef
+LIBOSTREE_PRE_CONFIGURE_HOOKS += LIBOSTREE_RUN_AUTOGEN
+
+$(eval $(autotools-package))

Please add openssl as optional dependency:

ifeq ($(BR2_PACKAGE_OPENSSL),y)
LIBOSTREE_CONF_OPTS += --with-openssl
LIBOSTREE_DEPENDENCIES += openssl
else
LIBOSTREE_CONF_OPTS += --without-openssl
endif

Same for avahi, libarchive, libcurl, libsoup and systemd.

Please note that curl support also needs libsoup

configure: error: Curl enabled, but libsoup is not; libsoup is needed for tests

To solve this configure error:

checking for gpgme-config... no
checking for OT_DEP_GPGME... no
checking for GPGME pthread - version >= 1.1.8... no
configure: error: Need GPGME_PTHREAD version 1.1.8 or later

I needed to add

LIBOSTREE_CONF_OPTS += --with-gpgme-prefix=$(STAGING_DIR)/usr

Regards, Bernd

#2 lore raw

PATCH RESEND v4 1/1 libostree: new package

Hello,

Quoted 1 line · Bernd Kuhls

Hi Marcus,

First of all Bernd, thanks a lot for your detailed review! Everything is obviously correct in your review, and needs to be addressed by Marcus. However, there is just one point that needs clarification.

Quoted 10 lines

Please add openssl as optional dependency:

ifeq ($(BR2_PACKAGE_OPENSSL),y)
LIBOSTREE_CONF_OPTS += --with-openssl
LIBOSTREE_DEPENDENCIES += openssl
else
LIBOSTREE_CONF_OPTS += --without-openssl
endif

Same for avahi, libarchive, libcurl, libsoup and systemd.

Adding support for optional dependencies is not a strict requirement, as long as the corresponding features are explicitly disabled.

I.e, for each optional dependency, Marcus has the choice of:

- Supporting it, by enabling the dependency if it's available in Buildroot

- Disabling explicitly the optional dependency by passing the appropriate --disable-<foo>

Indeed, we don't want to ask our contributors to support all possible optional dependencies. It might be a lot of work, and the contributor may not necessarily care about such optional dependencies. Hence, disabling a dependency explicitly is acceptable.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#3 lore raw

PATCH RESEND v4 1/1 libostree: new package

In reply to Bernd Kuhls

Hi Bernd,

Thank you for your comments, really, that was helpful.

Quoted 19 lines · Bernd Kuhls

Hi Marcus,

Am Sun, 29 Oct 2017 10:37:56 +0100 schrieb Marcus Folkesson:

you need to propagate some dependencies from packages libostree depends on.

package/libostree/Config.in line 3

Quoted 9 lines
package/libostree/Config.in new file +3 -0
new file mode 100644
index 0000000000..520e76ce6a
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBOSTREE
+	bool "libostree"
+	select BR2_PACKAGE_LIBGLIB2

libglib2 contains:

Quoted 4 lines

depends on BR2_USE_WCHAR # gettext
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_MMU # fork()

Will do. Actually, I thought Buildroot would handle this. How about dependencies in the next step and so on?

Quoted 8 lines

package/libostree/Config.in line 8

Quoted 5 lines
package/libostree/Config.in new file +5 -0
+
+LIBOSTREE_VERSION = v2017.12
+LIBOSTREE_SITE = https://github.com/ostreedev/ostree.git
+LIBOSTREE_SITE_METHOD = git
+LIBOSTREE_GIT_SUBMODULES = yes

What about using the tarball provided by upstream?

Quoted 8 lines

LIBOSTREE_VERSION = 2017.12
LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v
$(LIBOSTREE_VERSION)

It contains the git submodules as well so you can drop autoreconf and patch 0001. Please also add a hash file.

Tarball is a much better approach. I was looking at this first but dropped it since I did not saw the submodules.
Guess I was looking at
https://github.com/ostreedev/ostree/archive/v2017.12.tar.gz then, not the actual releases.

Quoted 8 lines

package/libostree/Config.in line 12

Quoted 4 lines
package/libostree/Config.in new file +4 -0
+LIBOSTREE_LICENSE = GPLv2
+LIBOSTREE_LICENSE_FILES = COPYING
+LIBOSTREE_AUTORECONF = YES
+LIBOSTREE_DEPENDENCIES = libgpgme libglib2 xz libfuse pkgconf e2fsprogs

Please sort this list alphabetically and add host-pkgconf as it is used by configure.

Ok.

Quoted 5 lines
Quoted 1 line

+# Use their special autogen.sh script to workaround automake bug with

subdir-objects and computed paths

Please wrap this line to 72 chars.

Ok.

Quoted 9 lines

package/libostree/Config.in

Quoted 6 lines
package/libostree/Config.in new file +6 -0
+define LIBOSTREE_RUN_AUTOGEN
+	cd $(@D) && PATH=$(BR_PATH) ./autogen.sh
+endef
+LIBOSTREE_PRE_CONFIGURE_HOOKS += LIBOSTREE_RUN_AUTOGEN
+
+$(eval $(autotools-package))

Please add openssl as optional dependency:

Quoted 8 lines

ifeq ($(BR2_PACKAGE_OPENSSL),y)
LIBOSTREE_CONF_OPTS += --with-openssl
LIBOSTREE_DEPENDENCIES += openssl
else
LIBOSTREE_CONF_OPTS += --without-openssl
endif

Same for avahi, libarchive, libcurl, libsoup and systemd.

Will do.

Quoted 13 lines

Please note that curl support also needs libsoup

configure: error: Curl enabled, but libsoup is not; libsoup is needed for tests

To solve this configure error:

checking for gpgme-config... no
checking for OT_DEP_GPGME... no
checking for GPGME pthread - version >= 1.1.8... no
configure: error: Need GPGME_PTHREAD version 1.1.8 or later

Quoted 7 lines

I needed to add

LIBOSTREE_CONF_OPTS += --with-gpgme-prefix=$(STAGING_DIR)/usr

Regards, Bernd

Best regards
Marcus Folkesson

#4 lore raw

PATCH RESEND v4 1/1 libostree: new package

In reply to Marcus Folkesson

Am Sun, 29 Oct 2017 10:37:56 +0100 schrieb Marcus Folkesson:

Quoted 4 lines

OSTree is an upgrade system for Linux-based operating systems

Signed-off-by: Marcus Folkesson
<[email protected]>

Hi,

an additional note: The package is broken when used with musl:

CC src/libostree/libostree_1_la-ostree-async-progress.lo
In file included from ./libglnx/libglnx.h:33:0,
from src/libostree/ostree-async-progress.c:24:
./libglnx/glnx-dirfd.h: In function 'glnx_ensure_dir':
./libglnx/glnx-dirfd.h:108:7: error: implicit declaration of function 'TEMP_FAILURE_RETRY' [-Werror=implicit-function-declaration]
if (TEMP_FAILURE_RETRY (mkdirat (dfd, path, mode)) != 0)

       ^~~~~~~~~~~~~~~~~~

Regards, Bernd