Anybody have a SPEC file to build a Fedora RPM or configure script for Debian for SAGE 3.0.1

21 views
Skip to first unread message

PJ

unread,
May 21, 2008, 3:43:42 PM5/21/08
to sage-support, Walter Jacob
Today in the Fedora Linux list, a person asked if there was a Fedora
project to build & distribute SAGE. He spoke with such enthusiasm
about SAGE that I became interested to see what it does and I'm
compiling it right now (I figure there's no point in trying to package
it for Fedora if I can't compile it). I didn't read your README all
the way through before the make started--then I did. Its been going
about 1 hour so far. Holy cow. The good news is that all of the
prerequisites seem to be available and were already installed in my
system. (Without a "configure" script to scan for prereqs and refuse
to build without them, I'm not entirely sure.)

If there is an effort to package SAGE for Fedora, please let me know.
I don't find one after some searching. If anybody has a spec file to
build an RPM for current SAGE, I'd appreciate seeing it. Or if you
have a Debian package configure file, I think I could convert. The
only lead I've found so far is that PCLinuxOS, which is an RPM based
distribution, offers version 2.0.2 of SAGE in rpm format. I've been
studying that spec file and it appears to me that some changes in the
build/install procedure have changed in SAGE itself, at lest if I'm
understanding the SAGE README.txt file. PCLinuxOS packaging is enough
different from Fedora that I'll wrestle with the details.

The build & install procedure for SAGE 3.0.1 is different from almost
all GNU software in Fedora, where you type "configure ..." "make" and
"make install DESTDIR=xxx" in a "build root" environment.

I'm curious about a few things in particular.

1. About the lack of "make install". Is it correct that after running
"make", then I can run

$ sage -bdist 3.0.1

and the result that gets deposited in "dist" is a complete, self
contained set of files that includes everything needed to run SAGE and
nothing else? (no source code, etc?). That resulting directory
"dist" can be relocated anywhere and SAGE will still run?

2. What does SAGE's build do if it can't find something it wants, such
as a python devel package or McCauley2? Don't you think a
"configure" script for SAGE would be a good idea? The build takes so
long, it seems like a waste that it doesn't check development
libraries at the start and report back on what it can/can't find. I
"thought" I had the prerequisites because I have everything mentioned
in the README. However, the PCLinuxOS setup has several development
libraries I don't think I have. Here's a list of some build
requirements that they list:

BuildRequires: python-scons
BuildRequires: libgfortran
BuildRequires: ntl-devel
BuildRequires: libgd-devel
BuildRequires: libopencdk-develsage-2.9.3-2gri65072007.src.rpm
BuildRequires: libgpg-error-devel
BuildRequires: libgcrypt-devel
BuildRequires: libgnutls-devel
BuildRequires: gnutls
BuildRequires: scons
BuildRequires: libsqlite3_0-devel
BuildRequires: mercurial
BuildRequires: libfac
BuildRequires: clisp
BuildRequires: python-gd
BuildRequires: IPython
BuildRequires: R-base

They have R in the list. That's cool, I like R! But I can't say for
sure

3. I do not understand the README comment 9, on installing GAP. Once
SAGE is installed from RPM, users won't have authority to do this for
themselves, so I better try to take care of it. I suppose you want
those things packaged as optional additional components for the SAGE
program? Or do you rather have them in the one-giant-rpm file? I
understand

$ ./sage -optional

I don't understand the instructions "then installing (with ./sage -i)
the package whose name
begins with database_gap. "

I suppose I mean to say, is there a way I can just download those
additional database files by http or ftp and then install them without
being interactive with SAGE.

And, I suppose most importantly, if I run "sage -bdist 3.0.1", will
those optional database files be included?

4. Another packaging problem is that the name "sage" is already
claimed in Fedora by an OpenGL library, and I expect they won't
approve a package called SAGE. I was wondering if you support /oppose
a name like "sagemath".

mabshoff

unread,
May 21, 2008, 4:05:48 PM5/21/08
to sage-support
PJ wrote:

Hi PJ,

> Today in the Fedora Linux list, a person asked if there was a Fedora
> project to build & distribute SAGE. He spoke with such enthusiasm
> about SAGE that I became interested to see what it does and I'm
> compiling it right now (I figure there's no point in trying to package
> it for Fedora if I can't compile it). I didn't read your README all
> the way through before the make started--then I did. Its been going
> about 1 hour so far. Holy cow. The good news is that all of the
> prerequisites seem to be available and were already installed in my
> system. (Without a "configure" script to scan for prereqs and refuse
> to build without them, I'm not entirely sure.)
>
> If there is an effort to package SAGE for Fedora, please let me know.

Check out

http://fedoraproject.org/wiki/SIGs/SciTech/SAGE

> I don't find one after some searching. If anybody has a spec file to
> build an RPM for current SAGE, I'd appreciate seeing it. Or if you
> have a Debian package configure file, I think I could convert.

Check out

http://wiki.sagemath.org/DebianSAGE

All the Debian config files are inside the individual spkgs in the
dist directory. That actually results in individual packages and for
Debian only about 25 components on the 80 or so in Sage need to be
packaged. That approach does lead to some compatibility and testing
issues, but the monolithic approach is unlikely to work for
distributions. Note that Sage aims to work on much more than just
Linux, so the old "why do you not use what is available on the system"
approach does not work. There are reasons not to do that on Linux
either, but I don't want to rant here.

> The
> only lead I've found so far is that PCLinuxOS, which is an RPM based
> distribution, offers version 2.0.2 of SAGE in rpm format. I've been
> studying that spec file and it appears to me that some changes in the
> build/install procedure have changed in SAGE itself, at lest if I'm
> understanding the SAGE README.txt file. PCLinuxOS packaging is enough
> different from Fedora that I'll wrestle with the details.

Well, AFAIK that is the only rpm based packaging effort I am aware of
that got somewhere. Some people are also working on Gentoo ebuilds,
but I am pretty sure that won't help much.

> The build & install procedure for SAGE 3.0.1 is different from almost
> all GNU software in Fedora, where you type "configure ..." "make" and
> "make install DESTDIR=xxx" in a "build root" environment.
>
> I'm curious about a few things in particular.
>
> 1. About the lack of "make install". Is it correct that after running
> "make", then I can run
>
> $ sage -bdist 3.0.1
>
> and the result that gets deposited in "dist" is a complete, self
> contained set of files that includes everything needed to run SAGE and
> nothing else? (no source code, etc?). That resulting directory
> "dist" can be relocated anywhere and SAGE will still run?

Untar the resulting archive, unpack it and it is good to go.

> 2. What does SAGE's build do if it can't find something it wants, such
> as a python devel package or McCauley2? Don't you think a
> "configure" script for SAGE would be a good idea?

Nope.

> The build takes so
> long, it seems like a waste that it doesn't check development
> libraries at the start and report back on what it can/can't find.

We build *everything* from source, exceptions are maybe iconv and a
couple other system libraries.

>I "thought" I had the prerequisites because I have everything mentioned
> in the README. However, the PCLinuxOS setup has several development
> libraries I don't think I have. Here's a list of some build
> requirements that they list:
>
> BuildRequires: python-scons
> BuildRequires: libgfortran
> BuildRequires: ntl-devel
> BuildRequires: libgd-devel
> BuildRequires: libopencdk-develsage-2.9.3-2gri65072007.src.rpm
> BuildRequires: libgpg-error-devel
> BuildRequires: libgcrypt-devel
> BuildRequires: libgnutls-devel
> BuildRequires: gnutls
> BuildRequires: scons
> BuildRequires: libsqlite3_0-devel
> BuildRequires: mercurial
> BuildRequires: libfac
> BuildRequires: clisp
> BuildRequires: python-gd
> BuildRequires: IPython
> BuildRequires: R-base

Sage builds all of the above from source [the exception is fortran for
which we use binaries]. That spec file removed certain bits from Sage
that are provided by PCLinux OS to make the build quicker and the
binary smaller.

> They have R in the list. That's cool, I like R! But I can't say for
> sure
>
> 3. I do not understand the README comment 9, on installing GAP. Once
> SAGE is installed from RPM, users won't have authority to do this for
> themselves, so I better try to take care of it. I suppose you want
> those things packaged as optional additional components for the SAGE
> program? Or do you rather have them in the one-giant-rpm file? I
> understand

Individual rpms would the the goal. Sage is designed so that every
installation can be used to develop, so most people do not install in /
opt or /usr/local, but locally. That is changing to some extend, but
if you want to install additional packages via the Sage system you do
need write permission.

> $ ./sage -optional
>
> I don't understand the instructions "then installing (with ./sage -i)
> the package whose name
> begins with database_gap. "
>
> I suppose I mean to say, is there a way I can just download those
> additional database files by http or ftp and then install them without
> being interactive with SAGE.

Sage does compile/install those packages along the other packages,
i.e. none of the code touches anything outside the Sage root
directory.

> And, I suppose most importantly, if I run "sage -bdist 3.0.1", will
> those optional database files be included?

If it has been installed at that point: yes.

> 4. Another packaging problem is that the name "sage" is already
> claimed in Fedora by an OpenGL library, and I expect they won't
> approve a package called SAGE. I was wondering if you support /oppose
> a name like "sagemath".

Sounds fine to me.

Cheers,

Michael

William Stein

unread,
May 21, 2008, 6:11:52 PM5/21/08
to sage-s...@googlegroups.com, debia...@googlegroups.com, sage-...@googlegroups.com
On Wed, May 21, 2008 at 12:43 PM, PJ <paulj...@gmail.com> wrote:
>
> Today in the Fedora Linux list, a person asked if there was a Fedora
> project to build & distribute SAGE. He spoke with such enthusiasm
> about SAGE that I became interested to see what it does and I'm
> compiling it right now (I figure there's no point in trying to package
> it for Fedora if I can't compile it). I didn't read your README all
> the way through before the make started--then I did. Its been going
> about 1 hour so far. Holy cow. The good news is that all of the
> prerequisites seem to be available and were already installed in my
> system. (Without a "configure" script to scan for prereqs and refuse
> to build without them, I'm not entirely sure.)

It runs a configure process implicitly as part of the first package
it installs and will refuse to continue if you don't have the prerequisites.

>
> If there is an effort to package SAGE for Fedora, please let me know.
> I don't find one after some searching. If anybody has a spec file to

There's a lot of work going into packaging sage for Debian. See e.g.,
http://groups.google.com/group/debian-sage

> build an RPM for current SAGE, I'd appreciate seeing it. Or if you
> have a Debian package configure file, I think I could convert. The
> only lead I've found so far is that PCLinuxOS, which is an RPM based
> distribution, offers version 2.0.2 of SAGE in rpm format. I've been
> studying that spec file and it appears to me that some changes in the
> build/install procedure have changed in SAGE itself, at lest if I'm
> understanding the SAGE README.txt file. PCLinuxOS packaging is enough
> different from Fedora that I'll wrestle with the details.
>
> The build & install procedure for SAGE 3.0.1 is different from almost
> all GNU software in Fedora, where you type "configure ..." "make" and
> "make install DESTDIR=xxx" in a "build root" environment.
>
> I'm curious about a few things in particular.
>
> 1. About the lack of "make install". Is it correct that after running
> "make", then I can run
>
> $ sage -bdist 3.0.1
>
> and the result that gets deposited in "dist" is a complete, self
> contained set of files that includes everything needed to run SAGE and
> nothing else? (no source code, etc?). That resulting directory
> "dist" can be relocated anywhere and SAGE will still run?

Yes.

>
> 2. What does SAGE's build do if it can't find something it wants, such
> as a python devel package or McCauley2? Don't you think a
> "configure" script for SAGE would be a good idea? The build takes so
> long, it seems like a waste that it doesn't check development
> libraries at the start and report back on what it can/can't find.

The only prerequisites to build/install/use Sage are

gcc, g++, make, m4, perl, ranlib, and tar

These are checked when Sage first starts building.

> I
> "thought" I had the prerequisites because I have everything mentioned
> in the README. However, the PCLinuxOS setup has several development
> libraries I don't think I have. Here's a list of some build
> requirements that they list:
>
> BuildRequires: python-scons
> BuildRequires: libgfortran
> BuildRequires: ntl-devel
> BuildRequires: libgd-devel
> BuildRequires: libopencdk-develsage-2.9.3-2gri65072007.src.rpm
> BuildRequires: libgpg-error-devel
> BuildRequires: libgcrypt-devel
> BuildRequires: libgnutls-devel
> BuildRequires: gnutls
> BuildRequires: scons
> BuildRequires: libsqlite3_0-devel
> BuildRequires: mercurial
> BuildRequires: libfac
> BuildRequires: clisp
> BuildRequires: python-gd
> BuildRequires: IPython
> BuildRequires: R-base
>
> They have R in the list. That's cool, I like R! But I can't say for
> sure

Sage includes R. You're might be building R right now.

> 3. I do not understand the README comment 9, on installing GAP.

That is not a comment on installing GAP but on installing the optional
GAP database package.

> Once
> SAGE is installed from RPM, users won't have authority to do this for
> themselves, so I better try to take care of it.

It's far less necessary than we suggest in 9. It used to be a very important
thing to do when most Sage users were number theorists. Now I bet
at most 0.1% of Sage users actually install that optional database. In fact,
I don't. We should change the README.txt.

> I suppose you want
> those things packaged as optional additional components for the SAGE
> program? Or do you rather have them in the one-giant-rpm file? I
> understand
>
> $ ./sage -optional
>
> I don't understand the instructions "then installing (with ./sage -i)
> the package whose name
> begins with database_gap. "
>
> I suppose I mean to say, is there a way I can just download those
> additional database files by http or ftp and then install them without
> being interactive with SAGE.
>

I wouldn't worry about optional stuff for now.

> And, I suppose most importantly, if I run "sage -bdist 3.0.1", will
> those optional database files be included?

Yes.

>
> 4. Another packaging problem is that the name "sage" is already
> claimed in Fedora by an OpenGL library, and I expect they won't
> approve a package called SAGE. I was wondering if you support /oppose
> a name like "sagemath".

Fine with me.

-- William

Reply all
Reply to author
Forward
0 new messages