Various updates/fixes for recent chkentry mods
This commit is contained in:
1 parent
7e559b6da1
commit
664a7b57bd
8 files changed
+804
-601
No files matched your search
+86
-62
@@ -437,8 +437,8 @@ Mastodon</a> feed as <em>sometimes</em> the
|
||||
FAQ on “<a href="../faq.html#feedback">rules, guidelines, tools feedback</a>”
|
||||
as well as our
|
||||
FAQ on “<a href="../faq.html#question">about asking questions</a>”
|
||||
about these rules. You might also find the FAQ in general useful, especially the
|
||||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”.</p>
|
||||
about these rules. You might also find the FAQ in general useful, as well as the
|
||||
<a href="../quick-start.html">quick start guide</a> and <a href="register.html">how to register</a>.</p>
|
||||
<h1 id="the-ioccc-is-pending">The IOCCC is pending</h1>
|
||||
<p>While the IOCCC is not open now, there is a tentative opening date for the next IOCCC.</p>
|
||||
<p>Comments and suggestions on these preliminary rules are welcome. See the
|
||||
@@ -461,11 +461,11 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="leftbar">
|
||||
These <a href="rules.html">IOCCC rules</a> are version <strong>28.24 2025-02-12</strong>.
|
||||
These <a href="rules.html">IOCCC rules</a> are version <strong>28.25 2025-02-26</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <a href="rules.md" download="rules.md">markdown form of these rules</a>
|
||||
is available for download.
|
||||
The markdown form of these rules <a href="rules.md" download="rules.md">is
|
||||
available for download</a>.
|
||||
</p>
|
||||
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -859,7 +859,7 @@ super-user, special owner, special group, etc.) are still <strong>HIGHLY
|
||||
DISCOURAGED</strong>. We do not guarantee these functions will behave as
|
||||
you expect on our test platforms. If your program needs special
|
||||
permissions you <strong>MUST</strong> document this fact, and explain why
|
||||
it is needed in your submissions <code>remarks.md</code> file.</p>
|
||||
it is needed in your submission’s <code>remarks.md</code> file.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule12">
|
||||
<h2 id="rule-12">Rule 12</h2>
|
||||
@@ -978,10 +978,9 @@ and <code>.auth.json</code>) and files that are also not the optional files (<co
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
|
||||
<p class="leftbar">
|
||||
Each submission <strong>MUST</strong> be in the form of a xz compressed tarball.
|
||||
<p>Each submission <strong>MUST</strong> be in the form of a xz compressed tarball.
|
||||
The xz compressed tarball filename must be of the form:
|
||||
</p>
|
||||
<pre><code> ^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code></pre>
|
||||
<code>^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code>.</p>
|
||||
<p class="leftbar">
|
||||
… where <em><code>username</code></em> is your IOCCC registration username <strong>in the form of a
|
||||
<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a></strong> (see
|
||||
@@ -993,7 +992,7 @@ details), and where <em><code>slot_num</code></em> is a single decimal digit int
|
||||
In particular, <code>username</code> is in the form of:
|
||||
<code>xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx</code> where <code>'x'</code> is a hex digit in the range
|
||||
of <code>[0-9a-f]</code>, 4 is the UUID version, and <code>N</code> is one of <code>8</code>, <code>9</code>, <code>a</code>, or <code>b</code>.
|
||||
And yes, there is a 4 (UUID version 4) and variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
And yes, there is a 4 (UUID version 4) and the variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
<code>0xb</code> in there.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -1001,40 +1000,27 @@ Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>Makefile</code>
|
||||
<code>prog.c</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>prog.c</code>
|
||||
<code>Makefile</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>remarks.md</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code>
|
||||
<code>.auth.json</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code>
|
||||
<code>.info.json</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The <code>.info.json</code> is generated by the <code>mkiocccentry(1)</code> tool. If not, and it is
|
||||
not valid JSON or it does not pass the <code>chkentry(1)</code> tool, your submission
|
||||
<strong>WILL BE</strong> rejected! If you do use <code>mkiocccentry(1)</code> and it fails to pass
|
||||
<code>chkentry(1)</code> then you might wish to <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry
|
||||
issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>.auth.json</code> is generated by the <code>mkiocccentry(1)</code> tool. If not, and it is
|
||||
not valid JSON or it does not pass the <code>chkentry(1)</code> tool, your submission
|
||||
<strong>WILL BE</strong> rejected! If you do use <code>mkiocccentry(1)</code> and it fails to pass
|
||||
<code>chkentry(1)</code> then you might wish to <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry
|
||||
issues
|
||||
page</a>.
|
||||
<code>prog.c</code> is of course your submission program.
|
||||
</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
|
||||
Makefile</a></strong> format. See the
|
||||
<a href="guidelines.html#makefile">Makefile section in the guidelines</a>,
|
||||
the
|
||||
FAQ on “<a href="../faq.html#submission_makefiles">submission Makefile</a>”
|
||||
@@ -1043,7 +1029,7 @@ FAQ on “<a href="../faq.html#make_compatibility">Makefile compatibility</a>”
|
||||
for help.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown form
|
||||
The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown format
|
||||
(<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in
|
||||
it you still risk violating this rule). See also
|
||||
<a href="#rule18">Rule 18</a> and our
|
||||
@@ -1057,13 +1043,40 @@ See also the <a href="https://www.markdownguide.org/basic-syntax">markdown synta
|
||||
and the <a href="https://spec.commonmark.org/current/">CommonMark Spec</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file <strong>MUST</strong> be less than or equal to <strong>3999971</strong> octets in size.
|
||||
The <code>.auth.json</code> file is created by <code>mkiocccentry(1)</code> and it holds information
|
||||
about the author(s) of the submission. It will <strong>ONLY</strong> be looked at if your
|
||||
submission wins but it <strong>MUST</strong> still be valid according to <code>chkentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>.info.json</code> file is created by <code>mkiocccentry(1)</code> and it holds information
|
||||
about the submission itself. It also <strong>MUST</strong> be valid according to
|
||||
<code>chkentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
For the complete <code>mkiocccentry(1)</code> process, see the
|
||||
FAQ on the “<a href="../faq.html#mkiocccentry_process">mkiocccentry process</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The tool performs a lot of checks, both directly and indirectly, and if it or
|
||||
any other tool detects <strong>ANY</strong> problem, you are <strong>HIGHLY</strong> encouraged to fix it
|
||||
and try again.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do use <code>mkiocccentry(1)</code> and you run into a problem, you might see the
|
||||
FAQ on “<a href="../faq.html#questions">how to ask a question about the IOCCC rules, guidelines and
|
||||
tools</a>”.
|
||||
If you believe you have encountered a bug, feel free to open a bug report at the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">mkiocccentry repo issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file <strong>MUST</strong> be <= <strong>3999971</strong> octets in size.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
When your submission’s xz compressed tarball is uncompressed,
|
||||
the total size of your submission: the sum of the size of the program,
|
||||
hints, comments, build and info files <strong>MUST</strong> be less than or equal
|
||||
to <strong>28314624</strong> octets (<strong>27651K</strong>) in size.
|
||||
the total size of your submission (the sum of the size of the program,
|
||||
hints, comments, build and info files) <strong>MUST</strong> be <=
|
||||
<strong>28314624</strong> octets (<strong>27651K</strong>) in size.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Your submission’s xz compressed tarball <strong>MUST</strong> pass the <code>txzchk(1)</code> test. See
|
||||
@@ -1101,7 +1114,7 @@ Be <= <strong>38</strong> characters in length.
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> contain a path component of: <strong><code>.</code></strong> (that is, with
|
||||
the exception of files generated by <code>mkiocccentry(1)</code> itself, it must have
|
||||
<strong>NO</strong> <strong><code>.</code></strong>).
|
||||
<strong>NO</strong> <strong><code>.</code></strong> an <strong>NO</strong> dot file).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> contain a path component of: <strong><code>..</code></strong> (that is,
|
||||
@@ -1134,8 +1147,8 @@ entry.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The <code>chkentry(1)</code> tool will validate these two JSON files <em>prior to</em> the tarball
|
||||
being formed.
|
||||
The <code>chkentry(1)</code> tool will validate these two JSON files, and do other checks
|
||||
on your submission directory as well, <em>prior to</em> forming the tarball.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Files and directories in your submission tarball <strong>MUST</strong> be specific
|
||||
@@ -1144,17 +1157,22 @@ permissions and <code>mkiocccentry(1)</code> does this for you. In particular: d
|
||||
<code>try.alt.sh</code>, if provided, <strong>MUST</strong> be <code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other
|
||||
files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e. <code>0444</code>). If the files do not have these
|
||||
permissions, your submission <strong>WILL</strong> be rejected for violating <a href="#rule17">Rule
|
||||
17</a>! If you do need different permissions, then see the
|
||||
17</a>! In addition to <code>mkiocccentry(1)</code> creating and copying the
|
||||
directories and files with these modes, it also verifies them after the fact and
|
||||
if they are not correct it is an <strong>error</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do need different permissions, then see the
|
||||
FAQ on “<a href="../faq.html#file_perms">file permissions</a>”. Also keep in mind
|
||||
<a href="#rule4">Rule 4</a>, <a href="#rule5">Rule 5</a> and <a href="#rule21">Rule 21</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>txzchk(1)</code> tool will verify these (and other things) for you and
|
||||
the <code>chkentry(1)</code> tool will do additional checks on the contents of the
|
||||
<code>.auth.json</code> and <code>.info.json</code> files (including JSON validity). If these checks
|
||||
fail it is an error and <code>mkiocccentry(1)</code> will fail. In this case (it fails and
|
||||
you used <code>mkiocccentry(1)</code>) it is very <strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as
|
||||
a bug at the mkiocccentry issues
|
||||
The <code>txzchk(1)</code> tool will also verify file/directory permissions (and many other
|
||||
things) for you and so will <code>chkentry(1)</code> (along with validating the JSON files
|
||||
and running semantics checks on them). If these checks fail it is an <strong>error</strong>
|
||||
and <code>mkiocccentry(1)</code> will fail. In this case (it fails and you used
|
||||
<code>mkiocccentry(1)</code>) it is very <strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at
|
||||
the mkiocccentry issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -1166,7 +1184,9 @@ possible there could be a problem and this poses a big risk of violating <a href
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the
|
||||
filename is correct.
|
||||
filename is correct. But if you do package your tarball manually, and you have a
|
||||
mismatch in what is in the tarball and the name, <code>txzchk(1)</code> will flag the
|
||||
discrepancy as an error and exit with non-zero.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
These checks <strong>MUST PASS</strong>. If they do not you stand a significant chance of
|
||||
@@ -1179,7 +1199,7 @@ having your submission rejected for violating <a href="#rule17">Rule 17</a>!
|
||||
The maximum number of files your submission tarball may contain, not counting
|
||||
the optional files (<code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>) and the mandatory
|
||||
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code> plus the <code>mkiocccentry(1)</code> generated
|
||||
files <code>.auth.json</code> and <code>.info.json</code>) is 31. This is defined in the macro
|
||||
files <code>.auth.json</code> and <code>.info.json</code>), is 31. This is defined in the macro
|
||||
<code>MAX_EXTRA_FILE_COUNT</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. See the
|
||||
@@ -1191,7 +1211,8 @@ 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! <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.
|
||||
submission win. Of course if you don’t need that many files for a test-suite you
|
||||
are more than welcome to include those files in your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you need to extract a tarball by some Makefile, or perhaps the program
|
||||
@@ -1199,13 +1220,14 @@ itself, then <code>make clobber</code> <strong>MUST</strong> remove everything t
|
||||
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>)! <code>txzchk</code> only checks
|
||||
the submission tarball so you must verify these details yourself.
|
||||
Tarballs <strong>MUST</strong> only create files and directories <em>under</em> the submission
|
||||
directory. They may <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:
|
||||
<strong>IMPORTANT REMINDER</strong>: <strong>MAKE 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">
|
||||
@@ -1232,16 +1254,18 @@ for more help on ensuring you do have the most up to date release.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
We recommend that you run <code>make</code> and then install the tools (and man pages) via
|
||||
<code>make install</code> (as root or using <code>sudo(1)</code>) to help you run these tools from your
|
||||
submission’s directory. The <code>make install</code> will install in <code>/usr/local</code>.
|
||||
However, <strong>you do not have</strong> to install them, but in that case you’ll have to run it
|
||||
from the toolkit’s directory or use the correct options to specify the path to
|
||||
the necessary tools, and also specify the path to your files.
|
||||
<code>make install</code> (as root or using <code>sudo(1)</code>) to help you run these tools from
|
||||
your submission’s directory (or any other directory). The <code>make install</code> will
|
||||
install in <code>/usr/local</code>. However, <strong>you do not have</strong> to install them, but in
|
||||
that case you’ll have to run it from the toolkit’s directory or use the correct
|
||||
options to specify the path to the necessary tools, and also specify the path to
|
||||
your files.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
These tools will link in the <code>jparse(3)</code> library; <code>chkentry(1)</code> uses the parser
|
||||
to validate the <a href="https://www.json.org/json-en.html">JSON</a> but the other tools
|
||||
use parts of the library as well.
|
||||
These tools will link in the <code>jparse(3)</code> library and the <code>dbg</code> library and the
|
||||
<code>dyn_array</code> library; <code>chkentry(1)</code> uses the JSON parser (<code>jparse</code>) to validate
|
||||
and parse the <a href="https://www.json.org/json-en.html">JSON</a> but the other tools use
|
||||
parts of the <code>jparse</code> utility functions as well.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you run into a problem with one or more of these tools, <strong>PLEASE</strong> <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it
|
||||
@@ -1253,10 +1277,10 @@ FAQ on “<a href="../faq.html#mkiocccentry_bugs">mkiocccentry repo bugs</a>”.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
At the risk of stating the obvious: submissions that violate <a href="#rule17">Rule
|
||||
17</a> <strong>will be rejected</strong>, so <strong>be sure</strong> to use the latest release of the
|
||||
17</a> <strong>WILL BE REJECTED</strong>, so <strong>BE SURE</strong> to use the latest release of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, to form and test
|
||||
your submission’s xz compressed tarball. Do <strong>NOT</strong> assume you have the most
|
||||
recent release without pulling or downloading via GitHub and <strong>make sure</strong> you
|
||||
recent release without pulling or downloading via GitHub and do <strong>MAKE SURE</strong> you
|
||||
do this <strong>AFTER</strong> the <a href="../status.html">contest status</a> has changed to
|
||||
<a href="../status.html#open">open</a>.
|
||||
</p>
|
||||
|
||||
Reference in new issue
Block a user