I'm currently working on getting dub package files for Druntime and phobos.
It has been reasonably easy getting code to compile atleast for 2.066 branch.

Problems:
- Druntime contains assembly + c files requiring external compilers.
To play nicely with dub repos and having them dependencies, they could be stored in git like I have it right now. But the real problem here is that atleast one of these assembly files can't even be compiled by pretty much anyone but Walter.
- Phobos has zlib which is in the same situation as druntime for c files.
We seriously should consider rewriting or porting that.
*wink* GSOC.
That would only leave curl but that's manual anyway.
- Documentation building.
This is separated out into dlang.org and druntime/phobos.
  - Dlang.org repo contains the base website and formatting.
Dub doesn't really understand past sourceLibrary that certain files are ddoc macro files and should include them in all packages that depend upon it. That is okay. The problem is both the formatting but also images/css/js are required as part of this. - With druntime/phobos they merely need resources from dlang.org. Which are detailed above.
  - Dlang.org IS A MESS
I'm not joking here. Before tackling getting a dub file for e.g. html output I moved everything into a new folder. - std.c.linux and std.c.osx need guard version statements. Other then that only issue is std.metastrings doesn't compile so is excluded.

TLDR: Turning druntime/phobos into dub repos are easy. Getting documentation to play nicely does not.



For reference here are the files:
Druntime's dub.json:
{
    "name": "druntime",
"description": "This is DRuntime. It is the low-level runtime library backing the D programming language.",
    "homepage": "http://dlang.org";,
    "authors": ["Walter Bright", "Andrei Alexandrescu"],
    "license": "Boost",

    "targetType": "none",
    "targetPath": "bin",
    "sourcePaths": [],
    "dependencies": {
        "druntime:rt": "*",
        "druntime:core": "*",
        "druntime:gc": "*",
        "druntime:etc": "*"
    },

    "subPackages": [
        {
            "name": "gcstub",
            "targetType": "staticLibrary",
            "targetPath": "bin",
            "sourcePaths": [],
            "sourceFiles": ["src/gcstub/gc.d"]
        },
        {
            "name": "rt",
            "targetType": "staticLibrary",
            "targetPath": "bin",
            "sourcePaths": ["src/rt"],
            "sourceFiles": ["src/object_.d"],
            "sourceFiles-windows": ["bin/rt_minit.obj"],
            "sourceFiles-posix": ["bin/rt_bss_section.obj"]
        },
        {
            "name": "gc",
            "targetType": "staticLibrary",
            "targetPath": "bin",
            "sourcePaths": ["src/gc"]
        },
        {
            "name": "core",
            "targetType": "staticLibrary",
            "targetPath": "bin",
            "sourcePaths": ["src/core"],
            "sourceFiles-windows": ["bin/stdc_errno_c.obj"],
"sourceFiles-posix": ["bin/stdc_errno_c.obj", "bin/core_threadasm.obj"]
        },
        {
            "name": "etc",
            "targetType": "staticLibrary",
            "targetPath": "bin",
            "sourcePaths": ["src/etc"]
        }
    ]
}

Phobos's dub.json:
{
    "name": "phobos",
"description": "Phobos is the standard library that comes with the D Programming Language Compiler.",
    "homepage": "http://dlang.org";,
    "authors": ["Walter Bright", "Andrei Alexandrescu"],
    "license": "Boost",

    "targetPath": "bin",
    "sourcePaths": ["std", "etc"],
    "excludedSourceFiles": ["std/metastrings.d"],
    "sourceFiles-windows-x86": ["bin/zlib.lib"],
    "sourceFiles-windows-x86_64": ["bin/zlib64.lib"],
    "sourceFiles-osx": ["bin/zlib_osx.a"],
    "sourceFiles-linux": ["bin/zlib_linux.a"],
    "dependencies": {
        "druntime": "*"
    },

    "configurations": [
        {
            "name": "staticLibrary",
            "targetType": "staticLibrary"
        },
        {
            "name": "dynamicLibrary",
            "targetType": "dynamicLibrary",
            "dflags": ["-main"]
        }
    ]
}

This is not about debating who should be listed as authors FYI.

Reply via email to