Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


windrop:compilation_cygwin

Ceci est une ancienne révision du document !


Windrop portable sous Cygwin

Vue d’ensemble

Ce guide décrit une méthode reproductible pour construire un environnement Windrop portable sous Cygwin autour des composants suivants :

- OpenSSL 3.6.1 - Tcl 9.0.3 - TclTLS 2.0 - tcllib 2.0 - Eggdrop 1.10.1 - modules additionnels optionnels : botnetop, gseen, stats

L’objectif est de produire un arbre propre, isolé et relançable, sans dépendre d’un état implicite de la session ni d’un ancien build.

Le principe est simple :

- travailler avec des variables d’environnement stables - séparer clairement les sources, le build et l’installation - nettoyer avant chaque grosse étape - valider chaque étape avant de passer à la suivante

Un grand merci à Michael Ortmann pour le guide original. Il a fourni une excellente base de départ, très utile pour reproduire un build Windrop portable moderne. Ce HOWTO s’appuie sur ce travail et documente les étapes supplémentaires, les correctifs et les détails de packaging nécessaires pour rendre l’ensemble réellement reproductible en pratique.

https://github.com/michaelortmann/windrop?tab=readme-ov-file

## Pré-requis Cygwin

Installer au minimum les paquets suivants :

text autoconf2.7 automake1.17 binutils gcc-core gcc-g++ make mingw64-x86_64-gcc-core pkg-config git wget curl zip unzip tar xz patch perl python3 python3-devel rebase dash zlib zlib-devel

Vérification rapide :

bash for cmd in gcc g++ make autoconf pkg-config tar wget; do printf '%-12s ' “$cmd” if command -v “$cmd” >/dev/null 2>&1; then “$cmd” –version 2>/dev/null | head -1 else echo “KO” fi done printf '%-12s ' “nproc” if command -v nproc >/dev/null 2>&1; then nproc else echo “KO” fi

### Vérification Python

Comme Eggdrop peut construire python.mod, vérifier aussi :

bash echo “python3: $(command -v python3 2>/dev/null || echo KO)” echo “python version: $(python3 –version 2>/dev/null || echo KO)” echo “python3-config: $(readlink -f /usr/bin/python3-config 2>/dev/null || echo KO)” echo “includes: $(/usr/bin/python3-config –includes 2>/dev/null || echo KO)” echo “ldflags: $(/usr/bin/python3-config –ldflags 2>/dev/null || echo KO)”

Point important sous Cygwin :

- ne pas utiliser $(command -v python3-config) dans ce guide - forcer /usr/bin/python3-config - cela évite les chemins cassés du type -Iinclude/… et -Llib

### Modules additionnels optionnels

Le flux ci-dessous permet aussi d’intégrer, de façon optionnelle, trois modules externes souvent associés aux builds Windrop récents :

- botnetop.mod - gseen.mod - stats.mod

Ils sont récupérés via git clone, d’où la présence de git dans les prérequis.

### Compilation parallèle

Sous Cygwin, les compilations peuvent être accélérées avec :

bash nproc make -j“$(nproc)”

Dans ce guide :

- make -j“$(nproc)“ est utilisé pour la compilation - make install reste en simple - tcllib reste volontairement plus conservateur

## Variables d’environnement

Définir ces variables au début de la session :

bash export BUILD_ROOT=/home/eggbox/windrop-build export WINDROP_ROOT=/home/eggbox/windrop-root export OPENSSL_PREFIX=$WINDROP_ROOT/openssl export TCL_PREFIX=$WINDROP_ROOT/tcl export PATH=“$TCL_PREFIX/bin:$OPENSSL_PREFIX/bin:/bin:/usr/bin:$PATH” export LD_LIBRARY_PATH=“$OPENSSL_PREFIX/lib:$OPENSSL_PREFIX/lib64:$TCL_PREFIX/lib” export TCLLIBPATH=“$TCL_PREFIX/lib” export PKG_CONFIG_PATH=“$OPENSSL_PREFIX/lib/pkgconfig:$OPENSSL_PREFIX/lib64/pkgconfig”

Vérification :

bash echo “BUILD_ROOT=$BUILD_ROOT” echo “WINDROP_ROOT=$WINDROP_ROOT” echo “OPENSSL_PREFIX=$OPENSSL_PREFIX” echo “TCL_PREFIX=$TCL_PREFIX”

