Skip to content

Commit

Permalink
Publish things under the new name (gel-server, gel-cli, gel-ls)
Browse files Browse the repository at this point in the history
Original package definitions remain unchanged so that back branches can
continue to be built and published as `edgedb`.  .deb and .rpm platforms
publish "transitional" packages with old names which pull the new-named
package as the dependency.
  • Loading branch information
elprans committed Feb 10, 2025
1 parent e9127a9 commit b0d0c23
Show file tree
Hide file tree
Showing 33 changed files with 724 additions and 268 deletions.
89 changes: 70 additions & 19 deletions edgedbpkg/edgedb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@
)


class EdgeDBNoPostgres(packages.BundledPythonPackage):
title = "EdgeDB"
ident = "edgedb-server"
class GelNoPostgres(packages.BundledPythonPackage):
title = "Gel"
ident = "gel-server"
description = "Next generation graph-relational database"
license_id = "Apache-2.0"
group = "Applications/Databases"
identifier = "com.edgedb.edgedb-server"
url = "https://edgedb.com/"
identifier = "com.geldata.gel-server"
url = "https://geldata.com/"

sources = [
{
Expand Down Expand Up @@ -265,7 +265,7 @@ def get_package_repository(
repo.register_package_impl("cryptography", Cryptography)
repo.register_package_impl("cffi", Cffi)
repo.register_package_impl("jwcrypto", JWCrypto)
repo.register_package_impl("edgedb", EdgeDBPython)
repo.register_package_impl("gel", EdgeDBPython)
repo.register_package_impl("maturin", Maturin)
return repo

Expand Down Expand Up @@ -300,6 +300,14 @@ def slot(self) -> str:
else:
return f"{self.base_slot}-dev{self.get_catalog_version()}"

@property
def marketing_name(self) -> str:
return "Gel"

@property
def marketing_slug(self) -> str:
return "gel"

def version_includes_revision(self) -> bool:
return ".s" in self.pretty_version

Expand All @@ -310,7 +318,7 @@ def get_catalog_version(self) -> str:
return entry[2:]

raise RuntimeError(
f"no catalog version in EdgeDB version: {self.pretty_version}"
f"no catalog version in Gel version: {self.pretty_version}"
)

def get_version_metadata_fields(self) -> dict[str, str]:
Expand All @@ -334,7 +342,9 @@ def sh_get_build_wheel_env(
if build.target.is_portable():
runstate = ""
else:
runstate = str(build.get_install_path(self, "runstate") / "edgedb")
runstate = str(
build.get_install_path(self, "runstate") / self.marketing_slug
)
shared_dir = (
build.get_install_path(self, "data") / "data"
).relative_to("/")
Expand Down Expand Up @@ -396,13 +406,13 @@ def sh_get_build_wheel_env(
return env

def get_build_script(self, build: targets.Build) -> str:
# Run edgedb-server --bootstrap to produce stdlib cache
# Run gel-server --bootstrap to produce stdlib cache
# for the benefit of faster bootstrap in the package.
common_script = super().get_build_script(build)

if build.channel == "stable" and not self.version.is_stable():
raise AssertionError(
f"cannot build non-stable edgedb-server=={self.version} "
f"cannot build non-stable gel-server=={self.version} "
f"for the stable channel"
)

Expand Down Expand Up @@ -583,18 +593,20 @@ def get_extra_system_requirements(

def get_before_install_script(self, build: targets.Build) -> str:
dataroot = (
build.get_install_path(self, "localstate") / "lib" / "edgedb"
build.get_install_path(self, "localstate")
/ "lib"
/ self.marketing_slug
)

action = build.target.get_action("adduser", build)
assert isinstance(action, targets.AddUserAction)
user_script = action.get_script(
name="edgedb",
group="edgedb",
name=self.marketing_slug,
group=self.marketing_slug,
homedir=str(dataroot),
shell=True,
system=True,
description="EdgeDB Server",
description=f"{self.marketing_name} Server",
)

return user_script
Expand All @@ -604,21 +616,23 @@ def get_exposed_commands(self, build: targets.Build) -> list[pathlib.Path]:

return [
bindir / "edgedb-server",
bindir / "gel-server",
]

def get_meta_packages(
self,
build: targets.Build,
root_version: str,
) -> list[packages.MetaPackage]:
ms = self.marketing_slug
return [
packages.MetaPackage(
base_name="edgedb",
name=f"edgedb-{self.slot}",
base_name=ms,
name=f"{ms}-{self.slot}",
description=f"{self.description} (server and client tools)",
dependencies={
f"edgedb-server-{self.slot}": f"= {root_version}",
"edgedb-cli": "",
f"{ms}-server-{self.slot}": f"= {root_version}",
f"{ms}-cli": "",
},
)
]
Expand All @@ -630,6 +644,12 @@ def get_conflict_packages(
) -> list[str]:
return ["edgedb-common"]

def get_transition_packages(
self,
build: targets.Build,
) -> list[str]:
return [f"edgedb-server{self.slot_suffix}"]

def _get_edgedb_catalog_version(self, build: targets.Build) -> str:
source = pathlib.Path(build.get_source_dir(self, relative_to="fsroot"))

Expand All @@ -650,7 +670,38 @@ def get_provided_packages(
root_version: str,
) -> list[tuple[str, str]]:
catver = self._get_edgedb_catalog_version(build)
return [("edgedb-server-catalog", catver)]
return [(f"{self.marketing_slug}-server-catalog", catver)]


class Gel(GelNoPostgres):
artifact_requirements = packages.merge_requirements(
GelNoPostgres.artifact_requirements,
GelNoPostgres.postgres_requirements,
)


class EdgeDBNoPostgres(GelNoPostgres):
title = "EdgeDB"
ident = "edgedb-server"
description = "Next generation graph-relational database"
license_id = "Apache-2.0"
group = "Applications/Databases"
identifier = "com.edgedb.edgedb-server"
url = "https://edgedb.com/"

@property
def marketing_name(self) -> str:
return "EdgeDB"

@property
def marketing_slug(self) -> str:
return "edgedb"

def get_transition_packages(
self,
build: targets.Build,
) -> list[str]:
return []


class EdgeDB(EdgeDBNoPostgres):
Expand Down
40 changes: 27 additions & 13 deletions edgedbpkg/edgedb_ls/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from typing import (
TYPE_CHECKING,
Self,
)

import pathlib

Expand All @@ -24,11 +27,10 @@
)


class EdgeDBLanguageServer(edgedb_server.EdgeDBNoPostgres):
title = "EdgeDBLanguageServer"
ident = "edgedb-ls"
description = "Language server for EdgeDB"
identifier = "com.edgedb.edgedb-ls"
class GelLanguageServer(edgedb_server.EdgeDBNoPostgres):
title = "GelLanguageServer"
ident = "gel-ls"
description = "Language server for Gel"

# We don't need Postgres at all even at the build stage.
artifact_build_requirements = packages.merge_requirements(
Expand All @@ -48,7 +50,7 @@ def resolve(
is_release: bool = False,
target: targets.Target,
requires: list[poetry_dep.Dependency] | None = None,
) -> EdgeDBLanguageServer:
) -> Self:
return (
super()
.resolve(
Expand Down Expand Up @@ -86,16 +88,28 @@ def get_stdlib_bootstrap_script(self, build: targets.Build) -> str:
def get_stdlib_install_script(self, build: targets.Build) -> str:
return ""

def get_exposed_commands(self, build: targets.Build) -> list[pathlib.Path]:
bindir = build.get_install_path(self, "bin")

return [
bindir / "gel-ls",
]

def get_transition_packages(self, build: targets.Build) -> list[str]:
return ["edgedb-ls"]


class EdgeDBLanguageServer(GelLanguageServer):
title = "EdgeDBLanguageServer"
ident = "edgedb-ls"
description = "Language server for EdgeDB"

def get_exposed_commands(self, build: targets.Build) -> list[pathlib.Path]:
bindir = build.get_install_path(self, "bin")

return [
bindir / "edgedb-ls",
]

def get_conflict_packages(
self,
build: targets.Build,
root_version: str,
) -> list[str]:
return ["edgedb-common"]
def get_transition_packages(self, build: targets.Build) -> list[str]:
return []
13 changes: 13 additions & 0 deletions edgedbpkg/edgedb_ls/ignore.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{bindir}/*
{libdir}/**/edb/pgsql/parser/**
{libdir}/**/edb/pgsql/resolver/**
{libdir}/**/edb/pgsql/dbops/**
{libdir}/**/edb/server/dbview/**
{libdir}/**/edb/server/pgcon/**
{libdir}/**/edb/server/protocol/**
{libdir}/**/edb/server/pgproto/**
{libdir}/**/edb/graphql/**
{libdir}/**/edb/graphql-rewrite/**
{libdir}/**/edb/_graphql_rewrite.*.so
{libdir}/**/edb/testbase/**
{libdir}/**/edb/protocol/**
18 changes: 0 additions & 18 deletions edgedbpkg/edgedb_ls/no_install.list

This file was deleted.

71 changes: 63 additions & 8 deletions edgedbpkg/edgedbcli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,34 @@
Any,
)

import textwrap

from metapkg import packages
from metapkg import targets


class EdgeDBCLI(packages.BundledRustPackage):
title = "EdgeDBCLI"
ident = "edgedb-cli"
description = "EdgeDB Command Line Tools"
class GelCLI(packages.BundledRustPackage):
title = "GelCLI"
ident = "gel-cli"
description = "Gel Command Line Tools"
license_id = "Apache-2.0"
group = "Applications/Databases"
identifier = "com.edgedb.edgedb-cli"
url = "https://edgedb.com/"
url = "https://geldata.com/"

sources = [
{
"url": "git+https://github.com/edgedb/edgedb-cli.git",
},
]

@property
def marketing_name(self) -> str:
return "Gel"

@property
def marketing_slug(self) -> str:
return "gel"

def get_package_layout(
self, build: targets.Build
) -> packages.PackageFileLayout:
Expand All @@ -32,14 +41,60 @@ def get_license_files_patterns(self) -> list[str]:

def get_artifact_metadata(self, build: targets.Build) -> dict[str, Any]:
metadata = dict(super().get_artifact_metadata(build))
metadata["publish_link_to_latest"] = True
metadata["publish_link_to_latest"] = ["gel-cli", "edgedb-cli"]
return metadata

def get_build_script(self, build: targets.Build) -> str:
if build.channel == "stable" and not self.version.is_stable():
raise AssertionError(
f"cannot build non-stable edgedb-cli=={self.version} "
f"cannot build non-stable gel-cli=={self.version} "
f"for the stable channel"
)

return super().get_build_script(build)

def get_transition_packages(
self,
build: targets.Build,
) -> list[str]:
return ["edgedb-cli"]

def get_prepare_script(self, build: targets.Build) -> str:
script = super().get_prepare_script(build)
sed = build.sh_get_command("sed")
src = build.get_source_dir(self, relative_to="pkgbuild")
script += textwrap.dedent(
f"""\
{sed} -i -e '/\\[\\[bin\\]\\]/,/\\[\\[.*\\]\\]/{{
s/^name\\s*=.*/name = "{self.marketing_slug}"/;
}}' \\
"{src}/Cargo.toml"
"""
)
return script

def get_file_install_entries(self, build: targets.Build) -> list[str]:
entries = list(super().get_file_install_entries(build))
entries.append(f"{{systembindir}}/{self.marketing_slug}{{exesuffix}}")
return entries


class EdgeDBCLI(GelCLI):
title = "EdgeDBCLI"
ident = "edgedb-cli"
description = "EdgeDB Command Line Tools"
url = "https://edgedb.com/"

@property
def marketing_name(self) -> str:
return "EdgeDB"

@property
def marketing_slug(self) -> str:
return "edgedb"

def get_transition_packages(
self,
build: targets.Build,
) -> list[str]:
return []
1 change: 0 additions & 1 deletion edgedbpkg/edgedbcli/install.list

This file was deleted.

Loading

0 comments on commit b0d0c23

Please sign in to comment.