Projet GL sous macOS
Cette page participative vise à donner quelques informations utiles à la configuration d’un environnement de développement fonctionnel pour le projet GL sous macOS. La version de macOS utilisée pour la mise à jour de cette page est macOS Big Sur 11.6.2, les instructions qui suivent peuvent ne pas s’appliquer de la même manière pour des versions différentes du système (en particulier les plus anciennes).
La page Faire le Projet GL sur une machine personnelle reste la page de référence et sa lecture est indispensable, la présente page vise uniquement à proposer des informations complémentaires et spécifiques à macOS.
Notez que la façon la plus sûre de garantir que le projet GL fonctionnera de la même façon que sur les machines de l’école, tout en travaillant sur un ordinateur Apple, est d’utiliser docker, avec la configuration qui vous est fournie: de cette façon, vous exécutez dans un environnement virtuel Linux “Ensimag” tout en travaillant sur votre Mac. Mais comme il est parfois plus agréable de travailler en natif, voici les conseils pour avoir l’environnement requis par le projet GL sur macOS.
Les outils de développement Apple peuvent être obtenus en installant XCode depuis l’App Store (attention, fichier volumineux !).
Brew est un gestionnaire de paquets pour macOS, il permet d’installer facilement des outils et
bibliothèques de développement : un must-have pour coder sous Mac.
Pour l’installer, il suffit d’exécuter la ligne suivante dans un terminal :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
On lit parfois qu’il est recommandé d’exécuter la commande brew doctor après installation de brew
et de corriger les problèmes signalés.
C’est vrai, mais tous les “problèmes” ne sont pas bloquants et mieux vaut ne pas faire de
modification hâtive sur le système.
En cas de problème à l’installation d’un logiciel, brew signalera l’erreur et il faudra alors en
déterminer la cause à l’aide du message d’erreur et de brew doctor.
Par exemple, il peut arriver que le répertoire /usr/share/man et ses sous-répertoires ne soient
pas accessibles en écriture et que cela bloque l’installation d’un logiciel.
Dans ce cas, un petit coup de chmod o+w règlera le problème.
Le projet GL se fait en Java, il est donc nécessaire de disposer d’un Java Development Kit sur sa machine.
La manière la plus propre d’installer un JDK est d’utiliser le package MacOS fourni par Oracle sur la page http://www.oracle.com/technetwork/java/javase/downloads/index.html. La version JDK 16 est celle recommandée pour le projet et correspond à ce qui est sur les ordinateurs de l’école.
La variable d’environnement JAVA_HOME n’est pas correctement initialisée, ce qui entraîne des
problèmes à la compilation des projets Maven comme exposé dans
la page concernant Maven.
Dans mon cas avec le JDK 16.0.2, faire pointer JAVA_HOME au bon endroit a suffit à corriger le
problème sans modification de pom.xml.
La ligne suivante est à adapter à votre version du JDK et à mettre dans votre .bash_profile:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-16.0.2.jdk/Contents/Home
L’installation de Maven est immédiate avec brew :
brew install maven
La version de git fournie avec macOS est en retard sur le dépôt officiel et il est conseillé de
la mettre à jour.
brew peut s’en occuper avec :
brew install git
La version de git installée de base sera toujours présente dans /usr/bin, et brew installera la
dernière version en date dans /usr/local/bin (donc sans écraser l’ancienne).
Le répertoire /usr/local/bin se trouvant avant les autres dans le PATH, la version la plus
récente sera utilisée par défaut. Vous pouvez vérifier la version
$ which git
/usr/local/bin/git
Installer la version 2020 de gnat, dont GNATMAKE.
https://www.adacore.com/download/more
Avec d’anciennes versions,, vous pourriez rencontrer des difficultés avec la version gcc de gnat pour la
compilation des fichiers
flottants_c.cfma_c.cde la machine abstraite, car ceux-ci utilisent des bibliothèques et des prototypes non compatibles avec ceux de MacOS. On pourrait résoudre ceci par une compilation séparée préalable de ces fichiers avec la version standard degcc(typiquement/usr/bin/gcc):/usr/bin/gcc flottants_c.c -c -o ../../Obj/flottants_c.o/usr/bin/gcc fma_c.c -c -o ../../Obj/fma_c.o
Le reste du make utilisera les fichiers .o ainsi engendrés.
Mais normalement, avec la version 2020 de gnat, toutes les bibliothèques devraient êêtre compatibles.
Pour compiler soi-même :
- Installation des binaires gnat : se rendre sur https://github.com/annexi-strayline/gnat-packs, puis dans la catégorie : GCC-11.3.0 (aarch64 MacOS Ventura 13.4/Darwin 22.5.0), télécharger : gnat-11.3.0-base.tar.bz2 (aarch64-apple-darwin23.2.0 n’a pas été testé)
curl -O https://gnat-packs.annexi-strayline.com/aarch64-apple-darwin22.5.0/gnat-11.3.0-base.tar.bz2
- Décompressez l’archive (tout sera mis dans /opt):
sudo tar zxPf gnat-11.3.0-base.tar.bz2
- Mettre à jour .zshrc
export PATH=/opt/gcc-fsf-gnat/bin:$PATH
export DYLD_LIBRARY_PATH=/opt/gcc-fsf-gnat/lib:$DYLD_LIBRARY_PATH
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export LIBRARY_PATH="$LIBRARY_PATH:$SDKROOT/usr/lib"
puis
source ~/.zshrc
- On peut ensuite compiler ima
Notes :
- on peut installer Xcode Command Line Tools à la place de Xcode
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
autres références :
Un exécutable ima compilé pour Apple silicon (M series) est téléchargeable ici : ima-2026-arm64-Darwin.tar.gz dont le contenu est à mettre dans global/bin.
Pour la configuration de l’environnement de travail et la récupération des fichiers nécessaires à la réalisation du projet, veuillez vous référer à la page Faire le Projet GL sur une machine personnelle.