Git Product home page Git Product logo

dub-registry's Introduction

DUB registry

vibe.d logo Online registry for dub packages, see http://code.dlang.org/.

Deploy

How to build & run locally

Requirements:

  • OpenSSL
  • MongoDB
dub

Running as a mirror

dub -- --mirror=https://code.dlang.org

GitHub/GitLab API

By default the GitHub/GitLab update cron job will use anonymous authentication on your local machine. As GitHub's API without authentication is quite rate-limited, you probably want to use authenticated API requests. You can do so by creating a settings.json in the root folder of the dub-registry and adding credentials for the needed APIs:

{
	"github-auth": "<github-personal-access-token from https://github.com/settings/tokens>",
	"gitlab-url": "https://gitlab.com/",
	"gitlab-auth": "<gitlab-api-token from https://gitlab.com/-/profile/personal_access_tokens>",
	"bitbucket-user": "<your-fancy-user-name>",
	"bitbucket-password": "<your-fancy-password>"
}

It's recommended to create a separate account for the DUB registry GitHub authentication. Equally, if no GitLab packages are used in your local repository, no GitLab authentication is needed.

It's absolutely recommended to create a personal access token without any extra permissions for your GitHub account instead of entering your password plain text into the settings file. You can generate an access token at https://github.com/settings/tokens (Settings -> Developer Settings -> Personal access tokens)

SECURITY NOTICE

Development versions prior to 2.3.0 were leaking the GitLab private token in error messages shown to the user. Please make sure to use the latest version along with a freshly generated token.

Running without the cron job

For local development it's often useful to disable the cron job, you can do so with the --no-monitoring flag:

dub -- --no-monitoring

Importing a one-time snapshot from the registry

You can download a dump of all packages and import it into your local registry for development:

curl https://code.dlang.org/api/packages/dump > mirror.json
dub -- --mirror=mirror.json

Starting the registry with mirror.json will import all packages within the JSON file. Once all packages have been imported, you can start the registry as you normally would:

dub

And you should notice that it now contains all packages which are listed on code.dlang.org

Note that --mirror=mirror.json and --mirror=https://code.dlang.org are very similar and the mirror.json is only preferred for local development because it allows to easily nuke the entire mongo database and re-initialize it without needing any connection to the internet.

Deploy your private dub-registry with Docker

The dlangcommunity/dub-registry Docker image is available for an easy setup:

export DUB_REGISTRY_HOME="$PWD"
docker run --rm -ti -p 9095:9095 -v $DUB_REGISTRY_HOME:/bitnami -v $DUB_REGISTRY_HOME:/dub dlangcommunity/dub-registry

This will run both mongodb and dub-registry while persisting the database in the $DUB_REGISTRY_HOME location. The registry is accessible at http://127.0.0.1:9095

To run it as a daemon and make it auto-restart use:

docker run -d --restart=always -ti -p 9095:9095 -v $DUB_REGISTRY_HOME:/bitnami -v $DUB_REGISTRY_HOME:/dub dlangcommunity/dub-registry

The registry can be configured by adding the settings.json file in $DUB_REGISTRY_HOME folder.

Staging server

An auto-deployed version of master can be found at https://dub-registry-staging.herokuapp.com.

dub-registry's People

Contributors

andre2007 avatar bausshf avatar brad-anderson avatar coldencullen avatar dlang-bot avatar flying-toast avatar gedaiu avatar geod24 avatar gmueckl avatar ibuclaw avatar kas-luthor avatar kripth avatar kubo39 avatar ljmf00 avatar majiang avatar martinnowak avatar mdondorff avatar p0nce avatar pxlbuzzard avatar reklatsmasters avatar rjframe avatar s-ludwig avatar sarneaud avatar sumo avatar thewilsonator avatar vitalka200 avatar vnayar avatar webfreak001 avatar wilzbach avatar yharuhi39 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dub-registry's Issues

web api

