Fertige Codex-Setup-Umgebungen
Hier sind Umgebungen für Codex, die ich mir zusammengeklickt habe, da es noch keine Umgebungen für diese Sprachen gab oder gibt.
Wenn man diese jeweiligen Skripte in eine Umgebung von OpenAI Codex einfügt, kann Codex deutlich besser arbeiten, da es ihm möglich ist, seinen Code direkt zu testen und Änderungen vorzunehmen.
Umgebung für Android Entwicklung: (getestet mit StreetComplete)
#!/usr/bin/env bash
set -e
# ----------------------------
# 1. Parent-Verzeichnis ermitteln
# ----------------------------
# Das Skript wird in workspace/<reponame>/ ausgeführt. Eine Ebene höher liegt workspace/.
PARENT_DIR="$(cd .. && pwd)" # abs. Pfad zu workspace :contentReference[oaicite:11]{index=11}
# ----------------------------
# 2. Variablen definieren
# ----------------------------
# Android SDK wird in workspace/android-sdk installiert.
SDK_DIR="$PARENT_DIR/android-sdk" # Android-SDK-Verzeichnis im Workspace :contentReference[oaicite:12]{index=12}
CMDLINE_TOOLS_ZIP="commandlinetools-linux-13114758_latest.zip" # aktuelles Command-Line Tools Paket
CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/${CMDLINE_TOOLS_ZIP}"
CMDLINE_TOOLS_DIR="$SDK_DIR/cmdline-tools"
CMDLINE_TOOLS_LATEST_DIR="$CMDLINE_TOOLS_DIR/latest"
# Gradle wird in workspace/gradle installiert.
GRADLE_VERSION="8.14.2" # Stand 5. Juni 2025: Gradle 8.14.2
GRADLE_DIR="$PARENT_DIR/gradle" # Gradle-Basisverzeichnis im Workspace :contentReference[oaicite:15]{index=15}
GRADLE_ZIP="gradle-${GRADLE_VERSION}-bin.zip"
GRADLE_URL="https://services.gradle.org/distributions/${GRADLE_ZIP}"
GRADLE_INSTALL_DIR="$GRADLE_DIR/gradle-${GRADLE_VERSION}"
# ----------------------------
# 3. Java-Prüfung
# ----------------------------
if ! command -v java &>/dev/null; then
echo "Java nicht gefunden. Bitte installiere OpenJDK 11 zuvor im Container."
exit 1 # sdkmanager erfordert Java ﹘ mindestens OpenJDK 11 :contentReference[oaicite:16]{index=16}
fi
# ----------------------------
# 4. Android SDK einrichten
# ----------------------------
echo "==> Android SDK-Verzeichnis erstellen: $SDK_DIR"
mkdir -p "$CMDLINE_TOOLS_LATEST_DIR" # Legt workspace/android-sdk/cmdline-tools/latest an :contentReference[oaicite:17]{index=17}
echo "==> Android Command-Line Tools herunterladen"
if [ ! -f "$CMDLINE_TOOLS_ZIP" ]; then
curl -L -o "$CMDLINE_TOOLS_ZIP" "$CMDLINE_TOOLS_URL" # Lädt die ZIP ins aktuelle Skriptverzeichnis :contentReference[oaicite:18]{index=18}
fi
echo "==> Entpacke Command-Line Tools"
unzip -q "$CMDLINE_TOOLS_ZIP" -d "$CMDLINE_TOOLS_DIR" # Entpackt nach workspace/android-sdk/cmdline-tools :contentReference[oaicite:19]{index=19}
# Die ZIP enthält einen Ordner cmdline-tools; verschieben wir dessen Inhalte in latest.
mv "$CMDLINE_TOOLS_DIR/cmdline-tools/"* "$CMDLINE_TOOLS_LATEST_DIR" # Inhalt verschieben :contentReference[oaicite:20]{index=20}
rm -rf "$CMDLINE_TOOLS_DIR/cmdline-tools" # Temporäres Verzeichnis entfernen
rm -f "$CMDLINE_TOOLS_ZIP"
# ----------------------------
# 5. Android-Komponenten installieren
# ----------------------------
echo "==> Installiere Android-Komponenten via sdkmanager"
SDKMANAGER="$CMDLINE_TOOLS_LATEST_DIR/bin/sdkmanager" # Pfad zum sdkmanager im neuen SDK_DIR :contentReference[oaicite:22]{index=22}
echo y | "${SDKMANAGER}" --sdk_root="$SDK_DIR" "platform-tools" "build-tools;34.0.0" "platforms;android-33" || {
echo "Fehler bei der Installation von Android-Komponenten"
exit 1 # Beispiel: API-Level 33 und Build-Tools 34.0.0 :contentReference[oaicite:23]{index=23}
}
echo "==> Lizenzen automatisch akzeptieren"
echo yes | "${SDKMANAGER}" --sdk_root="$SDK_DIR" --licenses >/dev/null # Alle Lizenzen per „yes“ akzeptieren :contentReference[oaicite:24]{index=24}
# ----------------------------
# 6. local.properties im Projekt erstellen
# ----------------------------
# Gradle-Projekt läuft in workspace/<reponame>/, also wird diese Datei hier erzeugt.
echo "==> Erstelle local.properties im Projektverzeichnis"
echo "sdk.dir=${SDK_DIR}" > ./local.properties # Verweist auf workspace/android-sdk :contentReference[oaicite:25]{index=25}
# ----------------------------
# 7. Gradle herunterladen
# ----------------------------
echo "==> Erstelle Gradle-Verzeichnis: $GRADLE_DIR"
mkdir -p "$GRADLE_DIR" # Legt workspace/gradle an :contentReference[oaicite:26]{index=26}
echo "==> Gradle ${GRADLE_VERSION} herunterladen"
if [ ! -f "$GRADLE_ZIP" ]; then
curl -L -o "$GRADLE_ZIP" "$GRADLE_URL" # Lädt die Gradle-ZIP ins aktuelle Skriptverzeichnis
fi
echo "==> Entpacke Gradle"
unzip -q "$GRADLE_ZIP" -d "$GRADLE_DIR" # Entpackt nach workspace/gradle/gradle-8.14.2
rm -f "$GRADLE_ZIP"
# ----------------------------
# 8. Umgebungsvariablen setzen (envsetup.sh)
# ----------------------------
cat > ./envsetup.sh << 'EOF'
#!/usr/bin/env bash
# Setzt alle Pfade relativ zum Workspace, nicht zur Repo-Location
export ANDROID_SDK_ROOT="${SDK_DIR}" # ANDROID_SDK_ROOT auf workspace/android-sdk
export ANDROID_HOME="$ANDROID_SDK_ROOT" # ANDROID_HOME für Gradle :contentReference[oaicite:30]{index=30}
export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH"
export GRADLE_HOME="${GRADLE_INSTALL_DIR}" # GRADLE_HOME auf workspace/gradle/gradle-8.14.2 :contentReference[oaicite:31]{index=31}
export PATH="$GRADLE_HOME/bin:$PATH"
EOF
chmod +x ./envsetup.sh # envsetup.sh ausführbar machen
echo "==> Setup abgeschlossen. Umgebungsvariablen mit 'source envsetup.sh' aktivieren."
Bei mir kommen da zwar immernoch Fehler, aber scheinbar kann Codex die Dateien bauen, denn er findet Fehler und kann diese berichtigen.
Umgebung für Godot:
wget https://github.com/godotengine/godot/releases/download/4.4.1-stable/Godot_v4.4.1-stable_linux.x86_64.zip
unzip Godot_v4.4.1-stable_linux.x86_64.zip
mv Godot_v4.4.1-stable_linux.x86_64 godot
rm Godot_v4.4.1-stable_linux.x86_64.zip
mv godot /usr/local/bin/godot
echo Successfully installed godot environment. You can execute GD scripts like this: godot --headless --path /path/to/project -s res://path/to/script.gd
Wichtig hier natürlich, dieses Skript auf die verwendete Godot-Version anzupassen.
Umgebung für PHP:
#!/usr/bin/env bash
set -euo pipefail
# 1) Non-interactive mode for apt
export DEBIAN_FRONTEND=noninteractive
# 2) Update & Basis-Pakete
apt-get update
apt-get install -y --no-install-recommends \
git \
curl \
unzip \
ca-certificates \
php-cli \
php-curl \
php-mbstring \
php-xml \
php-zip
# 3) Composer installation
COMPOSER_HOME=/opt/composer
mkdir -p "$COMPOSER_HOME"
curl -sS https://getcomposer.org/installer | php -- --install-dir="$COMPOSER_HOME" --filename=composer
chmod +x "$COMPOSER_HOME"/composer
ln -s "$COMPOSER_HOME"/composer /usr/local/bin/composer
# 4) PHP-Fehlerreporting im CLI-Modus aktivieren
PHP_INI_CLI=/etc/php/$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')/cli/php.ini
# Backup
cp "$PHP_INI_CLI" "$PHP_INI_CLI".bak
# Setze display_errors und error_reporting
sed -i "s/^;\?display_errors = .*/display_errors = On/" "$PHP_INI_CLI"
sed -i "s/^;\?error_reporting = .*/error_reporting = E_ALL/" "$PHP_INI_CLI"
# 5) PHPUnit (optional)
composer global require phpunit/phpunit --no-progress --no-interaction --prefer-dist
# Stelle sicher, dass ~/.composer/vendor/bin/ im PATH ist
if ! grep -q 'composer/vendor/bin' /etc/profile.d/composer.sh 2>/dev/null; then
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' > /etc/profile.d/composer.sh
chmod +x /etc/profile.d/composer.sh
fi
# 6) Aufräumen
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "=== PHP-Agent Dev-Env fertig konfiguriert ==="
echo "Verfügbare Kommandos: php, php -l, composer, phpunit"