Hi Dmitrii, > OK, I oversimplified. > > As far as a practical step towards having more flexibility: > Presently Sage does not have any mechanism allowing for "virtual" > packages (I am stealing from Debian/Fink here) > that would allow for using the already installed, somewhere on the > system, non-Sage part of a Sage spkg. > It would check if what's already installed satisfies the > prerequisites, > and if not, (sage -install, say) would pull a replacing "full" spkg > from a Sage repository. > Of course in some cases the pre-requisites check is quite tricky, but > there are trivial cases, like bzip and mercurial, too... > > How hard would it be to have such a thing? >
See below ... > > Sage has a cross-platform build system and environment. One question > > that is related to the discussion in this thread is what the situation > > is with other cross-platform build environments. Of course I know > > about Debian/Fink/Cygwin/etc., which are specific to different > > operating systems. Does anybody know of *any* good cross-platform > > build environments besides Sage? Python + > > (distutils+distribute+whatever) is such a thing to some extent... > > Debian packaging/build system is used in Fink > (for people unfamiliar with MacOSX:http://www.finkproject.org/) > and there is also a FreeBSD port that uses > Debian:http://www.debian.org/ports/kfreebsd-gnu/ > Thus, yes, Debian is one such cross-platform system. > OK, yes, it still needs some OS-specific glue, but not too much, and > it runs atop of a Unix shell. > > By the way, In Haskell there is a build environment (Cabal ?) similar > to the Python's... > > Dmitrii > Caution, there's more than meets the eye. I don't get around to write some Wiki page (which is overdue, sigh), so I write it here: Firstly, Sage has a "relocatability" or "prefix-ability", i.e. one can install Sage anywhere in the file system tree where you like. For reasons why one should want this to do in general, read about "Case 1" in the following article: http://www.gentoo.org/proj/en/gentoo-alt/prefix/usecases.xml In contrast, "official" Debian packages want to put their content into fixed locations. Of course, e.g. many autotool-based packages allow for some option "--with_prefix=...". There are even package/install systems to allow for that on a broad scale, like the Tcl-written "Darwinports" (the "brother" of Fink), or the Gentoo/Alt "prefix" project (from which I took the link above). But for Sage, this simply is not enough. Since secondly, this "relocatability" or "prefix-ability" of Sage even works after installation! One can install Sage in one subdirectory, and then move its whole subtree elsewhere, and start it up there. After some bookkeeping actions, Sage will work! This is important if you e.g. distribute binary versions of Sage --- you'll never know where the users are going to put it. In this case, Sage is not built from source, and the sources of all the non-core spkgs are not contained in the Sage binary distributions, so you just can't "re- install" issuing another "./configure --with_prefix=SOME_OTHER_PLACE && make && make install" sequences. Some users of Sage don't even have a C compiler installed anywhere on their system --- and they don't need to, in order to use Sage! This double nature of Sage being distributable both as source as well as "pure binary" is quite challenging, but rewarding. I hope you understand now, that the notion of "virtual packages" does not fit too well in the Sage eco-system. OTOH, such a kind of flexibility should be possible of course ... but not as easily as it might seem. Cheers, Georg -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org