Bug#950420: efl FTCBFS: src/bin/eolian/meson.build:25:2: ERROR: Program(s) ['eolian_gen'] not found or not executable

Helmut Grohne helmut at subdivi.de
Sat Feb 1 12:10:25 GMT 2020


Source: efl
Version: 1.23.3-6
Tags: patch
User: debian-cross at lists.debian.org
Usertags: ftcbfs

efl fails to cross build from source. The error from meson is quite
instructive:

| src/bin/eolian/meson.build:25:2: ERROR: Program(s) ['eolian_gen'] not found or not executable

For native builds, efl builds eolian_gen and installs it. For cross
builds, it expects the builder to provide a pre-built eolian_gen for the
build architecture and compiles an eolian_gen for the host architecture.
So we should simply build depend on the package containing eolian_gen,
no?

Not that simple unfortunately. The package would be libefl-all-dev and
we'd have to install it for the build architecture here. In other words:
libefl-all-dev:native. Unfortunately, it depends on lots of packages
that we also build depend on for the host architecture. Sufficiently
many of its dependencies are not Multi-Arch: same, so there is no
solution to the requested dependencies. Therefore, we must provide a
"smaller" way to access eolian_gen.

I'm proposing a libefl-all-dev-bin package. We simply move eolian_gen to
that new package and have libefl-all-dev depend on it. For consumers,
nothing changes. Two things do change:
 * libefl-all-dev-bin is being marked Multi-Arch: foreign, so eolian_gen
   becomes usable for cross compilation.
 * efl can build depend on libefl-all-dev-bin <cross> to make the tool
   available.

Please consider applying the attached patch. Yes, that means going
through NEW.

Why not move all /usr/bin/* to libefl-all-dev-bin? I don't have the
expertise to tell which are movable. The build system clearly tells that
a native eolian_gen is usable for cross compilation, but for other tools
I simply don't know. Leaving them where they are is a conservative
choice. If we encounter more tools that need to be moved for other
reasons, we can do so later without adding more packages. For
eolian_gen, there is a specific need to perform such a move.

Helmut
-------------- next part --------------
diff --minimal -Nru efl-1.23.3/debian/changelog efl-1.23.3/debian/changelog
--- efl-1.23.3/debian/changelog	2020-01-30 07:19:24.000000000 +0100
+++ efl-1.23.3/debian/changelog	2020-01-31 19:35:39.000000000 +0100
@@ -1,3 +1,11 @@
+efl (1.23.3-6.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Improve cross building: Move eolian_gen to a Multi-Arch: foreign package
+    and build depend on it. (Closes: #-1)
+
+ -- Helmut Grohne <helmut at subdivi.de>  Fri, 31 Jan 2020 19:35:39 +0100
+
 efl (1.23.3-6) unstable; urgency=medium
 
   * Upload to unstable (Closes: #949351)
diff --minimal -Nru efl-1.23.3/debian/control efl-1.23.3/debian/control
--- efl-1.23.3/debian/control	2020-01-30 06:40:35.000000000 +0100
+++ efl-1.23.3/debian/control	2020-01-31 19:35:39.000000000 +0100
@@ -13,6 +13,7 @@
  libbullet-dev,
  libcurl4-gnutls-dev,
  libdbus-1-dev,
+ libefl-all-dev-bin <cross>,
  libfontconfig1-dev,
  libfreetype6-dev,
  libfribidi-dev,
@@ -594,6 +595,7 @@
  libedje1 (= ${binary:Version}),
  libeet1 (= ${binary:Version}),
  libeeze1 (= ${binary:Version}) [linux-any],
+ libefl-all-dev-bin (= ${binary:Version}),
  libefreet1a (= ${binary:Version}),
  libeina1a (= ${binary:Version}),
  libeio1 (= ${binary:Version}),
@@ -702,6 +704,24 @@
  .
  This package provides the development files for all of EFL.
 
+Package: libefl-all-dev-bin
+Section: libdevel
+Architecture: any
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Breaks: libefl-all-dev (<< 1.23.3-6.1~)
+Replaces: libefl-all-dev (<< 1.23.3-6.1~)
+Description: Enlightenment Foundation Libraries development tools
+ The Enlightenment Foundation Libraries (EFL) is a stack of libraries
+ providing a wide degree of functionality.  Originally written to
+ support development of the Enlightenment window manager, the
+ libraries have increasingly been used in embedded systems.
+ .
+ This is part of the Enlightenment Foundation Libraries (EFL).
+ .
+ This package is an implementation detail of libefl-all-dev. Please use
+ libefl-all-dev instead.
+
 Package: libefreet1a
 Architecture: any
 Multi-Arch: same
diff --minimal -Nru efl-1.23.3/debian/libefl-all-dev-bin.install efl-1.23.3/debian/libefl-all-dev-bin.install
--- efl-1.23.3/debian/libefl-all-dev-bin.install	1970-01-01 01:00:00.000000000 +0100
+++ efl-1.23.3/debian/libefl-all-dev-bin.install	2020-01-31 19:35:39.000000000 +0100
@@ -0,0 +1,3 @@
+#
+# libeolian-dev.install
+usr/bin/eolian_gen
diff --minimal -Nru efl-1.23.3/debian/libefl-all-dev.install efl-1.23.3/debian/libefl-all-dev.install
--- efl-1.23.3/debian/libefl-all-dev.install	2020-01-30 06:33:22.000000000 +0100
+++ efl-1.23.3/debian/libefl-all-dev.install	2020-01-31 19:35:39.000000000 +0100
@@ -145,7 +145,6 @@
 usr/include/eolian*
 usr/lib/*/libeolian.so
 usr/lib/*/pkgconfig/eolian*.pc
-usr/bin/eolian_gen
 usr/lib/*/cmake/Eolian/*.cmake
 
 #


More information about the Pkg-e-devel mailing list