In file included from v86.h:22:0, from v86_x86emu.c:4: /usr/src/linux/include/video/uvesafb.h:134:2: error: unknown type name ‘atomic_t’ atomic_t ref_count; ^ /usr/src/linux/include/video/uvesafb.h:111:12: warning: ‘uvesafb_exec’ declared ‘static’ but never defined [-Wunused-function] ----------------------------------------------------------------- This is an unstable amd64 chroot image (named 13.0-unstable_20170109-235418) at a hardened host acting as a tinderbox. ----------------------------------------------------------------- gcc-config -l: [1] x86_64-pc-linux-gnu-5.4.0 * llvm-config --version: 3.9.1 Available Python interpreters, in order of preference: [1] python3.4 [2] python3.5 (fallback) [3] python2.7 (fallback) Available Ruby profiles: [1] ruby21 (with Rubygems) * java-config: -----------------------------------------------------------------
Created attachment 460510 [details] emerge-info.txt
Created attachment 460512 [details] emerge-history.txt
Created attachment 460514 [details] environment
Created attachment 460516 [details] etc.portage.tbz2
Created attachment 460518 [details] sys-apps:v86d-0.1.10:20170118-031719.log
Workaround # emerge -C klibc # echo "=dev-libs/klibc-2.0.4" >> /etc/portage/package.accept_keywords # echo "=dev-libs/klibc-2.0.4-r2" >> /etc/portage/package.mask # emerge -1 =dev-libs/klibc-2.0.4 v86d
The workaround does'nt work with GCC 5 (see bug #556142)
v86d is dead for ages, maybe we should treeclean if nobody tries to revive it :/
Created attachment 462460 [details, diff] v86d-0.1.10-atomict.patch I was able to build v86d after I added a typedef for atomic_t, based on what I found on https://www.mjmwired.net/kernel/Documentation/atomic_ops.txt . However, when trying to get back the page reference, I stumbled on LXR pages stating it is defined in linux/types.h . I also needed to filter-flag -static-libgcc in the ebuild
(In reply to René Rhéaume from comment #9) > However, when trying to get back the page reference, I stumbled on LXR pages > stating it is defined in linux/types.h . This was defined for old versions of Linux headers. atomic_t is not found in current headers.
(In reply to René Rhéaume from comment #10) > This was defined for old versions of Linux headers. atomic_t is not found in > current headers. Thanks! Your patch helped, and uvesafb is working now.
Hi! The patch is working against kernel 4.10 (and nvidia geforce 210)
(In reply to Pacho Ramos from comment #8) > v86d is dead for ages, maybe we should treeclean if nobody tries to revive > it :/ What other option would there be to get a large resolution framebuffer console using nvidia's binary drivers?
v86 is not dead! I am still forced to use it with my Nvidia card. Can this patch be put into mainstream so I don't have to manually mess with it?
(In reply to René Rhéaume from comment #10) > (In reply to René Rhéaume from comment #9) > > However, when trying to get back the page reference, I stumbled on LXR pages > > stating it is defined in linux/types.h . > This was defined for old versions of Linux headers. atomic_t is not found in > current headers. If this still make sence... atomic_t is defined in private version: /usr/src/linux/include/linux/types.h These two files seem to be same: /usr/src/linux/include/uapi/linux/types.h /usr/include/linux/types.h
Created attachment 474744 [details, diff] Ebuild with fixed atomic_t problem
Created attachment 474746 [details] undefined references after atomic_t problem fix
Problem about atomic_t is fixed by couple if cflags, affecting include order. But it still fails due to numerous undefined references.
Created attachment 485364 [details, diff] patch to fix duplicate definition of struct vbe_mode_ib I managed to fix build errors and using the same ebuild that is in portage by adding also the testvbe.patch. In file included from testvbe.c:10:0: testvbe.h:14:8: error: redefinition of ‘struct vbe_mode_ib’ struct vbe_mode_ib { ^ In file included from v86.h:24:0, from testvbe.c:9: /usr/src/linux/include/video/uvesafb.h:31:8: note: originally defined here struct vbe_mode_ib { ^ testvbe.c: In function ‘main’
I managed to build by only using v86d-0.1.10-atomict.patch, and using EGIT_REPO_URI="git://github.com/mjanusz/v86d.git" as source. Ebuild at https://github.com/tsjk/gentoo-ebuilds/tree/master/sys-apps/v86d. Just make sure your klibc installation is fine. Mine had its links to the kernel source tree (in /usr/lib64/klibc/include) replaced with empty dirs. I know this is being taken out of the tree, but I still have an old laptop which has an uvesafb configuration, so I'm keeping this for a while.
commit 30c31bfe86f048a443baa523e9f487c38d950f24 Author: Michał Górny <mgorny@gentoo.org> AuthorDate: Mon Aug 14 09:56:21 2017 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: Mon Aug 14 10:02:53 2017 sys-apps/v86d: Remove last-rited pkg, #606154 profiles/arch/amd64/package.use.force | 4 --- profiles/package.mask | 5 ---- sys-apps/v86d/Manifest | 1 - sys-apps/v86d/metadata.xml | 8 ----- sys-apps/v86d/v86d-0.1.10.ebuild | 56 ----------------------------------- 5 files changed, 74 deletions(-)