Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


windrop:compilation_cygwin

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
windrop:compilation_cygwin [2026/03/27 19:24] – [Ajout du bundle CA portable pour HTTPS] TeuKwindrop:compilation_cygwin [2026/03/27 19:46] (Version actuelle) – [Ajout du bundle CA portable pour HTTPS] TeuK
Ligne 326: Ligne 326:
 Le bundle doit donc embarquer au minimum les éléments suivants : `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. Le bundle doit donc embarquer au minimum les éléments suivants : `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 === === Ajout du bundle CA portable pour HTTPS ===
-Si le fichier fourni [[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.zip|Windrop-portable-1.10.1-minimal.conf]] 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 `ssl/certs/cacert.pem`+Si le fichier fourni [[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf|Windrop-portable-1.10.1-minimal.conf]] 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 ssl/certs/cacert.pem 
 + 
 +Créer l’arborescence puis télécharger cacert.pem : 
 + 
 +<code 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" 
 +</code>
  
-Créer l’arborescence puis télécharger `cacert.pem` : 
-<code 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"</code> 
 Vérification de la présence du bundle CA : Vérification de la présence du bundle CA :
-<code bash>ls -lh "$WINDROP_ROOT/eggdrop-1.10.1/ssl/certs/cacert.pem"</code>+ 
 +<code bash> 
 +ls -lh "$WINDROP_ROOT/eggdrop-1.10.1/ssl/certs/cacert.pem" 
 +</code> 
 Si le fichier de configuration est inclus dans le bundle, il est alors possible d’y utiliser : Si le fichier de configuration est inclus dans le bundle, il est alors possible d’y utiliser :
-<code tcl>set ::httpscompat::cafile "ssl/certs/cacert.pem"</code> + 
-puis de décommenter le chargement du wrapper HTTPS si nécessaire : +<code tcl> 
-<code tcl>source scripts/https_compat_tcl9.tcl</code> +set ::httpscompat::cafile "ssl/certs/cacert.pem" 
-Cette étape n’est utile que si des scripts Tcl utilisent réellement `package http`, en particulier avec des URLs `https://`.+</code> 
 + 
 +Puis de décommenter le chargement du wrapper HTTPS si nécessaire : 
 + 
 +<code tcl> 
 +source scripts/https_compat_tcl9.tcl 
 +</code> 
 + 
 +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 === === Remplacement des liens symboliques pour un vrai bundle Windows ===
 +
 Une installation Eggdrop sous Cygwin peut laisser des liens symboliques dans l’arbre installé, notamment : Une installation Eggdrop sous Cygwin peut laisser des liens symboliques dans l’arbre installé, notamment :