Would it be possible to add a simple web api to retrieve the packages in the repository with a get request + query string? I'd like to integrate dub with a graphical tool i'm writing, allowing to browse all packages (currently I'm scraping the website). The query could return a json array of all package.json's or similar.

Can't change repo URL

There are a number of reasons why a repo URL could change, so it should be possible to edit that field in the my packages configuration.
Also if the dub registry permanently fails to locate a package, it should notify the owner via e-mail.

Category select should use optgroups

I think the category select should use optgroups instead of the putting |_ in front of every option. I cannot "search" in the select box as it is now.

Provide an example of the buildTypes field in package.json

Based on my reading of http://code.dlang.org/package-format#standard-fields, I should have a field "buildTypes" at the root. Based on my reading of http://code.dlang.org/package-format#build-settings, this "buildTypes" should be an object, of which one of the keys is "dflags". The value of "dflags" is a "String[]", meaning an array of Strings.

Thus, I write the following package.jon file:

{
    "name": "tmp",
    "description": "My Project",
    "copyright": "Copyright © 2013, Nebu Pookins",
    "authors": ["Nebu Pookins"],
    "dependencies": {
    },
    "buildTypes": {
        "dflags": [
            "-Idwt/imp",
            "-Jdwt/org.eclipse.swt.gtk.linux.x86/res"
        ],
    }
}

However, when I run dub, I get the following error:

Failed to parse package description in /home/nebu/dev/tmp
Failed to parse package description in /home/nebu/dev/tmp
Error: Got .dflags of type array - expected object.

Run 'dub help' for usage information.

Build failling on OSX

The build is failing for me on OSX, with:

source/app.d(41): Error: function dub.internal.utils.jsonFromFile (Path file, bool silent_fail = false) is not callable using argument types (Path, bool)

Am I doing something wrong? Here's the output of running dub in the root: https://gist.github.com/3c1e67413cc2e761e020.

I'm on OSX 10.9.2, dmd version 2.065 and dub 0.9.21.

Logging in with email causes user-specific pages to fail.

I tried logging in with my username, and it worked fine.

The error page (/my_packages):

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../userman/source/userman/controller.d(230): The specified user name is not registered.
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x62a93b]
./dub-registry(userman.controller.User userman.controller.UserManController.getUserByName(immutable(char)[])+0x124) [0x7e5c3c]
./dub-registry(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) userman.web.UserManWebInterface.auth(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, userman.controller.User)).void requestHandler(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0xdf) [0x7e953f]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x6eafd1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x1638) [0x6dfc88]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x6de58b]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TCPConnection)+0x2c) [0x6dab34]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x6f88e6]
./dub-registry(void vibe.core.core.CoreTask.run()+0xf2) [0x7067c2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x827b9a]
./dub-registry(fiber_entryPoint+0x61) [0x827aa5]
[(nil)]

Error or warning for packages without a valid license field

It's crucial to know which licenses are in the game when using foreign projects. It should be enforced/encouraged to have this information available for every package in the registry.

