How to use dub with a manual ldc installation?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Fri Nov 4 10:40:05 PDT 2016


On 11/04/2016 01:12 PM, Andrei Alexandrescu wrote:
> So I'm working on the checkedint pull request (really need to get that
> in...) and was trying to get some benchmarks going with ldc. The stock
> ldc on mint is outdated and it can't compile the code, so I needed to do
> a self-installation. I've put it in ~/bin/ldc2-1.1.0-beta3-linux-x86. Then:
>
> $ PATH=~/bin/ldc2-1.1.0-beta3-linux-x86/bin:$PATH

Found the problem, sorry for the distraction. I'd downloaded the 32-bit 
version not the 64-bit one. I got it working with the right download.

BTW the benchmark results have been pretty good:

======================================
Running trialPrimes() benchmark...
                                      int: 37 ms, 789 μs, and 8 hnsecs
                      Checked!(int, void): 25 ms and 398 μs
                      Checked!(int, Warn): 64 ms, 653 μs, and 9 hnsecs
                                     uint: 42 ms, 361 μs, and 1 hnsec
                     Checked!(uint, void): 42 ms, 49 μs, and 5 hnsecs
                     Checked!(uint, Warn): 72 ms, 322 μs, and 7 hnsecs
                                     long: 67 ms and 893 μs
                     Checked!(long, void): 54 ms, 512 μs, and 3 hnsecs
                     Checked!(long, Warn): 91 ms and 932 μs
                                    ulong: 69 ms and 567 μs
                    Checked!(ulong, void): 69 ms, 136 μs, and 4 hnsecs
                    Checked!(ulong, Warn): 95 ms, 196 μs, and 7 hnsecs
DONE

Running collatzSort() benchmark...
                                      int: 43 ms, 967 μs, and 9 hnsecs
                      Checked!(int, void): 44 ms, 104 μs, and 8 hnsecs
                      Checked!(int, Warn): 81 ms, 833 μs, and 1 hnsec
                                     uint: 43 ms, 398 μs, and 3 hnsecs
                     Checked!(uint, void): 43 ms, 560 μs, and 6 hnsecs
                     Checked!(uint, Warn): 82 ms, 727 μs, and 7 hnsecs
                                     long: 43 ms, 208 μs, and 4 hnsecs
                     Checked!(long, void): 43 ms, 734 μs, and 5 hnsecs
                     Checked!(long, Warn): 83 ms, 868 μs, and 5 hnsecs
                                    ulong: 43 ms, 459 μs, and 4 hnsecs
                    Checked!(ulong, void): 43 ms, 544 μs, and 5 hnsecs
                    Checked!(ulong, Warn): 84 ms, 567 μs, and 7 hnsecs
DONE
======================================

The Checked!(int, void) type is a checkedint that just "goes through" 
the framework (it's a wrapper struct that doesn't insert any checks) and 
to ldc's credit it gets optimized to pretty much a built-in int.

The Checked!(int, Warn) type inserts all checks necessary to print a 
warning to stderr in case anything wrong happens. We're looking at a 2x 
speed reduction, which is up to par with Thomas' library 
(https://code.dlang.org/packages/checkedint). I've tried to run the 
corresponding test for that and ran into a snag. It does work with dmd 
but not with my locally-installed ldc. Any idea on what could be 
happening? Here's the trace:

$dub run checkedint:tests --build=release --verbose 
--compiler=$HOME/bin/ldc2-1.1.0-beta3-linux-x86_64/bin/ldc2

Using dub registry url 'http://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/andrei/.dub/packages/local-packages.json
No package found in current working directory.
Building package checkedint:tests in 
/home/andrei/.dub/packages/checkedint-0.5.3/tests/
Refreshing local packages (refresh existing: false)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/andrei/.dub/packages/local-packages.json
Found dependency checkedint 0.5.3
Checking for missing dependencies.
Refreshing local packages (refresh existing: false)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/andrei/.dub/packages/local-packages.json
Found dependency checkedint 0.5.3
Checking for upgrades.
Using cached upgrade results...
Generating using build
Generate target checkedint:tests (executable 
/home/andrei/.dub/packages/checkedint-0.5.3/tests checkedint_tests)
Generate target checkedint (staticLibrary 
/home/andrei/.dub/packages/checkedint-0.5.3 checkedint)
Performing "release" build using 
/home/andrei/bin/ldc2-1.1.0-beta3-linux-x86_64/bin/ldc2 for x86_64.
Target 
'/home/andrei/.dub/packages/checkedint-0.5.3/.dub/build/library-release-linux.posix-x86_64-ldc_0-34AC553328DC970F29AC41DDB38D09AB/libcheckedint.a' 
doesn't exist, need rebuild.
checkedint 0.5.3: building configuration "library"...
/home/andrei/bin/ldc2-1.1.0-beta3-linux-x86_64/bin/ldc2 -lib 
-of.dub/packages/checkedint-0.5.3/.dub/build/library-release-linux.posix-x86_64-ldc_0-34AC553328DC970F29AC41DDB38D09AB/libcheckedint.a 
-release -enable-inlining -O -ignore -w -oq -od=.dub/obj 
-d-version=Have_checkedint -I.dub/packages/checkedint-0.5.3/source/ 
.dub/packages/checkedint-0.5.3/source/checkedint/asserts.d 
.dub/packages/checkedint-0.5.3/source/checkedint/flags.d 
.dub/packages/checkedint-0.5.3/source/checkedint/noex.d 
.dub/packages/checkedint-0.5.3/source/checkedint/package.d 
.dub/packages/checkedint-0.5.3/source/checkedint/throws.d 
.dub/packages/checkedint-0.5.3/source/checkedint/traits.d 
.dub/packages/checkedint-0.5.3/source/future/bitop.d 
.dub/packages/checkedint-0.5.3/source/future/math.d 
.dub/packages/checkedint-0.5.3/source/future/traits0.d
Error: failed to create path to file: 
.dub/obj/.dub/packages/checkedint-0.5.3/.dub/build/library-release-linux.posix-x86_64-ldc_0-34AC553328DC970F29AC41DDB38D09AB/libcheckedint.a
No such file or directory
FAIL 
.dub/packages/checkedint-0.5.3/.dub/build/library-release-linux.posix-x86_64-ldc_0-34AC553328DC970F29AC41DDB38D09AB/ 
checkedint staticLibrary
/home/andrei/bin/ldc2-1.1.0-beta3-linux-x86_64/bin/ldc2 failed with exit 
code 1.


Andrei



More information about the Digitalmars-d mailing list