GSoC Proposal: Parsing a software package to determine its level of support

Matteo Bruni matteo.mystral at gmail.com
Thu Mar 28 15:19:24 CDT 2019


On Thu, Mar 28, 2019 at 1:30 PM Daniel A. <daniel.atack at hotmail.fr> wrote:
>
> Hello,
>
> I'm a computer science student currently in 3rd year in prospect of drafting a Summer Code proposal for this year

Hi Daniel. Nice!

> and so:
>
>  Wouldn't it be nice if Wine could parse a folder containing a software and output a guessed rating without running it listing the unsupported libraries?

I fear that's generally hard / impossible to do well in practice. E.g.
the program might use some particular API only in an error path and
reporting that as "needed" would be wrong. OTOH a program might incur
in some bug in an implemented Wine feature and your tool would give an
optimistic estimate. I left some more specific questions below.

> For example, let's take a MMO game as example, it does not work initially because it uses an anti-hack software currently unsupported by Wine; so people will stop there and give it a Garbage rating.
> But finding a fix for it might not make it runnable still, there may be another thing inside that prevents it from running but it wasn't documented because no one got past the initial issue.
> Hence, a tool that provides an evaluation of everything that would be currently unsupported by Wine could be valuable.
>
> Initial ideas could be:
>
> Tie folder names into known software in the database
> Analyze .dll files to determine whether unsupported functions are present

How would you do that?

> For example, it'd be able to start from the following: "A good chunk of those APIs has been implemented but a lot is still missing, such as: some math functions (what's left is mostly about spherical harmonics and precomputed radiance transfer) some mesh functions (D3DXComputeNormals(), D3DXOptimizeVertices(), ...) a few texture functions quite a few ID3DXConstantTable methods effect framework bits and pieces drawing text in ID3DXFont" and determine if a software is not supported because it uses these.

How would you keep the info about what's implemented up to date? More
importantly, how would you handle functions / methods that are just
stubbed (which means, functions that just report success without doing
most / all of the intended work)?



More information about the wine-devel mailing list