{
    "content": [
        {
            "type": "text",
            "text": "# debrepro (man)\n\n## NAME\n\ndebrepro - reproducibility tester for Debian packages\n\n## SYNOPSIS\n\ndebrepro [OPTIONS] [SOURCEDIR]\n\n## DESCRIPTION\n\ndebrepro will build a given source directory twice, with a set of variations between the\nfirst and the second build, and compare the produced binary packages. If diffoscope is\ninstalled, it is used to compare non-matching binaries. If disorderfs is installed, it is\nused during the build to inject non-determinism in filesystem listing operations.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **OUTPUT DIRECTORY**\n- **SUPPORTED VARIATIONS** (7 subsections)\n- **OPTIONS** (1 subsections)\n- **EXIT STATUS**\n- **SEE ALSO**\n- **AUTHOR**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "debrepro",
        "section": "",
        "mode": "man",
        "summary": "debrepro - reproducibility tester for Debian packages",
        "synopsis": "debrepro [OPTIONS] [SOURCEDIR]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [
            {
                "flag": "-h",
                "long": "--help",
                "arg": null,
                "description": "Display this help message and exit."
            }
        ],
        "examples": [],
        "see_also": [
            {
                "name": "timeout",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/timeout/1/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "OUTPUT DIRECTORY",
                "lines": 20,
                "subsections": []
            },
            {
                "name": "SUPPORTED VARIATIONS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "user",
                        "lines": 3
                    },
                    {
                        "name": "path",
                        "lines": 3
                    },
                    {
                        "name": "umask",
                        "lines": 2
                    },
                    {
                        "name": "locale",
                        "lines": 2
                    },
                    {
                        "name": "timezone",
                        "lines": 2
                    },
                    {
                        "name": "filesystem-ordering",
                        "lines": 4
                    },
                    {
                        "name": "time",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "OPTIONS",
                "lines": 19,
                "subsections": [
                    {
                        "name": "-h, --help",
                        "lines": 2,
                        "flag": "-h",
                        "long": "--help"
                    }
                ]
            },
            {
                "name": "EXIT STATUS",
                "lines": 12,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 5,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "debrepro - reproducibility tester for Debian packages\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "debrepro [OPTIONS] [SOURCEDIR]\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "debrepro will build a given source directory twice, with a set of variations between the\nfirst and the second build, and compare the produced binary packages. If diffoscope is\ninstalled, it is used to compare non-matching binaries. If disorderfs is installed, it is\nused during the build to inject non-determinism in filesystem listing operations.\n\nSOURCEDIR must be a directory containing an unpacked Debian source package. If SOURCEDIR is\nomitted, the current directory is assumed.\n",
                "subsections": []
            },
            "OUTPUT DIRECTORY": {
                "content": "At the very end of a build, debrepro will inform the location of the output directory where\nthe build artifacts can be found. In that directory, you will find:\n\n$OUTPUTDIR/first\nContains the results of the first build, including a copy of the source tree, and the\nresulting binary packages.\n\n$OUTPUTDIR/first/build.sh\nContains the exact build script that was used in the first build.\n\n$OUTPUTDIR/second\nContains the results of the second build, including a copy of the source tree, and the\nresulting binary packages.\n\n$OUTPUTDIR/second/build.sh\nContains the exact build script that was used in the second build.\n\nTaking a diff(1) between $OUTPUTDIR/first/build.sh and $OUTPUTDIR/second/build.sh is an\nexcellent way of figuring out exactly what changed between the two builds.\n",
                "subsections": []
            },
            "SUPPORTED VARIATIONS": {
                "content": "",
                "subsections": [
                    {
                        "name": "user",
                        "content": "The $USER environment variable will contain different values between the first and second\nbuilds.\n"
                    },
                    {
                        "name": "path",
                        "content": "During the second build, a fake, non-existing directory will be appended to the $PATH\nenvironment variable.\n"
                    },
                    {
                        "name": "umask",
                        "content": "The builds will use different umask settings.\n"
                    },
                    {
                        "name": "locale",
                        "content": "Both $LCALL and $LANG will be different across the two builds.\n"
                    },
                    {
                        "name": "timezone",
                        "content": "$TZ will be different across builds.\n"
                    },
                    {
                        "name": "filesystem-ordering",
                        "content": "If disorderfs is installed, both builds will be done under a disorderfs overlay\ndirectory. This will cause filesystem listing operations to be return items in a non-\ndeterministic order.\n"
                    },
                    {
                        "name": "time",
                        "content": "The second build will be executed 213 days, 7 hours and 13 minutes in the future with\nregards to the current time (using faketime(1)).\n"
                    }
                ]
            },
            "OPTIONS": {
                "content": "-s VARIATION, --skip VARIATION\nDon't perform the named VARIATION. Variation names are the ones used in their description\nin section SUPPORTED VARIATIONS.\n\n-b COMMAND, --before-second-build COMMAND\nRun COMMAND before performing the second build. This can be used for example to apply a\npatch to a source tree for the second build, and check whether (or how) the resulting\nbinaries are affected.\n\nExamples:\n\n$ debrepro --before-second-build \"git checkout branch-with-changes\"\n\n$ debrepro --before-second-build \"patch -p1 < /path/to/patch\"\n\n-t TIME, --timeout TIME\nApply a timeout to all builds. TIME must be a time specification compatible with GNU\ntimeout(1).\n",
                "subsections": [
                    {
                        "name": "-h, --help",
                        "content": "Display this help message and exit.\n",
                        "flag": "-h",
                        "long": "--help"
                    }
                ]
            },
            "EXIT STATUS": {
                "content": "0   Package is reproducible.\n\nReproducible here means that the two builds produced the exactly the same binaries, under\nthe set of variations that debrepro tests. Other sources of non-determinism in builds\nthat are not yet tested might still affect builds in the wild.\n\n1   Package is not reproducible.\n\n2   The given input is not a valid Debian source package.\n\n3   Required programs are missing.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "diffoscope (1), disorderfs (1), timeout(1)\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "Antonio Terceiro <terceiro@debian.org>.\n\n\n\nDebian Utilities                             2026-03-04                                  DEBREPRO(1)",
                "subsections": []
            }
        }
    }
}