Deduplicates effort from copying between multiple patch files, and we
now have unique outputs for each of our IWADs.
Having just "No Clipping 1 = idclip" proved to be troublesome with at
least prboom-plus, the engine running its cheat detecting twice and
becoming unable to activate no-clipping mode. Worked around it by
also defining "No Clipping 2 = idspispopd", restoring that cheat's
functionality in most source ports and keeping both variants unique.
Chocolate Doom will only use the "idclip" version.
This at least lays some groundwork for doing so, by gathering archive
members by wildcard expansion rather than zip's -r parameter (which
uses file system order -- essentially random), combined with LC_ALL=C
so that locale sorting orders don't matter either. zip's -X option is
also used so no Unix metadata (UIDs, GIDs, modes) are saved in the
archive.
To really complete the effect, faketime should be used to deal with
file timestamps. Requiring faketime to do `make dist` seems too
extreme to me, so I'm leaving it out, but the general idea is to run a
command such as:
faketime -f "$(TZ=UTC date -d "@$(git show -q --format=format:%ct)" \
"+%Y-%m-%d %H:%M:%S")" \
make dist
This does also assume that zip's default compression algorithm never
changes (eg, from DEFLATE to BZip2 or LZMA), or never releases an
improved version (eg, a better DEFLATE). It's not perfect, but this
should be good enough.
This was demonstrating an intent to make the Makefile more
dynamic with regard to IWAD targets and installation targets.
When/if the time comes that Freedoom changes what IWADs it builds,
we can just simply edit this section too.
The tags are shorthand for the license of each file and avoid
copying the full license text into each one (and avoids having
to manually update the dates in each one...).
This eliminates another author-name directory. PLAYPAL and COLORMAP
generation are separate operations that are really only very vaguely
related to one another. Move these into separate, logically-named
directories.
As part of this we eliminate the symlinks for the PLAYPAL and various
colormap lump files, and instead copy these into the parent directory
for use by deutex. This brings further progress on #202.
- add bootstrap/Makefile to generate/cleanup bootstrap/doom2.wad
- call bootstrap/Makefile from main Makefile as appropriate
- delete bootstrap/doom2.wad, add bootstrap/.gitignore
Continuing the discussion started on GitHub over
2014-09-30T01:33:29Z!mikeonthecomputer@gmail.com, all desktop entries
now have unique icons. Keeping my own personal bias, stfkill3 is still
used for FreeDM, but the Debian choices for their own distro are used
for Phases 1 and 2.
Also, the icons are actually generated automatically now.
In a world ravaged by software that determines file type by the last
part of the file's name, *.asc is somewhat troublesome given file
managers that think these are PGP keys. Also GitHub won't render
AsciiDoc without one of a few extensions, at least *.adoc is somewhat
clearer and not as obnoxiously long as *.asciidoc
Change up the shell line so that it can fallback on the VERSION file
if building without a Git repository (eg, from a release tarball).
Additionally, change the titlepic generation so that it uses this
single instance of setting VERSION rather than doing its own thing.
The wadinfo.txt files #include the pnames.txt file generated by the
texture builder: because of this, we must build subdirectories
before building the wadinfo.txt files.
Now that #1 is fixed, we can be certain that all patches needed for
compatibility are definitely being included in the PNAMES lists. It
therefore isn't necessary to include every patch in the patches/
directory in every WAD.
Extend the build-textures script to generate a text file containing
the list of PNAMES, and include this from the main config file. That
way, each IWAD only gets the patches it explicitly needs.
Some build targets create multiple outputs, which can cause problems
when doing parallel builds. Clean up the build system so that all
subdir invocations come from the top-level Makefile and use $(MAKE).
Also fix the FREEDOOM/FREEDM lumps to really include the version
number by using $(shell ...) syntax.
Stop using deutex's built-in texture builder and generate our own
texture lumps. This is essential for compatibility reasons: the
entries in the texture/pnames lumps must match the order of those
in the original IWADs. Failure to match ordering means that some
well-known WADs (eg. DTWID) would not work with Freedoom.
This fixes#1, and also means that Freedoom can now be built in
parallel using make's '-j' option.
After some discussion and consensus[1], Freedoom's IWADs are now
uniquely named independently of Doom's file names:
* freedoom1.wad: Phase 1
* freedoom2.wad: Phase 2
The original intention was that Freedoom would be a complete drop-in
replacement for Doom, so that you can just use Freedoom's doom2.wad
rather than id Software's. What has happened, however, is that people
often desire to have Freedoom installed alongside Doom, and try to
uniquely identify it via filenames for multiplayer servers. This has
resulted in lengthy lists of unofficial IWAD file names implemented by
many engines to locate Freedoom, combined with gamers' personal
opinions on just how they should be renamed.
Even the Debian project, normally not one to modify upstream sources
so drastically, has been renaming our doom2.wad to freedoom.wad,
presumably so that Doom II can be installed simultaneously with
game-data-packager.
Given a free software engine, we can instead standardize on unique
names apart from Doom and get the majority of engines in use changed
over to these ones; users with engines that don't recognize the names
can instead use the near-universal -iwad command-line parameter, or
rename the files back to doom.wad or doom2.wad as needed.
[1] http://www.doomworld.com/vb/freedoom/66856-bikeshedding-renaming-freedooms-iwads/
Consensus shows that the change in
2014-01-07T06:34:47Z!mikeonthecomputer@gmail.com was a bit too
extreme. Keep FreeDM as its own special thing, being much more focused
on multiplayer than the other IWADs, as well as being the
vanilla-compatible IWAD.
The resource PWADs have been around for a very long time and dated
from before Freedoom was capable of running as a complete IWAD on its
own. Few people ever cared about these files, as evident by a lack of
reports about freedoom_levels.wad not even being correct.
Additionally, the separate Zips for each IWAD is gone. With that,
Freedoom will be distributed as a single Zip file only that includes
all of the subprojects.
For now, Make is dependent on being run inside of the git repository,
at least if something like `make VERSION=3.14` isn't used. Will be
nice in the future if it can read from the VERSION file as a fallback.