diff --git a/faq.html b/faq.html index 6ab8bbfd6..b6a46000b 100644 --- a/faq.html +++ b/faq.html @@ -453,6 +453,7 @@
prog.c, Makefile, remarks.md) is 3
This file does NOT need to pass the txzchk(1) tests; only your submission
tarball needs to pass these tests.
Please pay careful attention to Rule 17 and in -particular the part about the maximum number of files per +particular the part about the maximum number of files per submission, 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.
If you do use such tools, PLEASE mention which tools you used as well
as how you them to help write you submission in your remarks.md file.
Jump to: top
+The following are the details behind Rule 17.
+mkiocccentry(1)
+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,
+to form your submission’s xz compressed tarball.
+
+The mkiocccentry repo +contains IMPORTANT tools and libraries such as: +
+
+chkentry(1)
+
+iocccsize(1)
+
+mkiocccentry(1)
+
+txzchk(1)
+
+fnamchk(1)
+
+jparse(1) (and other tools) and jparse(3) (which chkentry(1) uses)
+
+The above mentioned tools will help you verify that your submission +conforms to Rule 17. +
+
+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.
+
+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.
+
+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.
+
+The maximum number of extra files is 31. See the maximum number of extra +files section below for finer details and the +FAQ on “including additional files” +if you need to include more files than this maximum. +
+
+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).
+
Jump to: top
++
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$.
+… where username is your IOCCC registration username in the form of a
+UUID (see
+RFC 9562 for
+details), and where slot_num is a single decimal digit integer
+(i.e., >= 0 and < 9).
+
+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.
+
+Your xz compressed tarball MUST contain, at a minimum, the following files: +
+
+prog.c
+
+Makefile
+
+remarks.md
+
+.auth.json
+
+.info.json
+
+prog.c is of course your submission program.
+
+The Makefile MUST be a non-empty file in GNU
+Makefile format. See the
+Makefile section in the guidelines,
+the
+FAQ on “submission Makefile”
+and the
+FAQ on “Makefile compatibility”
+for help.
+
+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 and our
+FAQ on “remarks.md”
+and our
+FAQ on “markdown”
+and our markdown guidelines.
+
+See also the markdown syntax guide +and the CommonMark Spec. +
+
+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).
+
+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).
+
+For the complete mkiocccentry(1) process, see the
+FAQ on the “mkiocccentry process.
+
+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. +
+
+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”.
+If you believe you have encountered a bug, feel free to open a bug report at the
+mkiocccentry repo issues
+page.
+
+The xz compressed tarball file MUST be <= 3999971 octets in size. +
++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. +
+
+Your submission’s xz compressed tarball MUST pass the txzchk(1) test. See
+the guidelines for more details on this tool.
+
+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”
+for more details.
+
+You are HIGHLY ENCOURAGED to use the mkiocccentry(1) tool to form your
+submission’s xz compressed tarball. See the guidelines for
+more details on this tool and the mkiocccentry
+repo.
+
+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.
+
+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:
+
+Be <= 38 characters in length. +
+NOT have a leading /.
+
+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).
+
+NOT contain a path component of: .. (that is,
+NO ..).
+
+Match the regular expression
+^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$ (again, excluding files generated by
+mkiocccentry(1)).
+
+NOT be a directory depth > 4. +
+NOT have a total path length > 99 characters. +
+The submission tarball created by mkiocccentry(1) MUST have
+the additional files that are generated by the mkiocccentry(1) tool:
+
+.auth.json which contains information about the author or
+authors (that will only be looked at if the submission wins).
+
+.info.json which contains information about the
+entry.
+
+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.
+
+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! 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.
+
+If you do need different permissions, then see the +FAQ on “file permissions”. Also keep in mind +Rule 4, Rule 5 and Rule 21. +
+
+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.
+
+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.
+
+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.
+
+These checks MUST PASS. If they do not you stand a significant chance of +having your submission rejected for violating Rule 17! +
+
+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
+in the mkiocccentry repo. See the
+FAQ on “how to include additional files”
+if you need to include more files.
+
+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.
+
+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!
+
+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.
+
+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:
+
tar --format=v7 -cJf foo.txz directory
++IMPORTANT: where Rule 17 and the tools from the latest +release of the mkiocccentry repo +conflict, the IOCCC judges will use their best judgment which +is likely to favor mkiocccentry repo code. +
+
+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.
+
+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” +for more help on ensuring you do have the most up to date release. +
+
+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.
+
+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 but the other tools use
+parts of the jparse utility functions as well.
+
+If you run into a problem with one or more of these tools, PLEASE report it
+as a bug at the mkiocccentry issues
+page,
+making sure to run bug_report.sh. See the guidelines
+for help here and also read our
+FAQ on “mkiocccentry repo bugs”.
+
+At the risk of stating the obvious: submissions that violate Rule +17 WILL BE REJECTED, so BE SURE to use the latest release of the +mkiocccentry repo, 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 has changed to +open. +
+Jump to: top
+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. +
+ ++The [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) +contains **IMPORTANT** tools and libraries such as: +
+ +*`chkentry(1)`
+*`iocccsize(1)`
+*`mkiocccentry(1)`
+*`txzchk(1)`
+*`fnamchk(1)`
+*`jparse(1)` (and other tools) and `jparse(3)` (which `chkentry(1)` uses)
+ ++The above mentioned tools will help you verify that your submission +conforms to [Rule 17](next/rules.html#rule17). +
+ ++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). +
+ ++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. +
+ ++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. +
+ ++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. +
+ ++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`). +
+ +Jump to: [top](#) + + +### Rule 17 - The COMPLEX details + ++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$`. + +
+... 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`). +
+ ++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. +
+ ++Your xz compressed tarball **MUST** contain, **at a minimum**, the following files: +
+ +*`prog.c`
+*`Makefile`
+*`remarks.md`
+*`.auth.json`
+*`.info.json`
+ ++`prog.c` is of course your submission program. +
+ ++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. +
+ ++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). +
+ ++See also the [markdown syntax](https://www.markdownguide.org/basic-syntax) guide +and the [CommonMark Spec](https://spec.commonmark.org/current/). +
+ ++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)`. +
+ ++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)`. +
+ + ++For the complete `mkiocccentry(1)` process, see the +FAQ on the "[mkiocccentry process](#mkiocccentry_process). +
+ ++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. +
+ ++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). +
+ ++The xz compressed tarball file **MUST** be <= **3999971** octets in size. +
+ ++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. +
+ ++Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See +the [guidelines](next/guidelines.html) for more details on this tool. +
+ ++**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. +
+ + ++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). +
+ ++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). +
+ ++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**: +
+ +*Be <= **38** characters in length.
+***NOT** have a leading **`/`**.
+***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).
+***NOT** contain a path component of: **`..`** (that is, +**NO** **`..`**).
+*Match the regular expression +`^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by +`mkiocccentry(1)`).
+***NOT** be a directory depth > 4.
+***NOT** have a total **path** length > 99 characters.
+ ++The submission tarball created by `mkiocccentry(1)` **MUST** have +the additional files that are generated by the `mkiocccentry(1)` tool: +
+ +*`.auth.json` which contains information about the author or +authors (that will only be looked at if the submission wins).
+*`.info.json` which contains information about the +entry.
+ ++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. +
+ ++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**. +
+ ++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). +
+ ++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). +
+ ++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). +
+ ++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. +
+ ++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)! +
+ ++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. +
+ ++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. +
+ ++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! +
+ ++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. +
+ ++**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: +
+ +``` + tar --format=v7 -cJf foo.txz directory +``` + ++**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. +
+ ++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. +
+ ++**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. +
+ ++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. +
+ ++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. +
+ ++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)". +
+ +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). +
+ + +Jump to: [top](#) + + tar --format=v7 -cJf foo.txz directory
-See Rule 17 and in particular the part about the maximum +See Rule 17 and in particular the part about the maximum number of files. If you do not follow these points, you are at a great risk of violating Rule 17!
diff --git a/next/guidelines.md b/next/guidelines.md index 668c49ffe..06c95d250 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -855,7 +855,7 @@ do the same like: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)!
diff --git a/next/rules.html b/next/rules.html index 6db1556c3..845467a3b 100644 --- a/next/rules.html +++ b/next/rules.html @@ -913,385 +913,82 @@ for details.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.
Jump to: top
mkiocccentry(1)
-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,
-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.
-The mkiocccentry repo -contains IMPORTANT tools and libraries such as: +Your xz compressed tarball submission file must pass the tests performed by: +
+
+txzchk(1)
+
+Your xz compressed tarball submission file must pass the tests performed by: +
+
+fnamchk(1)
+
+The resulting directory produced when your xz compressed tarball submission file uncompressed, +must pass the pass the checks performed by:
chkentry(1)
+The resulting prog.c file must pass the Rule 2 size checked performed by:
+
iocccsize(1)
-mkiocccentry(1)
-
-txzchk(1)
-
-fnamchk(1)
-
-jparse(1) (and other tools) and jparse(3) (which chkentry(1) uses)
-
-The above mentioned tools will help you verify that your submission -conforms to Rule 17. -
-
-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.
-
-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.
-
-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.
-
-The maximum number of extra files is 31. See the maximum number of extra -files section below for finer details and the -FAQ on “including additional files” -if you need to include more files than this maximum. -
-
-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).
-
Jump to: top
--
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$.
-… where username is your IOCCC registration username in the form of a
-UUID (see
-RFC 9562 for
-details), and where slot_num is a single decimal digit integer
-(i.e., >= 0 and < 9).
-
-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.
-
-Your xz compressed tarball MUST contain, at a minimum, the following files:
+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:
-prog.c
-
-Makefile
-
-remarks.md
-
-.auth.json
-
-.info.json
+jparse(1)
mkiocccentry(1) to form your submissionLet 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.
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 and/or the [IOCCC +Judges[(../judges.html).
-prog.c is of course your submission program.
+See the
+FAQ on the “mkiocccentry tool
+for how to obtain and use the above mentioned tools.
-The Makefile MUST be a non-empty file in GNU
-Makefile format. See the
-Makefile section in the guidelines,
-the
-FAQ on “submission Makefile”
-and the
-FAQ on “Makefile compatibility”
-for help.
-
-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 and our
-FAQ on “remarks.md”
-and our
-FAQ on “markdown”
-and our markdown guidelines.
-
-See also the markdown syntax guide -and the CommonMark Spec. -
-
-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).
-
-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).
-
-For the complete mkiocccentry(1) process, see the
-FAQ on the “mkiocccentry process.
-
-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. -
-
-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”.
-If you believe you have encountered a bug, feel free to open a bug report at the
-mkiocccentry repo issues
-page.
-
-The xz compressed tarball file MUST be <= 3999971 octets in size. -
--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. -
-
-Your submission’s xz compressed tarball MUST pass the txzchk(1) test. See
-the guidelines for more details on this tool.
-
-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”
-for more details.
-
-You are HIGHLY ENCOURAGED to use the mkiocccentry(1) tool to form your
-submission’s xz compressed tarball. See the guidelines for
-more details on this tool and the mkiocccentry
-repo.
-
-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.
-
-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:
-
-Be <= 38 characters in length. -
-NOT have a leading /.
-
-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).
-
-NOT contain a path component of: .. (that is,
-NO ..).
-
-Match the regular expression
-^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$ (again, excluding files generated by
-mkiocccentry(1)).
-
-NOT be a directory depth > 4. -
-NOT have a total path length > 99 characters. -
-The submission tarball created by mkiocccentry(1) MUST have
-the additional files that are generated by the mkiocccentry(1) tool:
-
-.auth.json which contains information about the author or
-authors (that will only be looked at if the submission wins).
-
-.info.json which contains information about the
-entry.
-
-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.
-
-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! 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.
-
-If you do need different permissions, then see the -FAQ on “file permissions”. Also keep in mind -Rule 4, Rule 5 and Rule 21. -
-
-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.
-
-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.
-
-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.
-
-These checks MUST PASS. If they do not you stand a significant chance of -having your submission rejected for violating Rule 17! -
-
-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
-in the mkiocccentry repo. See the
-FAQ on “how to include additional files”
-if you need to include more files.
-
-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.
-
-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!
-
-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.
-
-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:
-
tar --format=v7 -cJf foo.txz directory
--IMPORTANT: where Rule 17 and the tools from the latest -release of the mkiocccentry repo -conflict, the IOCCC judges will use their best judgment which -is likely to favor mkiocccentry repo code. -
-
-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.
-
-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” -for more help on ensuring you do have the most up to date release. -
-
-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.
-
-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 but the other tools use
-parts of the jparse utility functions as well.
-
-If you run into a problem with one or more of these tools, PLEASE report it
-as a bug at the mkiocccentry issues
-page,
-making sure to run bug_report.sh. See the guidelines
-for help here and also read our
-FAQ on “mkiocccentry repo bugs”.
-
-At the risk of stating the obvious: submissions that violate Rule -17 WILL BE REJECTED, so BE SURE to use the latest release of the -mkiocccentry repo, 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 has changed to -open. +IMPORTANT: See the +FAQ on “Rule17” +for very important details behind this rule.
Jump to: top
-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.
-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: +
+ +*`txzchk(1)`
+ ++Your **xz compressed tarball** submission file must pass the tests performed by: +
+ +*`fnamchk(1)`
+ ++The resulting directory produced when your **xz compressed tarball** submission file uncompressed, +must pass the pass the checks performed by:
*`chkentry(1)`
+ ++The resulting `prog.c` file must pass the [Rule 2](#rule2) size checked performed by: +
+ *`iocccsize(1)`
-*`mkiocccentry(1)`
-*`txzchk(1)`
-*`fnamchk(1)`
-*`jparse(1)` (and other tools) and `jparse(3)` (which `chkentry(1)` uses)
-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: +
+ +*`jparse(1)`
+ + +### 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). + ++See the +FAQ on the "[mkiocccentry tool](../faq.html#mkiocccentry) +for how to obtain and use the above mentioned tools.
-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). -
- --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. -
- --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. -
- --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. -
- --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`). -
- -Jump to: [top](#) - - -### Rule 17 - The COMPLEX details - --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$`. - -
-... 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`). -
- --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. -
- --Your xz compressed tarball **MUST** contain, **at a minimum**, the following files: -
- -*`prog.c`
-*`Makefile`
-*`remarks.md`
-*`.auth.json`
-*`.info.json`
- --`prog.c` is of course your submission program. -
- --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. -
- --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). -
- --See also the [markdown syntax](https://www.markdownguide.org/basic-syntax) guide -and the [CommonMark Spec](https://spec.commonmark.org/current/). -
- --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)`. -
- --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)`. -
- - --For the complete `mkiocccentry(1)` process, see the -FAQ on the "[mkiocccentry process](../faq.html#mkiocccentry_process). -
- --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. -
- --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). -
- --The xz compressed tarball file **MUST** be <= **3999971** octets in size. -
- --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. -
- --Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See -the [guidelines](guidelines.html) for more details on this tool. -
- --**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. -
- - --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). -
- --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). -
- --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**: -
- -*Be <= **38** characters in length.
-***NOT** have a leading **`/`**.
-***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).
-***NOT** contain a path component of: **`..`** (that is, -**NO** **`..`**).
-*Match the regular expression -`^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by -`mkiocccentry(1)`).
-***NOT** be a directory depth > 4.
-***NOT** have a total **path** length > 99 characters.
- --The submission tarball created by `mkiocccentry(1)` **MUST** have -the additional files that are generated by the `mkiocccentry(1)` tool: -
- -*`.auth.json` which contains information about the author or -authors (that will only be looked at if the submission wins).
-*`.info.json` which contains information about the -entry.
- --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. -
- --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**. -
- --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). -
- --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). -
- --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). -
- --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. -
- --These checks **MUST PASS**. If they do not you stand a significant chance of -having your submission rejected for violating [Rule 17](#rule17)! -
- --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. -
- --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. -
- --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! -
- --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. -
- --**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: -
- -``` - tar --format=v7 -cJf foo.txz directory -``` - --**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. -
- --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. -
- --**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. -
- --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. -
- --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. -
- --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)". -
- -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.
diff --git a/sitemap.xml b/sitemap.xml index dcd7982b5..072da15d6 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -15414,11 +15414,11 @@