Thread overview
D Shared Software System 0.8 released!
Nov 21, 2006
Gregor Richards
Nov 23, 2006
Gregor Richards
Nov 28, 2006
Charles D Hixson
Nov 29, 2006
Georg Wrede
November 21, 2006
No, you didn't misread. I've been releasing some pseudo-silent versions in the interim, fixing a few bugs at a time.

As always, more information and downloads are available from http://www.dsource.org/projects/dsss/

This version should work on GNU/Linux with DMD or GDC, and Windows with GDC. Hypothetically it should work on Mac OS X with GDC, but I have no system to test that on, so buyer beware. If you get it working on Mac OS X, patches gladly and graciously accepted :)

Also, there is now a mirror for sources accessible via 'dsss net', so many things should be installable even if DSource goes down ^^

If you have a package you'd like to be installable via 'dsss net', please tell me ( Richards@codu.org ) its information. I'm still in the process of setting up a proper source management interface.


These packages are currently installable via 'dsss net':
bcd.gen
bintod
ddbi
derelict
dirclib
dool
dsss-0.5
dsss-0.6
dsss-0.7
dsss-svn
dsss
dsss-test
dstring
duit
gdc-gcc-3.4
gdc-gcc-4.0
mango
minid
wxd


Note the addition of minid :)

Here's the full changelog from 0.4 to 0.8:
        - Fixed rmRecursive to work on Windows.
        - Fixed installation to work on Mac OS X.
        - Fixed dependency tracking to work for software with special sections.
        - Show synchronize commands (had previously hidden them, decided that showing them is the superior option)
        - Run curl in "insecure" mode (the certs are worthless anyway)
        - Ignore output from bsdtar, which is almost exclusively false
          negatives.
        - Works on DMD on GNU/Linux.
        - Give a useful error message if dsss net is run from the source dir (which is unsupported).
        - Added a -circular flag to dsss_build, which will make circular
          dependencies work in GDC.
        - Don't necessarily die on failed sync (though it'll die on failed initial sync)
        - Report errors from synchronization
November 23, 2006
dpc@chesed:~$ dsss net install dsss-0.9
[...]
sss/main.d => dsss
Command: cd dsss_build
Command: make -f Makefile.unix
+ make -f Makefile.unix
dmd -op -release -inline -version=BuildVerbose -ofdsss_build build.d
util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d source.d
util/fdt.d util/fileex.d util/linetoken.d util/macro.d util/file2.d
gcc build.o util/pathex.o source_bn.o util/str.o build_bn.o util/booltype.o
source.o util/fdt.o util/fileex.o util/linetoken.o util/macro.o
util/file2.o -o dsss_build -m32 -lphobos -lpthread -lm
+ /home/dpc/d/bin/dsss_build -I/home/dpc/d/include/d -LIBPATH=/home/dpc/d/lib -LIBPATH=.  -od. -g -Idsss_build -LIBPATH=dsss_build
sss/main.d -Tdsss
net.o: In function `_D3sss3net3netFAAaZi':
/tmp/DSSS_dsss-0.9/dsss-0.9/sss/net.d:56: undefined reference to
`_D3sss4conf11inSourceDirx'
collect2: ld returned 1 exit status

dpc@chesed:~$ dsss
DSSS version 0.7
[...]

I couldn't get dsss-0.8 or dsss-0.9 to compile manually neither.
November 23, 2006
Dawid Ciężarkiewicz wrote:
> dpc@chesed:~$ dsss net install dsss-0.9
> [...]
> sss/main.d => dsss
> Command: cd dsss_build
> Command: make -f Makefile.unix
> + make -f Makefile.unix
> dmd -op -release -inline -version=BuildVerbose -ofdsss_build build.d
> util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d source.d
> util/fdt.d util/fileex.d util/linetoken.d util/macro.d util/file2.d
> gcc build.o util/pathex.o source_bn.o util/str.o build_bn.o util/booltype.o
> source.o util/fdt.o util/fileex.o util/linetoken.o util/macro.o
> util/file2.o -o dsss_build -m32 -lphobos -lpthread -lm
> + /home/dpc/d/bin/dsss_build -I/home/dpc/d/include/d -LIBPATH=/home/dpc/d/lib -LIBPATH=.  -od. -g -Idsss_build -LIBPATH=dsss_build
> sss/main.d -Tdsss
> net.o: In function `_D3sss3net3netFAAaZi':
> /tmp/DSSS_dsss-0.9/dsss-0.9/sss/net.d:56: undefined reference to
> `_D3sss4conf11inSourceDirx'
> collect2: ld returned 1 exit status
> 
> dpc@chesed:~$ dsss
> DSSS version 0.7
> [...]
> 
> I couldn't get dsss-0.8 or dsss-0.9 to compile manually neither.

