[OmniOS-discuss] Hello bloody folks! Check out preliminary gcc5.1 support

Eric Sproul eric.sproul at circonus.com
Wed Jun 10 14:00:08 UTC 2015


On Wed, Jun 10, 2015 at 8:46 AM, Dan McDonald <danmcd at omniti.com> wrote:
>
>> On Jun 8, 2015, at 10:46 AM, Eric Sproul <eric.sproul at circonus.com> wrote:
>>
>> On Fri, Jun 5, 2015 at 3:46 PM, Dan McDonald <danmcd at omniti.com> wrote:
>>> Any code-minded people in the community should have a look at the above webrev, and tell me what you think. Unlike the last compiler change done for r151008, this is a jump from 4 to 5, so "g{cc,++}-N-runtime" has a new value of N, namely 5.  The prior versions of gcc runtime are in place (.so.6.0.XX), but the package name has been changed.  I've use the "renamed" attribute for gcc/++-4-runtime to aid in this regard.
>>
>> Dan,
>> Great work so far.  Mostly looks good to me, though I'm curious if
>> pkglint is/will be complaining about redundant require dependencies.
>
> Remember -- we don't run pkglint by default.  (Some existing package naming schemes make that difficult/impossible.)

Ah, I just looked at the make_package() function.  Out of (perhaps
morbid) curiosity, what are the obstacles?

> The whole DEPENDS_IPS/BUILD_DEPENDS_IPS/PKG_DEPENDS_IPS is screwy to me.  A bit of history, and a suggested what's-right course of action may be in order.

OK, so to go _really_ far back into the Dark Ages, our build system
was originally created to make SVR4 packages for Solaris 10 in
OmniTI's hosting environments.  No fancy auto-dependency tools there,
so the build had to declare all runtime dependencies manually.  That
persisted through the transition to SXCE, which was still SVR4.
Fast-forward to IPS and OmniOS, which grew organically from the SVR4
builds, and the habit of specifying all deps manually was already
deeply ingrained.

In The Beginning, it was just "BUILD_DEPENDS" and "DEPENDS".  The
former obviously being build-time, the latter run-time.  But for a
while, as we started developing OmniOS, we had a hybrid build system
(what would eventually become ms.omniti.com)  that could build either
SVR4 or IPS packages, depending on the desired target.  That's where
the "_IPS" variants came in, to distinguish from the (now defunct)
"_SVR4" ones.  We didn't really know about or grok pkgdepend in the
beginning.

So now, in the all-IPS world, with pkgdepend, we generally don't need
to specify run-time dependencies.  pkgdepend can handle ELF, Java, and
some scripts (Python, Perl, shell), and maybe a few other minor
things.  It can't do Perl modules, that's one glaring issue that comes
to mind, so there are still cases where you need to specify *some*
runtime deps. BUT, since we don't run pkglint, we haven't been good
about cleaning up the unnecessary DEPENDS_IPS items, and our packages
will end up with either duplicate deps or unnecessary ones, e.g.

$ pkg contents -t depend -o type,fmri bash
TYPE    FMRI
require pkg:/SUNWcs at 0.5.11-0.151014
require pkg:/system/library at 0.5.11-0.151014
require system/library/gcc-4-runtime

The first two came from pkgdepend, but bash doesn't actually need
gcc-4-runtime (verified with ldd).  It may have at one time, or
someone was just over-zealous in applying an assumed dependency
without validation.

This is mostly harmless, but as in your case here, it's creating
unnecessary work for you to change to gcc5.

>
>> Also, NSPR: there's version changes for the package along with the
>> compiler change.  Was that intentional?  I don't much care either way,
>> just curious if something slipped in by mistake.
>
> Threw in the update to see if it was gcc51 ready, it wasn't, but I kept the updates in anyway.

Understood.

Eric


More information about the OmniOS-discuss mailing list