tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

GSoC 2019 - Porting wine to amd64


I strongly feel like commiting to the project of porting Wine to amd64
on NetBSD. My reasons for this liking include my experience with
BSD/UNIX, C and shell in general. I have always wanted to do systems
engineering which deals with the kernel and other subsystems. I have 4
years of experience in system administration and programming in C. I
decided to take up this gig primarily because it deals with emulation
and as a KERNEL option is involved I might as well use this
opportunity to learn more about kernel modules.

I have written a draft-proposal for the project after consulting with
some of the netbsd developers like @medfly, @martin and @leot.

Kindly find the draft attached along with this mail. I would be glad
to receive feedback on the same.

Naveen Narayanan
Freenode: @zerous

Porting WINE to amd64 architecture on NetBSD

Name: 		Naveen Narayanan
@freenode:     	zerous
Date:		March 26, 2019
Address:	Mühlenstrasse, 258
		Kamp-Lintfort, 47475
		NRW, Germany
Mob:		+49 17640784041

Inclusion of USER_LDT option in NetBSD kernel allows Wine32
applications to be run on amd64 architecture. This is useful primarily
owing to the majority of Windows applications being 32-bit. My work
involves getting the latest version of Wine to compile and run on i386
and amd64, and building Wine with WoW64 support which will allow
running Wine32 applications on amd64. The latter will involve a
considerable amount of testing and rewrite pertaining to NetBSD
userland. And ultimately, packaging Wine32 and Wine64 for pkgsrc.

The Project:
NetBSD pkgsrc has a package for Wine-1.9.18. However, it is very old
and does not build successfully on i386 or amd64. I got it to compile
on i386 but found that the changes I made had already made its way
to the latest source. Hence, I intend to solve four issues in general.

The first issue is getting Wine-4.4 to build on both i386 and amd64
ports. This shouldn't take a lot of time as it should only involve
changes in the build system. I experimented with the build on i386 and
found that a few other packages on pkgsrc like mit-krb5-1.16 are
required and had to be patched for Wine-4.4 to compile successfully.

The second issue is getting to run Wine-4.4 32-bit on amd64 port in a
chrooted environment (or NetBSD32 userland).  As far as I understand,
USER_LDT kernel option will require extensive testing which wasn't
done earlier owing to unavailability of Wine. I intend to use chroot
to have a hygienic lib and include for the 32-bit environment.

The third issue deals with building Wine64 with WoW64 support thereby
allowing it to run Wine32 applications as opposed to having a separate
chrooted 32-bit Wine on the same machine. Extensive testing will be
required in this phase too. I think reaching this stage itself can be
considered as success.

The fourth issue deals with packaging Wine32 and Wine64 (with WoW64
support) for pkgsrc.

Success Criteria
1. Wine-4.4 compiles and runs successfully on amd64 and i386.
2. Wine32 is able to run 32-bit applications successfully inside
chroot on amd64.
3. Wine64 is able to run 32-bit applications successfully with WoW64
component enabled.
4. Wine-4.4 32-bit and 64-bit packages for pkgsrc.

Tentative Timeline
1 - 27 May
Familiarize myself with compat_netbsd32 on amd64 port, version control
systems: cvs and NetBSD userland sources.

27 - 8 June
Firstly, I will try to compile Wine-4.4 successfully on both amd64
and i386. I will probably have to tweak the configure script. I will
try to update other packages from pkgsrc that might
end up as dependencies if required.

9 - 28 June
Build Wine 32-bit on amd64 inside chroot. This might require some
time as I might need help with the kernel if Wine throws errors
pertaining to USER_LDT option. I will test Wine 32-bit thoroughly
before moving to the next phase. This phase might take more time than

29 - 26 July
3. Recompile Wine 64-bit with WoW64 support. This will require
recompiling Wine 32-bit using Wine-64 build. I might need to work
with Wine developers to fix bugs. Extensive testing is required in
this phase. If possible upstream Wine patches. This phase might take
more time than anticipated.

27 - 5 Aug
4. Package Wine 32-bit and 64-bit for pkgsrc. Test packages. (Second
Week of August) (OPTIONAL)

5 - 26 Aug
Documentation and whatever is pending.

Profit for NetBSD
1. Wine-4.4 will be available on pkgsrc for both amd64 and i386
ports. Extensive testing would have been done with respect to USER_LDT
option in the kernel. Wine-64 will be able to handle Wine-32
applications natively.

About me
I am Naveen, an Information and Communication Engineering student at
Rhine-Waal University of Applied Sciences. I have been a UNIX
enthusiast my whole life. I have always wanted to work with operating
system internals like kernel and other sub-systems. I figured I learn
about emulators as a precursor to operating systems as they dealt with
similar topics. This is what got me into trying out Wine and I have
always wanted to contribute to NetBSD as BSD in general has fascinated
me especially after I came across the book "The Design and
Implementation of 4.4 BSD". I have a couple of years of system
administration and programming experience with respect to UNIX and its
flavors. And I have a fair-share of interest in hiking and movies.

Do I have any other obligations from late May to early September
(school, work, etc) ?
I will have my university examinations during the first week of July
but other than that I have nothing else. I assure you that I will
manage my time effectively so that it doesn't affect GSoC 2019.

Home | Main Index | Thread Index | Old Index