experiment to move much of Rule 17 text into an FAQ
In order simplify the write-up of the actual Rule 17 into a new FAQ 1.8. The somewhat shorted Rule 17 text now refers to checks performed by tools, encourages their use, discourages their misuse (overriding limits), and is easier to read: we think.
This commit is contained in:
1 parent
6f06d1f441
commit
bf6d0a3574
7 files changed
+886
-733
No files matched your search
@@ -453,6 +453,7 @@
|
||||
<li><strong>Q 1.5</strong>: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a></li>
|
||||
<li><strong>Q 1.6</strong>: <a class="normal" href="#extra-files">How may I include additional files beyond the max allowed?</a></li>
|
||||
<li><strong>Q 1.7</strong>: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a></li>
|
||||
<li><strong>Q 1.8</strong>: <a class="normal" href="#rule17">What are the details behind Rule 17?</a></li>
|
||||
</ul>
|
||||
<h2 id="ioccc-judging-process">2. <a href="#judging_proceess">IOCCC Judging process</a></h2>
|
||||
<ul>
|
||||
@@ -1082,7 +1083,7 @@ files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>) is 3
|
||||
<p>This file does <strong>NOT</strong> need to pass the <code>txzchk(1)</code> tests; only your submission
|
||||
tarball needs to pass these tests.</p>
|
||||
<p>Please pay careful attention to <a href="next/rules.html#rule17">Rule 17</a> and in
|
||||
particular the part about the <a href="next/rules.html#max-files">maximum number of files per
|
||||
particular the part about the <a href="#max-files">maximum number of files per
|
||||
submission</a>, which not only discusses the maximum
|
||||
number of files (including extra files) but also specific rules you must follow
|
||||
if you do include a tarball. Not following these points puts you at great risk
|
||||
@@ -1107,6 +1108,383 @@ the ultimate author of the code you submit.</p>
|
||||
<p>If you do use such tools, <strong>PLEASE mention</strong> which tools you used as well
|
||||
as how you them to help write you submission in your <code>remarks.md</code> file.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule17">
|
||||
<h3 id="q-1.8-what-are-details-behind-rule-17">Q 1.8: What are details behind Rule 17?</h3>
|
||||
</div>
|
||||
<p>The following are the details behind <a href="next/rules.html#rule17">Rule 17</a>.</p>
|
||||
<h3 id="tldr-rule-17---use-mkiocccentry1">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code></h3>
|
||||
<p class="leftbar">
|
||||
This is a <strong>COMPLEX</strong> rule. <strong>Violating this rule will cause your submission to REJECTED!</strong>
|
||||
To help you avoid such a rejection, you are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool,
|
||||
based on the latest release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>,
|
||||
to form your submission’s xz compressed tarball.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
|
||||
contains <strong>IMPORTANT</strong> tools and libraries such as:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>chkentry(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>iocccsize(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>mkiocccentry(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>txzchk(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>fnamchk(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>jparse(1)</code> (and other tools) and <code>jparse(3)</code> (which <code>chkentry(1)</code> uses)
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The above mentioned tools will help you verify that your submission
|
||||
conforms to <a href="next/rules.html#rule17">Rule 17</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Each above mentioned tool has a <code>-h</code> option that provides command line help. For
|
||||
additional details of each tool, see its man page, and in some cases, the <a href="next/guidelines.html">IOCCC
|
||||
guidelines</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
There is no need to use <code>jparse(1)</code> but the <code>jparse(3)</code> library
|
||||
library will be linked when compiling the tools as they use various functions
|
||||
provided by it, and <code>chkentry</code> uses the JSON parser API as well.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Of course you <strong>may</strong> invoke <code>jparse(1)</code> if you wish to validate a JSON file but
|
||||
the only JSON files you might want to validate for the IOCCC are validated
|
||||
by <code>chkentry(1)</code>, and that is what you should use to make sure you conform to
|
||||
this rule.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The maximum number of <strong>extra files</strong> is 31. See the <a href="#max-files">maximum number of extra
|
||||
files section</a> below for finer details and the
|
||||
FAQ on “<a href="#extra-files">including additional files</a>”
|
||||
if you need to include more files than this maximum.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Extra files are defined as files that are not the required files (<code>prog.c</code>,
|
||||
<code>Makefile</code>, <code>remarks.md</code> and the two generated by <code>mkiocccentry(1)</code> <code>.info.json</code>
|
||||
and <code>.auth.json</code>) and files that are also not the optional files (<code>try.sh</code>,
|
||||
<code>prog.alt.c</code> and <code>try.alt.sh</code>).
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
|
||||
<p class="leftbar">
|
||||
<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:
|
||||
<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
|
||||
<a href="https://datatracker.ietf.org/doc/html/rfc9562">RFC 9562</a> for
|
||||
details), and where <em><code>slot_num</code></em> is a single decimal digit integer
|
||||
(i.e., >= <code>0</code> and < <code>9</code>).
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 the variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
<code>0xb</code> in there.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</strong>, the following files:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>prog.c</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>Makefile</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>remarks.md</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
<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> format. See the
|
||||
<a href="next/guidelines.html#makefile">Makefile section in the guidelines</a>,
|
||||
the
|
||||
FAQ on “<a href="#submission_makefiles">submission Makefile</a>”
|
||||
and the
|
||||
FAQ on “<a href="#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 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="next/rules.html#rule18">Rule 18</a> and our
|
||||
FAQ on “<a href="#remarks_md">remarks.md</a>”
|
||||
and our
|
||||
FAQ on “<a href="#markdown">markdown</a>”
|
||||
and our <a href="markdown.html">markdown guidelines</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
See also the <a href="https://www.markdownguide.org/basic-syntax">markdown syntax</a> guide
|
||||
and the <a href="https://spec.commonmark.org/current/">CommonMark Spec</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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="#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="#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 <=
|
||||
<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
|
||||
the <a href="next/guidelines.html">guidelines</a> for more details on this tool.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT</strong>: Make <strong>SURE</strong> you have the most recent version of the
|
||||
<code>mkiocccentry</code> toolkit! Not doing so will put you at a great risk of violating
|
||||
this rule! See the
|
||||
FAQ on “<a href="#mkiocccentry">obtaining the mkiocccentry toolkit</a>”
|
||||
for more details.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
You are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool to form your
|
||||
submission’s xz compressed tarball. See the <a href="next/guidelines.html">guidelines</a> for
|
||||
more details on this tool and the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
repo</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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="next/guidelines.html">guidelines</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Filenames in your entry (that is, not including the files generated by the
|
||||
<code>mkiocccentry(1)</code> tool or the tools it or any other tool invokes) <strong>MUST</strong>:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
Be <= <strong>38</strong> characters in length.
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> have a leading <strong><code>/</code></strong>.
|
||||
</p></li>
|
||||
<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> 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,
|
||||
<strong>NO</strong> <strong><code>..</code></strong>).
|
||||
</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>mkiocccentry(1)</code>).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> be a directory depth > 4.
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> have a total <strong>path</strong> length > 99 characters.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The submission tarball created by <code>mkiocccentry(1)</code> <strong>MUST</strong> have
|
||||
the additional files that are generated by the <code>mkiocccentry(1)</code> tool:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code> which contains information about the author or
|
||||
authors (that will only be looked at if the submission wins).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code> which contains information about the
|
||||
entry.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
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
|
||||
permissions and <code>mkiocccentry(1)</code> does this for you. In particular: directories
|
||||
<strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>), the optional files, <code>try.sh</code> or
|
||||
<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="next/rules.html#rule17">Rule
|
||||
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="#file_perms">file permissions</a>”. Also keep in mind
|
||||
<a href="next/rules.html#rule4">Rule 4</a>, <a href="next/rules.html#rule5">Rule 5</a> and <a href="next/rules.html#rule21">Rule 21</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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">
|
||||
The tarball filename <strong>MUST</strong> pass <code>fnamchk(1)</code>; the tool <code>txzchk(1)</code>
|
||||
will run <code>fnamchk(1)</code> as part of its algorithm. If you use <code>mkiocccentry(1)</code>
|
||||
there should be no problem but if you were to package things manually it is
|
||||
possible there could be a problem and this poses a big risk of violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the
|
||||
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
|
||||
having your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!
|
||||
</p>
|
||||
<div id="max-files">
|
||||
<h4 id="maximum-number-of-files-per-submission">Maximum number of files per submission</h4>
|
||||
</div>
|
||||
<p class="leftbar">
|
||||
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
|
||||
<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
|
||||
FAQ on “<a href="#extra-files">how to include additional files</a>”
|
||||
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! <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. 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
|
||||
itself, then <code>make clobber</code> <strong>MUST</strong> remove everything that the extraction
|
||||
created!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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">
|
||||
<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">
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT</strong>: where <a href="next/rules.html#rule17">Rule 17</a> and the tools from the latest
|
||||
release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
|
||||
conflict, the <a href="judges.html">IOCCC judges</a> will use their best judgment which
|
||||
is likely to favor <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> code.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
This means you should <strong>MAKE SURE</strong> that you use <code>mkiocccentry(1)</code> to
|
||||
package your submission; <code>mkiocccentry(1)</code> will run the above mentioned tools
|
||||
(that do not act on the tarball) <strong>before</strong> creating the tarball and after the
|
||||
tarball is created it will then verify that the tarball is okay by running
|
||||
<code>txzchk(1)</code> on it. If any step fails it is an error and submitting the
|
||||
submission will result in violating this rule.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>MAKE SURE</strong> you use the correct release of the repository; you should do this
|
||||
<strong>AFTER</strong> the contest opens (pull any changes or if you prefer download the
|
||||
repository via the download option at GitHub). See the
|
||||
FAQ on “<a href="#obtaining_mkiocccentry">obtaining mkiocccentry</a>”
|
||||
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 (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 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
|
||||
as a bug at the mkiocccentry issues
|
||||
page</a>,
|
||||
<strong>making sure to run <code>bug_report.sh</code></strong>. See the <a href="next/guidelines.html">guidelines</a>
|
||||
for help here and also read our
|
||||
FAQ on “<a href="#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
|
||||
<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 do <strong>MAKE SURE</strong> you
|
||||
do this <strong>AFTER</strong> the <a href="status.html">contest status</a> has changed to
|
||||
<a href="#open">open</a>.
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<div id="judging">
|
||||
|
||||
@@ -27,6 +27,7 @@ This is FAQ version **28.2.12 2025-02-28**.
|
||||
- **Q 1.5**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a>
|
||||
- **Q 1.6**: <a class="normal" href="#extra-files">How may I include additional files beyond the max allowed?</a>
|
||||
- **Q 1.7**: <a class="normal" href="#ai">May I use AI, Virtual coding assistants, or similar tools to write my submission?</a>
|
||||
- **Q 1.8**: <a class="normal" href="#rule17">What are the details behind Rule 17?</a>
|
||||
|
||||
|
||||
## 2. [IOCCC Judging process](#judging_proceess)
|
||||
@@ -818,7 +819,7 @@ tarball needs to pass these tests.
|
||||
|
||||
Please pay careful attention to [Rule 17](next/rules.html#rule17) and in
|
||||
particular the part about the [maximum number of files per
|
||||
submission](next/rules.html#max-files), which not only discusses the maximum
|
||||
submission](#max-files), which not only discusses the maximum
|
||||
number of files (including extra files) but also specific rules you must follow
|
||||
if you do include a tarball. Not following these points puts you at great risk
|
||||
of violating [Rule 17](next/rules.html#rule17)!
|
||||
@@ -856,6 +857,404 @@ as how you them to help write you submission in your `remarks.md` file.
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="rule17">
|
||||
### Q 1.8: What are details behind Rule 17?
|
||||
</div>
|
||||
|
||||
The following are the details behind [Rule 17](next/rules.html#rule17).
|
||||
|
||||
|
||||
### TL;DR Rule 17 - Use `mkiocccentry(1)`
|
||||
|
||||
<p class="leftbar">
|
||||
This is a **COMPLEX** rule. **Violating this rule will cause your submission to REJECTED!**
|
||||
To help you avoid such a rejection, you are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool,
|
||||
based on the latest release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry),
|
||||
to form your submission's xz compressed tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
|
||||
contains **IMPORTANT** tools and libraries such as:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`chkentry(1)`</p>
|
||||
* <p class="leftbar">`iocccsize(1)`</p>
|
||||
* <p class="leftbar">`mkiocccentry(1)`</p>
|
||||
* <p class="leftbar">`txzchk(1)`</p>
|
||||
* <p class="leftbar">`fnamchk(1)`</p>
|
||||
* <p class="leftbar">`jparse(1)` (and other tools) and `jparse(3)` (which `chkentry(1)` uses)</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The above mentioned tools will help you verify that your submission
|
||||
conforms to [Rule 17](next/rules.html#rule17).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Each above mentioned tool has a `-h` option that provides command line help. For
|
||||
additional details of each tool, see its man page, and in some cases, the [IOCCC
|
||||
guidelines](next/guidelines.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
There is no need to use `jparse(1)` but the `jparse(3)` library
|
||||
library will be linked when compiling the tools as they use various functions
|
||||
provided by it, and `chkentry` uses the JSON parser API as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Of course you **may** invoke `jparse(1)` if you wish to validate a JSON file but
|
||||
the only JSON files you might want to validate for the IOCCC are validated
|
||||
by `chkentry(1)`, and that is what you should use to make sure you conform to
|
||||
this rule.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The maximum number of **extra files** is 31. See the [maximum number of extra
|
||||
files section](#max-files) below for finer details and the
|
||||
FAQ on "[including additional files](#extra-files)"
|
||||
if you need to include more files than this maximum.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Extra files are defined as files that are not the required files (`prog.c`,
|
||||
`Makefile`, `remarks.md` and the two generated by `mkiocccentry(1)` `.info.json`
|
||||
and `.auth.json`) and files that are also not the optional files (`try.sh`,
|
||||
`prog.alt.c` and `try.alt.sh`).
|
||||
</p>
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
### Rule 17 - The COMPLEX details
|
||||
|
||||
<p class="leftbar">
|
||||
Each submission **MUST** be in the form of a xz compressed tarball.
|
||||
The xz compressed tarball filename must be of the form:
|
||||
`^submit.username-slot_num.[1-9][0-9]{9,}.txz$`.
|
||||
|
||||
<p class="leftbar">
|
||||
... where _`username`_ is your IOCCC registration username **in the form of a
|
||||
[UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)** (see
|
||||
[RFC 9562](https://datatracker.ietf.org/doc/html/rfc9562) for
|
||||
details), and where _`slot_num`_ is a single decimal digit integer
|
||||
(i.e., >= `0` and < `9`).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
In particular, `username` is in the form of:
|
||||
`xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx` where `'x'` is a hex digit in the range
|
||||
of `[0-9a-f]`, 4 is the UUID version, and `N` is one of `8`, `9`, `a`, or `b`.
|
||||
And yes, there is a 4 (UUID version 4) and the variants `0x8`, `0x9`, `0xa` and
|
||||
`0xb` in there.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your xz compressed tarball **MUST** contain, **at a minimum**, the following files:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`prog.c`</p>
|
||||
* <p class="leftbar">`Makefile`</p>
|
||||
* <p class="leftbar">`remarks.md`</p>
|
||||
* <p class="leftbar">`.auth.json`</p>
|
||||
* <p class="leftbar">`.info.json`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
`prog.c` is of course your submission program.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** be a **non**-empty file in **[GNU
|
||||
Makefile](https://www.gnu.org/software/make/manual/make.html)** format. See the
|
||||
[Makefile section in the guidelines](next/guidelines.html#makefile),
|
||||
the
|
||||
FAQ on "[submission Makefile](#submission_makefiles)"
|
||||
and the
|
||||
FAQ on "[Makefile compatibility](#make_compatibility)"
|
||||
for help.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `remarks.md` **MUST** be a **non**-empty file in markdown format
|
||||
(`mkiocccentry(1)` only checks the file size but if you do not have any text in
|
||||
it you still risk violating this rule). See also
|
||||
[Rule 18](next/rules.html#rule18) and our
|
||||
FAQ on "[remarks.md](#remarks_md)"
|
||||
and our
|
||||
FAQ on "[markdown](#markdown)"
|
||||
and our [markdown guidelines](markdown.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
See also the [markdown syntax](https://www.markdownguide.org/basic-syntax) guide
|
||||
and the [CommonMark Spec](https://spec.commonmark.org/current/).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.auth.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the author(s) of the submission. It will **ONLY** be looked at if your
|
||||
submission wins but it **MUST** still be valid according to `chkentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.info.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the submission itself. It also **MUST** be valid according to
|
||||
`chkentry(1)`.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
For the complete `mkiocccentry(1)` process, see the
|
||||
FAQ on the "[mkiocccentry process](#mkiocccentry_process).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The tool performs a lot of checks, both directly and indirectly, and if it or
|
||||
any other tool detects **ANY** problem, you are **HIGHLY** encouraged to fix it
|
||||
and try again.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you do use `mkiocccentry(1)` and you run into a problem, you might see the
|
||||
FAQ on "[how to ask a question about the IOCCC rules, guidelines and
|
||||
tools](#questions)".
|
||||
If you believe you have encountered a bug, feel free to open a bug report at the
|
||||
[mkiocccentry repo 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">
|
||||
The xz compressed tarball file **MUST** be <= **3999971** 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) **MUST** be <=
|
||||
**28314624** octets (**27651K**) in size.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See
|
||||
the [guidelines](next/guidelines.html) for more details on this tool.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**IMPORTANT**: Make **SURE** you have the most recent version of the
|
||||
`mkiocccentry` toolkit! Not doing so will put you at a great risk of violating
|
||||
this rule! See the
|
||||
FAQ on "[obtaining the mkiocccentry toolkit](#mkiocccentry)"
|
||||
for more details.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
You are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool to form your
|
||||
submission's xz compressed tarball. See the [guidelines](next/guidelines.html) for
|
||||
more details on this tool and the [mkiocccentry
|
||||
repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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](next/guidelines.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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 <= **38** characters in length.</p>
|
||||
* <p class="leftbar">**NOT** have a leading **`/`**.</p>
|
||||
* <p class="leftbar">**NOT** contain a path component of: **`.`** (that is, with
|
||||
the exception of files generated by `mkiocccentry(1)` itself, it must have
|
||||
**NO** **`.`** an **NO** dot file).</p>
|
||||
* <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
|
||||
`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">
|
||||
The submission tarball created by `mkiocccentry(1)` **MUST** have
|
||||
the additional files that are generated by the `mkiocccentry(1)` tool:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`.auth.json` which contains information about the author or
|
||||
authors (that will only be looked at if the submission wins).</p>
|
||||
* <p class="leftbar">`.info.json` which contains information about the
|
||||
entry.</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `chkentry(1)` tool will validate these two JSON files, and do other checks
|
||||
on your submission directory as well, _prior to_ forming the tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Files and directories in your submission tarball **MUST** be specific
|
||||
permissions and `mkiocccentry(1)` does this for you. In particular: directories
|
||||
**MUST** be `drwxr-xr-x` (i.e. `0755`), the optional files, `try.sh` or
|
||||
`try.alt.sh`, if provided, **MUST** be `-r-xr-xr-x` (i.e. `0555`) and all other
|
||||
files **MUST** be `-r--r--r--` (i.e. `0444`). If the files do not have these
|
||||
permissions, your submission **WILL** be rejected for violating [Rule
|
||||
17](next/rules.html#rule17)! In addition to `mkiocccentry(1)` 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 **error**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you do need different permissions, then see the
|
||||
FAQ on "[file permissions](#file_perms)". Also keep in mind
|
||||
[Rule 4](next/rules.html#rule4), [Rule 5](next/rules.html#rule5) and [Rule 21](next/rules.html#rule21).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `txzchk(1)` tool will also verify file/directory permissions (and many other
|
||||
things) for you and so will `chkentry(1)` (along with validating the JSON files
|
||||
and running semantics checks on them). If these checks fail it is an **error**
|
||||
and `mkiocccentry(1)` will fail. In this case (it fails and you used
|
||||
`mkiocccentry(1)`) it is very **possibly** a bug; please [report it as a bug at
|
||||
the mkiocccentry 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">
|
||||
The tarball filename **MUST** pass `fnamchk(1)`; the tool `txzchk(1)`
|
||||
will run `fnamchk(1)` as part of its algorithm. If you use `mkiocccentry(1)`
|
||||
there should be no problem but if you were to package things manually it is
|
||||
possible there could be a problem and this poses a big risk of violating [Rule
|
||||
17](next/rules.html#rule17).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
|
||||
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, `txzchk(1)` will flag the
|
||||
discrepancy as an error and exit with non-zero.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
These checks **MUST PASS**. If they do not you stand a significant chance of
|
||||
having your submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
</p>
|
||||
|
||||
<div id="max-files">
|
||||
#### Maximum number of files per submission
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
The maximum number of files your submission tarball may contain, not counting
|
||||
the optional files (`prog.alt.c`, `try.sh`, `try.alt.sh`) and the mandatory
|
||||
files (`prog.c`, `Makefile`, `remarks.md` plus the `mkiocccentry(1)` generated
|
||||
files `.auth.json` and `.info.json`), is 31. This is defined in the macro
|
||||
`MAX_EXTRA_FILE_COUNT` in
|
||||
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). See the
|
||||
FAQ on "[how to include additional files](#extra-files)"
|
||||
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 **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. 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
|
||||
itself, then `make clobber` **MUST** remove everything that the extraction
|
||||
created!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Tarballs **MUST** only create files and directories _under_ the submission
|
||||
directory. They may **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">
|
||||
**IMPORTANT REMINDER**: **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">
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
**IMPORTANT**: where [Rule 17](next/rules.html#rule17) and the tools from the latest
|
||||
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
|
||||
conflict, the [IOCCC judges](judges.html) will use their best judgment which
|
||||
is likely to favor [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) code.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This means you should **MAKE SURE** that you use `mkiocccentry(1)` to
|
||||
package your submission; `mkiocccentry(1)` will run the above mentioned tools
|
||||
(that do not act on the tarball) **before** creating the tarball and after the
|
||||
tarball is created it will then verify that the tarball is okay by running
|
||||
`txzchk(1)` on it. If any step fails it is an error and submitting the
|
||||
submission will result in violating this rule.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**MAKE SURE** you use the correct release of the repository; you should do this
|
||||
**AFTER** the contest opens (pull any changes or if you prefer download the
|
||||
repository via the download option at GitHub). See the
|
||||
FAQ on "[obtaining mkiocccentry](#obtaining_mkiocccentry)"
|
||||
for more help on ensuring you do have the most up to date release.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
We recommend that you run `make` and then install the tools (and man pages) via
|
||||
`make install` (as root or using `sudo(1)`) to help you run these tools from
|
||||
your submission's directory (or any other directory). The `make install` will
|
||||
install in `/usr/local`. However, **you do not have** 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 `jparse(3)` library and the `dbg` library and the
|
||||
`dyn_array` library; `chkentry(1)` uses the JSON parser (`jparse`) to validate
|
||||
and parse the [JSON](https://www.json.org/json-en.html) but the other tools use
|
||||
parts of the `jparse` utility functions as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you run into a problem with one or more of these tools, **PLEASE** [report it
|
||||
as a bug at the mkiocccentry issues
|
||||
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E),
|
||||
**making sure to run `bug_report.sh`**. See the [guidelines](next/guidelines.html)
|
||||
for help here and also read our
|
||||
FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)".
|
||||
</p>
|
||||
|
||||
<p class="leftbar">At the risk of stating the obvious: submissions that violate [Rule
|
||||
17](#rule17) **WILL BE REJECTED**, so **BE SURE** to use the latest release of the
|
||||
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
|
||||
your submission's xz compressed tarball. Do **NOT** assume you have the most
|
||||
recent release without pulling or downloading via GitHub and do **MAKE SURE** you
|
||||
do this **AFTER** the [contest status](status.html) has changed to
|
||||
[open](#open).
|
||||
</p>
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
|
||||
@@ -1115,7 +1115,7 @@ do the same 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
|
||||
See <a href="rules.html#rule17">Rule 17</a> and in particular the part about the <a href="../faq.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>!
|
||||
</p>
|
||||
|
||||
+1
-1
@@ -855,7 +855,7 @@ do the same like:
|
||||
|
||||
<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
|
||||
number of files](../faq.html#max-files). If you do not follow these points, you
|
||||
are at a great risk of violating [Rule 17](rules.html#rule17)!
|
||||
</p>
|
||||
|
||||
|
||||
+49
-352
@@ -913,385 +913,82 @@ for details.
|
||||
<div id="rule16">
|
||||
<h2 id="rule-16">Rule 16</h2>
|
||||
</div>
|
||||
<p>You are <strong>STRONGLY</strong> encouraged to submit <strong>a previously unpublished <em>AND</em>
|
||||
original submission</strong>. Submissions that are similar to previous entries are
|
||||
<p>You are <strong>STRONGLY</strong> encouraged to submit an <strong>original submission</strong>.
|
||||
Submissions that are similar to previous entries are
|
||||
discouraged. As we judge anonymously, submissions that have already
|
||||
been published may be disqualified.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule17">
|
||||
<h2 id="rule-17">Rule 17</h2>
|
||||
</div>
|
||||
<h3 id="tldr-rule-17---use-mkiocccentry1">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code></h3>
|
||||
<p class="leftbar">
|
||||
This is a <strong>COMPLEX</strong> rule. <strong>Violating this rule will cause your submission to REJECTED!</strong>
|
||||
To help you avoid such a rejection, you are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool,
|
||||
based on the latest release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>,
|
||||
to form your submission’s xz compressed tarball.
|
||||
Your submission must be in the form of <strong>xz compressed tarball</strong>
|
||||
that <code>mkiocccentry(1)</code> tool would generate. The files, directories,
|
||||
and paths must conform to the limits imposed by <code>mkiocccentry(1)</code>
|
||||
including but not limited to their names, count, path length
|
||||
and directory tree depth.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
|
||||
contains <strong>IMPORTANT</strong> tools and libraries such as:
|
||||
Your <strong>xz compressed tarball</strong> submission file must pass the tests performed by:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>txzchk(1)</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
Your <strong>xz compressed tarball</strong> submission file must pass the tests performed by:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>fnamchk(1)</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The resulting directory produced when your <strong>xz compressed tarball</strong> submission file uncompressed,
|
||||
must pass the pass the checks performed by:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>chkentry(1)</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The resulting <code>prog.c</code> file must pass the <a href="#rule2">Rule 2</a> size checked performed by:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>iocccsize(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>mkiocccentry(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>txzchk(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>fnamchk(1)</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>jparse(1)</code> (and other tools) and <code>jparse(3)</code> (which <code>chkentry(1)</code> uses)
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The above mentioned tools will help you verify that your submission
|
||||
conforms to <a href="#rule17">Rule 17</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Each above mentioned tool has a <code>-h</code> option that provides command line help. For
|
||||
additional details of each tool, see its man page, and in some cases, the <a href="guidelines.html">IOCCC
|
||||
guidelines</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
There is no need to use <code>jparse(1)</code> but the <code>jparse(3)</code> library
|
||||
library will be linked when compiling the tools as they use various functions
|
||||
provided by it, and <code>chkentry</code> uses the JSON parser API as well.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Of course you <strong>may</strong> invoke <code>jparse(1)</code> if you wish to validate a JSON file but
|
||||
the only JSON files you might want to validate for the IOCCC are validated
|
||||
by <code>chkentry(1)</code>, and that is what you should use to make sure you conform to
|
||||
this rule.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The maximum number of <strong>extra files</strong> is 31. See the <a href="#max-files">maximum number of extra
|
||||
files section</a> below for finer details and the
|
||||
FAQ on “<a href="../faq.html#extra-files">including additional files</a>”
|
||||
if you need to include more files than this maximum.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Extra files are defined as files that are not the required files (<code>prog.c</code>,
|
||||
<code>Makefile</code>, <code>remarks.md</code> and the two generated by <code>mkiocccentry(1)</code> <code>.info.json</code>
|
||||
and <code>.auth.json</code>) and files that are also not the optional files (<code>try.sh</code>,
|
||||
<code>prog.alt.c</code> and <code>try.alt.sh</code>).
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
|
||||
<p class="leftbar">
|
||||
<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:
|
||||
<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
|
||||
<a href="https://datatracker.ietf.org/doc/html/rfc9562">RFC 9562</a> for
|
||||
details), and where <em><code>slot_num</code></em> is a single decimal digit integer
|
||||
(i.e., >= <code>0</code> and < <code>9</code>).
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 the variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
<code>0xb</code> in there.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</strong>, the following files:
|
||||
The <code>.auth.json</code> and <code>.info.json</code> must be compatible with what hat <code>mkiocccentry(1)</code> tool
|
||||
would produce as well as pass the tests performed by:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>prog.c</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>Makefile</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>remarks.md</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code>
|
||||
<code>jparse(1)</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<h3 id="tldr-rule-17---use-mkiocccentry1-to-form-your-submission">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code> to form your submission</h3>
|
||||
<p>Let the <code>mkiocccentry(1)</code> tool form your <strong>xz compressed tarball</strong>
|
||||
submission file and don’t try to override override its checks and
|
||||
limits in order to be sure you submission conforms to this rule.</p>
|
||||
<h3 id="warning">Warning</h3>
|
||||
<p>Using command line flags or input prompts to override checks and
|
||||
limits made by the above mentioned tools is <strong>NOT</strong> recommended
|
||||
and may result in your submission being rejected by the <a href="https://submit.ioccc.org">IOCCC
|
||||
submit server</a> and/or the [IOCCC
|
||||
Judges[(../judges.html).</p>
|
||||
<p class="leftbar">
|
||||
<code>prog.c</code> is of course your submission program.
|
||||
See the
|
||||
FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry tool</a>
|
||||
for how to obtain and use the above mentioned tools.
|
||||
</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> 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>”
|
||||
and the
|
||||
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 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
|
||||
FAQ on “<a href="../faq.html#remarks_md">remarks.md</a>”
|
||||
and our
|
||||
FAQ on “<a href="../faq.html#markdown">markdown</a>”
|
||||
and our <a href="../markdown.html">markdown guidelines</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
See also the <a href="https://www.markdownguide.org/basic-syntax">markdown syntax</a> guide
|
||||
and the <a href="https://spec.commonmark.org/current/">CommonMark Spec</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 <=
|
||||
<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
|
||||
the <a href="guidelines.html">guidelines</a> for more details on this tool.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT</strong>: Make <strong>SURE</strong> you have the most recent version of the
|
||||
<code>mkiocccentry</code> toolkit! Not doing so will put you at a great risk of violating
|
||||
this rule! See the
|
||||
FAQ on “<a href="../faq.html#mkiocccentry">obtaining the mkiocccentry toolkit</a>”
|
||||
for more details.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
You are <strong>HIGHLY ENCOURAGED</strong> to use the <code>mkiocccentry(1)</code> tool to form your
|
||||
submission’s xz compressed tarball. See the <a href="guidelines.html">guidelines</a> for
|
||||
more details on this tool and the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
repo</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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
|
||||
<code>mkiocccentry(1)</code> tool or the tools it or any other tool invokes) <strong>MUST</strong>:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
Be <= <strong>38</strong> characters in length.
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> have a leading <strong><code>/</code></strong>.
|
||||
</p></li>
|
||||
<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> 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,
|
||||
<strong>NO</strong> <strong><code>..</code></strong>).
|
||||
</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>mkiocccentry(1)</code>).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> be a directory depth > 4.
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> have a total <strong>path</strong> length > 99 characters.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The submission tarball created by <code>mkiocccentry(1)</code> <strong>MUST</strong> have
|
||||
the additional files that are generated by the <code>mkiocccentry(1)</code> tool:
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code> which contains information about the author or
|
||||
authors (that will only be looked at if the submission wins).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code> which contains information about the
|
||||
entry.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
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
|
||||
permissions and <code>mkiocccentry(1)</code> does this for you. In particular: directories
|
||||
<strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>), the optional files, <code>try.sh</code> or
|
||||
<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>! 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 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">
|
||||
The tarball filename <strong>MUST</strong> pass <code>fnamchk(1)</code>; the tool <code>txzchk(1)</code>
|
||||
will run <code>fnamchk(1)</code> as part of its algorithm. If you use <code>mkiocccentry(1)</code>
|
||||
there should be no problem but if you were to package things manually it is
|
||||
possible there could be a problem and this poses a big risk of violating <a href="#rule17">Rule
|
||||
17</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the
|
||||
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
|
||||
having your submission rejected for violating <a href="#rule17">Rule 17</a>!
|
||||
</p>
|
||||
<div id="max-files">
|
||||
<h4 id="maximum-number-of-files-per-submission">Maximum number of files per submission</h4>
|
||||
</div>
|
||||
<p class="leftbar">
|
||||
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
|
||||
<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
|
||||
FAQ on “<a href="../faq.html#extra-files">how to include additional files</a>”
|
||||
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! <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. 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
|
||||
itself, then <code>make clobber</code> <strong>MUST</strong> remove everything that the extraction
|
||||
created!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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">
|
||||
<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">
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT</strong>: where <a href="#rule17">Rule 17</a> and the tools from the latest
|
||||
release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
|
||||
conflict, the <a href="../judges.html">IOCCC judges</a> will use their best judgment which
|
||||
is likely to favor <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> code.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
This means you should <strong>MAKE SURE</strong> that you use <code>mkiocccentry(1)</code> to
|
||||
package your submission; <code>mkiocccentry(1)</code> will run the above mentioned tools
|
||||
(that do not act on the tarball) <strong>before</strong> creating the tarball and after the
|
||||
tarball is created it will then verify that the tarball is okay by running
|
||||
<code>txzchk(1)</code> on it. If any step fails it is an error and submitting the
|
||||
submission will result in violating this rule.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>MAKE SURE</strong> you use the correct release of the repository; you should do this
|
||||
<strong>AFTER</strong> the contest opens (pull any changes or if you prefer download the
|
||||
repository via the download option at GitHub). See the
|
||||
FAQ on “<a href="../faq.html#obtaining_mkiocccentry">obtaining mkiocccentry</a>”
|
||||
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 (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 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
|
||||
as a bug at the mkiocccentry issues
|
||||
page</a>,
|
||||
<strong>making sure to run <code>bug_report.sh</code></strong>. See the <a href="guidelines.html">guidelines</a>
|
||||
for help here and also read our
|
||||
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
|
||||
<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 do <strong>MAKE SURE</strong> you
|
||||
do this <strong>AFTER</strong> the <a href="../status.html">contest status</a> has changed to
|
||||
<a href="../faq.html#open">open</a>.
|
||||
<strong>IMPORTANT</strong>: See the
|
||||
FAQ on “<a href="../faq.html#rule17">Rule17</a>”
|
||||
for very important details behind this rule.
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule18">
|
||||
|
||||
+54
-375
@@ -683,8 +683,8 @@ Jump to: [top](#)
|
||||
## Rule 16
|
||||
</div>
|
||||
|
||||
You are **STRONGLY** encouraged to submit **a previously unpublished _AND_
|
||||
original submission**. Submissions that are similar to previous entries are
|
||||
You are **STRONGLY** encouraged to submit an **original submission**.
|
||||
Submissions that are similar to previous entries are
|
||||
discouraged. As we judge anonymously, submissions that have already
|
||||
been published may be disqualified.
|
||||
|
||||
@@ -696,392 +696,71 @@ Jump to: [top](#)
|
||||
## Rule 17
|
||||
</div>
|
||||
|
||||
|
||||
### TL;DR Rule 17 - Use `mkiocccentry(1)`
|
||||
|
||||
<p class="leftbar">
|
||||
This is a **COMPLEX** rule. **Violating this rule will cause your submission to REJECTED!**
|
||||
To help you avoid such a rejection, you are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool,
|
||||
based on the latest release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry),
|
||||
to form your submission's xz compressed tarball.
|
||||
Your submission must be in the form of **xz compressed tarball**
|
||||
that `mkiocccentry(1)` tool would generate. The files, directories,
|
||||
and paths must conform to the limits imposed by `mkiocccentry(1)`
|
||||
including but not limited to their names, count, path length
|
||||
and directory tree depth.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
|
||||
contains **IMPORTANT** tools and libraries such as:
|
||||
Your **xz compressed tarball** submission file must pass the tests performed by:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`txzchk(1)`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your **xz compressed tarball** submission file must pass the tests performed by:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`fnamchk(1)`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The resulting directory produced when your **xz compressed tarball** submission file uncompressed,
|
||||
must pass the pass the checks performed by:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`chkentry(1)`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The resulting `prog.c` file must pass the [Rule 2](#rule2) size checked performed by:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`iocccsize(1)`</p>
|
||||
* <p class="leftbar">`mkiocccentry(1)`</p>
|
||||
* <p class="leftbar">`txzchk(1)`</p>
|
||||
* <p class="leftbar">`fnamchk(1)`</p>
|
||||
* <p class="leftbar">`jparse(1)` (and other tools) and `jparse(3)` (which `chkentry(1)` uses)</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The above mentioned tools will help you verify that your submission
|
||||
conforms to [Rule 17](#rule17).
|
||||
The `.auth.json` and `.info.json` must be compatible with what hat `mkiocccentry(1)` tool
|
||||
would produce as well as pass the tests performed by:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`jparse(1)`</p>
|
||||
|
||||
|
||||
### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission
|
||||
|
||||
Let the `mkiocccentry(1)` tool form your **xz compressed tarball**
|
||||
submission file and don't try to override override its checks and
|
||||
limits in order to be sure you submission conforms to this rule.
|
||||
|
||||
### Warning
|
||||
|
||||
Using command line flags or input prompts to override checks and
|
||||
limits made by the above mentioned tools is **NOT** recommended
|
||||
and may result in your submission being rejected by the [IOCCC
|
||||
submit server](https://submit.ioccc.org) and/or the [IOCCC
|
||||
Judges[(../judges.html).
|
||||
|
||||
<p class="leftbar">
|
||||
See the
|
||||
FAQ on the "[mkiocccentry tool](../faq.html#mkiocccentry)
|
||||
for how to obtain and use the above mentioned tools.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Each above mentioned tool has a `-h` option that provides command line help. For
|
||||
additional details of each tool, see its man page, and in some cases, the [IOCCC
|
||||
guidelines](guidelines.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
There is no need to use `jparse(1)` but the `jparse(3)` library
|
||||
library will be linked when compiling the tools as they use various functions
|
||||
provided by it, and `chkentry` uses the JSON parser API as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Of course you **may** invoke `jparse(1)` if you wish to validate a JSON file but
|
||||
the only JSON files you might want to validate for the IOCCC are validated
|
||||
by `chkentry(1)`, and that is what you should use to make sure you conform to
|
||||
this rule.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The maximum number of **extra files** is 31. See the [maximum number of extra
|
||||
files section](#max-files) below for finer details and the
|
||||
FAQ on "[including additional files](../faq.html#extra-files)"
|
||||
if you need to include more files than this maximum.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Extra files are defined as files that are not the required files (`prog.c`,
|
||||
`Makefile`, `remarks.md` and the two generated by `mkiocccentry(1)` `.info.json`
|
||||
and `.auth.json`) and files that are also not the optional files (`try.sh`,
|
||||
`prog.alt.c` and `try.alt.sh`).
|
||||
</p>
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
### Rule 17 - The COMPLEX details
|
||||
|
||||
<p class="leftbar">
|
||||
Each submission **MUST** be in the form of a xz compressed tarball.
|
||||
The xz compressed tarball filename must be of the form:
|
||||
`^submit.username-slot_num.[1-9][0-9]{9,}.txz$`.
|
||||
|
||||
<p class="leftbar">
|
||||
... where _`username`_ is your IOCCC registration username **in the form of a
|
||||
[UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)** (see
|
||||
[RFC 9562](https://datatracker.ietf.org/doc/html/rfc9562) for
|
||||
details), and where _`slot_num`_ is a single decimal digit integer
|
||||
(i.e., >= `0` and < `9`).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
In particular, `username` is in the form of:
|
||||
`xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx` where `'x'` is a hex digit in the range
|
||||
of `[0-9a-f]`, 4 is the UUID version, and `N` is one of `8`, `9`, `a`, or `b`.
|
||||
And yes, there is a 4 (UUID version 4) and the variants `0x8`, `0x9`, `0xa` and
|
||||
`0xb` in there.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your xz compressed tarball **MUST** contain, **at a minimum**, the following files:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`prog.c`</p>
|
||||
* <p class="leftbar">`Makefile`</p>
|
||||
* <p class="leftbar">`remarks.md`</p>
|
||||
* <p class="leftbar">`.auth.json`</p>
|
||||
* <p class="leftbar">`.info.json`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
`prog.c` is of course your submission program.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** be a **non**-empty file in **[GNU
|
||||
Makefile](https://www.gnu.org/software/make/manual/make.html)** format. See the
|
||||
[Makefile section in the guidelines](guidelines.html#makefile),
|
||||
the
|
||||
FAQ on "[submission Makefile](../faq.html#submission_makefiles)"
|
||||
and the
|
||||
FAQ on "[Makefile compatibility](../faq.html#make_compatibility)"
|
||||
for help.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `remarks.md` **MUST** be a **non**-empty file in markdown format
|
||||
(`mkiocccentry(1)` only checks the file size but if you do not have any text in
|
||||
it you still risk violating this rule). See also
|
||||
[Rule 18](#rule18) and our
|
||||
FAQ on "[remarks.md](../faq.html#remarks_md)"
|
||||
and our
|
||||
FAQ on "[markdown](../faq.html#markdown)"
|
||||
and our [markdown guidelines](../markdown.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
See also the [markdown syntax](https://www.markdownguide.org/basic-syntax) guide
|
||||
and the [CommonMark Spec](https://spec.commonmark.org/current/).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.auth.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the author(s) of the submission. It will **ONLY** be looked at if your
|
||||
submission wins but it **MUST** still be valid according to `chkentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.info.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the submission itself. It also **MUST** be valid according to
|
||||
`chkentry(1)`.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
For the complete `mkiocccentry(1)` process, see the
|
||||
FAQ on the "[mkiocccentry process](../faq.html#mkiocccentry_process).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The tool performs a lot of checks, both directly and indirectly, and if it or
|
||||
any other tool detects **ANY** problem, you are **HIGHLY** encouraged to fix it
|
||||
and try again.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you do use `mkiocccentry(1)` and you run into a problem, you might see the
|
||||
FAQ on "[how to ask a question about the IOCCC rules, guidelines and
|
||||
tools](../faq.html#questions)".
|
||||
If you believe you have encountered a bug, feel free to open a bug report at the
|
||||
[mkiocccentry repo 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">
|
||||
The xz compressed tarball file **MUST** be <= **3999971** 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) **MUST** be <=
|
||||
**28314624** octets (**27651K**) in size.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See
|
||||
the [guidelines](guidelines.html) for more details on this tool.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**IMPORTANT**: Make **SURE** you have the most recent version of the
|
||||
`mkiocccentry` toolkit! Not doing so will put you at a great risk of violating
|
||||
this rule! See the
|
||||
FAQ on "[obtaining the mkiocccentry toolkit](../faq.html#mkiocccentry)"
|
||||
for more details.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
You are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool to form your
|
||||
submission's xz compressed tarball. See the [guidelines](guidelines.html) for
|
||||
more details on this tool and the [mkiocccentry
|
||||
repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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">
|
||||
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 <= **38** characters in length.</p>
|
||||
* <p class="leftbar">**NOT** have a leading **`/`**.</p>
|
||||
* <p class="leftbar">**NOT** contain a path component of: **`.`** (that is, with
|
||||
the exception of files generated by `mkiocccentry(1)` itself, it must have
|
||||
**NO** **`.`** an **NO** dot file).</p>
|
||||
* <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
|
||||
`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">
|
||||
The submission tarball created by `mkiocccentry(1)` **MUST** have
|
||||
the additional files that are generated by the `mkiocccentry(1)` tool:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`.auth.json` which contains information about the author or
|
||||
authors (that will only be looked at if the submission wins).</p>
|
||||
* <p class="leftbar">`.info.json` which contains information about the
|
||||
entry.</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `chkentry(1)` tool will validate these two JSON files, and do other checks
|
||||
on your submission directory as well, _prior to_ forming the tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Files and directories in your submission tarball **MUST** be specific
|
||||
permissions and `mkiocccentry(1)` does this for you. In particular: directories
|
||||
**MUST** be `drwxr-xr-x` (i.e. `0755`), the optional files, `try.sh` or
|
||||
`try.alt.sh`, if provided, **MUST** be `-r-xr-xr-x` (i.e. `0555`) and all other
|
||||
files **MUST** be `-r--r--r--` (i.e. `0444`). If the files do not have these
|
||||
permissions, your submission **WILL** be rejected for violating [Rule
|
||||
17](#rule17)! In addition to `mkiocccentry(1)` 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 **error**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you do need different permissions, then see the
|
||||
FAQ on "[file permissions](../faq.html#file_perms)". Also keep in mind
|
||||
[Rule 4](#rule4), [Rule 5](#rule5) and [Rule 21](#rule21).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `txzchk(1)` tool will also verify file/directory permissions (and many other
|
||||
things) for you and so will `chkentry(1)` (along with validating the JSON files
|
||||
and running semantics checks on them). If these checks fail it is an **error**
|
||||
and `mkiocccentry(1)` will fail. In this case (it fails and you used
|
||||
`mkiocccentry(1)`) it is very **possibly** a bug; please [report it as a bug at
|
||||
the mkiocccentry 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">
|
||||
The tarball filename **MUST** pass `fnamchk(1)`; the tool `txzchk(1)`
|
||||
will run `fnamchk(1)` as part of its algorithm. If you use `mkiocccentry(1)`
|
||||
there should be no problem but if you were to package things manually it is
|
||||
possible there could be a problem and this poses a big risk of violating [Rule
|
||||
17](#rule17).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
|
||||
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, `txzchk(1)` will flag the
|
||||
discrepancy as an error and exit with non-zero.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
These checks **MUST PASS**. If they do not you stand a significant chance of
|
||||
having your submission rejected for violating [Rule 17](#rule17)!
|
||||
</p>
|
||||
|
||||
<div id="max-files">
|
||||
#### Maximum number of files per submission
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
The maximum number of files your submission tarball may contain, not counting
|
||||
the optional files (`prog.alt.c`, `try.sh`, `try.alt.sh`) and the mandatory
|
||||
files (`prog.c`, `Makefile`, `remarks.md` plus the `mkiocccentry(1)` generated
|
||||
files `.auth.json` and `.info.json`), is 31. This is defined in the macro
|
||||
`MAX_EXTRA_FILE_COUNT` in
|
||||
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). See the
|
||||
FAQ on "[how to include additional files](../faq.html#extra-files)"
|
||||
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 **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. 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
|
||||
itself, then `make clobber` **MUST** remove everything that the extraction
|
||||
created!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Tarballs **MUST** only create files and directories _under_ the submission
|
||||
directory. They may **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">
|
||||
**IMPORTANT REMINDER**: **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">
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
**IMPORTANT**: where [Rule 17](#rule17) and the tools from the latest
|
||||
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
|
||||
conflict, the [IOCCC judges](../judges.html) will use their best judgment which
|
||||
is likely to favor [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) code.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This means you should **MAKE SURE** that you use `mkiocccentry(1)` to
|
||||
package your submission; `mkiocccentry(1)` will run the above mentioned tools
|
||||
(that do not act on the tarball) **before** creating the tarball and after the
|
||||
tarball is created it will then verify that the tarball is okay by running
|
||||
`txzchk(1)` on it. If any step fails it is an error and submitting the
|
||||
submission will result in violating this rule.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**MAKE SURE** you use the correct release of the repository; you should do this
|
||||
**AFTER** the contest opens (pull any changes or if you prefer download the
|
||||
repository via the download option at GitHub). See the
|
||||
FAQ on "[obtaining mkiocccentry](../faq.html#obtaining_mkiocccentry)"
|
||||
for more help on ensuring you do have the most up to date release.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
We recommend that you run `make` and then install the tools (and man pages) via
|
||||
`make install` (as root or using `sudo(1)`) to help you run these tools from
|
||||
your submission's directory (or any other directory). The `make install` will
|
||||
install in `/usr/local`. However, **you do not have** 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 `jparse(3)` library and the `dbg` library and the
|
||||
`dyn_array` library; `chkentry(1)` uses the JSON parser (`jparse`) to validate
|
||||
and parse the [JSON](https://www.json.org/json-en.html) but the other tools use
|
||||
parts of the `jparse` utility functions as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you run into a problem with one or more of these tools, **PLEASE** [report it
|
||||
as a bug at the mkiocccentry issues
|
||||
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E),
|
||||
**making sure to run `bug_report.sh`**. See the [guidelines](guidelines.html)
|
||||
for help here and also read our
|
||||
FAQ on "[mkiocccentry repo bugs](../faq.html#mkiocccentry_bugs)".
|
||||
</p>
|
||||
|
||||
<p class="leftbar">At the risk of stating the obvious: submissions that violate [Rule
|
||||
17](#rule17) **WILL BE REJECTED**, so **BE SURE** to use the latest release of the
|
||||
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
|
||||
your submission's xz compressed tarball. Do **NOT** assume you have the most
|
||||
recent release without pulling or downloading via GitHub and do **MAKE SURE** you
|
||||
do this **AFTER** the [contest status](../status.html) has changed to
|
||||
[open](../faq.html#open).
|
||||
**IMPORTANT**: See the
|
||||
FAQ on "[Rule17](../faq.html#rule17)"
|
||||
for very important details behind this rule.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -15414,11 +15414,11 @@
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/faq.html</loc>
|
||||
<lastmod>2025-03-01T07:38:50+00:00</lastmod>
|
||||
<lastmod>2025-03-01T09:10:15+00:00</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/faq.md</loc>
|
||||
<lastmod>2025-03-01T07:38:41+00:00</lastmod>
|
||||
<lastmod>2025-03-01T09:10:08+00:00</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/inc/index.html</loc>
|
||||
|
||||
Reference in new issue
Block a user