[OE-core] [RFC 3/3] linux-firmware: MACHINEOVERRIDES for BCM43430 NVRAM

Khem Raj raj.khem at gmail.com
Thu Aug 23 15:58:56 UTC 2018


On Wed, Aug 22, 2018 at 11:40 PM Martin Hundebøll <martin at geanix.com> wrote:
>
> May I suggest using the '-r, --relative' flag from 'ln':
>
>         -r, --relative
>                create symbolic links relative to link location
>
> My life felt considerably better after discovering that feature :)
>

ln -r is not available everywhere, but we do have lnr implemented as
part of metadata see scripts/lnr so
feel free to use that

> // Martin
>
> On 23/08/2018 08.12, Ryan Harkin wrote:
> >
> >
> > On 22 August 2018 at 23:55, Andre McCurdy <armccurdy at gmail.com
> > <mailto:armccurdy at gmail.com>> wrote:
> >
> >     On Wed, Aug 22, 2018 at 2:56 PM, Ryan Harkin <ryan.harkin at linaro.org
> >     <mailto:ryan.harkin at linaro.org>> wrote:
> >      > On Wed, 22 Aug 2018, 21:42 Andre McCurdy, <armccurdy at gmail.com
> >     <mailto:armccurdy at gmail.com>> wrote:
> >      >> On Wed, Aug 22, 2018 at 1:10 PM, Ryan Harkin
> >     <ryan.harkin at linaro.org <mailto:ryan.harkin at linaro.org>>
> >      >> wrote:
> >      >> > On Wed, 22 Aug 2018, 20:02 Martin Jansa,
> >     <martin.jansa at gmail.com <mailto:martin.jansa at gmail.com>> wrote:
> >      >> >>
> >      >> >> Your 1st parameter is wrong, compare again with the example I
> >     gave you
> >      >> >> (don't include "brcm/" path in 1st param, because you want
> >     the symlink
> >      >> >> to
> >      >> >> point to just brcmfmac43430-sdio.AP6212.txt like you did in
> >     the version
> >      >> >> after cd).
> >      >> >
> >      >> > That doesn't work either. I tried it with the same result, but
> >     didn't
> >      >> > send a
> >      >> > log of it. That works for you?
> >      >>
> >      >> Martin's example is correct so maybe check your tests again for
> >     typos.
> >      >> It it still doesn't work then please do send a log.
> >      >>
> >      >> The link will point to whatever you define via the first
> >     parameter, so
> >      >> if you changed the first parameter it shouldn't be possible to get
> >      >> "the same result".
> >      >>
> >      >>   $ mkdir foo
> >      >>   $ ln -sf test_target foo/test1
> >      >>   $ ln -sf brcm/test_target foo/test2
> >      >>   $ ls -l foo
> >      >>
> >      >>   lrwxrwxrwx 1 andre andre 11 Aug 22 13:35 test1 -> test_target
> >      >>   lrwxrwxrwx 1 andre andre 16 Aug 22 13:35 test2 -> brcm/test_target
> >      >
> >      > Yes, that's essentially the same as what I'm getting.
> >      >
> >      > Now try "cat foo/test1" and what happens?
> >      >
> >      > There is no file called test_target in the foo directory. And
> >     neither is
> >      > there a file called brcm/test_target in the foo directory.
> >
> >     Correct. The above was just an example to show that you can * create
> >     symlinks * in the foo directory without cd'ing into the foo directory
> >     first.
> >
> >     If you'd like the symlinks in the example to point to valid targets
> >     then you need to create the targets too, e.g.
> >
> >        $ mkdir -p foo/brcm
> >        $ echo hello > foo/test_target
> >        $ echo hello2 > foo/brcm/test_target
> >
> >     But note that the process of creating a symlink is always the same,
> >     regardless of whether the symlink points to a valid target or not (so
> >     you can run these extra commands to create the targets before or after
> >     you create the symlinks).
> >
> >
> > So that doesn't work for me how I expect it to work. I must be missing
> > something fundamental here.
> >
> > The recipe is trying to create a soft link from a file in the current
> > directory to a file in the sub-directory. On my system, your example
> > creates links from a file in the sub-directory to the another file in
> > the sub-directory.
> >
> > So, to copy your example, but creating the file "test_target" from the
> > start:
> >
> > $ mkdir -p /tmp/test
> > $ cd /tmp/test
> > $ mkdir foo
> > $ echo 1 > test_target
> > $ ln -sf test_target foo/test1
> > $ ln -sf brcm/test_target foo/test2
> > $ ls -l foo
> > total 0
> > lrwxrwxrwx 1 ryan ryan 11 Aug 23 06:54 test1 -> test_target
> > lrwxrwxrwx 1 ryan ryan 16 Aug 23 06:54 test2 -> brcm/test_target
> > $ cat test_target
> > 1
> > $ cat foo/test1
> > cat: foo/test1: No such file or directory
> > $ cat foo/test2
> > cat: foo/test2: No such file or directory
> > $ echo hello > foo/test_target
> > $ echo hello2 > foo/brcm/test_target
> > bash: foo/brcm/test_target: No such file or directory
> > $ cat foo/test1
> > hello
> > $ cat foo/test2
> > cat: foo/test2: No such file or directory
> > $ cat test_target
> > 1
> > $ tree
> > .
> > ├── foo
> > │   ├── test1 -> test_target
> > │   ├── test2 -> brcm/test_target
> > │   └── test_target
> > └── test_target
> >
> > 1 directory, 4 files
> >
> > So, neither test1 nor test2 are linked to /tmp/test/test_target. test1
> > is linked to /tmp/test/foo/test_target and test2 is linked to
> > /tmp/test/brcm/test_target, which doesn't exist.
> >
> > AFAIK, when creating a softlink, you have to give it either an absolute
> > path, or a path relative to the link being created. The path cannot be
> > relative to the original file that you want to link to.
> >
> > So, this will work:
> >
> > $cd /tmp/test
> > $ ln -sf ../test_target foo/test3
> > $ cat foo/test3
> > 1
> > $ cat /tmp/test/foo/test3
> > 1
> >
> > But that is a strange way to create the soft link, IMO.
> >
> > AFAICT, for the recipe, to get rid of the "cd", I'd have to specify an
> > absolute path to the original file:
> >
> > +do_install_append_bcm43430-nvram-mur1dx() {
> > +       ( ln -sf ${PWD}/brcmfmac43430-sdio.MUR1DX.txt
> > ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.txt)
> >
> > ... assuming PWD is available to the recipe. There will be a proper
> > Yocto variable I can use, of course, but I can't think of it right now.
> >
> > Either way, Martin's example doesn't work for me. And adding the
> > absolute path of the original file doesn't seem any neater or clearer
> > than following the TI example from the do_install a few lines up in the
> > recipe. But I'm happy to do it either way, so long as it works.
> >
>
> --
> Kind regards,
> Martin Hundebøll
> Embedded Linux Consultant
>
> +45 61 65 54 61
> martin at geanix.com
>
> Geanix IVS
> https://geanix.com
> DK39600706
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list