Update FAQ, guidelines and rules

The new syntax (though not all functionality is yet finished) of
mkiocccentry does not match what was in the FAQ, guidelines and rules.

Also added an important reminder to use v7 format with tarballs as not
doing so can reveal who you are which would break the rules. This is
mentioned in the rules and guidelines, showing how to create such a
tarball.

More work does have to be done with these two things however.
This commit is contained in:
Cody Boone Ferguson committed 2025-01-30 11:43:00 -08:00
1 parent 16c5ca3896
commit db6fd9ab66
6 files changed
+93 -82

No files matched your search

+8 -12
View File
@@ -684,24 +684,20 @@ explain how to use this tool. If you want to know what it is in simpler terms,
see the
FAQ on “<a href="#about_mkiocccentry">what mkiocccentry is</a>”.</p>
<p>As the <a href="next/guidelines.html">Guidelines</a> state, the synopsis is:</p>
<pre><code> mkiocccentry [options] work_dir prog.c \
Makefile remarks.md [file ...]</code></pre>
<p>… where <code>work_dir</code> is a directory that will be used to build the submission
tarball, <code>prog.c</code> is your submission source code, <code>Makefile</code> is your submission’s
<code>Makefile</code>, <code>remarks.md</code> are your remarks (that will be the basis of the
<code>README.md</code> file which will be used to form the <code>index.html</code> file, if your
submission wins) and the remaining args are the paths to any other files you
wish to submit.</p>
<p>The <code>work_dir</code> <strong>MUST</strong> already exist, as a directory, and it is an error if it
<pre><code> mkiocccentry [options] workdir topdir</code></pre>
<p>… where <code>workdir</code> is a directory that will be used to build the submission
tarball and <code>topdir</code> is the directory which has your files, including the
mandatory <code>prog.c</code>, <code>Makefile</code> and <code>remarks.md</code>.</p>
<p>The <code>workdir</code> <strong>MUST</strong> already exist, as a directory, and it is an error if it
is not a directory that can be written to. In <strong>this</strong> directory your <strong>submission
directory</strong> will be created, with the name based on your IOCCC registration
username, which is <strong>in the form of a UUID</strong>, and submission number; see the
<a href="next/rules.html">rules</a> for more details on this, and in particular <a href="next/rules.html#rule17">Rule
17</a>.</p>
<p>If the <strong><em>subdirectory</em> in the <em>work directory</em></strong> already exists, you will have to
<p>If the <strong><em>subdirectory</em> in the <em>work directory</em></strong> (based on your submit ID and
slot number) already exists, you will have to
move it, remove it or otherwise specify a different work directory (<strong>NOT</strong> the
subdirectory), as it needs to be empty and the <code>mkiocccentry(1)</code> tool does not
check this for you as it could not do anything about anyway.</p>
subdirectory), as it needs to be empty.</p>
<p>This <em>subdirectory is where your files will be <strong>copied</strong> to</em>. Your <em>submission
tarball</em> (which you will upload to the submit server) that <code>txzchk(1)</code> will
validate <em>will be placed in the <strong>work directory</strong></em>, and <strong>its <em>contents</em> will
+8 -12
View File
@@ -300,28 +300,24 @@ FAQ on "[what mkiocccentry is](#about_mkiocccentry)".
As the [Guidelines](next/guidelines.html) state, the synopsis is:
``` <!---sh-->
mkiocccentry [options] work_dir prog.c \
Makefile remarks.md [file ...]
mkiocccentry [options] workdir topdir
```
... where `work_dir` is a directory that will be used to build the submission
tarball, `prog.c` is your submission source code, `Makefile` is your submission's
`Makefile`, `remarks.md` are your remarks (that will be the basis of the
`README.md` file which will be used to form the `index.html` file, if your
submission wins) and the remaining args are the paths to any other files you
wish to submit.
... where `workdir` is a directory that will be used to build the submission
tarball and `topdir` is the directory which has your files, including the
mandatory `prog.c`, `Makefile` and `remarks.md`.
The `work_dir` **MUST** already exist, as a directory, and it is an error if it
The `workdir` **MUST** already exist, as a directory, and it is an error if it
is not a directory that can be written to. In **this** directory your **submission
directory** will be created, with the name based on your IOCCC registration
username, which is **in the form of a UUID**, and submission number; see the
[rules](next/rules.html) for more details on this, and in particular [Rule
17](next/rules.html#rule17).
If the **_subdirectory_ in the _work directory_** already exists, you will have to
If the **_subdirectory_ in the _work directory_** (based on your submit ID and
slot number) already exists, you will have to
move it, remove it or otherwise specify a different work directory (**NOT** the
subdirectory), as it needs to be empty and the `mkiocccentry(1)` tool does not
check this for you as it could not do anything about anyway.
subdirectory), as it needs to be empty.
This _subdirectory is where your files will be **copied** to_. Your _submission
tarball_ (which you will upload to the submit server) that `txzchk(1)` will
+12 -5
View File
@@ -461,7 +461,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div>
</div>
<p class="leftbar">
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.34 2025-01-24</strong>.
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.35 2025-01-30</strong>.
</p>
<p class="leftbar">
The <a href="guidelines.md" download="guidelines.md">markdown form of these guidelines</a>
@@ -600,9 +600,11 @@ without having to put in answers each time, you can use the <code>-d</code> or <
option to <code>mkiocccentry</code> for the tool to pseudo-randomly create answers for you.
The <code>-d</code> option is an alias for <code>-s 21701</code>. An example use:
</p>
<pre><code> mkiocccentry -d test_work prog.c Makefile remarks.md</code></pre>
<pre><code> mkiocccentry -d workdir topdir</code></pre>
<p class="leftbar">
where <code>test_work</code> is the directory which the tarball will be formed. Be aware
where <code>workdir</code> is the directory which the tarball will be formed and the
<code>topdir</code> is the directory which has the required files (<code>prog.c</code>, <code>Makefile</code> and
<code>remarks.md</code>) along with extra data files you wish to submit. Be aware
that if the directory exists already, you will have to remove it or move it
before this option will work a second time, just like in normal mode.
</p>
@@ -845,6 +847,12 @@ If you <strong>DO</strong> include a tarball, and the build process or the progr
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove them.
</p>
<p class="leftbar">
<strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball DOES <strong>NOT</strong> reveal who you are!
The <code>mkiocccentry(1)</code> tool creates v7 format tarballs to prevent this. You can
do so like:
</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p class="leftbar">
See <a href="rules.html#rule17">Rule 17</a> and in particular the part about the <a href="rules.html#max-files">maximum
number of files</a>. If you do not follow these points, you
are at a great risk of violating <a href="rules.html#rule17">Rule 17</a>!
@@ -911,8 +919,7 @@ correct details as you go along.
<p class="leftbar">
The synopsis of the <code>mkiocccentry(1)</code> tool is:
</p>
<pre><code> mkiocccentry [options] work_dir prog.c \
Makefile remarks.md [file ...]</code></pre>
<pre><code> mkiocccentry [options] workdir topdir</code></pre>
<p class="leftbar">
To help you with editing a submission, the <code>mkiocccentry(1)</code> tool has
some options to write <em>OR</em> read from an answers file so you do not have to input
+15 -4
View File
@@ -222,11 +222,13 @@ The `-d` option is an alias for `-s 21701`. An example use:
</p>
``` <!---sh-->
mkiocccentry -d test_work prog.c Makefile remarks.md
mkiocccentry -d workdir topdir
```
<p class="leftbar">
where `test_work` is the directory which the tarball will be formed. Be aware
where `workdir` is the directory which the tarball will be formed and the
`topdir` is the directory which has the required files (`prog.c`, `Makefile` and
`remarks.md`) along with extra data files you wish to submit. Be aware
that if the directory exists already, you will have to remove it or move it
before this option will work a second time, just like in normal mode.
</p>
@@ -518,6 +520,16 @@ If you **DO** include a tarball, and the build process or the program extracts
said tarball(s), the make `clobber` rule **MUST** remove them.
</p>
<p class="leftbar">
**IMPORTANT REMINDER**: make **SURE** your tarball DOES **NOT** reveal who you are!
The `mkiocccentry(1)` tool creates v7 format tarballs to prevent this. You can
do so like:
</p>
``` <!---sh-->
tar --format=v7 -cJf foo.txz directory
```
<p class="leftbar">
See [Rule 17](rules.html#rule17) and in particular the part about the [maximum
number of files](rules.html#max-files). If you do not follow these points, you
@@ -604,8 +616,7 @@ The synopsis of the `mkiocccentry(1)` tool is:
</p>
``` <!---sh-->
mkiocccentry [options] work_dir prog.c \
Makefile remarks.md [file ...]
mkiocccentry [options] workdir topdir
```
<p class="leftbar">
+25 -26
View File
@@ -462,7 +462,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div>
<p>Jump to: <a href="#">top</a></p>
<p class="leftbar">
These <a href="rules.html">IOCCC rules</a> are version <strong>28.18 2025-01-24</strong>.
These <a href="rules.html">IOCCC rules</a> are version <strong>28.19 2025-01-30</strong>.
</p>
<p class="leftbar">
The <a href="rules.md" download="rules.md">markdown form of these rules</a>
@@ -1034,22 +1034,6 @@ issues
page</a>.
</p>
<p class="leftbar">
You submission may have additional files, however the filenames of those additional files <strong>MUST</strong>:
</p>
<ul>
<li><p class="leftbar">
Be less than <strong>100</strong> characters in length.
</p></li>
<li><p class="leftbar">
Match the regular expression:
<code>^[0-9A-Za-z][0-9A-Za-z._+-]*$</code>
</p></li>
</ul>
<p class="leftbar">
The <code>mkiocccentry(1)</code> tool will not package any files that do not meet
those requirements.
</p>
<p class="leftbar">
The <code>Makefile</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in <strong><a href="https://www.gnu.org/software/make/manual/make.html">GNU
Makefile</a></strong> form. See the
<a href="guidelines.html#makefile">Makefile section in the guidelines</a>,
@@ -1098,9 +1082,9 @@ more details on this tool and the <a href="https://github.com/ioccc-src/mkioccce
repo</a>.
</p>
<p class="leftbar">
Your entry may <strong>NOT</strong> have subdirectories. However, you can provide files that
are in different directories as <code>mkiocccentry(1)</code> will copy them to the work
directory (see the <a href="guidelines.html">guidelines</a> for more details).
Your entry may have subdirectories, depending on the depth and total length of
the filenames. Certain directories like <code>.git</code>, <code>RCCS</code>, <code>CVS</code> and <code>.svn</code> are
skipped. For more information, see the <a href="guidelines.html">guidelines</a>.
</p>
<p class="leftbar">
Filenames in your entry (that is, not including the files generated by the
@@ -1108,7 +1092,7 @@ Filenames in your entry (that is, not including the files generated by the
</p>
<ul>
<li><p class="leftbar">
Be less than <strong>100</strong> characters in length
Be &lt;= <strong>38</strong> characters in length
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> have a <strong><code>/</code></strong> (excluding the entry directory that
@@ -1125,13 +1109,19 @@ the exception of files generated by <code>mkiocccentry(1)</code> itself, it must
</p></li>
<li><p class="leftbar">
Match the regular expression
<code>^[0-9A-Za-z][0-9A-Za-z._+-]*$</code> (again, excluding files generated by
<code>^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$</code> (again, excluding files generated by
<code>mkiocccentry(1)</code>).
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> be a directory depth &gt; 4.
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> have a total path length &gt; 99 characters.
</p></li>
</ul>
<p class="leftbar">
Additionally, the tarball <strong>MUST</strong> have the following files (generated
by the <code>mkiocccentry(1)</code> tool):
Additionally, the submission tarball created by <code>mkiocccentry(1)</code> <strong>MUST</strong> have
the following files (generated by the <code>mkiocccentry(1)</code> tool):
</p>
<ul>
<li><p class="leftbar">
@@ -1181,7 +1171,10 @@ if you need to include more files.
</p>
<p class="leftbar">
If you do include a tarball that takes your extra files count over the maximum,
you <strong>MUST</strong> explain this in your <code>remarks.md</code> file!
you <strong>MUST</strong> explain this in your <code>remarks.md</code> file! <strong>PLEASE</strong> do not include a
tarball with extra files for a test-suite; instead mention in your remarks that
you have extra files for a test-suite that can be included should your
submission win.
</p>
<p class="leftbar">
If you need to extract a tarball by some Makefile, or perhaps the program
@@ -1190,8 +1183,14 @@ created!
</p>
<p class="leftbar">
Tarballs <strong>MUST</strong> only create files and directories <em>under them</em>. They may
<strong>NOT</strong> contain absolute paths (paths that start with <code>/</code>)!
<strong>NOT</strong> contain absolute paths (paths that start with <code>/</code>)! <code>txzchk</code> only checks
the submission tarball so you must verify these details yourself.
</p>
<p class="leftbar">
Make <strong>SURE</strong> your tarball does not reveal who you are! The <code>mkiocccentry(1)</code>
tool uses the v7 format. For instance you might try:
</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<hr style="width:50%;text-align:left;margin-left:0">
<p class="leftbar">
<strong>IMPORTANT</strong>: where <a href="#rule17">Rule 17</a> and the tools from the latest
+25 -23
View File
@@ -55,7 +55,7 @@ Jump to: [top](#)
<p class="leftbar">
These [IOCCC rules](rules.html) are version **28.18 2025-01-24**.
These [IOCCC rules](rules.html) are version **28.19 2025-01-30**.
</p>
<p class="leftbar">
@@ -809,19 +809,6 @@ issues
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E).
</p>
<p class="leftbar">
You submission may have additional files, however the filenames of those additional files **MUST**:
</p>
* <p class="leftbar">Be less than **100** characters in length.</p>
* <p class="leftbar">Match the regular expression:
`^[0-9A-Za-z][0-9A-Za-z._+-]*$`</p>
<p class="leftbar">
The `mkiocccentry(1)` tool will not package any files that do not meet
those requirements.
</p>
<p class="leftbar">
The `Makefile` **MUST** be a **non**-empty file in **[GNU
Makefile](https://www.gnu.org/software/make/manual/make.html)** form. See the
@@ -883,9 +870,9 @@ repo](https://github.com/ioccc-src/mkiocccentry).
</p>
<p class="leftbar">
Your entry may **NOT** have subdirectories. However, you can provide files that
are in different directories as `mkiocccentry(1)` will copy them to the work
directory (see the [guidelines](guidelines.html) for more details).
Your entry may have subdirectories, depending on the depth and total length of
the filenames. Certain directories like `.git`, `RCCS`, `CVS` and `.svn` are
skipped. For more information, see the [guidelines](guidelines.html).
</p>
<p class="leftbar">
@@ -893,7 +880,7 @@ Filenames in your entry (that is, not including the files generated by the
`mkiocccentry(1)` tool or the tools it or any other tool invokes) **MUST**:
</p>
* <p class="leftbar">Be less than **100** characters in length</p>
* <p class="leftbar">Be <= **38** characters in length</p>
* <p class="leftbar">**NOT** have a **`/`** (excluding the entry directory that
the `mkiocccentry(1)` tool generates).</p>
* <p class="leftbar">**NOT** contain a path component of: **`.`** (that is, with
@@ -902,12 +889,14 @@ the exception of files generated by `mkiocccentry(1)` itself, it must have
* <p class="leftbar">**NOT** contain a path component of: **`..`** (that is,
**NO** **`..`**).</p>
* <p class="leftbar">Match the regular expression
`^[0-9A-Za-z][0-9A-Za-z._+-]*$` (again, excluding files generated by
`^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by
`mkiocccentry(1)`).</p>
* <p class="leftbar">**NOT** be a directory depth > 4.</p>
* <p class="leftbar">**NOT** have a total path length > 99 characters.</p>
<p class="leftbar">
Additionally, the tarball **MUST** have the following files (generated
by the `mkiocccentry(1)` tool):
Additionally, the submission tarball created by `mkiocccentry(1)` **MUST** have
the following files (generated by the `mkiocccentry(1)` tool):
</p>
* <p class="leftbar">`.auth.json` which contains information about the author or
@@ -959,7 +948,10 @@ if you need to include more files.
<p class="leftbar">
If you do include a tarball that takes your extra files count over the maximum,
you **MUST** explain this in your `remarks.md` file!
you **MUST** explain this in your `remarks.md` file! **PLEASE** do not include a
tarball with extra files for a test-suite; instead mention in your remarks that
you have extra files for a test-suite that can be included should your
submission win.
</p>
<p class="leftbar">
@@ -970,9 +962,19 @@ created!
<p class="leftbar">
Tarballs **MUST** only create files and directories _under them_. They may
**NOT** contain absolute paths (paths that start with `/`)!
**NOT** contain absolute paths (paths that start with `/`)! `txzchk` only checks
the submission tarball so you must verify these details yourself.
</p>
<p class="leftbar">
Make **SURE** your tarball does not reveal who you are! The `mkiocccentry(1)`
tool uses the v7 format. For instance you might try:
</p>
``` <!---sh-->
tar --format=v7 -cJf foo.txz directory
```
<hr style="width:50%;text-align:left;margin-left:0">