Si vous ouvrez plus tard une nouvelle session Cygwin, il suffit de relancer ce bloc.

## Préparation des répertoires

Créer l’arborescence de travail :

bash mkdir -p “$BUILD_ROOT”/{src,build} “$WINDROP_ROOT”

Vérification :

bash find “$BUILD_ROOT” -maxdepth 2 -type d | sort find “$WINDROP_ROOT” -maxdepth 2 -type d | sort

## Téléchargement des sources

Se placer dans le répertoire des sources :

bash mkdir -p “$BUILD_ROOT/src” cd “$BUILD_ROOT/src”

Télécharger les archives :

bash wget -O openssl-3.6.1.tar.gz \ “https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz” wget -O tcl9.0.3-src.tar.gz \ “https://prdownloads.sourceforge.net/tcl/tcl9.0.3-src.tar.gz” wget -O tcltls-2.0-src.tar.gz \ “https://core.tcl-lang.org/tcltls/uv/tcltls-2.0-src.tar.gz” wget -O eggdrop-1.10.1.tar.gz \ “https://ftp.eggheads.org/pub/eggdrop/source/1.10/eggdrop-1.10.1.tar.gz” wget -O tcllib-2.0.tar.gz \ “https://core.tcl-lang.org/tcllib/tarball/tcllib-2.0.tar.gz?r=tcllib-2-0

### Sources des modules optionnels

Ces modules ne sont pas fournis sous forme d’archives .tar.gz dans ce guide. Ils seront récupérés plus tard directement dans l’arbre Eggdrop via Git.

Dépôts utilisés :

- https://github.com/michaelortmann/botnetop.mod - https://github.com/michaelortmann/gseen.mod - https://github.com/michaelortmann/stats.mod

Vérification :

bash ls -lh “$BUILD_ROOT/src”

## Règle générale pour les archives .tar.gz

Pour éviter les cd fragiles, utiliser systématiquement cette méthode :

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/monarchive.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” echo “$SRC_DIR” tar xzf “$ARCHIVE” cd “$SRC_DIR”

## 1. Construire OpenSSL 3.6.1

### Nettoyage préventif

bash rm -rf “$OPENSSL_PREFIX” mkdir -p “$OPENSSL_PREFIX”

### Décompression

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/openssl-3.6.1.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” tar xzf “$ARCHIVE” cd “$SRC_DIR”

### Configuration

bash ./Configure \ –prefix=“$OPENSSL_PREFIX” \ shared \ Cygwin-x86_64

Point important : la cible doit être Cygwin-x86_64 avec un C majuscule.

### Compilation et installation

bash make -j”$(nproc)” make install_sw

### Permissions des DLL

bash chmod 755 “$OPENSSL_PREFIX/bin/cygcrypto-3.dll” 2>/dev/null || true chmod 755 “$OPENSSL_PREFIX/bin/cygssl-3.dll” 2>/dev/null || true

### Vérification de la version OpenSSL

bash “$OPENSSL_PREFIX/bin/openssl” version -a ls -l “$OPENSSL_PREFIX/bin”/cyg*.dll

## 2. Construire Tcl 9.0.3

### Nettoyage préventif

bash rm -rf “$TCL_PREFIX” mkdir -p “$TCL_PREFIX” mkdir -p “$TCL_PREFIX/man/mann”

### Décompression

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/tcl9.0.3-src.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” tar xzf “$ARCHIVE” cd “$SRC_DIR/unix”

### Configuration, compilation et installation

bash ./configure –prefix=“$TCL_PREFIX” make -j“$(nproc)” make install ln -sf “$TCL_PREFIX/bin/tclsh9.0” “$TCL_PREFIX/bin/tclsh”

### Vérification de la version Tcl

bash “$TCL_PREFIX/bin/tclsh9.0” «'EOF' puts “Tcl=[info patchlevel]” puts “auto_path=$auto_path” EOF

Résultat attendu : Tcl=9.0.3

## 3. Construire TclTLS 2.0

### Nettoyage préventif

bash rm -rf “$TCL_PREFIX/lib/tcltls2.0”

### Décompression

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/tcltls-2.0-src.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” tar xzf “$ARCHIVE” cd “$SRC_DIR”

### Nettoyage de build

bash make distclean 2>/dev/null || true make clean 2>/dev/null || true

### Configuration

