[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