1 Commits

3 changed files with 117 additions and 97 deletions

View File

@@ -39,12 +39,16 @@ class Command(BaseCommand):
return None return None
return xapian.version_string() return xapian.version_string()
def _desired_version(self) -> str: def _desired_version(self) -> tuple[str, str, str]:
with open( with open(
Path(__file__).parent.parent.parent.parent / "pyproject.toml", "rb" Path(__file__).parent.parent.parent.parent / "pyproject.toml", "rb"
) as f: ) as f:
pyproject = tomli.load(f) pyproject = tomli.load(f)
return pyproject["tool"]["xapian"]["version"] return (
pyproject["tool"]["xapian"]["version"],
pyproject["tool"]["xapian"]["core-sha256"],
pyproject["tool"]["xapian"]["bindings-sha256"],
)
def handle(self, *args, force: bool, **options): def handle(self, *args, force: bool, **options):
if not os.environ.get("VIRTUAL_ENV", None): if not os.environ.get("VIRTUAL_ENV", None):
@@ -53,7 +57,7 @@ class Command(BaseCommand):
) )
return return
desired = self._desired_version() desired, core_checksum, bindings_checksum = self._desired_version()
if desired == self._current_version(): if desired == self._current_version():
if not force: if not force:
self.stdout.write( self.stdout.write(
@@ -65,7 +69,12 @@ class Command(BaseCommand):
f"Installing xapian version {desired} at {os.environ['VIRTUAL_ENV']}" f"Installing xapian version {desired} at {os.environ['VIRTUAL_ENV']}"
) )
subprocess.run( subprocess.run(
[str(Path(__file__).parent / "install_xapian.sh"), desired], [
str(Path(__file__).parent / "install_xapian.sh"),
desired,
core_checksum,
bindings_checksum,
],
env=dict(os.environ), env=dict(os.environ),
check=True, check=True,
) )

View File

@@ -1,7 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Originates from https://gist.github.com/jorgecarleitao/ab6246c86c936b9c55fd # Originates from https://gist.github.com/jorgecarleitao/ab6246c86c936b9c55fd
# first argument of the script is Xapian version (e.g. 1.2.19) # first argument of the script is Xapian version (e.g. 1.2.19)
# second argument of the script is core sha256
# second argument of the script is binding sha256
VERSION="$1" VERSION="$1"
CORE_SHA256="$2"
BINDINGS_SHA256="$3"
# Cleanup env vars for auto discovery mechanism # Cleanup env vars for auto discovery mechanism
unset CPATH unset CPATH
@@ -21,9 +25,15 @@ BINDINGS=xapian-bindings-$VERSION
# download # download
echo "Downloading source..." echo "Downloading source..."
curl -O "https://oligarchy.co.uk/xapian/$VERSION/${CORE}.tar.xz" curl -O "https://oligarchy.co.uk/xapian/$VERSION/${CORE}.tar.xz" || exit 1
echo "${CORE_SHA256} ${CORE}.tar.xz" | sha256sum -c - || exit 1
curl -O "https://oligarchy.co.uk/xapian/$VERSION/${BINDINGS}.tar.xz" curl -O "https://oligarchy.co.uk/xapian/$VERSION/${BINDINGS}.tar.xz"
echo "${BINDINGS_SHA256} ${BINDINGS}.tar.xz" | sha256sum -c - || exit 1
# extract # extract
echo "Extracting source..." echo "Extracting source..."
tar xf "${CORE}.tar.xz" tar xf "${CORE}.tar.xz"

View File

@@ -59,9 +59,7 @@ homepage = "https://ae.utbm.fr/"
documentation = "https://sith-ae.readthedocs.io/" documentation = "https://sith-ae.readthedocs.io/"
[dependency-groups] [dependency-groups]
prod = [ prod = ["psycopg[c]>=3.3.3,<4.0.0"]
"psycopg[c]>=3.3.3,<4.0.0",
]
dev = [ dev = [
"django-debug-toolbar>=6.2.0,<7", "django-debug-toolbar>=6.2.0,<7",
"ipython>=9.11.0,<10.0.0", "ipython>=9.11.0,<10.0.0",
@@ -92,7 +90,10 @@ docs = [
default-groups = ["dev", "tests", "docs"] default-groups = ["dev", "tests", "docs"]
[tool.xapian] [tool.xapian]
version = "1.4.29" version = "1.4.31"
core-sha256 = "fecf609ea2efdc8a64be369715aac733336a11f7480a6545244964ae6bc80811"
bindings-sha256 = "a38cc7ba4188cc0bd27dc7369f03906772047087a1c54f1b93355d5e9103c304"
[tool.ruff] [tool.ruff]
output-format = "concise" # makes ruff error logs easier to read output-format = "concise" # makes ruff error logs easier to read
@@ -125,7 +126,7 @@ select = [
ignore = [ ignore = [
"DJ001", # null=True in CharField/TextField. this one would require a migration "DJ001", # null=True in CharField/TextField. this one would require a migration
"E501", # line too long. The rule is too harsh, and the formatter deals with it in most cases "E501", # line too long. The rule is too harsh, and the formatter deals with it in most cases
"RUF012" # mutable class attributes. This rule doesn't integrate well with django "RUF012", # mutable class attributes. This rule doesn't integrate well with django
] ]
[tool.ruff.lint.pydocstyle] [tool.ruff.lint.pydocstyle]