bash ./configure \ –prefix=“$TCL_PREFIX” \ –with-tcl=“$TCL_PREFIX/lib” \ –with-tclinclude=“$TCL_PREFIX/include” \ CPPFLAGS=“-I$OPENSSL_PREFIX/include -I$TCL_PREFIX/include” \ LDFLAGS=“-L$OPENSSL_PREFIX/lib -L$OPENSSL_PREFIX/lib64 -L$TCL_PREFIX/lib”

### Compilation et installation

bash make -j“$(nproc)” make install

### Permissions des DLL

bash chmod 755 “$TCL_PREFIX/lib/tcltls2.0/cygtcl9tls2.0.dll” 2>/dev/null || true chmod 755 “$OPENSSL_PREFIX/bin/cygcrypto-3.dll” 2>/dev/null || true chmod 755 “$OPENSSL_PREFIX/bin/cygssl-3.dll” 2>/dev/null || true find “$TCL_PREFIX/lib/tcltls2.0” -type d -exec chmod 755 {} \; 2>/dev/null || true

### Vérification de la version TclTLS

bash “$TCL_PREFIX/bin/tclsh9.0” «'EOF' puts “Tcl=[info patchlevel]” puts “tls=[package require tls]” EOF

Résultat attendu :

- Tcl=9.0.3 - tls=2.0

## 4. Installer tcllib 2.0

### Décompression

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/tcllib-2.0.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” tar xzf “$ARCHIVE” cd “$SRC_DIR”

### Nettoyage préventif

bash make clean 2>/dev/null || true rm -rf “$TCL_PREFIX/lib/tcllib2.0” rm -rf “$TCL_PREFIX/man” mkdir -p “$TCL_PREFIX/man/mann”

### Patch local de installer.tcl

Dans cet environnement, tcllib 2.0 peut échouer avec :

text error deleting “…/tcllib2.0/page/plugins”: directory not empty

Sauvegarde :

bash cp -a installer.tcl installer.tcl.orig

Patch Perl :

bash perl -0pi -e 's/run file delete \$sub/set visible [glob -nocomplain [file join \$sub *]]\n set hidden [glob -nocomplain -types hidden [file join \$sub *]]\n if {![llength [concat \$visible \$hidden]]} {\n catch {run file delete -force – \$sub}\n }/s' installer.tcl

Vérification visuelle :

bash nl -ba installer.tcl | sed -n '129,140p'

### Configuration

bash ./configure –prefix=“$TCL_PREFIX”

### Installation Tcl pure

Ici, ne pas utiliser make simple : il essaie aussi de lancer une étape critcl.

Utiliser directement :

bash make install-tcl

### Vérification rapide de tcllib

bash “$TCL_PREFIX/bin/tclsh9.0” «'EOF' package require fileutil puts “tcllib OK” EOF

## 5. Construire Eggdrop 1.10.1

### Nettoyage préventif

bash rm -rf “$WINDROP_ROOT/eggdrop-1.10.1”

### Décompression

bash cd “$BUILD_ROOT/build” export ARCHIVE=“$BUILD_ROOT/src/eggdrop-1.10.1.tar.gz” export SRC_DIR=“$(tar tzf “$ARCHIVE” | head -1 | cut -d/ -f1)” tar xzf “$ARCHIVE” cd “$SRC_DIR”

### Modules additionnels optionnels

Si l’objectif est de reproduire un build enrichi avec botnetop, gseen et stats, cloner les dépôts dans src/mod avant la configuration :

bash cd “$BUILD_ROOT/build/$SRC_DIR/src/mod” env -i HOME=“$HOME” USER=“$USER” TERM=“$TERM” PATH=“/bin:/usr/bin” \ git clone –depth=1 https://github.com/michaelortmann/botnetop.mod.git env -i HOME=“$HOME” USER=“$USER” TERM=“$TERM” PATH=“/bin:/usr/bin” \ git clone –depth=1 https://github.com/michaelortmann/gseen.mod.git env -i HOME=“$HOME” USER=“$USER” TERM=“$TERM” PATH=“/bin:/usr/bin” \ git clone –depth=1 https://github.com/michaelortmann/stats.mod.git cd “$BUILD_ROOT/build/$SRC_DIR”

Cette étape est optionnelle. Si ces modules ne sont pas nécessaires, passer directement à la configuration.

### Configuration

Eggdrop autodétecte correctement Tcl dans ce contexte. En revanche, il faut fournir explicitement :

