lcjava / angel-engine

Automatically exported from code.google.com/p/angel-engine
0 stars 0 forks source link

SWIG 2.0.4 on Ubuntu 12.04 LTS #84

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Steam only supports Ubuntu 12.04 LTS, which only allows SWIG to update to 
2.0.4, while Angel requires 2.0.6. It would be nice if Angel could use the 
version of SWIG that is embedded into Angel in /tools.

While not a bug, it's something of a gotcha; but the buttons don't seem to be 
appearing to label this a "feature request". Sorry!

Original issue reported on code.google.com by LoveOver...@gmail.com on 4 Oct 2013 at 5:03

GoogleCodeExporter commented 8 years ago
Turns out SWIG becomes 2.0.7 in Ubuntu 12.10, and that I can't compile Angel 
against 2.0.4 even if I force it to accept the library, so I'm at a loss.

Original comment by LoveOver...@gmail.com on 4 Oct 2013 at 5:29

GoogleCodeExporter commented 8 years ago
Fortunately/unfortunately the SWIG project took some of our Lua library changes 
upstream, and there's no *simple* way to keep our local changes to support the 
older SWIG while also supporting those same changes already integrated into the 
system's SWIG. 

So basically, we're stuck either supporting only versions < 2.0.6 or >=; we 
can't do both. It may be possible to find some in-between solution, but nothing 
obvious. Given that choice, it seems to make more sense to be forward-looking 
(especially since the incompatibility comes from SWIG accepting a patch from 
Angel). 

Definitely something worth looking into -- ideally we could always support 
Ubuntu LTS. But since the workaround of updating SWIG is not too difficult, 
this is kind of low priority. 

Original comment by lieseg...@gmail.com on 6 Oct 2013 at 11:33

GoogleCodeExporter commented 8 years ago
Would it be possible to make Angel reference the SWIG version embedded in it in 
/tools if the version isn't sufficient? It's right there, but I couldn't get 
make to grab it!

Thanks for looking at it for me, and I'm glad your patches got accepted!

Original comment by LoveOver...@gmail.com on 7 Oct 2013 at 12:24

GoogleCodeExporter commented 8 years ago
IIRC, that's what I tried to make happen last year-ish when it all went down, 
but getting the system's SWIG executable to work with the Angel-embedded 
library was tricky. It could easily take the library path, but small 
inconsistencies between the executable and what it's expecting from its support 
files wound up being tough to hunt down. 

Original comment by lieseg...@gmail.com on 7 Oct 2013 at 1:34

GoogleCodeExporter commented 8 years ago
I've come up with a simpler solution: updating SWIG via dpkg before 
installing/upgrading it through apt-get.

The necessary version of SWIG is in Ubuntu 12.10, which has stable packages.
I changed nix-prereqs.sh to download 12.10's copy of SWIG, and install it.
It only does this if we are confirmed to be on Ubuntu 12.04.

It will be necessary to run nix-prereqs.sh on any Ubuntu 12.04 before a binary 
version is run (probably), which could be fixed with a static library build, 
but given you'll need to install the necessary packages anyway, this does not 
seem like too large of a requirement.

This will now allow Angel2D to build easily on Ubuntu 12.04 LTS, and by 
extension allow Angel2D games to easily be released on Steam.

Original comment by LoveOver...@gmail.com on 25 Jan 2014 at 9:56

Attachments:

GoogleCodeExporter commented 8 years ago
Interesting approach! I'll try it out on a fresh Ubuntu VM in the next couple 
days and confirm. Thanks for pushing on this. :)

Original comment by lieseg...@gmail.com on 26 Jan 2014 at 12:43

GoogleCodeExporter commented 8 years ago
No problem, that's what open source is all about right?

I tested this on three fresh installs (Xen, VMWare, flash drive) with the 
following steps:
1. Install from ISO ( http://www.ubuntu.com/download/desktop )
2. Update all packages without upgrade to new Ubuntu version
3. Pulled from GIT
4. Ran modified nix-prereqs.sh
5. Installed Xf86VidMode via libxxf86vm-dev as indicated here: 
https://code.google.com/p/angel-engine/issues/detail?id=88

After that, Angel compiled and ran fine, every example in IntroGame worked 
without fail and with only mild slow down on VMWare. While this is no unit test 
by any means, it's a heavy indication of usability.

Hope to hear a similar result from you, at your leisure.

Original comment by shieldho...@gmail.com on 26 Jan 2014 at 6:01

GoogleCodeExporter commented 8 years ago
I've verified that this works, but our Linux maintainer is a little hesitant to 
pull in later packages. We've requested an official backport of the SWIG 
package from Ubuntu, but that seems like a longshot. 

However -- Angel 4 is currently running with a locally prepared version of 
SWIG. On Mac (and eventually Windows), it will use a pre-built executable, and 
on Linux it builds it as part of the nix-prereqs.sh script. (If nothing else, 
this will help keep SWIG versioning inline across the various platforms. 
There's a relatively high amount of flux in SWIG updates, so being off by a 
version can be more problematic than it would be for something like FreeType.) 

I think this approach would also solve the LTS problem, by simply moving our 
SWIG dependency out of the package manager entirely. I'll plan on backporting 
this from Angel 4 to Angel 3 if that assumption is correct. 

Original comment by lieseg...@gmail.com on 5 Feb 2014 at 5:56

GoogleCodeExporter commented 8 years ago
This looks to be working in the mainline now, pending some further tests on 
other Linux distributions. 

Original comment by lieseg...@gmail.com on 7 Feb 2014 at 10:55