Am Sat,  4 Mar 2017 14:56:03 +0100 (CET)
schrieb k...@aspodata.se:

>  I need booth guile-2 (for geda) and guile-1.8 (for lilypond).
> 
>  I can install either of the two
> # emerge -aqv  dev-scheme/guile:12/8  # version 1.8.8
> # emerge -aqv  dev-scheme/guile:12/22 # version 2.0.14
> 
> but not both
> 
> # emerge -aqvuDN dev-scheme/guile:12/22 dev-scheme/guile:12/8 
> [ebuild     UD] dev-scheme/guile-1.8.8-r3 [2.0.14] USE="deprecated
> emacs%* networking nls readline%* regex threads -debug
> -debug-freelist% -debug-malloc -discouraged%" 
> 
> !!! Multiple package instances within a single package slot have been
> pulled !!! into the dependency graph, resulting in a slot conflict:
> ...
> 
> So, does anyone know how to install both of them ?

Actually, they are both in the same slot, namely 12. The subslot is
there for ABI compatibility to force rebuilds of dependers upon ABI
changes.

So you cannot install them at the same time.

> Searching I find info. how to specify slotting in ebuild files, but
> not how to actually install things in slots; man emerge wasn't to much
> help either.

Usually you give the slot like this:

# emerge -1a guile:12

I'm not sure if you can also give the subslot there but probably you
could. However, that makes no difference, as the main slot
"12" conflicts.

> I could install it outside of emerge, in /usr/local. I did that for
> some version of guile 2.0, but removed it so not to interfere with the
> emerge work thing. But then, when I tried to emerge guile 2.0.14 I
> got 
> 
>  make: error while loading shared libraries: libguile-2.0.so.22:
> cannot open shared object file: No such file or directory
> 
> I thougth it was strange that building guile would fail on missing
> the libguile, and it happened whatever I did, until I realized that
> make had a dependancy on libguile. Stupid thing, I couldn't rebuild
> make with USE=-guile, since make didn't work any longer. So, I'd
> prefer not go through that again (in the end I grabbed make from a
> stage3 I had laying).

You could try to clone the ebuild of the older version into your own
overlay, and adjust the ebuild to not install conflicting files with
the main version. For this, install the newer version. Then turn on the
protect-owned feature of portage in make.conf, then copy the older
ebuild to your own overlay and use the ebuild command to test building
it. If it works, adjust the ebuild to not have a slot conflict and try
again.

Now you can try to merge the ebuild with emerge. First, add your
overlay to make.conf. Then use emerge like this:

# emerge -a dev-scheme/guile:12::your-overlay-name

You could then mask the gentoo version:

# package.mask
# <dev-scheme-2::gentoo

and unmask your own version:

# package.unmask
# <dev-scheme-2::your-overlay-name

To setup your own overlay you need to recreate the same directory
structure (that is, create your-overlay-name/dev-scheme/guile), and add
some metadata files to identify your repository correctly for portage.
If should have the following files:

profiles/repo_name
metadata/layout.conf

The Gentoo portage developer documentation will give you more hints.
You may also want to look how other public overlays use these files as
a quick start.

-- 
Regards,
Kai

Replies to list-only preferred.


Reply via email to