- le chemin des headers OpenSSL - le chemin des bibliothèques OpenSSL - le chemin stable de python3-config

bash export PYTHON_CONFIG=/usr/bin/python3-config ./configure \ –prefix=“$WINDROP_ROOT/eggdrop-1.10.1” \ –with-sslinc=“$OPENSSL_PREFIX/include” \ –with-ssllib=“$OPENSSL_PREFIX/lib” \ –with-python-config=“$PYTHON_CONFIG”

### Compilation

bash make config

### Vérification de python.mod

Contrôler les flags générés :

bash grep -n '^PYTHON_CFLAGS\|^PYTHON_LDFLAGS' src/mod/python.mod/Makefile

Résultat attendu :

- chemins Python cohérents - pas de -Iinclude/… - pas de -Llib

Si include ou lib apparaissent encore, interrompre ici et corriger la détection Python avant compilation.

bash make -j“$(nproc)”

### Installation

bash make install DEST=“$WINDROP_ROOT/eggdrop-1.10.1”

## Vérification globale de l’environnement Tcl

bash cd “$BUILD_ROOT” export PATH=“$TCL_PREFIX/bin:$OPENSSL_PREFIX/bin:/bin:/usr/bin:$PATH” export LD_LIBRARY_PATH=“$OPENSSL_PREFIX/lib:$OPENSSL_PREFIX/lib64:$TCL_PREFIX/lib” export TCLLIBPATH=“$TCL_PREFIX/lib” “$TCL_PREFIX/bin/tclsh9.0” «'EOF' puts “Tcl=[info patchlevel]” puts “tls=[package require tls]” catch {package require fileutil} r1 puts “fileutil=$r1” EOF

Ne poursuivre que si tout répond correctement.

### Copie des DLL nécessaires dans la racine du bot

Pour qu’un bundle Windrop portable puisse être lancé directement depuis Windows, il ne suffit pas d’installer Eggdrop : il faut aussi copier dans la racine du bot les DLL runtime nécessaires.

Copier les fichiers suivants dans :

text $WINDROP_ROOT/eggdrop-1.10.1/

Commande :

bash cd “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f /bin/cygwin1.dll “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f /bin/cygz.dll “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f /bin/cyggcc_s-seh-1.dll “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f “$OPENSSL_PREFIX/bin/cygcrypto-3.dll” “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f “$OPENSSL_PREFIX/bin/cygssl-3.dll” “$WINDROP_ROOT/eggdrop-1.10.1/” cp -f “$TCL_PREFIX/bin/cygtcl9.0.dll” “$WINDROP_ROOT/eggdrop-1.10.1/”

À ce stade, la racine du bot doit contenir au minimum :

- eggdrop.exe-1.10.1 - cygwin1.dll - cygz.dll - cyggcc_s-seh-1.dll - cygcrypto-3.dll - cygssl-3.dll - cygtcl9.0.dll

Sans cette étape, un lancement direct depuis cmd.exe peut échouer avec un message indiquant qu’une DLL est manquante.

### Chargeur portable de packages Tcl

