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 09: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 12: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