If only warnings are used, displaying the license as "proprietary" and making it incompatible with every other package so that dub warns about it (dlang/dub#117) is probably the way to go.

GNU/Linux. Range violation

Platform: Fedora 19 x86
Dub version: v0.9.19-2-gb08454b
dmd version: v2.063.2

Running on CI server, thus jenkins $HOME dir is /var/lib/jenkins. Package borey-engine is added as local package (doesn't updated in dub registry):

git clone https://github.com/NCrashed/BoreyEngine.git
cd BoreyEngine && dub add-local . ~master

Original problem package is not available, but there is reduced package.json which cause problem:

{
    "name": "test",
    "sourcePaths": [],
    "targetPath": "bin",

    "configurations": [
        {
            "name": "client",
            "sourcePaths": ["source"],
            "libs-posix": ["dl"], 
            "targetType": "executable",
            "targetName": "client",
            "dependencies": 
            {
                "borey-engine": "~master",
                "borey-engine:interface": "~master",
            }
        }
    ]
}

source/app.d:

void main() {}

Dub is called with:

dub build --config=client --build=unittest --vverbose

Output:

dub: /lib/libcurl.so.4: no version information available (required by dub)
Using dub registry url 'http://code.dlang.org/'
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /var/lib/jenkins/.dub/packages/local-packages.json
Try to load local package map at /var/lib/jenkins/.dub/packages/local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/
iterating dir /var/lib/jenkins/.dub/packages/ entry local-packages.json
iterating dir /var/lib/jenkins/.dub/packages/ entry derelict-master
Failed to run git: git rev-parse failed: fatal: Not a git repository: '/var/lib/jenkins/jobs/FMTG/workspace/testprj/.git'

Note: Failed to determine version of package test at /var/lib/jenkins/jobs/FMTG/workspace/testprj. Assuming ~master.
Collecting dependencies for test
Found dependency borey-engine:interface ~master: true
Collecting dependencies for borey-engine:interface
Found dependency derelict:util ~master: true
Collecting dependencies for derelict:util
Found dependency borey-engine ~master: true
Collecting dependencies for borey-engine
Found dependency derelict:opengl3 ~master: true
Collecting dependencies for derelict:opengl3
Found dependency derelict:glfw3 ~master: true
Collecting dependencies for derelict:glfw3
Checking dependencies in '/var/lib/jenkins/jobs/FMTG/workspace/testprj'
Try to resolve ["borey-engine"]
There are 1 packages missing.
Adding package to graph: borey-engine
Found installed package borey-engine ~master
Try to resolve ["derelict"]
There are 1 packages missing.
Adding package to graph: derelict
Found installed package derelict ~master
Required package 'borey-engine' found with version '~master'
Required package 'derelict' found with version '~master'
Generating using build
Creating build generator.
Including test client -> borey-engine:interface library
Including test client -> borey-engine application
Including borey-engine:interface library -> derelict:util library
Including borey-engine application -> derelict:opengl3 library
Including borey-engine application -> borey-engine:interface library
Including borey-engine application -> derelict:glfw3 library
Including borey-engine application -> derelict:util library
Including derelict:opengl3 library -> derelict:util library
Including borey-engine:interface library -> derelict:util library
Including derelict:glfw3 library -> derelict:util library
Error: Range violation

Full exception: [email protected](271): Range violation
----------------
dub(_d_array_bounds+0x2b) [0x826287b]
dub() [0x81e1153]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs.bool isReachableByAllParentPacks(uint)+0x71) [0x81de005]
dub(const(immutable(char)[][immutable(char)[]] function(const(dub.compilers.compiler.BuildPlatform), immutable(char)[])) dub.project.Project.getPackageConfigs+0x1a9) [0x81dd6dd]
dub(const(void function(ref dub.compilers.compiler.BuildSettings, const(dub.compilers.compiler.BuildPlatform), immutable(char)[], const(dub.package_.Package))) dub.project.Project.addBuildSettings+0x63) [0x81de66f]
dub(void dub.generators.build.BuildGenerator.generateProject(dub.generators.generator.GeneratorSettings)+0x98) [0x81e5304]
dub(void dub.dub.Dub.generateProject(immutable(char)[], dub.generators.generator.GeneratorSettings)+0x6f) [0x81ca0c3]
dub(_Dmain+0x134c) [0x81c20d8]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain()+0x10) [0x8262f38]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()+0x64) [0x8262fac]
dub(extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())+0x27) [0x8262ab7]
dub(_d_run_main+0x162) [0x8262a72]
dub(main+0x2a) [0x82628fa]
/lib/libc.so.6(__libc_start_main+0xf3) [0x44058963]
Run 'dub help' for usage information.

Sorting all by update date