Le bundle portable repose sur [scripts/autoload_pkgs.tcl](https://teuk.org/downloads/windrop/tcl/autoload_pkgs-1.0.zip) pour charger les packages Tcl depuis l’arborescence locale ./lib, sans dépendre d’un environnement Tcl installé ailleurs sur la machine.

Ce script doit donc être présent dans :

text scripts/autoload_pkgs.tcl

La configuration minimale fournie charge explicitement ce fichier avant le wrapper HTTPS et avant les autres scripts Tcl.

Extrait :

tcl # Chargeur portable depuis ./lib uniquement source scripts/autoload_pkgs.tcl

Le bundle doit donc embarquer au minimum les éléments suivants :

text scripts/autoload_pkgs.tcl lib/tcl9 lib/tcllib2.0

et, si le support TLS Tcl est utilisé dans les scripts, le répertoire TclTLS portable correspondant au build.

### Ajout du bundle CA portable pour HTTPS

Si le fichier fourni [Windrop-portable-1.10.1-minimal.conf](https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.zip) est utilisé avec le wrapper HTTPS Tcl 9, il faut embarquer un bundle de certificats CA dans le répertoire du bot.

L’emplacement attendu est :

text ssl/certs/cacert.pem

Créer l’arborescence puis télécharger cacert.pem :

bash mkdir -p “$WINDROP_ROOT/eggdrop-1.10.1/ssl/certs” wget -O “$WINDROP_ROOT/eggdrop-1.10.1/ssl/certs/cacert.pem” \ “https://curl.se/ca/cacert.pem

Vérification de la présence du bundle CA :

bash ls -lh “$WINDROP_ROOT/eggdrop-1.10.1/ssl/certs/cacert.pem”

Si le fichier de configuration [Windrop-portable-1.10.1-minimal.conf](https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.zip) est inclus dans le bundle, il est alors possible d’y utiliser :

tcl set ::httpscompat::cafile “ssl/certs/cacert.pem”

puis de décommenter le chargement du wrapper HTTPS si nécessaire :

tcl source scripts/https_compat_tcl9.tcl

Cette étape n’est utile que si des scripts Tcl utilisent réellement package http, en particulier avec des URLs https:. ### Remplacement des liens symboliques pour un vrai bundle Windows Une installation Eggdrop sous Cygwin peut laisser des liens symboliques dans l’arbre installé, notamment : - eggdrop.exe → eggdrop.exe-1.10.1 - modules → modules-1.10.1 Pour obtenir un répertoire réellement portable et facile à copier depuis le filesystem Windows, il est préférable de remplacer ces liens par de vrais fichiers et de vrais répertoires. Commande : bash cd “$WINDROP_ROOT/eggdrop-1.10.1” rm -f eggdrop.exe cp -f eggdrop.exe-1.10.1 eggdrop.exe rm -rf modules cp -a modules-1.10.1 modules ### Copie des fichiers des modules optionnels Si botnetop.mod, gseen.mod et stats.mod ont été clonés et compilés, copier ensuite leurs fichiers de configuration et de langue dans l’arbre installé : bash cd “$BUILD_ROOT/build/$SRC_DIR” cp src/mod/botnetop.mod/botnetop.conf “$WINDROP_ROOT/eggdrop-1.10.1” 2>/dev/null || true cp src/mod/gseen.mod/gseen.conf “$WINDROP_ROOT/eggdrop-1.10.1” 2>/dev/null || true cp src/mod/gseen.mod/*.lang “$WINDROP_ROOT/eggdrop-1.10.1/language/” 2>/dev/null || true cp src/mod/stats.mod/stats.conf “$WINDROP_ROOT/eggdrop-1.10.1” 2>/dev/null || true cp src/mod/stats.mod/language/* “$WINDROP_ROOT/eggdrop-1.10.1/language/” 2>/dev/null || true cp -r src/mod/stats.mod/templates “$WINDROP_ROOT/eggdrop-1.10.1” 2>/dev/null || true Ces copies sont elles aussi optionnelles et n’ont de sens que si les modules ont été ajoutés plus tôt dans l’arbre Eggdrop. ### Vérification de l’arbre installé bash find “$WINDROP_ROOT/eggdrop-1.10.1” -maxdepth 3 -ls — ## Configuration initiale Le fichier fourni [Windrop-portable-1.10.1-minimal.conf](https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf) sert de base de départ. Avant le premier lancement, vérifier au minimum : - l’identité du bot (username, admin, network, nick, altnick, realname) - le port d’écoute (listen) - l’owner - les serveurs IRC - les canaux à rejoindre - les modules réellement souhaités Le wrapper HTTPS Tcl 9 est prévu mais reste désactivé par défaut : tcl #source scripts/https_compat_tcl9.tcl ## Annexe – Wrapper HTTPS Tcl 9 / TclTLS 2.0 Le wrapper HTTPS Tcl 9 / TclTLS 2.0 rétablit une compatibilité propre pour les scripts Tcl utilisant package http, en particulier avec des URLs https:, dans un bundle Windrop portable basé sur Tcl 9, TclTLS 2.0 et tcllib 2.0.

Ce wrapper doit être chargé avant les scripts Tcl qui utilisent HTTP/HTTPS.

Archive fournie :

- [https_compat_tcl9-1.4.zip](https://teuk.org/downloads/windrop/tcl/https_compat_tcl9-1.4.zip)

Exemple de chargement dans la configuration :

tcl # Optional overrides before loading: # set ::httpscompat::debug 1 # set ::httpscompat::cafile “ssl/certs/cacert.pem” # set ::httpscompat::selftest_host “google.com” source scripts/https_compat_tcl9.tcl

Si ce wrapper est activé, il est aussi recommandé d’embarquer un bundle CA portable dans :

text ssl/certs/cacert.pem

et de définir dans la configuration :

tcl set ::httpscompat::cafile “ssl/certs/cacert.pem”

Cette annexe complète la section du HOWTO consacrée au bundle CA portable et à la configuration initiale.

## Lancement d’Eggdrop avec un wrapper CMD portable

Dans l’arbre installé, eggdrop.exe peut être un lien symbolique ou un stub non directement exploitable selon le contexte Windows. Le vrai binaire à lancer est généralement eggdrop.exe-1.10.1.

Le plus simple consiste donc à fournir un lanceur eggdrop.cmd placé dans le répertoire d’installation Eggdrop. Ce wrapper :

- se base sur son propre emplacement ; - ajoute les chemins openssl\bin et tcl\bin sans écraser le PATH système ; - définit TCL_LIBRARY, TCLLIBPATH et les variables liées aux certificats ; - lance le vrai binaire eggdrop.exe-1.10.1.

### Fichier eggdrop.cmd

cmd @echo off setlocal EnableExtensions set “BASE_DIR=%~dp0” if “%BASE_DIR:~-1%”==“\” set “BASE_DIR=%BASE_DIR:~0,-1%” set “EGGDIR=%BASE_DIR%” set “OPENSSL_DIR=%EGGDIR%\..\openssl” set “TCL_DIR=%EGGDIR%\..\tcl” set “BINARY=%EGGDIR%\eggdrop.exe-1.10.1” if not exist “%BINARY%” ( echo [ERROR] Could not find binary : “%BINARY%” exit /b 1 ) set “PATH=%OPENSSL_DIR%\bin;%TCL_DIR%\bin;%PATH%” set “TCL_LIBRARY=%TCL_DIR%\lib\tcl9” set “TCLLIBPATH=%TCL_DIR%\lib” set “SSL_CERT_DIR=%EGGDIR%\ssl\certs” set “SSL_CERT_FILE=%EGGDIR%\ssl\certs\cacert.pem” pushd “%EGGDIR%” >nul 2>&1 if errorlevel 1 ( echo [ERROR] Could not change directory to “%EGGDIR%” exit /b 1 ) “%BINARY%” %* set “RC=%ERRORLEVEL%” popd >nul 2>&1 exit /b %RC%

### Usage

À ce stade de l’installation, il ne faut plus utiliser le shell Cygwin mais une cmd.exe classique. Le répertoire /home/eggbox/windrop-root/eggdrop-1.10.1 peut être copié n’importe où sur le filesystem Windows.

Initialisation d’un nouveau bot :

cmd eggdrop.cmd -m bot.conf

Lancement en foreground :

cmd eggdrop.cmd -n bot.conf

Lancement normal :

cmd eggdrop.cmd bot.conf

bot.conf est donné ici à titre indicatif. En pratique, il faut partir du fichier [Windrop-portable-1.10.1-minimal.conf](https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf), l’adapter, puis l’utiliser avec ce lanceur.

### Rappels pratiques

### Toujours nettoyer avant les grosses briques

Le nettoyage préventif fait partie du flux normal.

### Toujours se repositionner avant un make clean

Un make clean ou make distclean ne doit jamais dépendre du répertoire courant laissé par l’étape précédente.

### Pour les .tar.gz archives

Toujours :

- définir ARCHIVE - déterminer SRC_DIR avec tar tzf … | head -1 | cut -d/ -f1 - utiliser tar xzf - faire cd “$SRC_DIR”

### Si une variable a disparu

Recharger le bloc des variables d’environnement.

### Si l’environnement devient douteux

Nettoyer les préfixes et reprendre les étapes depuis le début du composant concerné.

## Résumé

La séquence recommandée est :

1. préparer les variables d’environnement 2. télécharger les sources 3. construire OpenSSL 4. construire Tcl 5. construire TclTLS 6. installer tcllib 7. construire Eggdrop 8. ajouter éventuellement les modules complémentaires et leurs fichiers associés 9. valider l’ensemble

Cette méthode reste volontairement conservatrice. Elle privilégie la reproductibilité, la lisibilité et la reprise propre d’un build en cas d’échec.

windrop/compilation_cygwin.1774423201.txt.gz · Dernière modification : de CrazyCat