Skip to content

Commit

Permalink
Merge pull request #280 from papundekel/279-reintroduce-repository-names
Browse files Browse the repository at this point in the history
279 reintroduce repository names
  • Loading branch information
peter-facko authored Jul 17, 2024
2 parents ddb82b6 + f4256db commit 6426766
Show file tree
Hide file tree
Showing 18 changed files with 244 additions and 118 deletions.
4 changes: 0 additions & 4 deletions .github/compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ services:
metamanager:
image: docker.io/fackop/pppackage-metamanager:latest
user: $USER
command:
- /mnt/root/
- --config
- /mnt/config.json
environment:
HOST_PWD: $PWD
volumes:
Expand Down
4 changes: 4 additions & 0 deletions .github/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
},
"repositories": [
{
"name": "archlinux-core",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -65,6 +66,7 @@
}
},
{
"name": "archlinux-extra",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -73,9 +75,11 @@
}
},
{
"name": "AUR",
"driver": "AUR"
},
{
"name": "conancenter",
"driver": "conan",
"parameters": {
"url": "https://center.conan.io",
Expand Down
73 changes: 39 additions & 34 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,80 +100,85 @@ jobs:
cd /home/runner/.PPpackage/
mkdir -p cache/ repository/
cd repository/
mkdir -p 0/ 1/ 2/ 3/
mkdir -p archlinux-core/ archlinux-extra/ AUR/ conancenter/
- name: Update archlinux core database
- name: Update archlinux-core
run: >
docker run --rm
--user $(id -u):$(id -g)
--mount type=bind,source=/home/runner/.PPpackage/repository/0/,target=/mnt/repository/
--mount type=bind,source=/home/runner/.PPpackage/repository/archlinux-core/,target=/mnt/repository/
--mount type=bind,source=${{ github.workspace }}/examples/update/repository-pacman.json,target=/mnt/repository.json
--env REPOSITORY=core
docker.io/fackop/pppackage-updater:latest
PPpackage.repository_driver.pacman
archlinux-core
--data-path /mnt/repository/
--repository-config /mnt/repository.json
- name: Update archlinux extra database
- name: Update archlinux-extra
run: >
docker run --rm
--user $(id -u):$(id -g)
--mount type=bind,source=/home/runner/.PPpackage/repository/1/,target=/mnt/repository/
--mount type=bind,source=/home/runner/.PPpackage/repository/archlinux-extra/,target=/mnt/repository/
--mount type=bind,source=${{ github.workspace }}/examples/update/repository-pacman.json,target=/mnt/repository.json
--env REPOSITORY=extra
docker.io/fackop/pppackage-updater:latest
PPpackage.repository_driver.pacman
archlinux-extra
--data-path /mnt/repository/
--repository-config /mnt/repository.json
- name: Update AUR database
- name: Update AUR
run: >
docker run --rm
--user $(id -u):$(id -g)
--mount type=bind,source=/home/runner/.PPpackage/repository/2/,target=/mnt/repository/
--env DATABASE_PATH=/mnt/database/
--mount type=bind,source=/home/runner/.PPpackage/repository/AUR/,target=/mnt/repository/
docker.io/fackop/pppackage-updater:latest
PPpackage.repository_driver.AUR
AUR
--data-path /mnt/repository/
- name: Check if conancenter database exists
id: check_conancenter
uses: andstor/[email protected]
with:
files: database/conancenter/cache/

- name: Update conancenter database
if: steps.check_conancenter.outputs.files_exists == 'false'
- name: Update conancenter
run: >
docker run --rm
--user $(id -u):$(id -g)
--mount type=bind,source=/home/runner/.PPpackage/repository/3/,target=/mnt/repository/
--mount type=bind,source=/home/runner/.PPpackage/repository/conancenter/,target=/mnt/repository/
--mount type=bind,source=${{ github.workspace }}/examples/update/repository-conancenter.json,target=/mnt/repository.json
--env DATABASE_PATH=/mnt/database/
docker.io/fackop/pppackage-updater:latest
PPpackage.repository_driver.conan
conancenter
--data-path /mnt/repository/
--repository-config /mnt/repository.json
- name: Run PPpackage
- name: Run PPpackage for conan-build
run: >
USER="$(id -u):$(id -g)" docker compose
--file .github/compose.yaml
run --rm
-T metamanager < examples/input/conan-build.json
run --rm -T
metamanager
/mnt/root --config /mnt/config.json
<examples/input/conan-build.json
- name: Test alpm hooks (check if ldconfig ran)
run: ls -l root/etc/ld.so.cache
# wait for Ubuntu 24
# fakealpm:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/[email protected]

# - name: Install fakealpm dependencies
# uses: awalsh128/[email protected]
# with:
# packages: libalpm-dev gcc cmake ninja-build libboost-dev nlohmann-json3-dev

# - name: Build fakelpm
# run: ./installer/pacman/fakealpm/build.sh installer/pacman/fakealpm/ installer/pacman/fakealpm/build/ /usr/local

- name: Run PPpackage for conan-conflict
run: >
USER="$(id -u):$(id -g)" docker compose
--file .github/compose.yaml
run --rm -T metamanager
/mnt/root --config /mnt/config.json --just-resolve
<examples/input/conan-conflict/PP.json
# wait for Ubuntu 24 becoming ubuntu-latest
fakealpm:
runs-on: ubuntu-24.04
steps:
- uses: actions/[email protected]

- name: Install fakealpm dependencies
uses: awalsh128/[email protected]
with:
packages: libarchive-dev libalpm-dev gcc cmake ninja-build libboost-dev nlohmann-json3-dev

- name: Build fakelpm
run: ./installer/pacman/fakealpm/build.sh installer/pacman/fakealpm/ installer/pacman/fakealpm/build/ /usr/local
4 changes: 4 additions & 0 deletions examples/metamanager/containerized/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
},
"repositories": [
{
"name": "archlinux-core",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -69,6 +70,7 @@
}
},
{
"name": "archlinux-extra",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -77,9 +79,11 @@
}
},
{
"name": "AUR",
"driver": "AUR"
},
{
"name": "conancenter",
"driver": "conan",
"parameters": {
"url": "https://center.conan.io",
Expand Down
4 changes: 4 additions & 0 deletions examples/metamanager/native/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
},
"repositories": [
{
"name": "archlinux-core",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -49,6 +50,7 @@
}
},
{
"name": "archlinux-extra",
"driver": "pacman",
"parameters": {
"mirrorlist": [
Expand All @@ -57,9 +59,11 @@
}
},
{
"name": "AUR",
"driver": "AUR"
},
{
"name": "conancenter",
"driver": "conan",
"parameters": {
"url": "https://center.conan.io",
Expand Down
8 changes: 4 additions & 4 deletions examples/update/containerized/update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fi
--env REPOSITORY=core \
docker.io/fackop/pppackage-updater:latest \
PPpackage.repository_driver.pacman \
--index 0 \
archlinux-core \
--repository-config /usr/share/doc/PPpackage/examples/update/repository-pacman.json

"$1" run --rm \
Expand All @@ -18,22 +18,22 @@ fi
--env REPOSITORY=extra \
docker.io/fackop/pppackage-updater:latest \
PPpackage.repository_driver.pacman \
--index 1 \
archlinux-extra \
--repository-config /usr/share/doc/PPpackage/examples/update/repository-pacman.json &

"$1" run --rm \
--security-opt label=disable \
--mount type=bind,source="$HOME",target=/root/ \
docker.io/fackop/pppackage-updater:latest \
PPpackage.repository_driver.AUR \
--index 2 &
AUR &

"$1" run --rm \
--security-opt label=disable \
--mount type=bind,source="$HOME",target=/root/ \
docker.io/fackop/pppackage-updater:latest \
PPpackage.repository_driver.conan \
--index 3 \
conancenter \
--repository-config /usr/share/doc/PPpackage/examples/update/repository-conancenter.json &

wait
8 changes: 4 additions & 4 deletions examples/update/native/update.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
REPOSITORY=core python -m PPpackage.repository_driver.update \
PPpackage.repository_driver.pacman \
--index 0 \
archlinux-core \
--repository-config examples/update/repository-pacman.json &

REPOSITORY=extra python -m PPpackage.repository_driver.update \
PPpackage.repository_driver.pacman \
--index 1 \
archlinux-extra \
--repository-config examples/update/repository-pacman.json &

python -m PPpackage.repository_driver.update \
PPpackage.repository_driver.AUR \
--index 2 &
AUR &

python -m PPpackage.repository_driver.update \
PPpackage.repository_driver.conan \
--index 3 \
conancenter \
--repository-config examples/update/repository-conancenter.json &

wait
5 changes: 4 additions & 1 deletion metamanager/PPpackage/metamanager/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,12 @@ async def main_command(
config_path: Annotated[Path, TyperOption("--config")],
generators_path: Annotated[Optional[Path], TyperOption("--generators")] = None,
graph_path: Annotated[Optional[Path], TyperOption("--graph")] = None,
just_resolve: bool = False,
) -> None:
try:
await main(config_path, installation_path, generators_path, graph_path)
await main(
config_path, installation_path, generators_path, graph_path, just_resolve
)
except:
print_exc(file=stderr)
exit(1)
Expand Down
7 changes: 7 additions & 0 deletions metamanager/PPpackage/metamanager/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ async def main(
installation_path: Path,
generators_path: Path | None,
graph_path: Path | None,
just_resolve: bool,
) -> None:
try:
config = validate_json_io_path(Config, config_path)
Expand All @@ -40,6 +41,8 @@ async def main(
)

containerizer = Containerizer(config.containerizer)

print("Pulling the solver image...", file=stderr)
containerizer.pull("docker.io/fackop/pppackage-solver", "latest")

input = validate_json_io(Input, stdin.buffer)
Expand Down Expand Up @@ -79,6 +82,10 @@ async def main(
write_graph_to_file(graph, graph_path)
stderr.write(f"Graph written to {graph_path}.\n")

if just_resolve:
stderr.write("Done.\n")
return

installers = Installers(config.installers)

stderr.write(f"Fetching and installing to {installation_path}...\n")
Expand Down
21 changes: 8 additions & 13 deletions metamanager/PPpackage/metamanager/repository/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,32 +30,28 @@ def __init__(
interface: RepositoryInterface,
epoch: str,
data_path: Path,
index: int,
):
self.translator_data_cache_path = (
config.translator_data_cache_path
if config.translator_data_cache_path is not None
else data_path / "cache" / "translator-data" / str(index)
else data_path / "cache" / "translator-data" / config.name
)

self.formula_cache_path = (
config.formula_cache_path
if config.formula_cache_path is not None
else data_path / "cache" / "formula" / str(index)
else data_path / "cache" / "formula" / config.name
)

self.interface = interface
self.epoch = epoch

@staticmethod
async def create(
config: RepositoryConfig,
interface: RepositoryInterface,
data_path: Path,
index: int,
config: RepositoryConfig, interface: RepositoryInterface, data_path: Path
):
epoch = await interface.get_epoch()
return Repository(config, interface, epoch, data_path, index)
return Repository(config, interface, epoch, data_path)

async def fetch_translator_data(self) -> AsyncIterable[TranslatorInfo]:
self.translator_data_cache_path.parent.mkdir(parents=True, exist_ok=True)
Expand Down Expand Up @@ -169,15 +165,14 @@ async def Repositories(
async with AsyncExitStack() as context_stack:
yield [
await Repository.create(
config,
repository_config,
await create_repository(
context_stack,
config,
repository_config,
drivers,
data_path / "repository" / str(index),
data_path / "repository" / repository_config.name,
),
data_path,
index,
)
for index, config in enumerate(repository_configs)
for repository_config in repository_configs
]
Loading

0 comments on commit 6426766

Please sign in to comment.