Right now when sorting by update date it always puts the packages which have a version number (aren't tracking branches) at the top. This is intentional from what I can gather looking at the code. Seems more useful to me to just sort by update date.

Feel free to close this if you disagree since this is just a matter of taste (though I am curious what the rationale is).

Implement package categories

Each package should have 1 to 3 categories associated with it to make it easier to later find a package even with many regsitered packages. There is a categories.json already in the repository. It has to be parsed and the web front end logic has to be written.

Unexpected reply Moved Permanently

I am getting following messages for all my packages (at 'manage package' page):

Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently

For instance my dlogg package:


Package errors:

Version 0.1.0-docs: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/7b7fd1405240ef1b337cd2a3e1129e15f80af108/dub.json': Moved Permanently
Version 0.1.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/ec962075eb6a67ee1dc03365c29f4e61d441d11c/package.json': Moved Permanently
Version 0.1.1: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/4dbf22b9e8308eace6ef7640b923bd01e75923c6/package.json': Moved Permanently
Version 0.1.2: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/65ff66bb303f1de33a378349271e46df1faa24e0/package.json': Moved Permanently
Version 0.1.3: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/0b28135f4f78d52072b8cb351a5c237af3da06d4/package.json': Moved Permanently
Version 0.2.0: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~master: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f267d3eff40f8a6c45343d2a4360db2bd5821c0b/dub.json': Moved Permanently
Branch ~gh-pages: Unexpected reply for 'https://raw.github.com/NCrashed/dlogg/f3e16d2a79ff96c4841e11e6e610ce4bfec19768/dub.json': Moved Permanently

Unable to register new user on http://code.dlang.org/register

I'm trying to fill in the fields, put them all in but get an error with "Missing user name field.". No confirmation email is sent, no warnings if I am reusing another user name, no idea how to log in so that I can add projects to the registry.

invalid error for missing semver tag

I added a tag (v3.16.0) to the Deimos project I want to register, but I still get the following error message.
This is probably an issue with caching because it works when I run the dub-registry locally.
https://github.com/D-Programming-Deimos/FreeImage

The repository must have at least one tagged version (SemVer format, e.g. "v1.0.0" or "v0.0.1") to be published on the registry. Please add a proper tag using "git tag" or equivalent means and see http://semver.org for more information. 

gh-pages branch need not contain a package.json.

I get the following message:
Branch ~gh-pages: Found neither dub.json, nor package.json in the repository.

But the gh-pages is useful to display documentation hosted on github. It isn't meant to have a package.json somewhere.

code.dlang.org broken

Stranges with this site.

http://code.dlang.org/download - 500 error code

500 - Internal Server Error

Internal Server Error

Internal error information:
std.file.FileException@std/file.d(2394): public/files: Too many open files
----------------
./dub-registry(bool std.file.DirIteratorImpl.stepIn(immutable(char)[])+0x61) [0xac17f1]
./dub-registry(ref std.file.DirIteratorImpl std.file.DirIteratorImpl.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x9d) [0xac1b0d]
./dub-registry(std.file.DirIteratorImpl* std.conv.emplace!(std.file.DirIteratorImpl, immutable(char)[], std.file.SpanMode, bool).emplace(std.file.DirIteratorImpl*, ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x48) [0xabf70c]
./dub-registry(void std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.RefCountedStore.initialize!(immutable(char)[], std.file.SpanMode, bool).initialize(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x83) [0xaaaa37]
./dub-registry(ref std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted std.typecons.__T10RefCountedTS3std4file15DirIteratorImplVE3std8typecons24RefCountedAutoInitialize0Z.RefCounted.__ctor!(immutable(char)[], std.file.SpanMode, bool).__ctor(ref immutable(char)[], ref std.file.SpanMode, ref bool)+0x11) [0xaaa9a9]
./dub-registry(ref std.file.DirIterator std.file.DirIterator.__ctor(immutable(char)[], std.file.SpanMode, bool)+0x40) [0xa95f90]
./dub-registry(std.file.dirEntries.FilterResult!(_D3std4file10dirEntries1fMFS3std4file8DirEntryZb, std.file.DirIterator).FilterResult std.file.dirEntries(immutable(char)[], immutable(char)[], std.file.SpanMode, bool)+0x77) [0xa9646b]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showDownloads(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x537) [0x7b350b]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x7cc44d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x7c150e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x7bfc47]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7bbeb8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7da80a]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7f2bdf]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7eecce]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xab4f6e]
./dub-registry(fiber_entryPoint+0x61) [0xab4e79]
[(nil)]

Repeated activation shows bogus error message

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../userman/source/userman/controller.d(142): The activation code provided is not valid.

./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5c632f]
./dub-registry(void userman.controller.UserManController.activateUser(immutable(char)[], immutable(char)[])+0x1e7) [0x72ad7f]
./dub-registry(void userman.web.UserManWebInterface.activate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x134) [0x72e408]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x640f41]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x636f49]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x6357ca]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x63223c]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x651c46]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65ba62]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x7629ca]
./dub-registry(fiber_entryPoint+0x61) [0x7628dd]
[(nil)]