-  * `eggdrop.exe -> eggdrop.exe-1.10.1` +  * eggdrop.exe -> eggdrop.exe-1.10.1 
-  * `modules -> modules-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. 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.
-<code bash>cd "$WINDROP_ROOT/eggdrop-1.10.1"+ 
 +<code bash> 
 +cd "$WINDROP_ROOT/eggdrop-1.10.1"
 rm -f eggdrop.exe rm -f eggdrop.exe
 cp -f eggdrop.exe-1.10.1 eggdrop.exe cp -f eggdrop.exe-1.10.1 eggdrop.exe
 rm -rf modules rm -rf modules
-cp -a modules-1.10.1 modules</code>+cp -a modules-1.10.1 modules 
 +</code>
  
 === Copie des fichiers des modules optionnels === === Copie des fichiers des modules optionnels ===
-Si `botnetop.mod``gseen.modet `stats.modont été clonés et compilés, copier ensuite leurs fichiers de configuration et de langue dans l’arbre installé : + 
-<code bash>cd "$BUILD_ROOT/build/$SRC_DIR"+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é : 
 + 
 +<code 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/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/gseen.conf "$WINDROP_ROOT/eggdrop-1.10.1" 2>/dev/null || true
Ligne 361: Ligne 385:
 cp src/mod/stats.mod/stats.conf "$WINDROP_ROOT/eggdrop-1.10.1" 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 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</code>+cp -r src/mod/stats.mod/templates "$WINDROP_ROOT/eggdrop-1.10.1" 2>/dev/null || true 
 +</code> 
 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. 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é === === Vérification de l’arbre installé ===
-<code bash>find "$WINDROP_ROOT/eggdrop-1.10.1" -maxdepth 3 -ls</code>+ 
 +<code bash> 
 +find "$WINDROP_ROOT/eggdrop-1.10.1" -maxdepth 3 -ls 
 +</code>
  
 ==== Configuration initiale ==== ==== Configuration initiale ====
-Le fichier fourni ([[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf|Windrop-portable-1.10.1-minimal.conf]]) sert de base de départ.  + 
 +Le fichier fourni ([[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf|Windrop-portable-1.10.1-minimal.conf]]) sert de base de départ. 
 Avant le premier lancement, vérifier au minimum : Avant le premier lancement, vérifier au minimum :
-  * l’identité du bot (`username``admin``network``nick``altnick``realname`+  * l’identité du bot (username, admin, network, nick, altnick, realname) 
-  * le port d’écoute (`listen`)+  * le port d’écoute (listen)
   * l’owner   * l’owner
   * les serveurs IRC   * les serveurs IRC
   * les canaux à rejoindre   * les canaux à rejoindre
   * les modules réellement souhaités   * les modules réellement souhaités
 +
 Le wrapper HTTPS Tcl 9 est prévu mais reste **désactivé par défaut** : Le wrapper HTTPS Tcl 9 est prévu mais reste **désactivé par défaut** :
-<code tcl>#source scripts/https_compat_tcl9.tcl</code>+ 
 +<code tcl> 
 +#source scripts/https_compat_tcl9.tcl 
 +</code>
  
 ==== Annexe – Wrapper HTTPS Tcl 9 / TclTLS 2.0 ==== ==== 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 en https, dans un bundle Windrop portable basé sur Tcl 9, TclTLS 2.0 et tcllib 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 en 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. Ce wrapper doit être chargé avant les scripts Tcl qui utilisent HTTP/HTTPS.
Ligne 388: Ligne 423:
  
 === Exemple de chargement dans la configuration === === Exemple de chargement dans la configuration ===
 +
 <code tcl> <code tcl>
 # Optional overrides before loading: # Optional overrides before loading:
Ligne 393: Ligne 429:
 #   set ::httpscompat::cafile "ssl/certs/cacert.pem" #   set ::httpscompat::cafile "ssl/certs/cacert.pem"
 #   set ::httpscompat::selftest_host "google.com" #   set ::httpscompat::selftest_host "google.com"
-source scripts/https_compat_tcl9.tcl</code>+source scripts/https_compat_tcl9.tcl 
 +</code>
  
-Si ce wrapper est activé, il est aussi recommandé d’embarquer un bundle CA portable dans `ssl/certs/cacert.pemet de définir dans la configuration: +Si ce wrapper est activé, il est aussi recommandé d’embarquer un bundle CA portable dans ssl/certs/cacert.pem et de définir dans la configuration : 
-<code tcl>set ::httpscompat::cafile "ssl/certs/cacert.pem"</code>+ 
 +<code tcl> 
 +set ::httpscompat::cafile "ssl/certs/cacert.pem" 
 +</code>
  
 Cette annexe complète la section du HOWTO consacrée au bundle CA portable et à la configuration initiale. Cette annexe complète la section du HOWTO consacrée au bundle CA portable et à la configuration initiale.
  
 ===== Lancement d’Eggdrop avec un wrapper portable ===== ===== Lancement d’Eggdrop avec un wrapper 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.cmdplacé dans le répertoire d’installation Eggdrop.  +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 : Ce wrapper :
   * se base sur son propre emplacement ;   * se base sur son propre emplacement ;
