From owner-freebsd-ports@FreeBSD.ORG Sat Mar 21 13:07:38 2015 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 982FA9C1; Sat, 21 Mar 2015 13:07:38 +0000 (UTC) Received: from mail.madpilot.net (grunt.madpilot.net [78.47.145.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3C368360; Sat, 21 Mar 2015 13:07:38 +0000 (UTC) Received: from mail (mail [192.168.254.3]) by mail.madpilot.net (Postfix) with ESMTP id 3l8MhM2q9KzZs8; Sat, 21 Mar 2015 14:07:31 +0100 (CET) Received: from mail.madpilot.net ([192.168.254.3]) by mail (mail.madpilot.net [192.168.254.3]) (amavisd-new, port 10024) with ESMTP id OPRTuoH1uvRA; Sat, 21 Mar 2015 14:07:28 +0100 (CET) Received: from tommy.madpilot.net (micro.madpilot.net [88.149.173.206]) by mail.madpilot.net (Postfix) with ESMTPSA; Sat, 21 Mar 2015 14:07:28 +0100 (CET) Message-ID: <550D6D0F.7080401@FreeBSD.org> Date: Sat, 21 Mar 2015 14:07:27 +0100 From: Guido Falsi User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Michelle Sullivan Subject: Re: net/unison240 depends on lang/ocaml-nox11 References: <550D4CA0.8000606@sorbs.net> <550D61BF.3030403@FreeBSD.org> <550D636B.5020000@sorbs.net> In-Reply-To: <550D636B.5020000@sorbs.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Jeremie Le Hen , freebsd-ports@freebsd.org X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Mar 2015 13:07:38 -0000 On 03/21/15 13:26, Michelle Sullivan wrote: > Guido Falsi wrote: >> On 03/21/15 11:49, Michelle Sullivan wrote: >> >>> Jeremie Le Hen wrote: >>> >>>> Actually, I've just realized that I fixed net/unison232 in my local tree :o). >>>> >>>> Would you mind submitting it and applying the same for unison240? >>>> >>>> Here is the patch: >>>> >>>> Index: Makefile >>>> =================================================================== >>>> --- Makefile (revision 381259) >>>> +++ Makefile (working copy) >>>> @@ -34,20 +34,18 @@ >>>> >>>> .include >>>> >>>> +BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml >>>> .if ${PORT_OPTIONS:MX11} >>>> MAKE_ARGS+= UISTYLE=gtk2 >>>> PLIST_SUB+= TEXT="" >>>> -BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml \ >>>> - lablgtk2:${PORTSDIR}/x11-toolkits/ocaml-lablgtk2 \ >>>> +BUILD_DEPENDS+= lablgtk2:${PORTSDIR}/x11-toolkits/ocaml-lablgtk2 \ >>>> icotool:${PORTSDIR}/graphics/icoutils >>>> RUN_DEPENDS+= lablgtk2:${PORTSDIR}/x11-toolkits/ocaml-lablgtk2 >>>> PATCH_DEPENDS+= ${BUILD_DEPENDS} >>>> -CONFLICTS+= ocaml-nox11* >>>> SUB_FILES+= ${PORTNAME}.desktop >>>> .else >>>> MAKE_ARGS+= UISTYLE=text >>>> PLIST_SUB+= TEXT="@comment " >>>> -BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml-nox11 >>>> PATCH_DEPENDS+= ${BUILD_DEPENDS} >>>> .endif >>>> >>>> >>>> >>> This breaks -nox11 when building with pourdriere... >>> >>> =================================================== >>> ===> Patching for unison-2.48.3_1 >>> =========================================================================== >>> =================================================== >>> ===> unison-2.48.3_1 depends on executable: ocamlc - not found >>> ===> Verifying install for ocamlc in /usr/ports/lang/ocaml >>> ===> unison-2.48.3_1 depends on package: >>> /packages/All/ocaml-4.01.0_4.tbz - not found >>> ===> USE_PACKAGE_DEPENDS_ONLY set - not building missing dependency >>> from source >>> *** [build-depends] Error code 1 >>> >>> Stop in /usr/ports/net/unison. >>> ===> Cleaning for unison-2.48.3_1 >>> build of /usr/ports/net/unison ended at Sat Mar 21 12:32:36 CET 2015 >>> >>> -BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml-nox11 >>> >>> should be there in the 'else' section of OPTIONS:MX11 (perhaps as >>> BUILD_DEPENDS= instead of BUILD_DEPENDS+=) >>> >> >> Which is almost what the port did, and caused an error about multiple >> origins, as reported by jlh. >> >> I'm willing to find a solution to this, but at this point I need a way >> to reproduce the problem and really understand where the problem is/was. >> >> I do build regularly this port on poudriere in two jails, one with X11 >> set and one with it unset and never saw this happen. >> >> I suspect it happens when there is some misalignment with the X11 option >> between ports (some with, some wothout), which is perfectly legitimate >> but makes things difficult to cope with, since the ocaml package changes >> it's suffix depending on that option. >> >> can you send me the full log for the failed build? I'd like to ask the >> same from jlh if he still has it, so I can understand what is really >> going on. >> > > I think the problem comes in when you build with poudriere because when > you're building without the build will just select the correct options > and build ocaml appropriately.. The build then continues as ocaml is > installed. I have two poudriere jails I use to create package sets for some machines of mine, one builds packages with the X11 option, the other without (using OPTIONS_UNSET+=X11 among other options, which ensures all packages will get the same option, unless overridden per package, which I'm not doing in this case). I've just started those two from scratch for a verification, the one without X11 just completed successfully building ocaml with correct pkgname (with -nox11 suffix) and successfully build unison-nox11. I'll also test these packages at runtime later just to be sure, but I'm confident they are working correctly. But looking at the old logs I see no indication of these problems. I have an explanation for both cases, I'll check them, but it requires time for poudriere runs. > > When building with poudriere the build_depends looks for the package but > the package selection process doesn't look for the -nox11 suffix as this > is set in the makefile of the port and not in the package selection process. > > (If I explained that correctly ;-) ) Not exactly. Let's see (anyone correct me if I'm wrong in the explanation): with the port as it was, like this(trimmed): .if ${PORT_OPTIONS:MX11} BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml .else BUILD_DEPENDS+= ocamlc:${PORTSDIR}/lang/ocaml-nox11 .endif poudriere will see the port with a variable origin, depending on the X11 option. If in the same poudriere run there is any other port which depends on ocaml, but with a different origin (which is quite possible, maybe some other port without an X11 option, which unconditionally depends on ${PORTSDIR}/lang/ocaml) poudriere will notice this and report conflicting origins. This is the problem jlh was seeing. I never noticed it since ocaml is the only port depending on ocaml I ever build. The only solution to this one is not having a variable origin. Changing that to a fixed DEPENDS as the port is now, poudriere will look into the ocaml port to discover it's pkg name, the x11 suffix for the pkg filename isn't derived from the depends, but from the depended port Makefile, so poudriere should in fact try to build the ocaml port with the required pkgname automatically, named depending on the X11 option. This leads me to think there is some misalignment of the X11 option in your setup, that's why I asked for the full log of the failed build, I need to check the environment. > > Your package build initially was correct. I believe pkgng is wrong - > either that or the whole build system needs to be updated so that the > package installation looks at the set options and makefiles when > deciding which package to find and install. Personally I thing ocaml > (and similar) should not have the -nox11 options in the package name and > should just install as a dependency.... but I expect that will cause > other issues even more weird and wonderful. -nox11 as a suffix is quite common and compiled in defaults are a documented use for PKGNAMESUFFIX, so I can't criticize that. Anyway poudriere uses the port build system to create dependency lists and it does look inside the port Makefiles. Again, I suspect you are building ocaml with X11 enabled and unison with X11 disabled. I'm not sure I know a correct way to make it work. It will anyway generate a conflicting package set, since ocaml and ocaml-nox11 conflict with each other. Having a variable origin for a port isn't a solution... The generated packages would anyway have conflicts between them, which is a consequence of the problem jlh reported. I'm doing some testing but if you could provide me the build log of the failed unison build it would help. -- Guido Falsi