summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLehrgangsserver2023-02-03 20:34:01 +0100
committerLehrgangsserver2023-02-03 20:34:01 +0100
commit539fce5f675157ef552b009d49f526b0d61e3d53 (patch)
tree5c6ecff74b4791a79926e6c5f74bd88dd0e03cf3
parent4a279b198b4cb7623614b677bc6bd0553b3d1d91 (diff)
downloadaur-539fce5f675157ef552b009d49f526b0d61e3d53.tar.gz
updates, remove isolate from the package
-rw-r--r--.SRCINFO15
-rw-r--r--PKGBUILD45
-rw-r--r--dont_install_isolate.patch24
-rw-r--r--new_jinja2_1.patch11
-rw-r--r--new_jinja2_2.patch136
-rw-r--r--pgf.patch45
6 files changed, 196 insertions, 80 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a733cb180ad1..b68f34f98ef1 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = cms-germany-git
pkgdesc = CMS, or Contest Management System, is a distributed system for running and (to some extent) organizing a programming contest. This is a fork used for the German IOI team selection process.
- pkgver = r4741.f6b4bd18
+ pkgver = r5032.b78d8a4e
pkgrel = 1
url = https://github.com/ioi-germany/cms
install = cms-germany-git.install
@@ -10,6 +10,7 @@ pkgbase = cms-germany-git
makedepends = git
makedepends = asciidoc
makedepends = python-setuptools
+ depends = isolate
depends = python
depends = python-tornado
depends = python-psycopg2
@@ -27,6 +28,7 @@ pkgbase = cms-germany-git
depends = python-yaml
depends = python-future
depends = python-jinja
+ depends = python-markupsafe
depends = python-xdg
depends = postgresql
depends = postgresql-client
@@ -45,17 +47,16 @@ pkgbase = cms-germany-git
optdepends = fpc: support for Pascal submissions
optdepends = jdk8-openjdk: support for Java submissions
provides = cms-germany
- provides = isolate-germany
conflicts = cms
- conflicts = isolate
backup = etc/cms.conf
backup = etc/cms.ranking.conf
- source = git://github.com/ioi-germany/cms.git#branch=main
- source = git://github.com/ioi-germany/isolate.git
- source = pgf.patch
+ source = git+https://github.com/ioi-germany/cms.git#branch=main
+ source = dont_install_isolate.patch
+ source = new_jinja2_1.patch
+ source = new_jinja2_2.patch
+ sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
pkgname = cms-germany-git
-
diff --git a/PKGBUILD b/PKGBUILD
index 03ed06654b37..95d1e761a90e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,11 +1,12 @@
pkgname=cms-germany-git
-pkgver=r5003.07a9d40e
+pkgver=r5032.b78d8a4e
pkgrel=1
pkgdesc="CMS, or Contest Management System, is a distributed system for running and (to some extent) organizing a programming contest. This is a fork used for the German IOI team selection process."
arch=('i686' 'x86_64')
url="https://github.com/ioi-germany/cms"
license=('AGPL3')
depends=(
+ 'isolate'
'python'
'python-tornado'
'python-psycopg2'
@@ -18,17 +19,15 @@ depends=(
'python-requests'
'python-gevent'
'python-werkzeug'
-# 'patool-py3'
'python-bcrypt'
'python-chardet'
-# 'python-ipaddress'
'python-yaml'
'python-future'
'python-jinja'
+ 'python-markupsafe'
'python-xdg'
'postgresql'
'postgresql-client'
-# 'libcgroup'
'iso-codes'
'shared-mime-info'
'asymptote'
@@ -56,17 +55,21 @@ backup=(
'etc/cms.ranking.conf'
)
-provides=('cms-germany' 'isolate-germany')
-conflicts=('cms' 'isolate')
+provides=('cms-germany')
+conflicts=('cms')
install=$pkgname.install
source=(
'git+https://github.com/ioi-germany/cms.git#branch=main'
- 'git+https://github.com/ioi-germany/isolate.git'
- 'pgf.patch'
+ 'dont_install_isolate.patch'
+ 'new_jinja2_1.patch'
+ 'new_jinja2_2.patch'
)
sha256sums=(
- 'SKIP' 'SKIP' 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
)
pkgver() {
@@ -75,29 +78,15 @@ pkgver() {
}
build() {
- cd isolate
- make PREFIX="/usr" VARPREFIX="/var" CONFIGDIR="/etc" isolate isolate.1
-
- cd ../cms
-
- git config submodule.isolate.url "$srcdir/isolate"
- git submodule update
+ true
}
package() {
- cd isolate
- make PREFIX="$pkgdir/usr" VARPREFIX="$pkgdir/var" CONFIGDIR="$pkgdir/etc" install install-doc
-
- # Patch the configuration file so that it uses a standard directory
- sed -i "s|/var/local/lib/isolate|/var/lib/isolate|" $pkgdir/etc/isolate
-
- # The isolate binary has the setuid bit set (to run as root without sudo)
- # however we should let only the owner and the group be able to run it:
- chmod o-x $pkgdir/usr/bin/isolate
-
- cd ../cms
+ cd cms
- patch cmscontrib/gerpythonformat/templates/lg/graphdrawing.tex ../pgf.patch
+ patch prerequisites.py ../dont_install_isolate.patch
+ patch cms/grading/ParameterTypes.py ../new_jinja2_1.patch
+ patch cms/server/jinja2_toolbox.py ../new_jinja2_2.patch
# Logs and cache directories
install -d -m770 $pkgdir/var/log/cms
diff --git a/dont_install_isolate.patch b/dont_install_isolate.patch
new file mode 100644
index 000000000000..e7556bfad7a9
--- /dev/null
+++ b/dont_install_isolate.patch
@@ -0,0 +1,24 @@
+--- src/cms/prerequisites.py 2023-02-03 20:07:08.513538486 +0100
++++ prerequisites.py 2023-02-03 20:06:48.243380178 +0100
+@@ -232,11 +232,7 @@
+
+
+ def build():
+- """This function builds all the prerequisites by calling:
+- - build_isolate
+-
+- """
+- build_isolate()
++ pass
+
+
+ def install_conf():
+@@ -299,8 +295,6 @@
+ subprocess.check_call(["sudo", "-E", "-u", real_user,
+ sys.executable, sys.argv[0], "build"])
+
+- install_isolate()
+-
+ # We set permissions for each manually installed files, so we want
+ # max liberty to change them.
+ old_umask = os.umask(0o000)
diff --git a/new_jinja2_1.patch b/new_jinja2_1.patch
new file mode 100644
index 000000000000..72bfc690f882
--- /dev/null
+++ b/new_jinja2_1.patch
@@ -0,0 +1,11 @@
+diff -ruN pkg/cms-germany-git/usr/lib/python3.10/site-packages/cms/grading/ParameterTypes.py /usr/lib/python3.10/site-packages/cms/grading/ParameterTypes.py
+--- pkg/cms-germany-git/usr/lib/python3.10/site-packages/cms/grading/ParameterTypes.py 2023-02-03 16:35:06.000000000 +0100
++++ /usr/lib/python3.10/site-packages/cms/grading/ParameterTypes.py 2023-02-03 17:05:45.781269085 +0100
+@@ -29,7 +29,7 @@
+
+ from abc import ABCMeta, abstractmethod
+
+-from jinja2 import Markup
++from markupsafe import Markup
+
+ from cms.server.jinja2_toolbox import GLOBAL_ENVIRONMENT
diff --git a/new_jinja2_2.patch b/new_jinja2_2.patch
new file mode 100644
index 000000000000..ddf2d402439d
--- /dev/null
+++ b/new_jinja2_2.patch
@@ -0,0 +1,136 @@
+diff -ruN pkg/cms-germany-git/usr/lib/python3.10/site-packages/cms/server/jinja2_toolbox.py /usr/lib/python3.10/site-packages/cms/server/jinja2_toolbox.py
+--- pkg/cms-germany-git/usr/lib/python3.10/site-packages/cms/server/jinja2_toolbox.py 2023-02-03 16:35:06.000000000 +0100
++++ /usr/lib/python3.10/site-packages/cms/server/jinja2_toolbox.py 2023-02-03 17:20:15.062792373 +0100
+@@ -24,8 +24,7 @@
+
+ """
+
+-from jinja2 import Environment, StrictUndefined, contextfilter, \
+- contextfunction, environmentfunction
++from jinja2 import Environment, StrictUndefined, pass_context, pass_environment
+
+ from cms import TOKEN_MODE_DISABLED, TOKEN_MODE_FINITE, TOKEN_MODE_INFINITE, \
+ TOKEN_MODE_MIXED, FEEDBACK_LEVEL_FULL, FEEDBACK_LEVEL_RESTRICTED
+@@ -40,7 +39,7 @@
+ get_icon_for_type
+
+
+-@contextfilter
++@pass_context
+ def all_(ctx, l, test=None, *args):
+ """Check if all elements of the given list pass the given test.
+
+@@ -64,7 +63,7 @@
+ return True
+
+
+-@contextfilter
++@pass_context
+ def any_(ctx, l, test=None, *args):
+ """Check if any element of the given list passes the given test.
+
+@@ -88,7 +87,7 @@
+ return False
+
+
+-@contextfilter
++@pass_context
+ def dictselect(ctx, d, test=None, *args, by="key"):
+ """Filter the given dict: keep only items that pass the given test.
+
+@@ -115,7 +114,7 @@
+ if ctx.call(test, {"key": k, "value": v}[by], *args))
+
+
+-@contextfunction
++@pass_context
+ def today(ctx, dt):
+ """Returns whether the given datetime is today.
+
+@@ -165,7 +164,7 @@
+ env.tests["is_unit_test"] = lambda s: s.is_unit_test()
+
+
+-@environmentfunction
++@pass_environment
+ def safe_get_task_type(env, *, dataset):
+ try:
+ return dataset.task_type_object
+@@ -175,7 +174,7 @@
+ return env.undefined("TaskType not found: %s" % err)
+
+
+-@environmentfunction
++@pass_environment
+ def safe_get_score_type(env, *, dataset):
+ try:
+ return dataset.score_type_object
+@@ -196,21 +195,21 @@
+ env.filters["to_language"] = get_language
+
+
+-@contextfilter
++@pass_context
+ def format_datetime(ctx, dt):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ timezone = ctx.get("timezone", local_tz)
+ return translation.format_datetime(dt, timezone)
+
+
+-@contextfilter
++@pass_context
+ def format_time(ctx, dt):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ timezone = ctx.get("timezone", local_tz)
+ return translation.format_time(dt, timezone)
+
+
+-@contextfilter
++@pass_context
+ def format_datetime_smart(ctx, dt):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ now = ctx.get("now", make_datetime())
+@@ -218,37 +217,37 @@
+ return translation.format_datetime_smart(dt, now, timezone)
+
+
+-@contextfilter
++@pass_context
+ def format_timedelta(ctx, td):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return translation.format_timedelta(td)
+
+
+-@contextfilter
++@pass_context
+ def format_duration(ctx, d, length="short"):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return translation.format_duration(d, length)
+
+
+-@contextfilter
++@pass_context
+ def format_size(ctx, s):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return translation.format_size(s)
+
+
+-@contextfilter
++@pass_context
+ def format_decimal(ctx, n):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return translation.format_decimal(n)
+
+
+-@contextfilter
++@pass_context
+ def format_locale(ctx, n):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return translation.format_locale(n)
+
+
+-@contextfilter
++@pass_context
+ def wrapped_format_status_text(ctx, status_text):
+ translation = ctx.get("translation", DEFAULT_TRANSLATION)
+ return format_status_text(status_text, translation=translation)
diff --git a/pgf.patch b/pgf.patch
deleted file mode 100644
index 0b178245b58c..000000000000
--- a/pgf.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- cmscontrib/gerpythonformat/templates/lg/graphdrawing.tex 2019-02-01 20:37:11.175618929 +0100
-+++ /tmp/graphdrawing.tex 2019-02-01 20:45:34.593613925 +0100
-@@ -2,6 +2,42 @@
- \usetikzlibrary{graphs}
- \usetikzlibrary{graphdrawing}
-
-+\usepackage{luacode}
-+\begin{luacode}
-+ function pgf_lookup_and_require(name)
-+ local sep = '/'
-+ if string.find(os.getenv('PATH'),';') then
-+ sep = '\string\\'
-+ end
-+ local function lookup(name)
-+ local sub = name:gsub('%.',sep)
-+ local find_func = function (name, suffix)
-+ if resolvers then
-+ local n = resolvers.findfile (name.."."..suffix, suffix) -- changed
-+ return (not (n == '')) and n or nil
-+ else
-+ return kpse.find_file(name,suffix)
-+ end
-+ end
-+ if find_func(sub, 'lua') then
-+ require(name)
-+ elseif find_func(sub, 'clua') then
-+ collectgarbage('stop')
-+ require(name)
-+ collectgarbage('restart')
-+ else
-+ return false
-+ end
-+ return true
-+ end
-+ return
-+ lookup('pgf.gd.' .. name .. '.library') or
-+ lookup('pgf.gd.' .. name) or
-+ lookup(name .. '.library') or
-+ lookup(name)
-+ end
-+\end{luacode}
-+
- \usegdlibrary{force, layered}
-
- \directlua{require("graphdrawing.lua")}