2017-07-10 1 views
0

Je dois écrire une règle de référentiel Bazel qui télécharge les binaires mysql selon la version requise, le système d'exploitation et l'architecture.Règle du référentiel Bazel - Puis-je accéder à quelque chose comme "os.arch" de Java?

Je vais obtenir la version requise de l'utilisateur, le système d'exploitation de repository_os.name mais je ne suis pas sûr de la façon dont je peux accéder à l'architecture?

Le code non-hermétique actuel utilise os.arch comme une heuristique assez bonne (oui je sais que ce n'est pas précis).

Répondre

1

Il n'y a aucun moyen d'accéder à l'architecture, sauf pour demander uname -m en utilisant repository_ctx.execute. Vous pouvez également le faire fonctionner sur Windows en exécutant une commande différente en fonction de repository_ctx.os.name (qui est la même que os.name de la JVM, donc si elle contient win, vous pouvez exécuter la commande Windows). Si vous pensez que cela est nécessaire, veuillez remplir une demande de fonctionnalité sur https://github.com/bazelbuild/bazel/issues/new

+0

Merci! Ce n'est pas la même chose que 'os.arch' car il renvoie le bit de l'environnement d'exécution jvm et non le système d'exploitation. Pouvez-vous ajouter cette précision à votre réponse, alors je vais l'accepter? Essentiellement pour moi, je pourrais juste avoir le luxe de supposer des architectures 64 bits et être fait avec elle. – Ittai