code.dlang.org down

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/core/drivers/libevent2_tcp.d(120): Trying to acquire a TCP connection that is currently owned.
----------------
./dub-registry(_d_assert_msg+0x45) [0xa12b0d]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.acquire()+0xe3) [0x7a0b27]
./dub-registry(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.close()+0x6e) [0x7a0df2]
./dub-registry(void vibe.db.mongo.connection.MongoConnection.disconnect()+0x7b) [0x85621f]
./dub-registry(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.query(immutable(char)[], vibe.db.mongo.connection.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson)+0x17b) [0x856827]
./dub-registry(void vibe.db.mongo.cursor.MongoCursorData.startIterating()+0x9c) [0x85f9b0]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursorData.empty()+0x7c) [0x85f3a8]
./dub-registry(@property bool vibe.db.mongo.cursor.MongoCursor.empty()+0x5f) [0x85ee23]
./dub-registry(_D11dubregistry12dbcontroller12DbController14getAllPackagesMFZS11dubregistry12dbcontroller12DbController14getAllPackagesM123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult123__T9MapResultS7011dubregistry12dbcontroller12DbController14getAllPackagesM10__lambda20TS4vibe2db5mongo6cursor11MongoCursorZ9MapResult5emptyMFNdZb+0x51) [0x8f2415]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x21c) [0x77c188]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x794a6d]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x17da) [0x789b2e]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x12b) [0x788267]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda60(vibe.core.net.TCPConnection)+0x2c) [0x7844d8]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x7a2d42]
./dub-registry(_D4vibe4core4core12__T7runTaskZ7runTaskFDFZvZS4vibe4core4task4Task12callDelegateFC4vibe4core4core8CoreTaskZv+0x2b) [0x7b7f1f]
./dub-registry(void vibe.core.core.CoreTask.run()+0x14a) [0x7b400e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa522fe]
./dub-registry(fiber_entryPoint+0x61) [0xa52209]
[(nil)]

Can't register more packages

I have already registered 13 packages. When I click on "Register new package", I get

403 - Forbidden

You don't have access rights for this package.

Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(bool vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, lazy immutable(char)[])+0x36) [0x9e14d2]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x5b) [0xa757ff]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x98) [0xa74fc4]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaS7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x3ce) [0x9e6c12]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStylei5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda36!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda36(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x9d3e21]
./dub-registry(_D4vibe4http6router9URLRouter13handleRequestMFC4vibe4http6server17HTTPServerRequestC4vibe4http6server18HTTPServerResponseZ21__T9__lambda3TmTAAyaZ9__lambda3MFmMAAyaZv+0x210) [0xb87b64]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0xb88250]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0xb878e2]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16ee) [0xbf3e9a]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x19c) [0xbf26a8]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, ulong, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x62) [0xbf20aa]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x4d4) [0xb4608c]
./dub-registry(void vibe.core.core.makeTaskFuncInfo!(void delegate()).makeTaskFuncInfo(ref void delegate()).callDelegate(vibe.core.core.TaskFuncInfo*)+0x72) [0x97e2c6]
./dub-registry(void vibe.core.core.CoreTask.run()+0x18f) [0xb2dd47]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xc8ed1e]
./dub-registry(fiber_entryPoint+0x61) [0xc8ec31]
[(nil)]

Get the package's actual output binary via dub cmd?

Hi Sönke,

As I'm currently improving Mono-D to be bypass-free compatible to dub packages,
I noticed that I have no (obvious) chance for retrieving the project's target executable path which is needed (at least) for automatically launching the debugger.
Calling dub describe or trying to deduce the executable's name from the package.json contents might not be perfect otherwise.
dub describe won't to the job for me! :-/

Besides, what about a 'clean' command - to clean the executable and support files up (recursively)?

I appreciate dub very much though!
Alex

registering new packages is currently broken (403 - Forbidden)

I get a 403 for the http://code.dlang.org/my_packages/register? page to which I'm send when clicking "Register new package".

403 - Forbidden

You don't have access rights for this package.

