Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ Dieses Repository enthält das Python-Paket für die [Software-Challenge Germany
- [Global](#global)
- [Virtuelle Umgebung](#virtuelle-umgebung)
- [Erste Schritte](#erste-schritte)
- [Startargumente](#start-arguments)
- [Vorbereitung des Spielers auf den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb)
- [Startargumente](#startargumente)
- [Vorbereitung des Spielers für den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb)
- [Lokale Entwicklung](#lokale-entwicklung)

## Installation
Expand Down Expand Up @@ -138,16 +138,24 @@ Falls die Logik von der Konsole aus ausgeführt werden soll, können Startargume
| **-b, --build** | Baut dieses Skript zu einem Paket mit all seinen Abhängigkeiten. |
| **-d, --directory** | Das Verzeichnis, in dem das Paket erstellt werden soll. |
| **-a, --architecture** | Die Architektur des Pakets. |
| **--python-version** | Die Python-Version für den Build. Der Standardwert ist '3.10'. |

## Vorbereitung des Spielers für den Wettbewerb

> Das Wettbewerbssystem läuft auf einem Linux-System mit einer `x86_64`-Architektur. Um den Client auf dem Wettbewerbssystem zu verwenden, muss das Socha-Paket für die Plattform `manylinux2014_x86_64` und die Python-Version `310` heruntergeladen werden.
> Das Wettbewerbssystem läuft auf einem Linux-System mit einer `x86_64`-Architektur. Um den Client auf dem Wettbewerbssystem zu verwenden, muss das Socha-Paket für die Plattform `manylinux2014_x86_64` und die Python-Version `310` oder `312` heruntergeladen werden.

Um sicherzustellen, dass der Player im Wettbewerbssystem verwendbar ist, müssen alle Abhängigkeiten heruntergeladen werden, da das System auf einem Docker-Container ohne Internetzugang und sudo-Berechtigung ausgeführt wird.

> Das Paket erleichtert die Vorbereitung! Eine Datei `requirements.txt`, die alle Abhängigkeiten auflistet, wird benötigt. Zum Starten folgenden Befehl im Terminal ausführen:
> Das Paket erleichtert die Vorbereitung!
>
> Eine Datei `requirements.txt`, die alle Abhängigkeiten auflistet, wird dafür benötigt.
> Jeder Bot braucht natürlich das Paket `socha`.
> Außerdem sollte `setuptools` in der Version `58.1.0` für Python 3.10 bzw. `75.8.0` für Python 3.12 hinzugefügt werden. \
> Alle Abhängigkeiten kommen mit der Syntax `<paket>==<version>` in jeweils eine Zeile.
>
> Zum Starten folgenden Befehl im Terminal ausführen:
>
> `$ python <dein_haupt_skript>.py --build -directory <dein_ordner> -architecture <ziel_architektur>`
> `$ python <dein_haupt_skript>.py --build --directory <dein_ordner> --architecture <ziel_architektur> --python-version <3.xx>`
>
> Dadurch wird das Paket aktiviert und das Projekt erstellt.

Expand All @@ -157,6 +165,7 @@ Falls eine manuelle Vorgehensweise bevorzugt wird, folgen diese Schritte zum Her
2. `mkdir my_player` eingeben, um ein neues Verzeichnis namens `my_player` zu erstellen. Der Verzeichnisname kann beliebig gewählt werden.
3. Mit `cd my_player` in das Verzeichnis wechseln.
4. Den Befehl `pip download socha --only-binary=:all: --platform manylinux2014_x86_64 --python-version 310 -d dependencies` im Verzeichnis ausführen, um die benötigten Abhängigkeiten in den Ordner `dependencies` herunterzuladen.
- Ändere hier `310` zu `312` wenn du mit der Python-Version 3.12 arbeitest.
5. Alle Abhängigkeiten hinzufügen, die der Client verwendet.
6. Ein letztes Verzeichnis mit `mkdir .pip_cache` erstellen.

Expand Down
9 changes: 8 additions & 1 deletion python/socha/starter.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def __init__(
directory: str = None,
architecture: str = None,
log_level: int = logging.INFO,
python_version: str = '3.10',
):
"""
All these arguments can be overwritten, when parsed via start arguments,
Expand Down Expand Up @@ -71,8 +72,9 @@ def __init__(
self.directory: str = args.directory or directory
self.architecture: str = args.architecture or architecture
self.build: str = args.build or build
self.python_version: str = args.python_version or python_version
if self.build:
builder = SochaPackageBuilder(self.directory, self.architecture)
builder = SochaPackageBuilder(self.directory, self.architecture, self.python_version)
builder.build_package()
exit(0)

Expand Down Expand Up @@ -242,4 +244,9 @@ def _handle_start_args():
help="Specifies the build architecture (e.g.: manylinux1_x86_64).",
)

parser.add_argument(
"--python-version",
help="Specifies the build python version (e.g.: 3.10 - this is standard]).",
)

return parser.parse_args()
5 changes: 3 additions & 2 deletions python/socha/utils/package_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@

class SochaPackageBuilder:

def __init__(self, package_name, architecture):
def __init__(self, package_name, architecture, python_version):
self.package_name = package_name
self.architecture = architecture
self.python_version = python_version
self.dependencies_dir = "dependencies"
self.packages_dir = "packages"
self.cache_dir = ".pip_cache"
Expand Down Expand Up @@ -50,7 +51,7 @@ def _download_dependencies(self):
"download",
f"--platform={self.architecture}",
"--python-version",
"3.10",
f"{self.python_version}",
"--only-binary=:all:",
"-d",
f"{self.build_dir}/{self.package_name}/{self.dependencies_dir}",
Expand Down
Loading