Jusqu'ici, j'ai utilisé l'outil go
pour récupérer des dépendances. J'ai mis $GOPATH
à ~/projects/holygrail
, et j'ai vérifié mon code dans src/mycodehosting.foo/myuser/holygrail
. Étant donné que je dépend vraiment de choses telles que gRPC, ce qui signifie que j'ai besoin de construire protoc
à partir de la source de protobuf v3, j'ai écrit un petit script qui m'aide à le faire. Je préférerais fortement pas de pré-préparer la mise en page lorsque je vérifie mon code source, et je préférerais fortement pas pour utiliser un script bash pour récupérer mes dépendances, puis les construire.Go et Bazel: Utilisation de référentiels Git externes
solution provisoire actuelle:
- utiliser git sous-modules pour récupérer des dépendances externes (qui, malheureusement, signifie pas intelligent réoriente que
go get
sait comment faire) - utilisation ADRESSER vendoring de 1,5 en retournant le
GO15VENDOREXPERIMENT
variable à 1 - passer à Bazel d'avoir un système de construction sain d'esprit qui saura comment construire diverses dépendances uniquement au besoin
Malheureusement, je suis légèrement coincé.
- J'utilise Bazel 0.1.1 des règles Skylark pour Go de git copiés dans
~/.bazel/base_workspace
- Au départ, j'ai essayé d'utiliser
new_local_repository
(plus tard passé à utilisernew_git_repository
) à l'intérieurWORKSPACE
de Bazel, en spécifiant une coutumeBUILD
fichier pour l'une des dépendances- sont tombés en panne parce que Bazel n'a pas pu trouver le Go Skylark règles
- Je ne suis pas sûr de savoir comment j'écrirais des fichiers
BUILD
personnalisés pour les dossiersgit-submodule
téléchargés dans le dossiervendor/
, et les exposerais à Bazel.
Suis-je sur la bonne voie? Est-ce que j'ai raison d'utiliser des sous-modules? Ai-je raison d'utiliser le sous-dossier vendor/
pour stocker les bibliothèques Go?
- Quelle est la méthode recommandée pour construire des dépendances externes à l'aide Bazel, où le code et les dépendances sont écrites dans Go?
- Pourriez-vous donner un exemple d'un référentiel:
- dépend correctement sur un externe
BUILD
-file-less référentiel Go (sans importer réellement le code amont)? - construit correctement le code Go dans le référentiel externe?
- intègre correctement le code Go à partir du référentiel externe dans le projet Go principal?
- dépend correctement sur un externe
plus de recherche dans ce:
- Kythe semble avoir un fichier
BUILD
pour de nombreuses dépendances (même si elles ne sont pas sous-modules, qui ne fait pas de différence).- Voici leur BUILD file
- Voici leur additional helper rule
- Cette règle d'aide utilise la règle
go_package()
. Mais cela semble venir from Kythe itself.- Il ne semble pas correct de commencer à utiliser les règles de Kythe, mais cela semble être une voie possible?
- Que font les autres?