Installation of Mamedev MAME
-
Thanks for the info @mitu. I've been trying to get a handle on why this is not compiling. I'm still getting stuck at that first step:
sudo ./retropie_packages.sh crosscomp setup stretch
This fails while building libgcc
Makefile:883: recipe for target '_gcov_dump.o' failed Makefile:883: recipe for target '_gcov_flush.o' failed Makefile:883: recipe for target '_gcov_fork.o' failed
Here's some info on my platform:
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic
The processor is an AMD processor and not Intel though. Not sure if that would actually make any difference here though. There don't seem to be any errors that would indicate a missing dependency either.
@barbudreadmon and @markwkidd, yeah the script could be modified to only include specific drivers. That would need some experimentation to see how much it would reduce the compile time. Thanks for the info.
- George
-
@George said in Installation of Mamedev MAME:
The processor is an AMD processor and not Intel though. Not sure if that would actually make any difference here though. There don't seem to be any errors that would indicate a missing dependency either.
The CPU doesn't make a difference, I actually run this also on an AMD, with the same release of Bionic. Must be something else I've run before that made the setup work.
-
This is pretty hard to track down, but I think I've made some progress. I ran apt update/upgrade a couple of times just to be sure I had everything up to date. Perhaps something had not gotten upgraded in my previous attempts. Now, it looks like everything is compiling, but the last step is still failing:
= = = = = = = = = = = = = = = = = = = = = Running action 'switch_distcc' for 'crosscomp' : Create am arm cross compiler env - based on examples from http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler = = = = = = = = = = = = = = = = = = = = = '/opt/retropie/admin/crosscomp/bin/cc' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-gcc' '/opt/retropie/admin/crosscomp/bin/gcc' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-gcc' '/opt/retropie/admin/crosscomp/bin/arm-linux-gnueabihf-gcc' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-gcc' '/opt/retropie/admin/crosscomp/bin/c++' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-g++' '/opt/retropie/admin/crosscomp/bin/g++' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-g++' '/opt/retropie/admin/crosscomp/bin/arm-linux-gnueabihf-g++' -> '/opt/retropie/admin/crosscomp/stretch/bin/arm-linux-gnueabihf-g++' sed: can't read /etc/init.d/distcc: No such file or directory Failed to restart distcc.service: Unit distcc.service not found.
I'll dig in some more and see if I can resolve it.
- George
-
@George Install
distcc
manually on the host. -
Ah, on a whim, I ran apt install distcc and it looks like that might be the missing piece. Taking a look at the original post I find evidence that this might be the case.
https://retropie.org.uk/forum/post/166552
EDIT: Thanks @mitu, guess we cross-posted.
@George Install
distcc
manually on the host.- George
-
I believe I've gotten past the first step. Now, I'm trying to do the following:
sudo ./retropie_packages.sh builder chroot_build module lr-picodrive
But it gets caught at:
= = = = = = = = = = = = = = = = = = = = = Running action 'chroot' for 'image' : Create/Manage RetroPie images = = = = = = = = = = = = = = = = = = = = = Chrooting to /home/myuser/Downloads/RetroPie-Setup/tmp/build/builder/stretch ... Unknown host QEMU_IFLA type: 43 Unknown host QEMU_IFLA type: 43 sudo: /home/pi/RetroPie-Setup/retropie_packages.sh: command not found
I note that my RetroPie-Setup directory is not in the user's home directory, but under a secondary Downloads directory. But
/home/myuser/Downloads/RetroPie-Setup/tmp/build/builder/stretch/home/pi/
is created at least.- George
-
@George said in Installation of Mamedev MAME:
I note that my RetroPie-Setup directory is not in the user's home directory, but under a secondary Downloads directory
I installed RetroPie-Setup on the host (i.e. like a PC installation - see the docs) - maybe that makes a difference.
-
Gotcha. When the script was downloading stretch, I mistakenly thought that was the RetroPie build.
So I'm starting out with:
cd /home/myuser/Downloads/RetroPie-Setup/tmp/build/builder/stretch/home/pi/ git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
I'm wondering if I need to run the Basic Install process and if that needs to be in the chroot'ed environment as well. Going to try without first.
Thanks for all your help @mitu.
- George
-
Looks like it's doing more than it did last time, but I see a lot of the following warnings:
distcc[4372] (dcc_build_somewhere) Warning: failed to distribute, running locally instead
Is this something to be concerned about?
- George
-
@George said in Installation of Mamedev MAME:
Is this something to be concerned about?
:( it means it's compiling in the chroot, instead of sending the compilation to the host (via
distcc
). Might be as slow as on a Pi (but without the swapping). -
Ok, good to know. I'm not too concerned about compile time, since this will have more RAM, and won't overheat and get throttled.
I got this error at the end of building lr-picodrive:
= = = = = = = = = = = = = = = = = = = = = Removing 'lr-picodrive' : Sega 8/16 bit emu - picodrive arm optimised libretro core = = = = = = = = = = = = = = = = = = = = = /opt/retropie/libretrocores/lr-picodrive / /home/pi/RetroPie/roms /opt/retropie/libretrocores/lr-picodrive / /opt/retropie/libretrocores/lr-picodrive / Removed directory /opt/retropie/libretrocores/lr-picodrive / sending incremental file list rsync: mkdir "/home/myuser/RetroPie-Setup/tmp/archives" failed: No such file or directory (2) rsync error: error in file IO (code 11) at main.c(675) [Receiver=3.1.2]
But I remember that I have my RetroPie-Setup in ~/Downloads/. I resolved it by running:
mkdir -p /home/myuser/RetroPie-Setup/tmp/archives
I'm now running a crosscomp test with my mame.sh scriptmodule. I removed the !armv6 so it should build for rpi1/2. Fingers crossed!
- George
-
Looks like MAME is compiling. I modified
/etc/default/distcc
so thatSTARTDISTCC
was set to true, but I still get "failed to distribute" warnings. It seems mostly to happen on .c files and not .cpp files though, which is odd.I started the compile last night and it is still running. I hope it doesn't take a month. ;-)
I looked into cross-compiling MAME using other methods. Definitely a complex task and not very well documented. The MAME documentation has something about cross-compiling as well as a GitHub ticket, but nothing with enough detail (basically already done for me). The search continues.
- George
-
@George said in Installation of Mamedev MAME:
Looks like MAME is compiling. I modified /etc/default/distcc so that STARTDISTCC was set to true, but I still get "failed to distribute" warnings. It seems mostly to happen on .c files and not .cpp files though, which is odd.
Sometimes
distcc
(the client) would refuse to distribute the compilation, depending on the compiler options, so this might not be related to the service status, but locally on what the compiler requests. I remember I tried this when trying to cross-compile (using the same method, viadistcc
)lr-mess
,distcc
would refuse to distribute compiler lines that included-x cpp
or-x c
- this was later fixed indistcc
(https://github.com/distcc/distcc/commit/09656168b2a981484fba1814b02de0f12ecf2407), but the version from 18.04 might not include that improvement. -
Awesome. The cross-compiling is complete for both rpi1 and rpi2 builds. I now have two files:
stretch/rpi1/emulators/mame.tar.gz stretch/rpi2/emulators/mame.tar.gz
I guess I have to copy the tgz files over to each respective Pi, but I think I'll need to look up how to install as binary as I didn't add that as an option in the script. I'll see if I can find some info out on the original cross-compiling post, but any pointers would be very helpful!
Thanks again for all the help!
- George
-
@George said in Installation of Mamedev MAME:
I guess I have to copy the tgz files over to each respective Pi, but I think I'll need to look up how to install as binary as I didn't add that as an option in the script.
You don't have to - just need to make sure your install step returns all the files needed to be installed in
md_ret_files
. The cross compile would take those files and create the archive and upload them to the RetroPie server (viarsync
), then the setup script would detect if there's binary upload (archive) on the RetroPie's server and offer the option to install from binary.After the binary archive is downloaded, it's unpacked in the install folder (
/opt/retropie/emulators/mamedev
) and then theconfigure
step is executed - without any build steps.I'll see if I can find some info out on the original cross-compiling post, but any pointers would be very helpful!
-
Gotcha. So there's no way for me to test the download from RetroPie servers (unless someone puts binaries there). But I can test md_ret_files and the configure step.
Quick question. I've currently set the script to run on v0207. Looks like they just released v0208. Yay. Any thoughts on just running on master vs. a specific release tag?
-
@George said in Installation of Mamedev MAME:
Gotcha. So there's no way for me to test the download from RetroPie servers (unless someone puts binaries there). But I can test md_ret_files and the configure step.
If you have a local web server, just change the binary_url here and test it locally. It's a bit tricky to get the right URL, since it contains the OS and arch, but it's doable.
Quick question. I've currently set the script to run on v0207. Looks like they just released v0208. Yay. Any thoughts on just running on master vs. a specific release tag?
I had a previous suggestion - https://retropie.org.uk/forum/topic/19303/installation-of-mamedev-mame/56 - to dynamically get the latest release tag from the repo without hardcoding a certain version:
you can get the latest release tag dynamically from Github. Look at how this is implemented in the Skyscraper module, here and here.
-
Awesome! I'll give changing the
binary_url
a shot. I'm hoping the URL path structure is similar to the archive path folder (a lastretch/rpi1/emulators/mame.tar.gz
).I forgot about your comment on getting the latest release tag. This is a pretty long thread. I'll work on it.
- George
-
Very cool. The script now pulls the latest version based on the GitHub release tag from their API.
I also did a test with changing the binary_url to point to my server and it worked like a charm. I'm going to try a few games and see how they perform on a Pi 3 vs. Pi 0. Perhaps I'll remove the !armv6.
Any other feedback is welcome! Thanks for the help @mitu, as always.
- George
-
Did some performance testing on a Raspberry Pi Zero. I used ChoccyHobNob's script to get a list of candidates to run in person, but the majority of them ran well below 100% speed. On the in person testing, nothing tested with a reasonable level of playing performance, even early games.
Needless to say, I pretty much expected this. I'll keep the !armv6 flag so it doesn't show up on RPi0s.
One thing I did notice is that in Emulation Station, the games are listed by their filename and not their game name (i.e. goldnaxe2 vs. Golden Axe). Is there some way to fix that?
Thanks!
- George
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.