[yocto] can not build yocto on NFS mounted NAS
lothar at denx.de
lothar at denx.de
Wed Aug 21 01:17:06 PDT 2013
Am 2013-08-21 07:58, schrieb Robert Berger:
> Hi,
>
> On 08/20/2013 07:45 PM, lothar at denx.de wrote:
>>
>> Hi,
>> I have just two points here to ask:
>>
>> 1) Wouldn't simply using SSTATE_MIRRORS be a better solution here,
>> instead?
>
> It's not the same.
>
> SSTATE and DL_DIR are on an nfs export anyhow and this works.
>
> The problem here is with TMP dir (and an nfs server with a funny
> underlying filesystem like UFS) and hard links.
>
>>
>> 2) Patch: wouldn't it be nicer to try the cp -al, and catch the
>> CalledProcessError Exception, if it is thrown, and then run the brute
>> force cp -a? Perhaps even as a general approach?
>
> In theory yes, in practice you will find out that if you build
> something
> like core-image-sato-sdk "cp -al" is not the only place which creates
> hard links.
>
> Regards,
>
> Robert
> ..."There's an infinite number of ways to make a simple problem seem
> difficult; only a handful to make a difficult problem seem simple" -
> Jack Crenshaw's Law #1
>
> My public pgp key is available,at:
> http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x90320BF1
>
>
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
Hi Robert,
Thank you for the answer. About my second point, I think you
missunderstood, or I do not get your answer correctly, respectively.
In brief, I mean:
TRY.... CATCH... EXCEPTION
In detail:
The issue you discovered here, IMHO is definitely a real problem, when
it comes to do hardlinks across filesystems.
Grepping for 'cp -al', though, to me only reviels this single place
where hardlinks are done (do you know more?), which I showed you in the
chat we had apart and for which you posted the fix here in the ML. To my
understanding, it is only used by the sstate .bbclass, to refer to the
build products after recipe execution. Means, say, using for instance a
central SSTATE_DIR folder, you may remove the 'tmp' folder in a
particular build folder (referring to the SSTATE_DIR), and still be able
to build in your other build folders (having set SSTATE_DIR) relatively
fast, since the build products were referenced in SSTATE_DIR by
hardlinks. This is done by this 'cp -al', which is applied to every
single recipe's build, means it is pretty central!
Thus, simply exchanging 'cp -al' by 'cp -a' would affect all recipes'
execution. But running 'cp -al' and extending it by a fallback to 'cp
-a' using the already thrown EXCEPTION, does not change the original
behavior, but extends it. Perhaps this remark seems a bit hairsplitting.
Ok, but, not handling any exception here, IMHO seems to be wrong, too,
since it will already be thrown. And if so, it should be fixed, or not?
This was my point about. Keeping in mind that if both approaches fail,
there could be at least e.g. printstacktrace() like output..
AFAIR, the git fetcher uses a similar fallback approach for handling
unaccessable repositories.
Just some remarks, maybe I'm wrong.. but, also currently messing a bit
with sstate.
BR,
Lothar Rubusch
More information about the yocto
mailing list