-  * ajoute les chemins `openssl\binet `tcl\binsans écraser le `PATHsystème ; +  * ajoute les chemins openssl\bin et tcl\bin sans écraser le PATH système ; 
-  * définit `TCL_LIBRARY``TCLLIBPATHet les variables liées aux certificats ; +  * définit TCL_LIBRARY, TCLLIBPATH et les variables liées aux certificats ; 
-  * lance le vrai binaire `eggdrop.exe-1.10.1`.+  * lance le vrai binaire eggdrop.exe-1.10.1.
  
 ==== Fichier eggdrop.cmd ==== ==== Fichier eggdrop.cmd ====
-<code dos>@echo off+ 
 +<code dos> 
 +@echo off
 setlocal EnableExtensions setlocal EnableExtensions
  
Ligne 444: Ligne 488:
  
 popd >nul 2>&1 popd >nul 2>&1
-exit /b %RC%</code>+exit /b %RC% 
 +</code>
  
 ==== Usage ==== ==== 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 : `eggdrop.cmd -m bot.conf` 
-  * Lancement en foreground : `eggdrop.cmd -n bot.conf` 
-  * Lancement normal : `eggdrop.cmd bot.conf` 
  
-`bot.confest donné ici à titre indicatif.  En pratique, il faut partir du fichier [[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf|Windrop-portable-1.10.1-minimal.conf]], l’adapter, puis l’utiliser avec ce lanceur.+À 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 : eggdrop.cmd -m bot.conf 
 +  * Lancement en foreground : eggdrop.cmd -n bot.conf 
 +  * Lancement normal : eggdrop.cmd bot.conf 
 + 
 +bot.conf est donné ici à titre indicatif. En pratique, il faut partir du fichier [[https://teuk.org/downloads/windrop/conf/Windrop-portable-1.10.1-minimal.conf|Windrop-portable-1.10.1-minimal.conf]], l’adapter, puis l’utiliser avec ce lanceur.
  
 ===== Rappels pratiques ===== ===== 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 cleanou `make distcleanne doit jamais dépendre du répertoire courant laissé par l’étape précédente. +  * Toujours nettoyer avant les grosses briques : le nettoyage préventif fait partie du flux normal. 
-  * Si une variable a disparu : Recharger le bloc des variables d’environnement. +  * 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. 
-  * Si l’environnement devient douteux : Nettoyer les préfixes et reprendre les étapes depuis le début du composant concerné. +  * Si une variable a disparu : recharger le bloc des variables d’environnement. 
-  * Pour les archives `.tar.gz`, toujours : +  * Si l’environnement devient douteux : nettoyer les préfixes et reprendre les étapes depuis le début du composant concerné. 
-    * définir `ARCHIVE` +  * Pour les archives .tar.gz, toujours : 
-    * déterminer `SRC_DIRavec `tar tzf ... | head -1 | cut -d/ -f1` +    * définir ARCHIVE 
-    * utiliser `tar xzf` +    * déterminer SRC_DIR avec tar tzf ... | head -1 | cut -d/ -f1 
-    * faire `cd "$SRC_DIR"`+    * utiliser tar xzf 
 +    * faire cd "$SRC_DIR" 
 ===== Résumé ===== ===== Résumé =====
 +
 La séquence recommandée est : La séquence recommandée est :
-    - préparer les variables d’environnement +  - préparer les variables d’environnement 
-    - télécharger les sources +  - télécharger les sources 
-    - construire OpenSSL +  - construire OpenSSL 
-    - construire Tcl +  - construire Tcl 
-    - construire TclTLS +  - construire TclTLS 
-    - installer tcllib +  - installer tcllib 
-    - construire Eggdrop +  - construire Eggdrop 
-    - ajouter éventuellement les modules complémentaires et leurs fichiers associés +  - ajouter éventuellement les modules complémentaires et leurs fichiers associés 
-    - valider l’ensemble+  - 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. 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.txt · Dernière modification : de TeuK