This all comes down to a really annoying and as-of-yet unsolved problem with bud: It prefers things in -I to things in the local directory. This has been solved for everything other than DSSS itself, but DSSS has magic bootstrap problems.

In the 'INSTALL' doc: "2) If you currently have DSSS installed, UNINSTALL IT."

If you're switching from a binary install to a compiled install (in which case using dsss uninstall won't work), you can either delete the whole directory (and any net-installed packages with it), or:

bin/dsss.exe
include/d/sss
include/d/util
include/d/hcf
lib/libSDD-sss.lib
lib/libSbudutil.lib
lib/libSDD-hcf.lib


Getting this to work nicely is still an open problem being investigated.

Anyway, after uninstalling the old one, you should be able to use 'make' to get a clean new one.

 - Gregor Richards

PS: 'dsss net install dsss' will probably never work on Windows, since Windows doesn't allow you to write to an executable being run, and dsss.exe is being run at the time :)
November 24, 2006
Gregor Richards wrote:
> In the 'INSTALL' doc: "2) If you currently have DSSS installed, UNINSTALL IT."

Thanks. Helped. Next thing:

dpc@chesed:~/tmp/dsss-0.9$ ./dsss install --prefix=~/d/
Installing hcf
Command: install hcf/env.d ~/d//include/d/hcf
+ making directory ~/d//include/d/hcf
+ copying env.d
+ cp -fpRL hcf/env.d ~/d//include/d/hcf/env.d
cp: cannot create regular file `/home/dpc/d//include/d/hcf/env.d': No such
file or directory
dpc@chesed:~/tmp/dsss-0.9$ ls ~/d//include/d/hcf
ls: /home/dpc/d//include/d/hcf: No such file or directory

Something plainly failed.
November 28, 2006
Gregor Richards wrote:
> Dawid Ciężarkiewicz wrote:
>> dpc@chesed:~$ dsss net install dsss-0.9
>> ...
> 
> Getting this to work nicely is still an open problem being investigated.
> 
> Anyway, after uninstalling the old one, you should be able to use 'make' to get a clean new one.
> 
>  - Gregor Richards
> 
> PS: 'dsss net install dsss' will probably never work on Windows, since Windows doesn't allow you to write to an executable being run, and dsss.exe is being run at the time :)

FWIW, this is my first attempt at installing DSSS:
+ /home/charles/downloads/D/DSSS/dsss-0.9/dsss_build/dsss_build -I/home/charles/downloads/D/DSSS/dsss-0.9/inst/include/d -LIBPATH=/home /charles/downloads/D/DSSS/dsss-0.9/inst/lib -LIBPATH=.  -od. -g -Idsss_build -LIBPATH=dsss_build sss/main.d -Tdsss
./libSDD-sss.a(conf.o): In function `_assert_3sss4conf':
sss/conf.d:(.gnu.linkonce.t_assert_3sss4conf+0x19): undefined reference to `_d_assert'
dsss_build/libSbudutil.a(str.o): In function `_assert_4util3str':
util/str.d:(.gnu.linkonce.t_assert_4util3str+0x11): undefined reference to `_d_assert'
collect2: ld returned 1 exit status

I have dmd.175 installed (though I've only tested it with a plain "dmd" command to make sure I didn't bungle the install [which I did the first time], no programs).
November 28, 2006
Little off topic.

I've tried to compile many of packages available through `dsss net list` and most of them miserably failed to compile. Although that's not DSSS problem, it's pain anyway.

I thought state of D libs available right now is little better (more stability... ). I'm starting to understand how important D 1.0 stability freez may be for future D libraries development.
November 29, 2006
Dawid Ciężarkiewicz wrote:
> Little off topic.
> 
> I've tried to compile many of packages available through `dsss net list` and
> most of them miserably failed to compile.

Off topic or not, this is extremely valuable information.

A tool like DSSS absolutely needs to start with checking the environment thoroughly. That includes paths, access rights, libraries, possible multiple installations of, say, DMD, and other such things. And, it includes plain and easy to understand error messages, telling what is wrong, and how to fix it.

/Knowing/ that the target machine is OK makes life a lot easier when the newly downloaded package doesn't install properly. This saves time and nerves of all three parties involved.

What might be more difficult is basic checking of the package to be installed. But the more of the usual suspects we can eliminate up front, the more time we can dedicate to the non-trivial problems.

Every bad installation tells us how to avoid the same mistake in the future. So, we need to  examine _why_ your installations failed.