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

Ryan Harkin ryan.harkin at linaro.org
Thu Aug 23 06:12:30 UTC 2018


On 22 August 2018 at 23:55, Andre McCurdy <armccurdy at gmail.com> wrote:

> On Wed, Aug 22, 2018 at 2:56 PM, Ryan Harkin <ryan.harkin at linaro.org>
> wrote:
> > On Wed, 22 Aug 2018, 21:42 Andre McCurdy, <armccurdy at gmail.com> wrote:
> >> On Wed, Aug 22, 2018 at 1:10 PM, Ryan Harkin <ryan.harkin at linaro.org>
> >> wrote:
> >> > On Wed, 22 Aug 2018, 20:02 Martin Jansa, <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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20180823/506f40ea/attachment-0002.html>


More information about the Openembedded-core mailing list