Internal error information:
vibe.http.common.HTTPStatusException@../vibe/source/vibe/http/common.d(107): You don't have access rights for this package.
----------------
./dub-registry(void vibe.http.common.enforceHTTP!(bool).enforceHTTP(bool, vibe.http.status.HTTPStatus, immutable(char)[])+0x36) [0x84f36a]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.enforceUserPackage(userman.controller.User, immutable(char)[])+0x67) [0x8d44eb]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.getMyPackagesPackage(immutable(char)[], userman.controller.User, immutable(char)[])+0x8c) [0x8d3b60]
./dub-registry(void vibe.web.web.handleRequest!("getMyPackagesPackage", _D11dubregistry3web22DubRegistryWebFrontend20getMyPackagesPackageMFAyaC7userman10controller4UserAyaZv, dubregistry.web.DubRegistryWebFrontend).handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings)+0x289) [0x8524dd]
./dub-registry(void vibe.web.web.__T20registerWebInterfaceTC11dubregistry3web22DubRegistryWebFrontendVE4vibe3web6common11MethodStyle5Z.registerWebInterface(vibe.http.router.URLRouter, dubregistry.web.DubRegistryWebFrontend, vibe.web.web.WebInterfaceSettings).__lambda18!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda18(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x2d) [0x841fd9]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).void __lambda3!(ulong, immutable(char)[][]).__lambda3(ulong, scope immutable(char)[][])+0x1dc) [0x984ce4]
./dub-registry(void vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope void delegate(ulong, scope immutable(char)[][]))+0x1dc) [0x985324]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x1a6) [0x984a96]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x165d) [0xa0447d]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x1a3) [0xa02d3f]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings).doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).__lambda4(vibe.core.net.TCPConnection)+0x2c) [0xa02a2c]
./dub-registry(void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).ClientTask.execute()+0x316) [0x95692e]
./dub-registry(_D4vibe4core4core27__T16makeTaskFuncInfoTDFZvZ16makeTaskFuncInfoFNbDFZvZS4vibe4core4core12TaskFuncInfo12callDelegateFPS4vibe4core4core12TaskFuncInfoZv+0xda) [0x7e8f5e]
./dub-registry(void vibe.core.core.CoreTask.run()+0x16a) [0x93f1a2]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0xa91bf6]
./dub-registry(fiber_entryPoint+0x61) [0xa91b01]
[(nil)]

Impossible to see what sub-packages are about

Subpackages don't have their own web pages.
That means it's difficult to see upon which packages they depend.

Example: http://code.dlang.org/packages/gfm/~master
which is a "include all" package, unfortunately hide specifics of each package.

Note: I really like sub-packages :) but if they don't fit with your intended model (automatic license and dependencies retrieving) I'll abandon them.

Wrong repo name saved by server

I tried to create a new package from github with owner: "burner" and reponame: "inifile-D"

That failed telling me that the reponame is invalid. After renaming the github repo and entering "inifiled" as reponame. It failed again telling me: Package names must be all lower case, not "inifile-D". I even tried a different browser and got the same result.

Ideas?

Activating account and logging in on an previously opened tab causes Internal Server Error

As the assert nicely tells us, the server tried to start another session.
What I did was, I had the package list open from yesterday. Today I found the activation email in my spam box and clicked on the activation link. Ignoring the tab that opened (those activation links usually don't take me where I want to be), I clicked on Login in the old tab and logged in, resulting in:

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/server.d(810): Try to start a session, but already started one.
----------------
./dub-registry(_d_assert_msg+0x45) [0x73ba15]
./dub-registry(vibe.http.session.Session vibe.http.server.HTTPServerResponse.startSession(immutable(char)[], bool)+0xff) [0x632c17]
./dub-registry(void userman.web.UserManWebInterface.login(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x23d) [0x72fa41]
./dub-registry(void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x179) [0x63fff1]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16b9) [0x635ff9]
./dub-registry(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x146) [0x63487a]
./dub-registry(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda50(vibe.core.net.TCPConnection)+0x2c) [0x6312ec]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2e2) [0x650c42]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x65aa5e]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x764ada]
./dub-registry(fiber_entryPoint+0x61) [0x7649ed]
[(nil)]

