blag: convert (and slightly improve) blogposts from rohieb.wordpress.org
[www-rohieb-name.git] / blag / post / zsnes-on-amd64-ubuntu.mdwn
diff --git a/blag/post/zsnes-on-amd64-ubuntu.mdwn b/blag/post/zsnes-on-amd64-ubuntu.mdwn
new file mode 100644 (file)
index 0000000..5df598c
--- /dev/null
@@ -0,0 +1,91 @@
+[[!meta title="ZSNES on AMD64 Ubuntu"]]
+[[!meta date="2010-10-06"]]
+[[!meta author="rohieb"]]
+[[!meta license="CC-BY-SA 3.0"]]
+[[!flattrthing id=80701]]
+
+**[ Update, 2013-10:** This post post is not up to date anymore. On newer
+Debians (since 7.0/wheezy) and Ubuntus (at least since 12.04, Precise Pangolin),
+you should be able to install zsnes out of the box: `sudo apt-get install
+zsnes:i386`. For details see the MultiArch documentation for
+[Debian][MultiArchDebian] and [Ubuntu][MultiArchUbuntu]. **]**
+
+[MultiArchDebian]: https://wiki.debian.org/Multiarch/
+[MultiArchUbuntu]: https://help.ubuntu.com/community/MultiArch
+
+Before I bought my current hardware, I was working on a 32-bit-based
+system, and I really appreciated ZSNES as an SNES emulator. But
+unfortunately, my new hardware was an AMD64 system, and there is
+currently no ZSNES package for 64-bit Ubuntu or Debian :( So I decided
+to google a bit about the issue, but it took me until now (a year later)
+to get ZSNES finally working on my machine. The problem is, if you build
+ZSNES on a 64-bit machine, all the application does is segfault at
+start, and if you [try to compile for 32-bit systems][0], you get errors
+about missing 32-bit libs (in particular, configure does not find a
+suitable `libsdl`). Instead, if you just take the binary which was
+compiled on a 32-bit system, and install the `ia32-libs` package,
+everything seems to work—at least I was able to play a few levels of
+Super Mario World succesfully :-) 
+
+[0]: http://board.zsnes.com/phpBB3/viewtopic.php?p=118067&sid=dd9a2a54d9178eb5009c33586aea703c#p118067
+
+So here was my idea: take the 32-bit package from the Ubuntu repository,
+and just change the Architecture control field, and by this fool dpkg :P
+And as it turned out, this idea worked great. You can get the Debian
+package here if you want, it *should* work for Ubuntu Karmic and Lucid,
+as well as for Debian testing (**but** I only tested it on Lucid, so
+there is no warranty here—but I’m happy to hear if it works :-)):
+
+* [zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb][2]
+* SHA1: `716bbd37267b477ef02961a7727212619309b83f`
+* MD5: `452ea5230ad17df1dee649ab4cc6c8c0`
+
+[2]: http://rohieb.name/stuff/zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb
+
+## How to Reproduce It
+For the curious people reading here, here is what I actually did:
+
+1. `wget http://archive.ubuntu.com/ubuntu/pool/universe/z/zsnes/zsnes_1.510-2.2ubuntu3_i386.deb`
+2. `ar x zsnes_1.510-2.2ubuntu3_i386.deb`
+3. `tar xzf data.tar.gz`
+4. Edit `usr/share/applications/zsnes.desktop` and added `-ad sdl` to the
+   `Exec:` field, otherwise it would just segfault on the first run:
+      
+       Exec=zsnes -ad sdl
+
+5. Edit `usr/share/doc/zsnes/changelog.Debian.gz` and added a new
+   changelog entry for the version (just copy one of the previous
+   entries and adapt it)
+6. `tar xzf control.tar.gz`
+7. Edit the `control` file, changed the `Version:` and `Architecture:`
+   field to `amd64`, added the `ia32-libs` dependency, and set myself as
+   maintainer:
+
+       Package: zsnes
+       Version: 1.510-2.2ubuntu3~ppa1
+       Architecture: amd64
+       Maintainer: Roland Hieber <foobar@example.org>
+       Installed-Size: 4160
+       Depends: ia32-libs, libao2 (>= 0.8.8), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1),
+         libgl1-mesa-glx | libgl1, libpng12-0 (>= 1.2.13-4),
+         libsdl1.2debian (>= 1.2.10-1), libstdc++6 (>= 4.1.1), zlib1g (>= 1:1.2.2.3)
+       [...]
+
+8. Change the `md5sums` file for the right values for
+   `usr/share/applications/zsnes.desktop` and
+   `usr/share/doc/zsnes/changelog.Debian.gz` (I used the `md5sum`
+   command and copy-pasted it)
+9. `tar czf control.tar.gz control md5sums postrm postinst`
+0. `tar czf data.tar.gz usr/`
+1. `ar r zsnes_1.510-2.2ubuntu3~ppa1_amd64.deb debian-binary
+   control.tar.gz data.tar.gz`
+
+I’m afraid that I can’t put the package into [my PPA][3], Launchpad only
+accepts source packages for uploads, and builds the binary packages
+itself, both for i386 and AMD64. This approach can not be used here,
+since we needed the i386 binary for AMD64.
+
+[3]: https://launchpad.net/~rohieb/+archive/ppa
+
+[[!tag Debian hacking howto Ubuntu workaround Linux packaging
+    Ubuntu_Jaunty Ubuntu_Karmic ZSNES]]
This page took 0.022879 seconds and 4 git commands to generate.