The issue with redistribution is that this packaging format is mainly just to wrap vanilla Dwarf Fortress. There is nothing original about it beyond the start script. But without a clear actual license, DwarfFortress isn't licensed in a way that I could put this up on the
http://openbuildservice.org/.
rpmbuild is able to pull from the url on bay12games when you build the source and binary RPMs, so you can technically point the Source0 at that. Flash and video driver redistribution are on very shaky legal ground when they don't come with a clear license or from the original company.
(Urist McLawyer flees in terror: "... Death, this does not bother me. Paperwork! Paperwork! I must flee!" Urist McLawyer doges. Urist McLawyer has gone missing. Urist McLawyer has been found dead in a murky pool of Red Tape.)
RPM specfiles are kind of like shell scripts where the emphasis is on using predefined macros (%patch, %setup, %files) and capturing all the meta-data about what is being packaged (version, license, name.)
The Debian package format has a lot more parts, many files and stricter syntax. It also requires some kind of actual license documentation, if I recall correctly. But I think the license text can be bogus gibberish.
Figuring out how to split the df folder is pretty straightforward. Toady has done a good job of organizing the current build for a project this size. Without the need for the patches the only thing one needs to create a new RPM with this is just the Makefile, a launcher script and the specfile. rpmbuild is able to pull sources straight off the web for you.
All the Makefile does is bust the df_linux tarball out into parts and setup the script to handle copying the data. It should be possible to rewrite the script to detect and offer the multiple versions if installed. I have 0.40.06, .07, .08 and .09 installed. Editing the script by hand can switch between each.
Really, with the work on some of the launchers like PyLNP the script could replace the launcher script I wrote. There is a lot of work in PyLNP to handle all the non-vanilla things like patching in community mods or tile sets like Phoebus and even dealing with savefiles.
The source really should be in a sub-package, but sub-package making specfiles are more complicated than this.
If you are interested, the patching making process is:
- Untar your df_linux
- Copy that to df_linux.orig (cp -r to get everything)
- Make the changes to df_linux/data/init/init.txt to replace .png with .bmp
- Use diff to make the patch with diff -r df_linux.org df_linux > df_libgraphics.patch
The binary patch uses xxd.
- Unpack the df_linux/lib/DwarfFortress binary from the tarball
- Dump a text version of the original with xxd DwarfFortress > df.orig
- Change mouse.png to mouse.bmp with sed -e 's/mouse.png/mouse.bmp/' < DwarfFortress > DwarfFortress.new
- Dump a text version of the new executable with xxd DwarfFortress.new > df.new
- Use diff to pull out the changes in the text file with diff df.orig df.new
- Pick out the line with the mouse.bmp and put that into your xxd patch file
Removing the leading > character and throwing away the rest of the lines from the xxd patch.
Sadly, I've not been playing much since discovering on the forums that the value of room is far less when there are holes in the sides. The difference with just -metal furniture- and engraved walls is a whole room quality level.
I had a nice little rotated multi-layer 3-D spiral fort based on a Julia fractal that worked really well for routing mine carts. It is completely incompatible with using internal stairs to boost the value of even 2x2 or 2x3 rooms. The layout cannot compete with the efficiency of the boring but very effective organics processing layout from the wiki. Combined with a similar layout for ore and wood processing that organics processing layout can bridge the gap from small sub-20 forts up to 150 plus dwarfs.. Folding it into the Julia fractal doesn't work since the layout is sensitive to adjacency and the fractal forces work-spaces out to the edges.
On the plus side I got to blow through lots of graphing paper during boring meetings. Pages of cryptic characters for chairs or tables and scribbled notes on trap mechanism counts lends a sort of nutjob air when someone is peering over your shoulder, too.