Implement conflict detection

Packages should be scanned for all D packages that they occupy. A reverse search could then find all package candidates for a certain namespace. Especially useful for tools that want to automatically determine the list of dependencies using just the source code. Also useful to avoid package conflicts when choosing a namespace for a new library.

Readme file isn't displayed unless named exactly README.md

This means casing is important. Offending line:

try rep.readFile(reference.sha, Path("/README.md"), 
(scope input) { dbver.readme = input.readAllUTF8(); });

Note that (at least Github) allows all sorts of names for the readme: readme.md, readme.markdown, README.md, README.markdown, etc. I'm not sure whether all supported combinations are listed anywhere.

There's also .rst support on Github but I don't know if we have any D .rst parsers around for use with dub-registry.

Activation fails

I tried to register to submit my scrypt.d package to dub, but the link it sent me via email throws an error:

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../../../opt/vibe/source/vibe/inet/path.d(287): Empty path entries not allowed.
----------------
./allsites(bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5a107b]
./allsites(vibe.inet.path.PathEntry[] vibe.inet.path.splitPath(immutable(char)[])+0x2fa) [0x66e062]
./allsites(vibe.inet.path.Path vibe.inet.path.Path.__ctor(immutable(char)[])+0x25) [0x66c5f9]
./allsites(@property void vibe.inet.url.Url.localURI(immutable(char)[])+0x1aa) [0x66a4aa]
./allsites(void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse) vibe.http.proxy.reverseProxyRequest(immutable(char)[], ushort).void handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x4f) [0x644f8f]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x1642) [0x653a7a]
./allsites(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1fc) [0x652338]
./allsites(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda52(vibe.core.net.TcpConnection)+0x36) [0x64f0d2]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2cb) [0x612507]
./allsites(void vibe.core.core.CoreTask.run()+0xf5) [0x61ec35]
./allsites(void core.thread.Fiber.run()+0x2a) [0x6ada6a]
./allsites(fiber_entryPoint+0x61) [0x6ad97d]
[(nil)]

It would be nice if I could be manually activated, the nickname I used was BitPuffin so it's pretty obvious that I'm the right guy haha

Server exception on code.dlang.org

Just by going to code.dlang.org

500 - Internal Server Error

Internal Server Error

Internal error information:
core.exception.AssertError@../../../opt/vibe/source/vibe/http/client.d(252): Interleaved request detected!
----------------
./allsites(_d_assert_msg+0x45) [0x6f0d55]
./allsites(bool vibe.http.client.HTTPClient.doRequest(scope void delegate(vibe.http.client.HTTPClientRequest))+0x74) [0x5b6108]
./allsites(void vibe.http.client.HTTPClient.request(scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x98) [0x5b5e54]
./allsites(void vibe.http.client.requestHTTP(vibe.inet.url.URL, scope void delegate(scope vibe.http.client.HTTPClientRequest), scope void delegate(scope vibe.http.client.HTTPClientResponse))+0x23f) [0x5b5823]
./allsites(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) vibe.http.proxy.reverseProxyRequest(vibe.http.proxy.HTTPReverseProxySettings).void handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)+0x91) [0x5af87d]
./allsites(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HTTPServerSettings, ref bool)+0x16c8) [0x5a9124]
./allsites(void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerListener)+0x143) [0x5a7997]
./allsites(void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).void doListen(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda17(vibe.core.net.TCPConnection)+0x2c) [0x5a3f40]
./allsites(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2d6) [0x5be502]
./allsites(void vibe.core.core.CoreTask.run()+0xf2) [0x5cc466]
./allsites(void core.thread.Fiber.run()+0x2a) [0x722942]
./allsites(fiber_entryPoint+0x61) [0x72284d]
[(nil)]

Headers sent:

GET / HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.15
Host: code.dlang.org
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Connection: Keep-Alive

Headers received:

HTTP/1.1 500 Internal Server Error
Content-Encoding: gzip
Server: vibe.d/0.7.17
Date: Fri, 18 Oct 2013 18:00:01 GMT
Keep-Alive: timeout=10
Content-Type: text/plain; charset=UTF-8

