2016-09-06 5 views
0

Je suis mise à niveau de Windows construire des machines à utilisercl: erreur de ligne de commande D8022: ne peut pas ouvrir 'c: users admini ~ 1 AppData temp local tmpjbx8xe.lnk'

  • Visual Studio 2015 Mise à jour 3
  • scons 2.5.0
  • msbuild 14.0.25420.1

de

  • Visual Studio 2013 Mise à jour 4
  • scons
  • 2.3.4 msbuild 12.0.31101

Mais je frappe une erreur de construction. Au cours de la 'initiale' éxecuter la construction échoue en raison de

cl: Erreur ligne de commande D8022: ne peut pas open'c: \ users \ admini ~ 1 \ AppData \ temp local \ \ tmpjbx8xe.lnk »

Il peut y avoir plusieurs erreurs de ce type. Si j'essaie de trouver les fichiers, je remarque qu'ils n'existent pas.

Si je réexécute la construction, ça passe.

Est-ce que quelqu'un d'autre a rencontré ce problème? Y a-t-il une solution?

FYI: La génération est exécutée en parallèle sur 20 machines cœur. Potentiellement, cela pourrait causer une condition de synchronisation. Mais c'était bien pour la configuration précédente.

Mise à jour: Après un examen plus approfondi, il semble qu'il pourrait s'agir d'un problème SCons. SCons semble créer les fichiers .lnk. Il stocke la ligne de commande de lien dans ces fichiers et obtenir cl de les exécuter via

cl @c: \ users \ admini ~ 1 \ AppData \ temp local \ \ tmpjbx8xe.lnk

+0

Vous avez demandé le même article dans la liste de diffusion des utilisateurs. Probable d'être problème SCons. S'il vous plaît vérifier antivirus et/ou indexeur de recherche. – bdbaddog

+0

Après avoir posté sur StackOverflow, j'ai appris plus sur le problème. Quand j'ai trouvé que les fichiers .lnk étaient spécifiques à SCons, j'ai posté sur le mailer de leurs utilisateurs. Je ne suis pas sûr si c'est un problème purement SCons. Je me méfie de notre construction (sinon plus de gens l'auraient signalé). Mais j'ai identifié la validation à SCons qui provoque ce problème à apparaître dans notre construction. –

Répondre

0

Transforme un bug de cas de bord a été introduit par SCons 2.3.5. Dans ce qui suit engage

https://bitbucket.org/scons/scons/commits/bad59be7270dbbe62c7868a532fad84480f95fae https://bitbucket.org/scons/scons/commits/9aa37cd21e99eb684ab6ae8f7b21e0a71751ac7f https://bitbucket.org/scons/scons/commits/da5785c5f30f852734b3f985b798a5508bfea9db

Après avoir étudié plus loin, je découvert que l'échec ne se produisait que dans une partie des scripts de compilation. Ils faisaient quelque chose comme

# Get all the .cpp files 
sources = getAllSources() 

# Create a group of .obj files from the sources 
objFiles = envLocal.Object(sources) 

# Create a shared library from the sources 
artifacts = envLocal.SharedLibrary('Library', sources) 

# Add the .obj files to the link path on another environment 
envTest['LIBS'].append(objFiles) 

test_sources = getAllSources() # Get all the test .cpp files 

# Create a test executable which re-uses the .obj files from LIBS on another environment 
envTest.Program('TestExecutable', test_sources) 

Quand je mis à jour le code à

# Create a shared library from the objFiles instead of sources 
artifacts = envLocal.SharedLibrary('Library', objFiles) 

L'erreur a disparu.