[arch-commits] Commit in sage-data-elliptic_curves (4 files)

Antonio Rojas arojas at archlinux.org
Sun Dec 21 11:37:19 UTC 2014


    Date: Sunday, December 21, 2014 @ 12:37:18
  Author: arojas
Revision: 124287

archrelease: copy trunk to community-any

Added:
  sage-data-elliptic_curves/repos/
  sage-data-elliptic_curves/repos/community-any/
  sage-data-elliptic_curves/repos/community-any/PKGBUILD
    (from rev 124286, sage-data-elliptic_curves/trunk/PKGBUILD)
  sage-data-elliptic_curves/repos/community-any/spkg-install
    (from rev 124286, sage-data-elliptic_curves/trunk/spkg-install)

--------------+
 PKGBUILD     |   29 ++++++++++++++++++
 spkg-install |   88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 117 insertions(+)

Copied: sage-data-elliptic_curves/repos/community-any/PKGBUILD (from rev 124286, sage-data-elliptic_curves/trunk/PKGBUILD)
===================================================================
--- repos/community-any/PKGBUILD	                        (rev 0)
+++ repos/community-any/PKGBUILD	2014-12-21 11:37:18 UTC (rev 124287)
@@ -0,0 +1,29 @@
+# Maintainer: Antonio Rojas <arojas at archlinux.org>
+
+_dbname=elliptic_curves
+pkgname=sage-data-$_dbname
+pkgver=0.8
+pkgrel=1
+pkgdesc="Database of elliptic curves for Sage"
+arch=('any')
+url="http://www.sagemath.org"
+license=('GPL')
+depends=()
+makedepends=('python' 'sqlite')
+source=("http://www.sagemath.org/packages/upstream/elliptic_curves/$_dbname-$pkgver.tar.bz2" "https://raw.githubusercontent.com/sagemath/sage/6ae960b3db36b628546c0fd3ea0f7f75154edb22/build/pkgs/elliptic_curves/spkg-install")
+md5sums=('42fd8ee63c1193fab6c08c0e7523fe01'
+         'b74eff87bdc6e9df132bc50a7e3513c6')
+
+package() {
+  export SAGE_SHARE="$pkgdir"/usr/share/sage
+  cd $_dbname-$pkgver
+  mkdir src
+  mv common ellcurves src
+  python ../spkg-install
+
+# fix permissions
+  chmod 755 "$pkgdir"/usr/share/sage/ellcurves
+  chmod 644 "$pkgdir"/usr/share/sage/ellcurves/*
+
+  rm -r "$pkgdir"/usr/share/sage/ellcurves/{.r*,..r*}
+}

Copied: sage-data-elliptic_curves/repos/community-any/spkg-install (from rev 124286, sage-data-elliptic_curves/trunk/spkg-install)
===================================================================
--- repos/community-any/spkg-install	                        (rev 0)
+++ repos/community-any/spkg-install	2014-12-21 11:37:18 UTC (rev 124287)
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+
+import os
+common_curves = os.path.join(os.getcwd(), 'src', 'common')
+
+def install_cremona():
+    from sqlite3 import connect
+
+    if 'SAGE_SHARE' not in os.environ:
+        raise RuntimeError("SAGE_SHARE undefined, maybe run `sage -sh`?")
+
+    cremona_root = os.path.join(os.environ['SAGE_SHARE'], 'cremona')
+    if not os.path.exists(cremona_root):
+        os.makedirs(cremona_root)
+
+    target = os.path.join(cremona_root, 'cremona_mini.db')
+
+    if os.path.exists(target):
+        os.remove(target)
+
+    con = connect(target)
+
+    con.execute('CREATE TABLE t_class(rank INTEGER, class TEXT PRIMARY KEY,'
+            ' conductor INTEGER)')
+    con.execute('CREATE TABLE t_curve(curve TEXT PRIMARY KEY, class TEXT, tors'
+            ' INTEGER, eqn TEXT UNIQUE)')
+    con.execute('CREATE INDEX i_t_class_conductor ON t_class(conductor)')
+    con.execute('CREATE INDEX i_t_curve_class ON t_curve(class)')
+
+    class_data = []
+    curve_data = []
+
+    for line in open(os.path.join(common_curves, 'allcurves.00000-09999')):
+        N, iso, num, eqn, r, tors = line.split()
+        cls = N + iso
+        cur = cls + num
+        if num == "1":
+            class_data.append((N, cls, r))
+        curve_data.append((cur, cls, eqn, tors))
+
+    con.executemany('INSERT INTO t_class(conductor,class,rank) VALUES'
+            ' (?,?,?)', class_data)
+    con.executemany('INSERT INTO t_curve(curve,class,eqn,tors) VALUES'
+            ' (?,?,?,?)', curve_data)
+
+    con.commit()
+
+def install_ellcurves():
+    import shutil, tempfile
+
+    if 'SAGE_SHARE' not in os.environ:
+        raise RuntimeError("SAGE_SHARE undefined, maybe run `sage -sh`?")
+
+    target = os.path.join(os.environ['SAGE_SHARE'], 'ellcurves')
+    if os.path.exists(target):
+        try:
+            shutil.rmtree(target)
+        except OSError:
+            os.remove(target)
+
+    shutil.move(os.path.join('src', 'ellcurves'), target)
+    rank = {}
+    for line in open(os.path.join(common_curves, 'allcurves.00000-09999')):
+        r = line.split()[4]
+        if r not in rank:
+            rank[r] = open(tempfile.mkstemp()[1], 'w')
+        rank[r].write(line)
+
+    for r, f in rank.items():
+        f.close()
+        endpath = os.path.join(target, 'rank' + r)
+        if os.path.exists(endpath):
+            old = tempfile.mkstemp()[1]
+            shutil.move(endpath, old)
+            shutil.move(f.name, endpath)
+            f = open(endpath, 'a')
+            tmp = open(old, 'r')
+            f.write(tmp.read())
+            tmp.close()
+            f.close()
+            os.remove(old)
+        else:
+            shutil.move(f.name, endpath)
+        os.chmod(endpath, 0o644)
+
+if __name__ == '__main__':
+    install_cremona()
+    install_ellcurves()



More information about the arch-commits mailing list