I'm also getting the same response for favicon.ico

Use push notifications for repository updates

The registry is currently living on the edge with it's GitHub API use. 60 non-cached requests per hour are allowed and jus registering two projects at once that contain some tags/branches will hit that limit.

When using OAuth2 to access the API, the limit gets increased to 2000 and it also becomes possible to use the PubSubHubbub API to avoid polling, making the registry more responsive and saving bandwith.

Bitbucket probably has something similar.

VisualD project broken with 0.9.21

After updating, to 0.9.21 "dub generate visuald" no longer
generates "release" and "unittest"configurations for VisualD -
only "debug" is available. I downgraded to 0.9.20 to make sure
and indeed this version generates VisualD projects correctly
(with all 3 configurations)

Site is broken

I'm trying to go to the front page but it's throwing the following error:

500 - Internal Server Error

Internal Server Error

Internal error information:
object.Exception@../../../opt/vibe/source/vibe/data/json.d(692): Trying to access JSON of type Null as Json[string].
----------------
./dub-registry(pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x5ec62b]
./dub-registry(const(void function()) vibe.data.json.Json.checkType!(vibe.data.json.Json[immutable(char)[]]).checkType+0xa5) [0x69ca5d]
./dub-registry(ref vibe.data.json.Json vibe.data.json.Json.opIndex(immutable(char)[])+0x63) [0x69a653]
./dub-registry(ref @property vibe.data.json.Json vibe.data.json.Json.opDispatch!("versions").opDispatch()+0x5f) [0x69cc7f]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).immutable(char)[] getDate(vibe.data.json.Json)+0x15) [0x5e33c5]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).pure bool __lambda7!(vibe.data.json.Json, vibe.data.json.Json).__lambda7(vibe.data.json.Json, vibe.data.json.Json)+0x60) [0x5e51a0]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T23optimisticInsertionSortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.optimisticInsertionSort(vibe.data.json.Json[])+0xca) [0x603252]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse).void __T13quickSortImplS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7TAS4vibe4data4json4JsonZ.quickSortImpl(vibe.data.json.Json[])+0x29c) [0x602ddc]
./dub-registry(_D11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv206__T4sortS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7VE3std9algorithm12SwapStrategy0TAS4vibe4data4json4JsonZ4sortMFAS4vibe4data4json4JsonZS11dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv183__T11SortedRangeTAS4vibe4data4json4JsonS13911dubregistry3web22DubRegistryWebFrontend8showHomeMFC4vibe4http6server17HttpServerRequestC4vibe4http6server18HttpServerResponseZv9__lambda7Z11SortedRange+0x2a) [0x5e4fe6]
./dub-registry(void dubregistry.web.DubRegistryWebFrontend.showHome(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x17f) [0x5e337f]
./dub-registry(void vibe.http.router.UrlRouter.handleRequest(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)+0x179) [0x719c69]
./dub-registry(bool vibe.http.server.handleRequest(vibe.core.stream.Stream, immutable(char)[], vibe.http.server.HTTPServerListener, ref vibe.http.server.HttpServerSettings, ref bool)+0x163f) [0x727467]
./dub-registry(void vibe.http.server.handleHttpConnection(vibe.core.net.TcpConnection, vibe.http.server.HTTPServerListener)+0x1f9) [0x725d2d]
./dub-registry(void vibe.http.server.listenHttpPlain(vibe.http.server.HttpServerSettings, void delegate(vibe.http.server.HttpServerRequest, vibe.http.server.HttpServerResponse)).void doListen(vibe.http.server.HttpServerSettings, vibe.http.server.HTTPServerListener, immutable(char)[]).void __lambda102(vibe.core.net.TcpConnection)+0x36) [0x722a36]
./dub-registry(extern (C) nothrow void vibe.core.drivers.libevent2_tcp.onConnect(int, short, void*).void ClientTask.execute()+0x2b3) [0x6a6367]
./dub-registry(void vibe.core.core.CoreTask.run()+0xee) [0x6b3646]
./dub-registry(void core.thread.Fiber.run()+0x2a) [0x78b5be]
./dub-registry(fiber_entryPoint+0x61) [0x78b4d1]
[(nil)] 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.