Hello All,
I has been using http://linuxtv.org/hg/~endriss/media_build_experimental for quite some time now. Until recently I never encountered a problem. Now I can't build any more:
make -C /home/matthias/tmp/media_build_experimental/v4l make[1]: Entering directory '/home/matthias/tmp/media_build_experimental/v4l' scripts/make_makefile.pl ./scripts/make_myconfig.pl perl scripts/make_config_compat.pl /lib/modules/3.16.0-4-amd64/source ./.myconfig ./config-compat.h creating symbolic links... xargs: ln: Too many levels of symbolic links
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Makefile:264: recipe for target 'links' failed make[1]: *** [links] Error 126 make[1]: Leaving directory '/home/matthias/tmp/media_build_experimental/v4l' Makefile:28: recipe for target 'all' failed make: *** [all] Error 2 build failed at ./build line 491.
I am using Debian stable with Kernel 3.16.0-4-amd64. Some hundreds maybe thousands of symlinks are being created where the build fails.
Any solution or hint would be highly appreciated.
Best regards
Matthias
Am 18.10.2015 um 23:36 schrieb Matthias Lötzke:
Hello All,
I has been using http://linuxtv.org/hg/~endriss/media_build_experimental for quite some time now. Until recently I never encountered a problem. Now I can't build any more:
make -C /home/matthias/tmp/media_build_experimental/v4l make[1]: Entering directory '/home/matthias/tmp/media_build_experimental/v4l' scripts/make_makefile.pl ./scripts/make_myconfig.pl perl scripts/make_config_compat.pl /lib/modules/3.16.0-4-amd64/source ./.myconfig ./config-compat.h creating symbolic links... xargs: ln: Too many levels of symbolic links
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Makefile:264: recipe for target 'links' failed make[1]: *** [links] Error 126 make[1]: Leaving directory '/home/matthias/tmp/media_build_experimental/v4l' Makefile:28: recipe for target 'all' failed make: *** [all] Error 2 build failed at ./build line 491.
I am using Debian stable with Kernel 3.16.0-4-amd64. Some hundreds maybe thousands of symlinks are being created where the build fails.
Any solution or hint would be highly appreciated.
To track this down go to the v4l directory and execute:
make -n links
which will show: echo creating symbolic links... find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/drivers/staging -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/drivers/misc -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=.
execute the find commands to see which one fails for further information use: ln -sfv instead of ln -sf
Regards Helmut
Hello Helmut,
Helmut Auer wrote:
To track this down go to the v4l directory and execute:
make -n links
which will show: echo creating symbolic links... find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/drivers/staging -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. find ../linux/drivers/misc -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=.
execute the find commands to see which one fails for further information use: ln -sfv
All of them fail. Unfortunately adding -v does not provide any additional information.
find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sfv --target-directory=. xargs: ln: Zu viele Ebenen aus symbolischen Links
But I found a curious solution. It works when I echo the xargs output and pipe it into sh. So this patch resolves my problem:
--- media_build_experimental/v4l/Makefile 2015-10-19 21:59:34.000000000 +0200 +++ media_build_experimental-ml/v4l/Makefile 2015-10-19 22:11:20.000000000 +0200 @@ -262,10 +262,10 @@
links:: @echo creating symbolic links... - @find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. - @find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. - @find ../linux/drivers/staging -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. - @find ../linux/drivers/misc -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. + @find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 echo ln -sf --target-directory=. | sh + @find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n 255 echo ln -sf --target-directory=. | sh + @find ../linux/drivers/staging -name '*.[ch]' -type f -print0 | xargs -0n 255 echo ln -sf --target-directory=. | sh + @find ../linux/drivers/misc -name '*.[ch]' -type f -print0 | xargs -0n 255 echo ln -sf --target-directory=. | sh
config-compat.h:: $(obj)/.version .myconfig scripts/make_config_compat.pl perl scripts/make_config_compat.pl $(SRCDIR) $(obj)/.myconfig $(obj)/config-compat.h
This is strange. Anyhow my VDR is up and running again. Thanks for providing me a starting point to look at.
Best regards
Matthias
Hello Matthias
find ../linux/drivers/media -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sfv --target-directory=. xargs: ln: Zu viele Ebenen aus symbolischen Links
But I found a curious solution. It works when I echo the xargs output and pipe it into sh. So this patch resolves my problem:
--- media_build_experimental/v4l/Makefile 2015-10-19 21:59:34.000000000 +0200 +++ media_build_experimental-ml/v4l/Makefile 2015-10-19 22:11:20.000000000 +0200 @@ -262,10 +262,10 @@
links:: @echo creating symbolic links...
@find ../linux/drivers/media -name '*.[ch]' -type f -print0 |
xargs -0n 255 ln -sf --target-directory=.
@find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n
255 ln -sf --target-directory=.
@find ../linux/drivers/staging -name '*.[ch]' -type f -print0 |
xargs -0n 255 ln -sf --target-directory=.
@find ../linux/drivers/misc -name '*.[ch]' -type f -print0 |
xargs -0n 255 ln -sf --target-directory=.
@find ../linux/drivers/media -name '*.[ch]' -type f -print0 |
xargs -0n 255 echo ln -sf --target-directory=. | sh
@find ../linux/sound -name '*.[ch]' -type f -print0 | xargs -0n
255 echo ln -sf --target-directory=. | sh
@find ../linux/drivers/staging -name '*.[ch]' -type f -print0 |
xargs -0n 255 echo ln -sf --target-directory=. | sh
@find ../linux/drivers/misc -name '*.[ch]' -type f -print0 |
xargs -0n 255 echo ln -sf --target-directory=. | sh
config-compat.h:: $(obj)/.version .myconfig scripts/make_config_compat.pl perl scripts/make_config_compat.pl $(SRCDIR) $(obj)/.myconfig $(obj)/config-compat.h
This is strange. Anyhow my VDR is up and running again. Thanks for providing me a starting point to look at.
Good to here that its working now ! What shell are you using ? $0 --version is it the same as sh --version ?
Regards Helmut