tbsdtv / linux_media

TBS linux open source drivers
https://github.com/tbsdtv/linux_media/wiki
Other
169 stars 79 forks source link

Compilation failed with linux 5.8 (ArchLinux) #211

Open LinLo opened 3 years ago

LinLo commented 3 years ago

Hello,

I don't know if this linux media is synced with Linux 5.8 yet.

Compilation failed (latest branch) with :

/home/user/tbs-linux_media-git/src/media_build/v4l/tbsecp3-dvb.c: In function 'tbsecp3_frontend_attach':
/home/user/tbs-linux_media-git/src/media_build/v4l/tbsecp3-dvb.c:1077:18: error: implicit declaration of function 'i2c_new_device'; did you mean 'first_net_device'? [-Werror=implicit-function-declaration]
 1077 |   client_demod = i2c_new_device(i2c, &info);
      |                  ^~~~~~~~~~~~~~
      |                  first_net_device

Kernel ver 5.8.0-arch1-2

Thank you for your help

piotrasd commented 3 years ago

5.7.8 failing also

crazycat69 commented 3 years ago

Please check again 13f046347f561426d6b327c0e7808fd410d0c82c

LinLo commented 3 years ago

Hello,

Compilation now successfully pass with 5.8.0, thanks a lot ! Archlinux have just released Linux kernel 5.8.1 and unfortunately there is another failure:

make -C /lib/modules/5.8.1-arch1-1/build M=/home/user/tbs-linux_media-git/src/media_build/v4l  modules
make[1]: Entering directory '/usr/lib/modules/5.8.1-arch1-1/build'
  CC [M]  /home/user/tbs-linux_media-git/src/media_build/v4l/msp3400-driver.o
In file included from <command-line>:
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:1594:19: error: redefinition of 'prandom_u32_max'
 1594 | static inline u32 prandom_u32_max(u32 ep_ro)
      |                   ^~~~~~~~~~~~~~~
In file included from ./include/linux/random.h:118,
                 from /home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:1589,
                 from <command-line>:
./include/linux/prandom.h:44:19: note: previous definition of 'prandom_u32_max' was here
   44 | static inline u32 prandom_u32_max(u32 ep_ro)
      |                   ^~~~~~~~~~~~~~~
In file included from <command-line>:
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h: In function 'prandom_u32_max':
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:1591:21: error: implicit declaration of function 'random32'; did you mean 'prandom_u32'? [-Werror=implicit-function-declaration]
 1591 | #define prandom_u32 random32
      |                     ^~~~~~~~
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:1596:22: note: in expansion of macro 'prandom_u32'
 1596 |  return (u32)(((u64) prandom_u32() * ep_ro) >> 32);
      |                      ^~~~~~~~~~~
In file included from <command-line>:
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h: At top level:
/home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:2438:19: error: redefinition of 'next_pseudo_random32'
 2438 | static inline u32 next_pseudo_random32(u32 seed)
      |                   ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/random.h:118,
                 from /home/user/tbs-linux_media-git/src/media_build/v4l/compat.h:1589,
                 from <command-line>:
./include/linux/prandom.h:73:19: note: previous definition of 'next_pseudo_random32' was here
   73 | static inline u32 next_pseudo_random32(u32 seed)
      |                   ^~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:281: /home/user/tbs-linux_media-git/src/media_build/v4l/msp3400-driver.o] Error 1
make[1]: *** [Makefile:1756: /home/user/tbs-linux_media-git/src/media_build/v4l] Error 2
make[1]: Leaving directory '/usr/lib/modules/5.8.1-arch1-1/build'
make: *** [Makefile:53: default] Error 2

Kernel version: 5.8.1-arch1-1

Thanks so much for maintaining this project.

caveman99 commented 3 years ago

for a temporary fix create a file 'config-mycompat.h' in media_build/v4l that contains:

#undef NEED_PRANDOM_U32_MAX
#undef NEED_PRANDOM_U32
#undef NEED_NEXT_PSEUDO_RANDOM32
caveman99 commented 3 years ago

and a heads up - Kernel 5.8 needs at least gcc 9.x, older distros may be out of luck.

LinLo commented 3 years ago

Ok I will try the temporary fix you provided for 5.8.1. Archlinux gcc version: $ gcc --version gcc (GCC) 10.1.0

LinLo commented 3 years ago

for a temporary fix create a file 'config-mycompat.h' in media_build/v4l that contains:

#undef NEED_PRANDOM_U32_MAX
#undef NEED_PRANDOM_U32
#undef NEED_NEXT_PSEUDO_RANDOM32

Compilation succeed for 5.8.1 with this temporary fix. Thanks a lot.

caveman99 commented 3 years ago

This needs to be addressed thoroughly in the compat layer of the build system itself. the file you just created will be removed with distclean (!). The mycompat file is meant for working around backporting issued by distros, e.g. changes from newer kernels ported to older kernels and collisions occurring from that. In this case 5.8.1 defines some functions that are also in the compat layer and the kernel is too new for the video subsystem used here.

Am Do., 13. Aug. 2020 um 11:52 Uhr schrieb LinLo notifications@github.com:

for a temporary fix create a file 'config-mycompat.h' in media_build/v4l that contains:

undef NEED_PRANDOM_U32_MAX

undef NEED_PRANDOM_U32

undef NEED_NEXT_PSEUDO_RANDOM32

Compilation succeed for 5.8.1 with this temporary fix. Thanks a lot.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/tbsdtv/linux_media/issues/211#issuecomment-673381536, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAGDKROEQOQRSRSAASFL63SAOZVLANCNFSM4PZ4J6YQ .

kumy commented 3 years ago

Same here on Ubuntu 16.04.6 LTS

$ uname -a
Linux nas 4.15.0-118-generic #119~16.04.1-Ubuntu SMP Tue Sep 8 14:54:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

The provided workaround seems to let it compile now. PS: my build tree is still on commit 94caad9