I have just released the first (alpha-ish) version of DSSS, the D Shared Software System. It definitely still has some bugs, but it's at a point where I need to see if anybody actually will use it
Most notable bug is that its installation scheme is a bit rigid right now. It's on "the list."
DSSS is described fully below, but up-front I will mention that part of DSSS' purpose is to provide an analogue to Perl's CPAN or Ruby's Gems.
Here's everything you need to know...
DSSS, the D Shared Software System, is a tool to ease the building, installation, configuration and acquisition of D software.
There are plenty of tools for building D software. There's bud (previously build), upon which DSSS is based, the antiquated make, and a plethora of other tools capable of building D software. DSSS intends to be more generally useful than any of them.
- DSSS eliminates the need to keep lists of source files, figuring them all out by imports in source. It will even link in the proper libraries automatically.
- DSSS can transparently build libraries from any D package.
- DSSS automatically generates .di (D import) files for libraries which cause code using the library to link it in automatically.
- Since DSSS uses bud, DSSS has all of bud's features as well.
- DSSS can automatically choose names for libraries generated from D packages which will not conflict with libraries from other sources, or incompatible compilers. So you do not need to concern yourself with library names.
As compared to building software, there are few tools capable of installing D software well.
- DSSS maintains a centralized repository of installed software, such that you can use it in your software trivially. .di files and library files are all managed by DSSS, as part of its effort to make imports map to library files automatically.
- DSSS keeps track of all of the software that has been installed through DSSS, so any of it can be uninstalled easily.
DSSS' build configuration file (dsss.conf) allows full use of version statements from D. So, you can fine-tune your software to build precisely what is necessary for the host system.
Note :Each time you change Dsss.conf it rebuilds all listed in dsss.conf :It's default action if dsss.conf is unchanged is to rebuild only those not built.
In the spirit of Perl's CPAN or Ruby's Gems, DSSS has a central repository of sources for D software. It maintains a list of software packages available, where they can be acquired, and what packages/modules they provide. Because it maintains a list of packages and modules, dependencies for a tool can be installed as easily as:
$ dsss net depsDSSS will then trace all of the software's D dependencies and install them. This feature can of course also be used to install arbitrary software, such as:
$ dsss net install mangoUpon either of these commands, DSSS will download the software from its upstream source, compile it, and install it.
(from NG:digitalmars.D.announce/6658 by Gregor Richards)
DSSS now has a source management interface, which means that the process of publishing your D software to the master DSSS source list is now quite a bit easier. The site is http://dsss.codu.org/. To manage sources there, you simply need to register, then register with me the name of your project (yes, there is still that one manual step involved), and then you can edit your section of the master source.list whenever and however you please, through the web interface. It handles updating the master repository.
Hopefully the addition of the SMI will make people a bit more willing to start making their D software available via `dsss net`
DSSS is FOSS (Free/Open Source Software) under a very permissive license. Its development code base is maintained in subversion and can be checked out from the following URL: http://svn.dsource.org/projects/dsss/trunk
DSSS has been tested and is known to work with GDC on Posix systems, and with DMD on Windows. It has not been tested with GDC on Windows or DMD on GNU/Linux.
At present, the following software is installable via DSSS:
- duit (now known at gtkD)
Much of this page is adapted from NG:digitalmars.D.announce/5352 by Gregor Richards.