#12342: things I don't like about the json <--> hg conversion code
----------------------------+-----------------------------------------------
Reporter: was | Owner: tbd
Type: defect | Status: new
Priority: critical | Milestone: sage-5.0
Component: distribution | Keywords:
Work_issues: | Upstream: N/A
Reviewer: | Author:
Merged: | Dependencies:
----------------------------+-----------------------------------------------
1. It doesn't print a usage message when the script is just run:
{{{
wstein@sage:/scratch/wstein/sage-4.8-sage.math.washington.edu-x86_64-Linux$
./sage -sh
Starting subshell with Sage environment variables set.
Be sure to exit when you are done and do not do anything
with other copies of Sage!
Bypassing shell configuration files ...
SAGE_ROOT=/mnt/usb1/scratch/wstein/sage-4.8-sage.math.washington.edu-x86_64-Linux
(sage subshell) sage:sage-4.8-sage.math.washington.edu-x86_64-Linux
wstein$ cd spkg/base
SAGE_ROOT=/mnt/usb1/scratch/wstein/sage-4.8-sage.math.washington.edu-x86_64-Linux
(sage subshell) sage:base wstein$ ./json_bundle.py
SAGE_ROOT=/mnt/usb1/scratch/wstein/sage-4.8-sage.math.washington.edu-x86_64-Linux
}}}
There should have been a usage message detailing the options.
2. There really are no tests at all of this. The ticket #3052 where it
was introduced talked about the challenge of writing tests, but then
seemed to conclude with totally giving up. This is not acceptable. I'm
totally opposed to ever introducing code into Sage that does anything
useful if it doesn't have tests. If it isn't, tested then it will
definitely be broken soon enough. This is exactly the sort of code that
is likely to break too, due to Mercurial making some format change, us
switching away from Mercurial etc. With no tests, the brokeness of this
code could go unnoticed even if we switched all of sage to git.
3. The name bundle.json for the JSON hg repo could clash with an existing
file, and is confusing, since it doesn't mention hg at all. It would be
much better to use .hg_bundle.json, since by starting with ".hg" it's
clear it is something that is reserved for Mercurial usage.
4. This code needs to be refactored. A bare minimum functionality for
this should have been something like:
{{{
$ sage -hg_text_expand .hg
# produce .hg_bundle.json
$ sage -hg_text_collapse .hg_bundle.json
# create .hg or give an error if .hg is there.
}}}
Then the other functionality could be built on that. As it is, just doing
the conversion either way runs a bunch of code in the middle of a for loop
(over spkg's). Currently the most basic functionality (which could be
easily tested) is obfuscated; if it were available other people could
easily build tools on top of it to do what they need (e.g., with their own
hg repos).
5. A serious issue with this patch is that it seems to already be totally
broken. Just take the sage-4.8 tarball, extract it, and type "make text-
expand". What happens is:
{{{
wstein@sage:/scratch/wstein/2012-01-22/sage-4.8$ time make text-expand
./spkg/base/text-expand
Determined SAGE_ROOT=/scratch/wstein/2012-01-22/sage-4.8
Extracting SPKG: ./spkg/standard/boost-cropped-1.34.1.spkg ...
Extracting SPKG: ./spkg/standard/jinja2-2.5.5.spkg ...
Extracting SPKG: ./spkg/standard/atlas-3.8.4.p1.spkg ...
Extracting SPKG: ./spkg/standard/fortran-20100629.spkg ...
Deconstructing repo at ./spkg/standard/cddlib-094f.p10 ...
************************************************************************
You must compile Sage first using 'make' in the Sage root directory.
(If you have already compiled Sage, you must set the SAGE_ROOT variable
in the file './sage').
************************************************************************
./spkg/base/text-expand: line 23: ./json_bundle.py: No such file or
directory
rm: cannot remove `./spkg/standard/cddlib-094f.p10/bundle.hg': No such
file or directory
Deconstructing repo at ./spkg/standard/genus2reduction-0.3.p8 ...
...
** and hundreds more similar error messages **
}}}
Maybe I'm doing something wrong, but there are no directions, and if one
can't just do "make text-expand" from a bare tarball, then there should be
an immediate error message to that effect.
6. Looking at the source code, I'm concerned about whether or not *every*
.hg repo (e.g., even the base repo) is actually changed to JSON when "make
text-expand" is run. This is just a concern. I do note that after
doing "make text-expand" the hg repo in $SAGE_ROOT is gone, with nothing
in its place. Not happy about that (maybe this is caused by everything
going to hell above):
{{{
wstein@sage:/scratch/wstein/2012-01-22/sage-4.8$ ls -al
total 128
drwxr-xr-x 4 wstein wstein 4096 2012-01-22 08:28 .
drwxr-xr-x 4 wstein wstein 4096 2012-01-22 08:38 ..
-rw-r--r-- 1 wstein wstein 71842 2012-01-19 21:38 COPYING.txt
-rw-r--r-- 1 wstein wstein 366 2012-01-19 21:38 .hgignore
-rw-r--r-- 1 wstein wstein 1949 2012-01-19 21:38 .hgtags
drwxr-xr-x 2 wstein wstein 4096 2012-01-19 21:38 ipython
-rw-r--r-- 1 wstein wstein 4399 2012-01-19 21:38 Makefile
-rw-r--r-- 1 wstein wstein 11673 2012-01-19 21:38 README.txt
-rwxr-xr-x 1 wstein wstein 5046 2012-01-19 21:38 sage
drwxr-xr-x 4 wstein wstein 4096 2012-01-19 21:38 spkg
}}}
Anyway, needs work.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12342>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.