Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
je souhaiterai industrialiser la compilation de notre projet via jenkins et je rencontre un petit problème lors de la compilation de l'exécutable
Pour le moment, notre projet est hébergé sous Visual Source (je travail sur un passage vers SVN). Après avoir extrait l'ensemble des librairies, je lance un shell qui me permet de générer mon fichier de script :
IFS="; " DIR="Sources_PB\\SRD_CONCEPT" script="script.orca" cd $DIR liblist=`cat srd_concept.pbt | grep LibList | awk -F 'LibList \"' '{print $2}' | awk -F '\";' '{print $1}' | sed -e 's/\\\\\\\/\\\/g'` applib=`cat srd_concept.pbt | grep applib | awk -F 'applib \"' '{print $2}' | awk -F '\";' '{print $1}'` appname=`cat srd_concept.pbt | grep appname | awk -F 'appname \"' '{print $2}' | awk -F '\";' '{print $1}'` echo "start session" > $script echo "set liblist \"$liblist\"" >> $script echo "set application \"$applib\" \"$appname\"" >> $script echo "build application full" >> $script echo "build project \"$applib\" \"projet_main_srd\"" >> $script pbdflags="" for lib in `echo $liblist` ; do if [ "$lib" = "$applib" ] ; then pbdflags="${pbdflags}n" else echo "build library \"$lib\" \"\" pbd" >> $script pbdflags="${pbdflags}y" fi done echo "build executable \"or.exe\" \"..\\BMP\\restauration.ico\" \"\" \"$pbdflags\"" >> $script echo "end session" >> $script orcascr115 $script
Le script généré ressemble à cela (je vous passe les longues listes avec des ...) :
start session set liblist "srd_concept.pbl;..." set application "srd_concept.pbl" "srd_concept" build application full build project "srd_concept.pbl" "projet_main_srd" build library ".\PFC\pfewnsrv.pbl" "" pbd build library ".\PFC\pfcapp.pbl" "" pbd ... build library ".\TRA\tra_table_de_base.pbl" "" pbd build executable "or.exe" ".\BMP\restauration.ico" "" "NYYYYY..." end session
La commande s'exécute correctement jusqu' à la création de l'exécutable et j'obtiens le message suivant :
J'ai vérifié et j'ai bien autant de N ou de Y que de librairies dans le liblist !
J'ai fait un essai avec quelques librairies et même s'il y a un fichier exécutable généré, j'obtiens malgré tout la fenêtre d'erreur !
Les tests ont été effectués depuis un poste Windows 7 64 bits - SP1 avec PB 11.5.1 Build 5097. (j'ai les même résultats sur mon serveur de déploiement en Windows 2008 R2)
Merci d'avance pour votre aide !
Dernière modification par han39 (18-04-2013 07:16:46)
Hors ligne
Alors j'y connais pas grandchose en compil via Orca mais je vais tenter une réponse au vu du dernier screenshot.
Est-ce que par hasard il ne faudrait pas simplement remplacer "PBD" par "Y" dans les instructions que tu crèes ?
c'est sûrement pas ça mais bon comme le msg d'erreur précise qu'il attends un "Y" ou un "N"
Hors ligne
cat -> grep -> awk -> awk -> sed
Tu ne préfèrerais pas faire ça en perl directement ?
( et au passage : cat | grep c'est un UUOC (useless use of cat), tu peux faire grep directement : tu gagnes une étape)
Hors ligne
En fait la dernière commande est tronquée par le message d'erreur. Tu peux voir son contenu dans le script ;)
Hors ligne
seki a écrit:
cat -> grep -> awk -> awk -> sed
Tu ne préfèrerais pas faire ça en perl directement ?
( et au passage : cat | grep c'est un UUOC (useless use of cat), tu peux faire grep directement : tu gagnes une étape)
Je fais avec les moyens du bord et malheureusement je ne connais pas le perl...
Pour le cat | grep je sais bien mais je fais également des echo | grep et je conserve la même syntaxe
Dernière modification par han39 (12-04-2013 10:27:03)
Hors ligne
Finalement j'ai trouvé d'où cela provenait !
Pour une raison que j'ignore, le script accepte au maximum 301 PBD, pas 1 de plus
Depuis j'ai fait pas mal de modification en basculant mes sources sous SVN et donc en utilisant les commandes scc.
Je mets une copie de mon script pour ceux que ca intéresserait même si ça va faire grincer des dents avec mes multiples |||
IFS="; " script="script.orca" cd src liblist=`cat srd_concept.pbt | grep LibList | awk -F 'LibList \"' '{print $2}' | awk -F '\";' '{print $1}' | sed -e 's/\\\\\\\/\\\/g'` applib=`cat srd_concept.pbt | grep applib | awk -F 'applib \"' '{print $2}' | awk -F '\";' '{print $1}' | sed -e 's/\\\\\\\/\\\/g'` echo "start session" > $script echo "scc set connect property localprojpath \".\"" >> $script echo "scc set connect property logfile \"srd_concept.log\"" >> $script echo "scc set connect property logappend false" >> $script echo "scc connect offline" >> $script echo "scc set target \".\srd_concept.pbt\" importonly" >> $script echo "scc refresh target full" >> $script pbdflags="" for lib in `echo $liblist` ; do if [ "$lib" = "$applib" ] ; then pbdflags="${pbdflags}n" else echo "build library \"$lib\" \"\" pbd" >> $script pbdflags="${pbdflags}y" fi done exename=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "EXE:" | awk -F 'EXE:' '{print $2}' | awk -F ',' '{print $1}'` companyname=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "COM:" | awk -F 'COM:' '{print $2}' | awk -F ',' '{print $1}'` productname=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "PRD:" | awk -F 'PRD:' '{print $2}' | awk -F ',' '{print $1}'` description=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "DES:" | awk -F 'DES:' '{print $2}' | awk -F ',' '{print $1}'` copyright=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "CPY:" | awk -F 'CPY:' '{print $2}' | awk -F ',' '{print $1}'` productversion=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "PVS:" | awk -F 'PVS:' '{print $2}'` fileversion=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "FVS:" | awk -F 'FVS:' '{print $2}'` productversionnum=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "PVN:" | awk -F 'PVN:' '{print $2}'` fileversionnum=`head -11 "SRD_CONCEPT\\projet_main_srd.srj" | grep "FVN:" | awk -F 'FVN:' '{print $2}'` echo "set exeinfo property productname \"$productname\"" >> $script echo "set exeinfo property companyname \"$companyname\"" >> $script echo "set exeinfo property description \"$description\"" >> $script echo "set exeinfo property copyright \"$copyright\"" >> $script echo "set exeinfo property productversion \"$productversion\"" >> $script echo "set exeinfo property fileversion \"$fileversion\"" >> $script echo "set exeinfo property productversionnum \"$productversionnum\"" >> $script echo "set exeinfo property fileversionnum \"$fileversionnum\"" >> $script echo "build executable \"$exename\" \"..\static\Bmp\restauration.ico\" \"\" \"$pbdflags\"" >> $script echo "scc close" >> $script echo "end session" >> $script orcascr115 $script
Hors ligne