On Tue, 18 Feb 2020 23:08:46 -0800 Ross Vandegrift <r...@kallisti.us> said:

> On Tue, Feb 18, 2020 at 12:02:45AM +0000, Carsten Haitzler wrote:
> > On Mon, 17 Feb 2020 15:30:04 -0800 Ross Vandegrift <r...@kallisti.us> said:
> > 
> > > On Mon, Feb 17, 2020 at 09:41:48AM +0000, Carsten Haitzler wrote:
> > > > On Sun, 16 Feb 2020 22:37:40 -0800 Ross Vandegrift <r...@kallisti.us>
> > > > said:
> > > > > On Sat, Feb 15, 2020 at 09:37:59PM -0800, Jose R R wrote:
> > > > > > For EFL, I replaced libcurl4-gnutls-dev with libcurl4-openssl-dev to
> > > > > > be consistent with most of what I build --including reiser4 VMs for
> > > > > > Google cloud env..
> > > > > > The build finished but the logs showed *many* dh-missing files the
> > > > > > Debian packaging had no *.installation instructions for.
> > > > > 
> > > > > These are left out intentionally so dh_missing is set to just warn.
> > > > > Unfortunately, d/not-installed does not support wildcards yet - so
> > > > > there's no (easy) way to suppress those messages.
> > > > > 
> > > > > > For E23.1 the build failed due to the copious quantity of dh-missing
> > > > > > files.
> > > > > 
> > > > > Unlike efl, enlightenemnt's packaging is set to fail on any missing
> > > > > files. (compare their d/rules and read the manpage for dh_missing).
> > > > > There aren't failures due to missing files on my local builds or the
> > > > > official buildds.
> > > > > 
> > > > > I don't know why your build failed.  But the patch is not correct.
> > > > > usr/share/enlightenment/data is already in the install file, so it
> > > > > adds nothing new.
> > > > 
> > > > actually a lot of those files being left out would be a bug. the missing
> > > > checkme files for one are a going to break part of efl's behaviour
> > > > (relocation).
> > > 
> > > This is sort of on purpose - given Debian's requirements, it seems
> > > unlikely for those to work relocated.  I thought it'd be better for
> > > those folks to build themselves.  But maybe I'm wrong - afaik, no one
> > > has tried or asked for this feature so it's just a gut feeling.
> > 
> > if you included them someone can just tar up just the efl files from /usr
> > and drop them (all relative paths the same) in /opt/pants and efl will
> > work. or it should. it saves them having to compile again for a new prefix
> > and can just use the packaged files as-is... this actually allows some
> > packaging systems like rpm's relocatable packages "just work" with efl. :)
> > just saying that you force people into recompiling by making an effort to
> > remove files... :)
> 
> Fair enough - I think the effort to support that is probably low.  But I'm
> curious- why would someone want to do that?

because efl is large, broken into many modules loaded at runtime, some
daemons/tools and even worse.... data files like default theme, default cfg
profiles etc. necessary for elementary to work... what do you do  about
statically linking efl into an app? other toolkits do this just they are not
like efl above. it's essentially impossible to statically compile  efl into a
binary even if the libexxx.sl files can be.  modules can be also configured to
be static ... but its all pointless with things like efreetd,  ethumbd and
efl.net's out of process pacrunner tool for proxy config files. so instead efl
is relocatable. just  ship your proposed app with efl in its dir tree, keeping
prefix for efl. so maybe:

appdir/launcher <- sets LD_LIBRARY_PATH based on where appdir is
appdir/mybinary <- launched by the above once setting up env dirs
appdir/efl
appdir/efl/lib/libexxx.so*
appdir/efl/lib/elibdirs*
appdir/efl/bin/etools*
appdir/efl/share/elementary/*
appdir/efl/share/exxxx*
...

so it's a little work for launcher to figure this out. it's easy with
dlsym+dlinfo. just query the path src of a symbol in your own binary like
main(). so it solves the static linking issue. even better it allows the end
user to upgrade the efl used in the app by dropping in a new one in place of
the one there, or use the host system efl and rm -rf the shipped efl. doesn't
requite dev pkgs to ship .a files to allow static linking saving lots of
space...

it's a massively better solution to static linking.

> > > > i'd also suggest the same simplification of the efl pkgs like e - merge
> > > > them all into a single libefl
> > > 
> > > This wouldn't meet Debian's policy for packaging shared libraries - so
> > > the result couldn't be included in Debian.  That's my goal, so I'm stuck
> > > with the complication.
> > 
> > you can't merge? or you cant include binaries?
> 
> Strictly speaking, Debian policy requires both:
> 
> - Shared objects should be shipped in individual packges to minimize
> disruption due to incompatible versions.  e.g., if libfoo1 contains libfoo.so.
> 1 AND libbar.so.1, and libbar bumps soname due to an abi/api break, then
> packages that depend on libfoo1 for libbar1  will break.  Splitting them up
> allows libbar.so.1 to remain installed for old programs.  This isn't such a
> concern for EFL's components, since they are required to be the same version
> anyhow.

moot for efl. in fact you cant mix and match. new efl lib of any name will
assume same version of its deps. that's how we do it. we will not allow mix and
match and do not even have checks.

>   BUT - looking back at policy, it's not worded as a strict requirement.  I
>   checked some shared lib packages on my laptop.  A few that bundle libs
> appear to have no reason beyond convenience.  So maybe I'll poke/ask around
> more and revisit this.

it'll not only be easier for you, but it'll reflect upstream development style,
policies and assumptions. :)

> - Binaries can't ship in shared lib packages to support installing multiple
>   versions of the same library.  In Debian, shared lib packages and all files
>   in them names must include the soname.  So I can install packages that
> depend on libfoo1 and libfoo2 simultaneously.  But if libfoo1 and libfoo2
> install different /usr/bin/foo, then the packages must conflict and cannot be
> coinstalled.
> 
>   The EFL packages don't conform to this perfectly - the eina package has had
>   some other stuff added to avoid needing even more packages for a small
> number of files.  But technically, I should be cleaning that up over time.

if we do a major version jump, we'll bump all our include dir names and
versions, our dirs with binary utils and likely binary names too. i'll be an
opportunity for  lot of cleanup of many years of dev. we're aware that an efl2
needs to be parallel installable with efl 1.x so we should take care of this
for you anyway. if we make a mistake, before an efl2 goes out for release, test
and let us know so we fix it. :)

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - ras...@rasterman.com



_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to