Yury Gribov:
> On 03.08.2017 3:06, Ximin Luo wrote:
>> Jeff Law:
>>> On 07/21/2017 10:15 AM, Ximin Luo wrote:
>>>> (Please keep me on CC, I am not subscribed)
>>>>
>>>>
>>>> Proposal
>>>> ========
>>>>
>>>> This patch series adds a new environment variable BUILD_PATH_PREFIX_MAP. 
>>>> When
>>>> this is set, GCC will treat this as extra implicit 
>>>> "-fdebug-prefix-map=$value"
>>>> command-line arguments that precede any explicit ones. This makes the final
>>>> binary output reproducible, and also hides the unreproducible value (the 
>>>> source
>>>> path prefixes) from CFLAGS et. al. which many build tools (understandably)
>>>> embed as-is into their build output.
>>> I'd *really* avoid doing this with magic environment variables.  Make it
>>> a first class option to the compiler.  Yes, it means projects that want
>>> this behavior have to arrange to pass that flag to their compiler, but
>>> IMHO that's much preferred over environment variables.
>>>
>>> Jeff
>>>
>>
>> Hi Jeff,
>>
>> If by "first class option" you meant a command-line flag, GCC *already has* 
>> that (-fdebug-prefix-map) > and it wasn't enough to achieve reproducibility 
>> in many cases we tested.
> 
> Shouldn't -fdebug-prefix-map be updated to use the same syntax as 
> BUILD_PATH_PREFIX_MAP?
> 

-fdebug-prefix-map is a CLI option and can be given multiple times, each flag 
given is in the form of $from=$to where $from can't contain a '='.

BUILD_PATH_PREFIX_MAP is a single envvar that encodes a list-of-pairs of the 
form $to=$from:$to=$from with some escaping for flexibility and to support 
things like windows paths. Since it's a new envvar, Ian Jackson suggested 
$to=$from to emphasise the reproducible ($to) part. I liked the idea so I 
implemented it like that. (We did a lot of bikeshedding over on the rb-general 
mailing list about the exact format and this is what we settled on, I'd like to 
avoid getting into that again but would nevertheless do it, if it's necessary 
to get this patch accepted.)

Because -fdebug-prefix-map currently only encodes one $from=$to pair, it would 
be a very disruptive and highly backward-incompatible change to make it use the 
same syntax as B_P_P_M. A slightly less disruptive but still 
backward-incompatible change would be to make it encode a single $to=$from 
pair, but I don't really see the advantage to doing so - what were your 
thoughts on this?

X

-- 
GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE
https://github.com/infinity0/pubkeys.git

Reply via email to