[arch-commits] Commit in sage-data-elliptic_curves/repos (3 files)

Felix Yan felixonmars at archlinux.org
Tue Jul 7 15:10:01 UTC 2020


    Date: Tuesday, July 7, 2020 @ 15:10:01
  Author: felixonmars
Revision: 658841

archrelease: copy trunk to community-staging-any

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

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

Copied: sage-data-elliptic_curves/repos/community-staging-any/PKGBUILD (from rev 658840, sage-data-elliptic_curves/trunk/PKGBUILD)
===================================================================
--- community-staging-any/PKGBUILD	                        (rev 0)
+++ community-staging-any/PKGBUILD	2020-07-07 15:10:01 UTC (rev 658841)
@@ -0,0 +1,29 @@
+
+# Maintainer: Antonio Rojas <arojas at archlinux.org>
+
+_dbname=elliptic_curves
+pkgname=sage-data-$_dbname
+pkgver=0.8.1
+pkgrel=2
+pkgdesc="Database of elliptic curves for SageMath"
+arch=(any)
+url="https://www.sagemath.org"
+license=(GPL)
+depends=()
+makedepends=(python sqlite)
+source=("https://mirrors.mit.edu/sage/spkg/upstream/elliptic_curves/$_dbname-$pkgver.tar.bz2"
+        "https://raw.githubusercontent.com/sagemath/sage/6ae960b3db36b628546c0fd3ea0f7f75154edb22/build/pkgs/elliptic_curves/spkg-install")
+sha256sums=('5fba5470d9d91f06282ed5edfc45bf0ea1c5f7c8d4837c46234b17be1481fd50'
+            '7132d9617bb99198654f18dffbf6ded18ad03de1a46aa6771f565064a3bfad2f')
+
+package() {
+  export SAGE_SHARE="$pkgdir"/usr/share
+  cd $_dbname-$pkgver
+  mkdir src
+  cp -r common ellcurves src
+  python ../spkg-install
+
+# fix permissions
+  chmod 755 "$pkgdir"/usr/share/ellcurves
+  chmod 644 "$pkgdir"/usr/share/ellcurves/*
+}

Copied: sage-data-elliptic_curves/repos/community-staging-any/spkg-install (from rev 658840, sage-data-elliptic_curves/trunk/spkg-install)
===================================================================
--- community-staging-any/spkg-install	                        (rev 0)
+++ community-staging-any/spkg-install	2020-07-07 15:10:01 UTC (rev 658841)
@@ -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