Merge pull request #2400 from xexyl/3_20-faq

Add FAQ 3.20 - about entry/year tarballs
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2024-06-04 17:34:44 -07:00
commit 106abe09ea
2 files changed
+202 -10

No files matched your search

+87 -5
View File
@@ -413,7 +413,7 @@
<h2 id="section-3---compiling-and-running-ioccc-entries">Section 3 - <a href="#faq3">Compiling and running IOCCC entries</a></h2>
<ul>
<li><a href="#faq3_0">3.0 - What Makefile rules are available to build or clean up IOCCC entries?</a></li>
<li><a href="#faq3_1">3.1 - Why doesn’t this IOCCC entry compile?</a></li>
<li><a href="#faq3_1">3.1 - Why doesn’t an IOCCC entry compile?</a></li>
<li><a href="#faq3_2">3.2 - Why does a IOCCC entry fail on my 64-bit system?</a></li>
<li><a href="#faq3_3">3.3 - Why do some IOCCC entries fail to compile under macOS?</a></li>
<li><a href="#faq3_4">3.4 - Why does clang or gcc fail to compile an IOCCC entry?</a></li>
@@ -425,13 +425,14 @@
<li><a href="#faq3_10">3.10 - How do I compile and use an IOCCC entry that requires sound?</a></li>
<li><a href="#faq3_11">3.11 - Why do Makefiles use -Weverything with clang?</a></li>
<li><a href="#faq3_12">3.12 - How do I find out how to send interrupt/EOF etc. for entries that require it?</a></li>
<li><a href="#faq3_13">3.13 - Why does an IOCCC entry fail to compile or or fail run?</a></li>
<li><a href="#faq3_13">3.13 - Why does an IOCCC entry fail to compile and/or fail to run?</a></li>
<li><a href="#faq3_14">3.14 - How do I compile and install tcpserver for entries that require it?</a></li>
<li><a href="#faq3_15">3.15 - How do I compile and install netpbm for entries that require it?</a></li>
<li><a href="#faq3_16">3.16 - How do I compile and install libjpeg-turbo for entries that require it?</a></li>
<li><a href="#faq3_17">3.17 - How do I compile and install ImageMagick for entries that require it?</a></li>
<li><a href="#faq3_18">3.18 - How do I compile and install OpenGL for entries that require it?</a></li>
<li><a href="#faq3_19">3.19 - What kind of make(1) compatibility does the IOCCC support and will it support other kinds?</a></li>
<li><a href="#faq3_20">3.20 - How do I download individual entries or entries of a given year?</a></li>
</ul>
<h2 id="section-4---changes-made-to-ioccc-entries">Section 4 - <a href="#faq4">Changes made to IOCCC entries</a></h2>
<ul>
@@ -1184,7 +1185,7 @@ compilers might do different things, have different defects or other issues.
Note that the <code>Makefile</code>s check the <code>CC</code> variable by substrings so that if you
were to do something like <code>make CC=gcc=mp-12</code> it would register as <code>gcc</code>.</p>
<div id="faq3_1">
<h3 id="faq-3.1-why-doesnt-this-ioccc-entry-compile">FAQ 3.1: Why doesn’t this IOCCC entry compile?</h3>
<h3 id="faq-3.1-why-doesnt-an-ioccc-entry-compile">FAQ 3.1: Why doesn’t an IOCCC entry compile?</h3>
</div>
<p>Some entries that won the IOCCC, particularly entries from long ago, no longer compile on more
modern systems because the C language has evolved (i.e. the modern C compilers
@@ -1204,6 +1205,9 @@ request</a> for more information about pull requests.</p>
that works for modern systems but one can view the original code in the
<code>.orig.c</code> files (sometimes the original code is also in the directory as a
<code>dirname.alt.c</code> or <code>prog.alt.c</code>).</p>
<p>It might also be worth noting that almost all entries, have been
fixed so that they can compile in modern systems though just because an entry
compiles does not mean it will run on your specific system.</p>
<div id="faq3_2">
<h3 id="faq-3.2-why-does-a-ioccc-entry-fail-on-my-64-bit-system">FAQ 3.2: Why does a IOCCC entry fail on my 64-bit system?</h3>
</div>
@@ -1213,7 +1217,7 @@ version macOS no longer supports 32-bit binaries. If the entry acts on a certain
type of binary, say ELF, then that will also be a problem depending on the
entry. For example <a href="2001/anonymous/index.html">2001/anonymous</a> requires 32-bit
ELF binaries.</p>
<p>There are numerous example entries that require 32-bit binaries. We have tried
<p>There are a few example entries that require 32-bit binaries. We have tried
to note these in both the respective Makefiles and index.html files but it is
possible that some were missed. These entries are very likely in the
<a href="bugs.html">bugs.html</a> file and we welcome any help in making an alternate version
@@ -1629,7 +1633,7 @@ reason it’s not you might have to do something else including just piping it t
just <code>grep intr</code> or whatever.</p>
<div id="faq3_13">
<div id="no_support">
<h3 id="faq-3.13-why-does-an-ioccc-entry-fail-to-compile-or-or-fail-run">FAQ 3.13: Why does an IOCCC entry fail to compile or or fail run?</h3>
<h3 id="faq-3.13-why-does-an-ioccc-entry-fail-to-compile-andor-fail-to-run">FAQ 3.13: Why does an IOCCC entry fail to compile and/or fail to run?</h3>
</div>
</div>
<p>What may have worked years ago may not work well or work at all today.
@@ -1852,6 +1856,84 @@ to the top level directory of the winner repo you can do:</p>
it like:</p>
<pre><code> gmake MAKE=gmake</code></pre>
<p>though of course for both you may specify a rule or rules to run.</p>
<div id="faq3_20">
<div id="entry_downloads">
<h3 id="how-do-i-download-individual-entries-or-entries-of-a-given-year">3.20 - How do I download individual entries or entries of a given year?</h3>
</div>
</div>
<p>Although one can clone the entire <a href="https://github.com/ioccc-src/winner">winner
repo</a> to get the entire web site and all
entries, we also provide, as a convenience, a way to download individual entries
as well as a way to download a year’s winning entries.</p>
<p>Please note that some of the links in the html files will not work! This is
because you are not downloading the full website. If you want to view the entry
with links intact you should clone the repo or view it on the <a href="https://www.ioccc.org">official IOCCC
web site</a> instead.</p>
<h4 id="individual-winning-entry-tarballs">Individual winning entry tarballs</h4>
<p>The individual entry tarballs are named in the form of
<code>YYYY/winner/YYYY_winner.tar.bz2</code> (e.g. <code>1984/mullender/1984_mullender.tar.bz2</code>)
and will have the following files:</p>
<ul>
<li><code>ioccc.css</code> - stylesheet for the html files</li>
<li><code>var.mk</code> - the top level Makefile included by all the other Makefiles that holds variables used by the Makefiles</li>
<li><code>YYYY/winner/.path</code> - directory path from top level directory</li>
<li><code>YYYY/winner/.entry.json</code> - entry summary and manifest in JSON</li>
<li><code>YYYY/winner/.gitignore</code> - list of files that should not be committed under git</li>
</ul>
<p>plus the winning entry files like source code, the Makefile, supplementary data
provided by the author and any other file found in the winning entry, found in
<code>YYYY/winner</code>.</p>
<p>If you downloaded <code>1984/mullender/1984_mullender.tar.bz2</code>, for instance, you might
then do:</p>
<div class="sourceCode" id="cb58"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a> <span class="bu">cd</span> 1984/mullender</span>
<span id="cb58-2"><a href="#cb58-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> everything</span>
<span id="cb58-3"><a href="#cb58-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./mullender.alt</span></span></code></pre></div>
<p>to compile all versions and then run the alternate version (if you have
a PDP-11 or VAX-11 you would be able to run the original version). For more help
on compiling entries, see also <a href="#faq3_0">3.0 - What Makefile rules are available to
build or clean up IOCCC entries?</a>.</p>
<p>If you want to view the <code>index.html</code> file you can point your browser to the
<code>index.html</code> file of the winning entry (e.g. <code>1984/mullender/index.html</code>) with the
caveats noted above.</p>
<h4 id="year-based-tarballs">Year based tarballs</h4>
<p>The year based tarballs, which are under each year’s directory and are named in the form
of <code>YYYY/YYYY.tar.bz2</code>, have, along with each entry’s directory and their
respective files (as if you downloaded each entry tarball of the year
individually as described above), the following files:</p>
<ul>
<li><code>.filelist</code> - list of files in the year that are not part of a winning entry of the year, including the <code>YYYY.tar.bz2</code> tarball</li>
<li><code>index.html</code> - the <code>YYYY/index.html</code> file rendered from the <code>YYYY/README.md</code> file</li>
<li><code>Makefile</code> - Makefile for the year to compile etc. all entries of the year</li>
<li><code>README.md</code> - the source of the <code>YYYY/index.html</code> file</li>
<li><code>rules.txt</code> - rules of the year’s contest</li>
<li><code>.year</code> - text file that has a list of the winning entries’ directories of the year</li>
</ul>
<p>Additionally, some will have extra files like:</p>
<ul>
<li><code>.gitignore</code> - list of files that should not be committed under git</li>
<li><code>guidelines.txt</code> - the guidelines of the year</li>
<li><code>iocccsize.c</code> - <code>iocccsize</code> tool of the year</li>
<li><code>iocccsize.mk</code> - Makefile to compile the <code>iocccsize</code> tool of the year</li>
<li><code>iocccsize-test.sh</code> - test suite for the <code>iocccsize</code> tool</li>
</ul>
<p>.. and perhaps some others we have missed as well.</p>
<p>If you extract a year’s tarball you can <code>cd YYYY</code> (e.g. <code>cd 1984</code>) and then run
<code>make everything</code> to compile the entries and alt code of every entry), as if you
switched to each entry’s directory and ran <code>make everything</code> in each one.</p>
<p>If you download the 1984 tarball, i.e. <code>1984/1984.tar.bz2</code>, then you might
extract it and then switch to the directory and compile everything of each
entry:</p>
<div class="sourceCode" id="cb59"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb59-1"><a href="#cb59-1" aria-hidden="true" tabindex="-1"></a> <span class="bu">cd</span> 1984</span>
<span id="cb59-2"><a href="#cb59-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> everything</span></code></pre></div>
<p>For more help on compiling entries, see also <a href="#faq3_0">3.0 - What Makefile rules are
available to build or clean up IOCCC entries?</a>.</p>
<p>Of course in this case you can also switch to individual entries and look at the
<code>index.html</code> file (or any other file in the entry) and try out the entries that
interest you, as if you downloaded that entry’s individual tarball.</p>
<p>If you want to view the <code>index.html</code> files of that tarball, for instance the
year’s <code>index.html</code> file and then <code>1984/mullender/index.html</code> you could point your
browser to <code>1984/index.html</code>, scroll down to <code>Winning Entries of 1984 - The 1st IOCCC</code> and click on the link <code>1984/mullender</code> which will take you to the
<code>index.html</code> file. Of course the caveats listed above still will apply.</p>
<div id="faq4">
<h2 id="section-4-changes-made-to-ioccc-entries">Section 4: Changes made to IOCCC entries</h2>
</div>
+115 -5
View File
@@ -30,7 +30,7 @@
## Section 3 - [Compiling and running IOCCC entries](#faq3)
- [3.0 - What Makefile rules are available to build or clean up IOCCC entries?](#faq3_0)
- [3.1 - Why doesn't this IOCCC entry compile?](#faq3_1)
- [3.1 - Why doesn't an IOCCC entry compile?](#faq3_1)
- [3.2 - Why does a IOCCC entry fail on my 64-bit system?](#faq3_2)
- [3.3 - Why do some IOCCC entries fail to compile under macOS?](#faq3_3)
- [3.4 - Why does clang or gcc fail to compile an IOCCC entry?](#faq3_4)
@@ -42,13 +42,14 @@
- [3.10 - How do I compile and use an IOCCC entry that requires sound?](#faq3_10)
- [3.11 - Why do Makefiles use -Weverything with clang?](#faq3_11)
- [3.12 - How do I find out how to send interrupt/EOF etc. for entries that require it?](#faq3_12)
- [3.13 - Why does an IOCCC entry fail to compile or or fail run?](#faq3_13)
- [3.13 - Why does an IOCCC entry fail to compile and/or fail to run?](#faq3_13)
- [3.14 - How do I compile and install tcpserver for entries that require it?](#faq3_14)
- [3.15 - How do I compile and install netpbm for entries that require it?](#faq3_15)
- [3.16 - How do I compile and install libjpeg-turbo for entries that require it?](#faq3_16)
- [3.17 - How do I compile and install ImageMagick for entries that require it?](#faq3_17)
- [3.18 - How do I compile and install OpenGL for entries that require it?](#faq3_18)
- [3.19 - What kind of make&#x28;1&#x29; compatibility does the IOCCC support and will it support other kinds?](#faq3_19)
- [3.20 - How do I download individual entries or entries of a given year?](#faq3_20)
## Section 4 - [Changes made to IOCCC entries](#faq4)
@@ -1051,7 +1052,7 @@ were to do something like `make CC=gcc=mp-12` it would register as `gcc`.
<div id="faq3_1">
### FAQ 3.1: Why doesn't this IOCCC entry compile?
### FAQ 3.1: Why doesn't an IOCCC entry compile?
</div>
Some entries that won the IOCCC, particularly entries from long ago, no longer compile on more
@@ -1077,6 +1078,10 @@ that works for modern systems but one can view the original code in the
`.orig.c` files (sometimes the original code is also in the directory as a
`dirname.alt.c` or `prog.alt.c`).
It might also be worth noting that almost all entries, have been
fixed so that they can compile in modern systems though just because an entry
compiles does not mean it will run on your specific system.
<div id="faq3_2">
### FAQ 3.2: Why does a IOCCC entry fail on my 64-bit system?
@@ -1089,7 +1094,7 @@ type of binary, say ELF, then that will also be a problem depending on the
entry. For example [2001/anonymous](2001/anonymous/index.html) requires 32-bit
ELF binaries.
There are numerous example entries that require 32-bit binaries. We have tried
There are a few example entries that require 32-bit binaries. We have tried
to note these in both the respective Makefiles and index.html files but it is
possible that some were missed. These entries are very likely in the
[bugs.html](bugs.html) file and we welcome any help in making an alternate version
@@ -1768,7 +1773,7 @@ just `grep intr` or whatever.
<div id="faq3_13">
<div id="no_support">
### FAQ 3.13: Why does an IOCCC entry fail to compile or or fail run?
### FAQ 3.13: Why does an IOCCC entry fail to compile and/or fail to run?
</div>
</div>
@@ -2187,6 +2192,111 @@ it like:
though of course for both you may specify a rule or rules to run.
<div id="faq3_20">
<div id="entry_downloads">
### 3.20 - How do I download individual entries or entries of a given year?
</div>
</div>
Although one can clone the entire [winner
repo](https://github.com/ioccc-src/winner) to get the entire web site and all
entries, we also provide, as a convenience, a way to download individual entries
as well as a way to download a year's winning entries.
Please note that some of the links in the html files will not work! This is
because you are not downloading the full website. If you want to view the entry
with links intact you should clone the repo or view it on the [official IOCCC
web site](https://www.ioccc.org) instead.
#### Individual winning entry tarballs
The individual entry tarballs are named in the form of
`YYYY/winner/YYYY_winner.tar.bz2` (e.g. `1984/mullender/1984_mullender.tar.bz2`)
and will have the following files:
- `ioccc.css` - stylesheet for the html files
- `var.mk` - the top level Makefile included by all the other Makefiles that holds variables used by the Makefiles
- `YYYY/winner/.path` - directory path from top level directory
- `YYYY/winner/.entry.json` - entry summary and manifest in JSON
- `YYYY/winner/.gitignore` - list of files that should not be committed under git
plus the winning entry files like source code, the Makefile, supplementary data
provided by the author and any other file found in the winning entry, found in
`YYYY/winner`.
If you downloaded `1984/mullender/1984_mullender.tar.bz2`, for instance, you might
then do:
```sh
cd 1984/mullender
make everything
./mullender.alt
```
to compile all versions and then run the alternate version (if you have
a PDP-11 or VAX-11 you would be able to run the original version). For more help
on compiling entries, see also [3.0 - What Makefile rules are available to
build or clean up IOCCC entries?](#faq3_0).
If you want to view the `index.html` file you can point your browser to the
`index.html` file of the winning entry (e.g. `1984/mullender/index.html`) with the
caveats noted above.
#### Year based tarballs
The year based tarballs, which are under each year's directory and are named in the form
of `YYYY/YYYY.tar.bz2`, have, along with each entry's directory and their
respective files (as if you downloaded each entry tarball of the year
individually as described above), the following files:
- `.filelist` - list of files in the year that are not part of a winning entry of the year, including the `YYYY.tar.bz2` tarball
- `index.html` - the `YYYY/index.html` file rendered from the `YYYY/README.md` file
- `Makefile` - Makefile for the year to compile etc. all entries of the year
- `README.md` - the source of the `YYYY/index.html` file
- `rules.txt` - rules of the year's contest
- `.year` - text file that has a list of the winning entries' directories of the year
Additionally, some will have extra files like:
- `.gitignore` - list of files that should not be committed under git
- `guidelines.txt` - the guidelines of the year
- `iocccsize.c` - `iocccsize` tool of the year
- `iocccsize.mk` - Makefile to compile the `iocccsize` tool of the year
- `iocccsize-test.sh` - test suite for the `iocccsize` tool
.. and perhaps some others we have missed as well.
If you extract a year's tarball you can `cd YYYY` (e.g. `cd 1984`) and then run
`make everything` to compile the entries and alt code of every entry), as if you
switched to each entry's directory and ran `make everything` in each one.
If you download the 1984 tarball, i.e. `1984/1984.tar.bz2`, then you might
extract it and then switch to the directory and compile everything of each
entry:
```sh
cd 1984
make everything
```
For more help on compiling entries, see also [3.0 - What Makefile rules are
available to build or clean up IOCCC entries?](#faq3_0).
Of course in this case you can also switch to individual entries and look at the
`index.html` file (or any other file in the entry) and try out the entries that
interest you, as if you downloaded that entry's individual tarball.
If you want to view the `index.html` files of that tarball, for instance the
year's `index.html` file and then `1984/mullender/index.html` you could point your
browser to `1984/index.html`, scroll down to `Winning Entries of 1984 - The 1st
IOCCC` and click on the link `1984/mullender` which will take you to the
`index.html` file. Of course the caveats listed above still will apply.
<div id="faq4">
## Section 4: Changes made to IOCCC entries
</div>