digitalmars.D - D2 and FreeBSD
- Marco Righele (3/3) Aug 03 2010 Greetings,
- Walter Bright (2/4) Aug 03 2010 Yes, it's just that there hasn't been much interest in it yet.
- Shin Fujishiro (10/12) Aug 03 2010 I'm using DMD v2 on my FreeBSD box with these patches:
- Marco Righele (18/37) Aug 04 2010 Thanks, I didn't realize that the zip comes with the full source :D.
- Marco Righele (27/37) Aug 04 2010 Silly me, the sources are on dsource.org :).
- Shin Fujishiro (52/69) Aug 04 2010 Thanks for testing!
- Marco Righele (9/10) Aug 05 2010 I should have checked earlier. I didn't realize that I was using a
- Juergen Lock (74/123) Sep 11 2010 For the record, here is what I had to change for dmd 2.048:
- Brad Roberts (7/7) Sep 11 2010 On 9/11/2010 11:25 AM, Juergen Lock wrote:
- Juergen Lock (6/11) Sep 13 2010 Done:
- Juergen Lock (5/36) Sep 13 2010 ..and turns out pixz is not really using a private branch of liblzma
- Sohgo Takeuchi (6/11) Aug 04 2010 I also have used DMD2 on a FreeBSD 8 box for several month.
Greetings, Are there any plans for a FreeBSD release of the D2 DMD compiler ? Marco
Aug 03 2010
Marco Righele wrote:Greetings, Are there any plans for a FreeBSD release of the D2 DMD compiler ?Yes, it's just that there hasn't been much interest in it yet.
Aug 03 2010
Marco Righele <marco_righele yahoo.it> wrote:Greetings, Are there any plans for a FreeBSD release of the D2 DMD compiler ?I'm using DMD v2 on my FreeBSD box with these patches: - FreeBSD patches for druntime. http://d.puremagic.com/issues/show_bug.cgi?id=3528 - [FreeBSD] real constants are rounded to double precision http://d.puremagic.com/issues/show_bug.cgi?id=4191 - [FreeBSD] imprecision in decimal floating-point literals http://d.puremagic.com/issues/show_bug.cgi?id=4198 Please vote up! ;-) Shin
Aug 03 2010
On 08/04/10 07:47, Shin Fujishiro wrote:Marco Righele <marco_righele yahoo.it> wrote:Thanks, I didn't realize that the zip comes with the full source :D. The patches apply cleanly, but I found number of issues though. (The DMD version I used is 2.047, the one downloadable from the site, while my box is running FreeBSD 8.1/x86) When compiling dmd, the linker complains about missing C++ symbols. Changing the linker from gcc to g++ in freebsd.mak seemed to solve the problem. When compiling druntime, a static assertion triggers during linking: src/rt/llmath.d(286): Error: static assert (0x1p+63L == 0x1p+52L) is false gmake: *** [lib/libdruntime.a] Error 1 Finally I was unable to compile phobos, as I encountered errors in different modules, including references to freebsd related files that aren't in the zip I downloaded. Am I supposed to use a different version of the compiler/libraries ? If so, is it publicly available ?Greetings, Are there any plans for a FreeBSD release of the D2 DMD compiler ?I'm using DMD v2 on my FreeBSD box with these patches: - FreeBSD patches for druntime. http://d.puremagic.com/issues/show_bug.cgi?id=3528 - [FreeBSD] real constants are rounded to double precision http://d.puremagic.com/issues/show_bug.cgi?id=4191 - [FreeBSD] imprecision in decimal floating-point literals http://d.puremagic.com/issues/show_bug.cgi?id=4198Please vote up! ;-)Will do ! :)ShinMarco
Aug 04 2010
On 08/04/10 12:30, Marco Righele wrote:Finally I was unable to compile phobos, as I encountered errors in different modules, including references to freebsd related files that aren't in the zip I downloaded. Am I supposed to use a different version of the compiler/libraries ? If so, is it publicly available ?Silly me, the sources are on dsource.org :). I downloaded the latest trunk of phobos, and tried to compile if The compilation gave the following error:gmake -f posix.makstd/math.d(1304): Error: shift by -48 is outside the range 0..32 std/math.d(1305): Error: template instance 'floatTraits!(real)' is not a variable std/math.d(1306): Error: template instance 'floatTraits!(real)' is not a variable gmake[1]: *** [generated/posix/release/libphobos2.a] Error 1 gmake: *** [release] Error 2 For the time being I just commented the offending function and completed the compilation. In the end I was able to obtain the executable and the libraries. Configuring the paths to the imports of phobos and druntime in dmd.conf, adapting the one provided in the binary package for linuxcat /etc/dmd.conf[Environment] DFLAGS=-I/opt/phobos -I/opt/druntime/import -L -L/usr/lib I'm able to compile an hello world, but not to link itdmd hello.d/usr/bin/ld: : No such file: No such file or directory collect2: ld returned 1 exit status --- errorlevel 1 Given that others are using it without problems I think it's because I made some mistakes somewhere, but where ? Any pointer to documentation or mail on how to build it would be appreciated, thanks, Marco
Aug 04 2010
Marco Righele <marco_righele yahoo.it> wrote:Thanks, I didn't realize that the zip comes with the full source :D. The patches apply cleanly, but I found number of issues though. (The DMD version I used is 2.047, the one downloadable from the site, while my box is running FreeBSD 8.1/x86)Thanks for testing! By the way, how did you apply the patches? You might need to set an -l option to deal with recent newline changes in dmd source: .../dmd2/src/dmd/src% patch -l -p2 < 4191.patch .../dmd2/src/dmd/src% patch -l -p1 < 4198.patchWhen compiling dmd, the linker complains about missing C++ symbols. Changing the linker from gcc to g++ in freebsd.mak seemed to solve the problem.Hmm... that's strange. I haven't got such an error. I'm sorry but I can't tell what's going wrong. I could build dmd 2.047 as follows: -------------------- % mkdir 2.047 % cd 2.047 % fetch http://ftp.digitalmars.com/dmd.2.047.zip % unzip dmd.2.047.zip % cd dmd2/src/dmd/src % fetch -o 4191.patch 'http://d.puremagic.com/issues/attachment.cgi?id=629' % fetch -o 4198.patch 'http://d.puremagic.com/issues/attachment.cgi?id=632' % patch -l -p2 < 4191.patch % patch -l -p1 < 4198.patch % gmake -f freebsd.mak % cp dmd ~/bin -------------------- Compiler is gcc 4.2.1 on FreeBSD/i386 8-STABLE. Does this work for you?When compiling druntime, a static assertion triggers during linking: src/rt/llmath.d(286): Error: static assert (0x1p+63L == 0x1p+52L) is false gmake: *** [lib/libdruntime.a] Error 1I'm not sure, but you might be using a non-patched version accidentally. Have you copied the newly-built dmd executable to, for example, ~/bin? I built druntime with the patched dmd 2.047: -------------------- % cd 2.047/dmd2/src/druntime % fetch -o 3528.patch 'http://d.puremagic.com/issues/attachment.cgi?id=703' % patch -l -p0 < 3528.patch % gmake -f posix.mak --------------------Finally I was unable to compile phobos, as I encountered errors in different modules, including references to freebsd related files that aren't in the zip I downloaded.The following file is not in the release zip. Please download it: http://svn.dsource.org/projects/phobos/trunk/phobos/std/c/freebsd/socket.d And here's a quick-hacked FreeBSD makefile that I use: http://gist.github.com/508638 I could build Phobos with the following command lines: -------------------- % cd 2.047/dmd2/src/phobos % mkdir std/c/freebsd % fetch -o std/c/freebsd/socket.d 'http://svn.dsource.org/projects/phobos/trunk/phobos/std/c/freebsd/socket.d' % fetch -o my-freebsd.mak 'http://gist.github.com/raw/508638/b4f85e2de4f41a22a09fb895aa48b7a62fefb71e/my-freebsd.mak' % gmake -f my-freebsd.mak --------------------Am I supposed to use a different version of the compiler/libraries ?The patches should be valid for recent few releases including 2.047. I may be wrong though...If so, is it publicly available ?Compiler and libraries are under open source. :-) http://www.dsource.org/projects/dmd/ http://www.dsource.org/projects/druntime/ http://www.dsource.org/projects/phobos/ I'm tracking these repositories with git-svn. Shin
Aug 04 2010
Hi Shin, thanks for you time and patience On 08/04/10 22:43, Shin Fujishiro wrote:Compiler is gcc 4.2.1 on FreeBSD/i386 8-STABLE. Does this work for you?I should have checked earlier. I didn't realize that I was using a different version of gcc off of /opt. Removing it and using the stock one removed all the compilation issues. The linking problem was due to a wrong configuration of dmd.conf with a lone "-L" that caused ld to receive an empty argument. Now I'm able to compile and run my test programs. Thanks a lot ! Marco
Aug 05 2010
On 08/04/2010 22:43, Shin Fujishiro wrote:Marco Righele<marco_righele yahoo.it> wrote: [...]I could build dmd 2.047 as follows: -------------------- % mkdir 2.047 % cd 2.047 % fetch http://ftp.digitalmars.com/dmd.2.047.zip % unzip dmd.2.047.zip % cd dmd2/src/dmd/src % fetch -o 4191.patch 'http://d.puremagic.com/issues/attachment.cgi?id=629' % fetch -o 4198.patch 'http://d.puremagic.com/issues/attachment.cgi?id=632' % patch -l -p2< 4191.patch % patch -l -p1< 4198.patch % gmake -f freebsd.mak % cp dmd ~/bin -------------------- Compiler is gcc 4.2.1 on FreeBSD/i386 8-STABLE. Does this work for you?For the record, here is what I had to change for dmd 2.048: - 4191.patch and 3528.patch are no longer needed (already applied) - modfl() was missing in src/druntime/src/core/stdc/math.d only for FreeBSD with a comment "// nontrivial conversion", adding it back _seems_ to work according to quick tests (was the problem that real * i.e. long double * wasn't working properly for C bindings in earlier versions and the FreeBSD bindings just hadn't been updated yet?) I've put the patch here: http://people.freebsd.org/~nox/tmp/d/dmd.2.048-druntime-modfl.patch - (at least) std.concurrency and std.exception need to be added to my-freebsd.mak, I've put that patch here: http://people.freebsd.org/~nox/tmp/d/dmd.2.048-phobos-myfreebsdmak.patch ====== And wrt debugging: I tested both gdb head (checked out after the D patches went in) and Doug Rabson's D-aware debugger ngdb which he annouced as a 'Technology Preview' here: http://lists.freebsd.org/pipermail/freebsd-current/2009-August/011071.html ..and I found two things: a) gdb still chokes on dmd -g debug symbols because the D DWARF extensions conflict with DWARF-4: http://d.puremagic.com/issues/show_bug.cgi?id=4180 disabling the DW_TAG_type_unit case in gdb/dwarf2read.c at least makes it no longer complain: http://people.freebsd.org/~nox/tmp/d/d-gdb-dwarf2read.c.patch b) both debuggers treat arrays as unsigned long long (like main()'s standard string[] args) - at least ngdb prints them correctly if I do a manual cast: (ngdb) p *cast(char [][] *)&args I then looked at the debug symbols using readelf -w and found it's actually dmd's fault not the debugger's, the array really seems to be marked as the unsigned long long type: <1><a4>: Abbrev Number: 3 (DW_TAG_base_type) DW_AT_name : unsigned long long DW_AT_byte_size : 8 DW_AT_encoding : 7 (unsigned) .. <2><516>: Abbrev Number: 5 (DW_TAG_formal_parameter) DW_AT_name : args DW_AT_type : <a4> DW_AT_location : 2 byte block: 91 8 (DW_OP_fbreg: 8) Any chance this can be changed? :) (I suspect this is a DWARF-only problem i.e. it `works on Windows'?) ====== And finally, I've generated liblzma bindings using bcd, adjusted them for D2, http://people.freebsd.org/~nox/tmp/d/lzma.d (sorry about the httpd treating .d as application/octet-stream) - and then made a small threaded .xz compression hack to try out D2, http://people.freebsd.org/~nox/tmp/d/xzj.d This is very much a WIP but can already be used to compress files or stdin to another file or stdout (so it can be used in pipes and with tar's --use-compress-program), using all cores. Binaries at: http://people.freebsd.org/~nox/tmp/d/freebsd8/xzj http://people.freebsd.org/~nox/tmp/d/linux/xzj (both i386 of course) Run with -h for a small usage message and see the source for more info. Comments are welcome, also if anyone wants to test/port it to non-FreeBSD/Linux and/or check if the lzma bindings are OK... Also, should I submit the bindings somewhere? I checked the struct sizes and they matched: http://people.freebsd.org/~nox/tmp/d/lzmastructsizes-c.c http://people.freebsd.org/~nox/tmp/d/lzmastructsizes.d These are direct C bindings only tho i.e. I did not make a wrapper class like std.zlib... Ok so that's it for now, cheers, Juergen PS: I've meanwhile found another WIP threaded .xz compressor written in C, but it is specific to tarfiles (it even indexes them and can extract a single file quickly), and it uses a private branch(?) of liblzma: http://github.com/vasi/pixz http://github.com/vinzenz/liblzmaWhen compiling druntime, a static assertion triggers during linking: src/rt/llmath.d(286): Error: static assert (0x1p+63L == 0x1p+52L) is false gmake: *** [lib/libdruntime.a] Error 1I'm not sure, but you might be using a non-patched version accidentally. Have you copied the newly-built dmd executable to, for example, ~/bin? I built druntime with the patched dmd 2.047: -------------------- % cd 2.047/dmd2/src/druntime % fetch -o 3528.patch 'http://d.puremagic.com/issues/attachment.cgi?id=703' % patch -l -p0< 3528.patch % gmake -f posix.mak --------------------Finally I was unable to compile phobos, as I encountered errors in different modules, including references to freebsd related files that aren't in the zip I downloaded.The following file is not in the release zip. Please download it: http://svn.dsource.org/projects/phobos/trunk/phobos/std/c/freebsd/socket.d And here's a quick-hacked FreeBSD makefile that I use: http://gist.github.com/508638 I could build Phobos with the following command lines: -------------------- % cd 2.047/dmd2/src/phobos % mkdir std/c/freebsd % fetch -o std/c/freebsd/socket.d 'http://svn.dsource.org/projects/phobos/trunk/phobos/std/c/freebsd/socket.d' % fetch -o my-freebsd.mak 'http://gist.github.com/raw/508638/b4f85e2de4f41a22a09fb895aa48b7a62fefb71e/my-freebsd.mak' % gmake -f my-freebsd.mak --------------------Am I supposed to use a different version of the compiler/libraries ?The patches should be valid for recent few releases including 2.047. I may be wrong though... [...]
Sep 11 2010
On 9/11/2010 11:25 AM, Juergen Lock wrote: <snip lots of good info about dmd and freebsd> Assuming you don't want these to get lost, you really ought to file bugzilla entries for them. Posts in a newsgroup/mailing list are a great way to have them lost in the noise and to time. Later, Brad
Sep 11 2010
On 09/12/2010 05:54, Brad Roberts wrote:On 9/11/2010 11:25 AM, Juergen Lock wrote: <snip lots of good info about dmd and freebsd> Assuming you don't want these to get lost, you really ought to file bugzilla entries for them. Posts in a newsgroup/mailing list are a great way to have them lost in the noise and to time.Done: modfl() missing for FreeBSD: http://d.puremagic.com/issues/show_bug.cgi?id=4862 DWARF debug symbols treat arrays as unsigned long long: http://d.puremagic.com/issues/show_bug.cgi?id=4863
Sep 13 2010
On 09/11/2010 20:25, I wrote:[...] And finally, I've generated liblzma bindings using bcd, adjusted them for D2, http://people.freebsd.org/~nox/tmp/d/lzma.d (sorry about the httpd treating .d as application/octet-stream) - andFixed now (the httpd.)then made a small threaded .xz compression hack to try out D2, http://people.freebsd.org/~nox/tmp/d/xzj.d This is very much a WIP but can already be used to compress files or stdin to another file or stdout (so it can be used in pipes and with tar's --use-compress-program), using all cores. Binaries at: http://people.freebsd.org/~nox/tmp/d/freebsd8/xzj http://people.freebsd.org/~nox/tmp/d/linux/xzj (both i386 of course) Run with -h for a small usage message and see the source for more info. Comments are welcome, also if anyone wants to test/port it to non-FreeBSD/Linux and/or check if the lzma bindings are OK... Also, should I submit the bindings somewhere? I checked the struct sizes and they matched: http://people.freebsd.org/~nox/tmp/d/lzmastructsizes-c.c http://people.freebsd.org/~nox/tmp/d/lzmastructsizes.d These are direct C bindings only tho i.e. I did not make a wrapper class like std.zlib... Ok so that's it for now, cheers, Juergen PS: I've meanwhile found another WIP threaded .xz compressor written in C, but it is specific to tarfiles (it even indexes them and can extract a single file quickly), and it uses a private branch(?) of liblzma: http://github.com/vasi/pixz http://github.com/vinzenz/liblzma..and turns out pixz is not really using a private branch of liblzma but just an old version of it (that still has lzma_index_init() taking two args and that also still has lzma_index_record().)
Sep 13 2010
From: Shin Fujishiro <rsinfu gmail.com> |Marco Righele <marco_righele yahoo.it> wrote:I also have used DMD2 on a FreeBSD 8 box for several month. I hope that these paches will be applied to the trunk. -- Sohgo TakeuchiGreetings, Are there any plans for a FreeBSD release of the D2 DMD compiler ?I'm using DMD v2 on my FreeBSD box with these patches:
Aug 04 2010