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.
Remove the big text graphic images used for the menus and the
intermission screen. Instead, generate these graphics programatically
from a script. This allows them to be easily changed and extended
as desired.
The placeholder monster sprites (those with the graphic not done
template overlaid) aren't used any more; nothing is linked to them.
Therefore speed up the build process by skipping this step.
This almost compensates for the extra time required to build Freedoom
since the helper scripts were rewritten in Python (joking)
Consensus that the "shareware" target was no longer necessary was
reached long ago[1]. It just needs to actually get done. Thus:
Makefile:
- remove shareware targets
buildcfg.txt, textures/combined.txt:
- remove #ifdef/#ifndef SHAREWARE sections (almost entirely #ifndef)
graphics/help2.gif:
- remove symlink, help2 screen was shareware-only
gitignore:
- remove shareware files no longer built
textures/shareware:
- remove directory
--
[1] http://www.doomworld.com/vb/freedoom/52758-removing-shareware/ .
In particular, Jon wrote:
>The original purpose of the shareware IWAD was to have a smaller set of
>resources to target 100% completion of. That was probably met a long
>time ago.
More recently chungy wrote in <http://www.doomworld.com/vb/post/957707>
>Removing the "demo"/"shareware" version of Freedoom has been discussed
>but it's never been done. Actually it's a bit easier to just leave it
>in than to remove it. (It'd be pretty easy to get rid of it anyway, but
>nothing is really gained from it)
Signed-off-by: RjY <rjy@users.sourceforge.net>
Not adding to the all target of the Makefile (which is the default when
make is invoked without parameters) as it would introduce an artificial
build dependency on asciidoc; instead, "make doc" is to be used when you
know you both want the *.html files and have asciidoc installed.
Signed-off-by: Mike Swanson <mikeonthecomputer@gmail.com>