On Thu, Mar 28, 2013 at 01:14:10AM +0100, Tobias Hansen wrote:
> Two people from Sage, Jeroen Demeyer and John Palmieri, volunteered to
> cover the Sage side of mentoring the project. Julien Puydt, who already
> put a lot of work into packaging Sage dependencies for Debian, is also
> on board. All we need now is a student.

Hi there.

I'd like to draft a project proposal corresponding to this idea [1]
following the proposal template. Comments are welcome.

=== Title, Project Synopsis
"Get Sage ready for Linux distributions"

Sage is currently shipped as a software distribution that, next to
genuine code, includes all dependencies as foreign packages.
Moreover, the core library and python modules cannot be compiled in a
straightforward way, as most linux distributions expect. Aim of this
project is to detach the build process of sage ("the software") from
sage ("the distribution"). The goal is a build system that works within
the context of sage as well as for any gnu/linux distribution that ships
the dependencies for sage.

=== Personal involvement/relationship
To me, a Debian user, who likes maths (and doesn't like big Ms), this
project fills an obvious gap. I have already worked on packaging sage
dependencies for debian occasionally. There, I have learned some of the
basics of packaging and software distribution. I found out that a
package for sage cannot be done overnight...

=== Details
Switching the build system of the core parts to autotools allows
implementing a standard interface to build and install the software.
Such a build system includes a mechanism to figure out the
availibility/names/locations of tools/headers/libraries and adapts the
build/install process accordingly.

An autotools build system can be used easily by package generation
scripts such as debhelper (creating Debian packages) and can be called
from within sage ("the distribution"). The difference between these uses
consists in passing different flags to the corresponding "configure"
script.

This sums up to three tasks
1 write/exchange the build systems for the core parts (c_lib,
  python-sage, extcode...).
2 modify sage ("the distribution") to use the new build systems instead
  of running 'setup.py'.
3 build stand-alone sage, draft debian packages, figure out dependencies

which split up into [optional in brackets]
1 - carefully read setup.py (within the sage-git-transition repo)
  - implement checks for headers and libraries
  - implement configure switches where needed
  - find convenient/flexible way of writing down targets (Makefile.am
         layout)
  - convert module_list.py to Makefile.ams. automatically if possible.
  - figure out run-time-paths, patch where needed.
2 - compile sage ("the distribution")
  - figure out configure environment/switches needed within sage
  - (add additional options if/where needed)
  - somehow handle sage-scripts ("bin") and doc
  - run test suite...
  - [discuss how "toplevel configure" can be done]
3 - install dependencies
  - compile everything
  - discuss appropriate number of source packages
  - write control files etc.
  - prepare sage-scripts for system wide installation
  - run tests on debian [gentoo]
  - [package sage-doc]

=== Schedule
During the GSoC period I have no university work obligations as I'm on
parental leave.

- I won't be at home May 3 till May 19. still trying to stay connected
- From July 27 to Aug 4 I will be most likely unavailable
- i'll be away another two weeks in summer (Jul/Aug), not fixed yet.

=== Risk Management
The tasks list includes the inevitable parts and doesn't promise an
instant switch to a different build system. This would be the ultimate
goal for the sage project, beyond the scope of a GSoC project. 

There is hardly any risk, that work done within this project turns out
to be useless. If difficulties occur, the modularity of the approach
allows postponing problems in 1 while still continuing to work on 2 and
3. On the other hand, if time permits, I can work out the optional
parts.

regards
felix

[1] 
https://docs.google.com/document/d/1ipzvwbhfujaubDe0QVO-V9JmmRcLZvitaeXh4r2WNqA/pub#h.pty9ayy9wo8

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to