tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Failure message when inconsistent X11_TYPE



Greg Troxel wrote:
> Frederic Fauberteau <triaxx%NetBSD.org@localhost> writes:
>> Greg Troxel wrote:
>>> Joerg Sonnenberger <joerg%bec.de@localhost> writes:
>>>> On Tue, Jul 13, 2021 at 06:21:22PM -0400, Greg Troxel wrote:
>>>>> Frederic Fauberteau <triaxx%NetBSD.org@localhost> writes:
>>>>>
>>>>>>   .if empty(MACHINE_PLATFORM:MNetBSD-[0-5].*)
>>>>>>   X11_TYPE?=             native
>>>>>>  +.  if !empty(X11_TYPE:Mnative) && !exists(/etc/mtree/set.xbase)
>>>>>>  +PKG_FAIL_REASON+=      "Native X11 distribution cannot be used if xbase set has not been installed. You should set X11_TYPE=modular or install xbase set."
>>>>>>  +.  endif
>>>>>>   .endif
>>>>>
>>>>> I'm not really a fan, but I can't really argue against this.
>>>>
>>>> I'm not really in favor of this either. Especially since the feature
>>>> test is looking for something completely unrelated to what anything
>>>> cares about.
>>>
>>> Good point; I realized that and didn't say it becuase checking for 100
>>> .h and 10 .so is not something we want to do in platform.mk
>>>
>>>
>>> Maybe, x11-links should at build time actually check for all the stuff
>>> it wants to symlink to (if it doesn't) and fail, and I think everything X
>>> depends on x11-links anyway.
>>
>> I totally agree that testing of tens or hundreds of files is not
>> reasonable. The problem I was trying to address was the tools that
>> depend on xbase set in their native version. In any case, to link a
>> tool from work/.tools/bin to ${X11BASE}/bin will result in a
>> configure/build/installation error if ${X11BASE} doesn't exist. I
>> would like to be directly notified that it is a misconfiguration
>> instead of greping for minutes... The test I would like to put in
>> mk/tools/replace.mk would be:
> 
> So this is only about tools that try to use things in base, and is not
> about building packaging that use X?
> 
> Can you list the tools that do this?
Sure. There are iceauth, mkfontdir, mkfontscale, bdftopcf, ucs2any, bdftruncate, xauth, xinit, xmessage and makedepend.
>> --- pkgsrc/mk/tools/replace.mk  6 Oct 2020 17:36:50 -0000       1.291
>> +++ pkgsrc/mk/tools/replace.mk  15 Jul 2021 09:44:15 -0000
>> @@ -1355,6 +1355,16 @@
>>  .  endif
>>  .endfor
>>  
>> +###
>> +### For each tool that depends on X11 for its native version, make
>> +### sure it is really installed (i.e. xbase has been installed).
>> +###
>> +.for _t_ in ${_USE_TOOLS}
>> +.  if !empty(TOOLS_PATH.${_t_}:M${X11BASE}*) && !exists(${TOOLS_PATH.${_t_}})
>> +PKG_FAIL_REASON+=      "X11_TYPE=native but xbase set is not installed.  Either set X11_TYPE to modular or install xbase."
>> +.  endif
>> +.endfor
>> +
>>  ######################################################################
>>  
>>  # Create a TOOLS_ENV variable that holds a shell environment that
>>
>> If you disagree with this approach, I could close the PR with message "Issue not relevant for pkgsrc".
> 
> I am not sure what I really think yet, but:
> 
>   It's somewhat or more, perhaps entirely, reasonable for pkgsrc to
>   assume that an xbase set file implies that the sets are present.
> 
>   If one sets X11_TYPE to modular, do the tools that you listed depend
>   on the pkgsrc versions in a clean manner?  (Surely this must be true.)
I think this is one of the aims of mk/tools/replace.mk. For instance, we can find code like:

.  if defined(X11_TYPE) && !empty(X11_TYPE:Mmodular)
TOOLS_DEPENDS.makedepend?=  makedepend-[0-9]*:../../devel/makedepend
TOOLS_PATH.makedepend=  ${LOCALBASE}/bin/makedepend
.  else # !empty(X11_TYPE:Mnative)
TOOLS_PATH.makedepend=  ${X11BASE}/bin/makedepend
.  endif

>   Files that are evaluated for every package should strive to be lean
> 
> 
> So if the only problem is that some tools are taken from native X if
> X11_TYPE=native (and work fine with modular), then a single if for the
> set config file in tools seems preferable to looping over all tools and
> checking, as a tradeoff of avoiding runtime at the expense of assuming
> consistency.
> 
> Which I think brings me back to your original suggestion, which is to
> just check for the set file in platform.mk
> 
> I would really like to hear what other people think; this is not an easy
> issue to deal with.


Home | Main Index | Thread Index | Old Index