{"id":21483369,"url":"https://github.com/cybershadow/digger","last_synced_at":"2026-01-04T00:09:47.065Z","repository":{"id":13823110,"uuid":"16519683","full_name":"CyberShadow/Digger","owner":"CyberShadow","description":"A tool to build D and bisect old D versions","archived":false,"fork":false,"pushed_at":"2023-04-13T14:26:44.000Z","size":595,"stargazers_count":57,"open_issues_count":6,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-16T22:52:48.708Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CyberShadow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-04T17:36:08.000Z","updated_at":"2024-07-06T20:49:36.000Z","dependencies_parsed_at":"2023-02-16T09:40:17.015Z","dependency_job_id":null,"html_url":"https://github.com/CyberShadow/Digger","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDigger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDigger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDigger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDigger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberShadow","download_url":"https://codeload.github.com/CyberShadow/Digger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244006303,"owners_count":20382444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T12:46:38.594Z","updated_at":"2026-01-04T00:09:47.039Z","avatar_url":"https://github.com/CyberShadow.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digger [![Build Status](https://travis-ci.org/CyberShadow/Digger.svg?branch=master)](https://travis-ci.org/CyberShadow/Digger) [![AppVeyor](https://ci.appveyor.com/api/projects/status/tm98i6iw931ma3yg/branch/master?svg=true)](https://ci.appveyor.com/project/CyberShadow/digger)\n\nDigger can:\n\n- build and test D from [git](https://github.com/dlang)\n- build older versions of D\n- build D plus forks and pending pull requests\n- bisect D's history to find where regressions are introduced (or bugs fixed)\n\n### Requirements\n\nOn POSIX, Digger needs git, g++, binutils and make. gcc-multilib and g++-multilib or equivalent are required for targeting x86 on x86_64 systems.\n\nOn Windows, Digger will download and unpack everything it needs (Git, DMC, DMD, 7-Zip, WiX, VS2013 and Windows SDK components).\n\n### Get Digger\n\nThe easiest way to obtain and run Digger is through Dub. As Dub is included with DMD, simply run:\n\n    $ dub fetch digger\n    $ dub run digger -- ARGS...\n\nwhere `ARGS...` are the Digger command and arguments (see below).\n\n### Command-line usage\n\n(The command line examples below assume that Digger is installed in a location under `PATH` -\nreplace `digger ...` with `./digger ...` or `dub run digger -- ...` as appropriate.)\n\n##### Building D\n\n    # build latest master branch commit\n    $ digger build\n\n    # build a specific D version\n    $ digger build v2.064.2\n\n    # build for x86-64\n    $ digger build --model=64 v2.064.2\n\n    # build commit from a point in time\n    $ digger build \"@ 3 weeks ago\"\n\n    # build latest 2.065 (release) branch commit\n    $ digger build 2.065\n\n    # build specified branch from a point in time\n    $ digger build \"2.065 @ 3 weeks ago\"\n\n    # build with added pull request\n    $ digger build \"master + dmd#123\"\n\n    # build with added GitHub fork branch\n    $ digger build \"master + Username/dmd/awesome-feature\"\n\n    # build with reverted commit\n    $ digger build \"master + -dmd/0123456789abcdef0123456789abcdef01234567\"\n\n    # build with reverted pull request\n    $ digger build \"master + -dmd#123\"\n\n##### Building D programs\n\n    # Run the last built DMD version\n    $ digger run - -- dmd --help\n\n    # Build and run latest DMD master\n    $ digger run master -- dmd --help\n\n    # Build latest DMD master, and then build and run a D program using it\n    $ digger run master -- dmd -i -run program.d\n\n##### Hacking on D\n\n    # check out git master (or some other version)\n    $ digger checkout\n\n    # build / incrementally rebuild current checkout\n    $ digger rebuild\n\n    # run tests\n    $ digger test\n\nRun `digger` with no arguments for detailed usage help.\n\n##### Installing\n\nDigger does not build all D components - only those that change frequently and depend on one another.\nYou can get a full package by upgrading an installation of a stable DMD release with Digger's build result:\n\n    # upgrade the DMD in your PATH with Digger's result\n    $ digger install\n\nYou can undo this at any time by running:\n\n    $ digger uninstall\n\nSuccessive installs will not clobber the backups created by the first `digger install` invocation,\nso `digger uninstall` will revert to the state from before you first ran `digger install`.\n\nYou can also simultaneously install 32-bit and 64-bit versions of Phobos by first building and installing a 32-bit DMD,\nthen a 64-bit DMD (`--model=64`). `digger uninstall` will revert both actions.\n\nTo upgrade a system install of DMD on POSIX, simply run `digger install` as root, e.g. `sudo digger install`.\n\n`digger install` should be compatible with [DVM](https://github.com/jacob-carlborg/dvm) or any other DMD installation.\n\nInstallation and uninstallation are designed with safety in mind.\nWhen installing, Digger will provide detailed information and ask for confirmation before making any changes\n(you can use the `--dry-run` / `--yes` switches to suppress the prompt).\nUninstallation will refuse to remove files if they were modified since they were installed,\nto prevent accidentally clobbering user work (you can use `--force` to override this).\n\n##### Bisecting\n\nTo bisect D's history to find which pull request introduced a bug, first copy `bisect.ini.sample` to `bisect.ini`, adjust as instructed by the comments, then run:\n\n    $ digger bisect path/to/bisect.ini\n\nIf Digger ends up with a master/stable merge as the bisection result, switch the branches on the starting points accordingly, e.g.:\n\n- If you specified `good=v2.080.0` and `bad=v2.081.0`, try `good=master@v2.080.0` and `bad=master@v2.081.0`\n- If you specified `good=@2018-01-01` and `bad=@2019-01-01`, try `good=stable@2018-01-01` and `bad=stable@2019-01-01`\n- Note that the master/stable branch-offs/merges do not happen at the same time as when releases are tagged,\n  so you may need to increase the bisection range accordingly. See [DIP75](https://wiki.dlang.org/DIP75) for details.\n\n### Configuration\n\nYou can optionally configure a few settings using a configuration file.\nTo do so, copy `digger.ini.sample` to `digger.ini` and adjust as instructed by the comments.\n\n### Building\n\n    $ git clone --recursive https://github.com/CyberShadow/Digger\n    $ cd Digger\n    $ rdmd --build-only digger\n\n* If you get a link error, you may need to add `-allinst` or `-debug` due to [a DMD bug](https://github.com/CyberShadow/Digger/issues/37).\n\n* A [dub](https://code.dlang.org/) definition is also included.\n\n* On Windows, you may see:\n\n      Warning 2: File Not Found version.lib\n\n  This is a benign warning.\n\n### Hacking\n\n##### Backend\n\nThe code which builds D and manages the git repository is located in the [ae library](https://github.com/CyberShadow/ae)\n(`ae.sys.d` package), so as to be reusable.\n\nCurrently, the bulk of the code is in [`ae.sys.d.manager`](https://github.com/CyberShadow/ae/blob/master/sys/d/manager.d).\n\n`ae.sys.d.manager` clones [a meta-repository on BitBucket](https://bitbucket.org/cybershadow/d), which contains the major D components as submodules.\nThe meta-repository is created and maintained by another program, [D-dot-git](https://github.com/CyberShadow/D-dot-git).\n\nThe build requirements are fulfilled by the [`ae.sys.install`](https://github.com/CyberShadow/ae/tree/master/sys/install) package.\n\n##### Frontend\n\nDigger is the frontend to the above library code, implementing configuration, bisecting, etc.\n\nModule list is as follows:\n\n- `config` - configuration\n- `repo` - customized D repository management, revision parsing\n- `bisect` - history bisection\n- `custom` - custom build management\n- `install` - installation\n- `digger` - entry point and command-line UI\n- `common` - shared helpers\n\n### Remarks\n\n##### Wine\n\nDigger should work fine under Wine. For 64-bit builds, you must first run `winetricks vcrun2013`.\nDigger cannot do this automatically as this must be done from outside Wine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybershadow%2Fdigger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcybershadow%2Fdigger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybershadow%2Fdigger/lists"}