build: autocompilation avec choix des révisions et configuration de la compilation
This commit is contained in:
parent
9fb0a7de6d
commit
4cf187aabd
|
@ -1,2 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
docker build . -t cos2000-compiler-alpine
|
|
|
@ -1,2 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
docker build . -t cos2000-compiler
|
|
52
make.sh
52
make.sh
|
@ -1,23 +1,47 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
function tool {
|
||||||
|
echo "*** Fabrication des outils de compilation par Docker (version ${VERSION} config ${CONFIGURATION})"
|
||||||
|
docker build - -t $COMPILER < ./docker/dockerfile.${CONFIGURATION}
|
||||||
|
}
|
||||||
|
|
||||||
|
function configuration {
|
||||||
|
echo "*** Création du fichier de configuration"
|
||||||
|
echo -en "compilation=alpine\nvideo=vesa" > ./configuration
|
||||||
|
}
|
||||||
|
|
||||||
echo "Autorisation de docker à se connecter à l'écran :0"
|
echo "Autorisation de docker à se connecter à l'écran :0"
|
||||||
xhost +local:docker
|
xhost +local:docker
|
||||||
DOCKER=$(docker -v| grep build)
|
|
||||||
ALPINE=$(docker image ls| grep cos2000-compiler-alpine)
|
|
||||||
COMPILER=$(docker image ls| grep cos2000-compiler)
|
|
||||||
PWD=$(pwd)
|
PWD=$(pwd)
|
||||||
|
FILE=${PWD}/configuration
|
||||||
|
if [ ! -f "$FILE" ]; then
|
||||||
|
configuration
|
||||||
|
fi
|
||||||
|
DOCKER=$(docker -v| grep build)
|
||||||
if [ "${DOCKER}" == "" ]; then
|
if [ "${DOCKER}" == "" ]; then
|
||||||
echo "Docker n'est pas installé..."
|
echo "Docker n'est pas installé..."
|
||||||
echo "*** installation si sous gestionnaire de paquet debian (.deb)"
|
echo "*** installation si sous gestionnaire de paquet debian (.deb)"
|
||||||
sudo apt-get install docker
|
sudo apt-get install docker
|
||||||
exit
|
exit
|
||||||
elif [ "${ALPINE}" != "" ]; then
|
fi
|
||||||
echo "*** lancement de la version Alpine Linux"
|
CONFIGURATION=$(sed -rn 's/^compilation=([^\n]+)$/\1/p' ./configuration)
|
||||||
docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged -v ${PWD}:/data cos2000-compiler-alpine make $1
|
VERSION=$(git rev-parse --short HEAD)
|
||||||
elif [ "${COMPILER}" != "" ]; then
|
COMPILER=cos2000-compiler-${CONFIGURATION}-${VERSION}
|
||||||
echo "*** lancement de la version Debian"
|
if [ "$1" == "tool" ]; then
|
||||||
docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged -v ${PWD}:/data cos2000-compiler make $1
|
tool
|
||||||
else
|
exit
|
||||||
echo "Docker est installé mais aucune image docker n'est fonctionnelle..."
|
fi
|
||||||
echo "*** compilation de l'image docker"
|
if [ "$1" == "configuration" ]; then
|
||||||
docker build ${PWD}/docker/alpine -t cos2000-compiler-alpine
|
configuration
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
PRESENT=$(docker image ls| grep $COMPILER)
|
||||||
|
if [ "${PRESENT}" == "" ]; then
|
||||||
|
tool
|
||||||
|
fi
|
||||||
|
echo "*** lancement de la version ${VERSION}"
|
||||||
|
if [ "$1" == "config" ]; then
|
||||||
|
docker run --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged -v ${PWD}:/data $COMPILER make $1
|
||||||
|
else
|
||||||
|
docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged -v ${PWD}:/data $COMPILER make $1
|
||||||
fi
|
fi
|
||||||
|
|
8
makefile
8
makefile
|
@ -183,3 +183,11 @@ qemu64: killer
|
||||||
$(WAIT2S)
|
$(WAIT2S)
|
||||||
$(SPICE)
|
$(SPICE)
|
||||||
|
|
||||||
|
config:
|
||||||
|
@echo "*** Options de compilation"
|
||||||
|
@echo "Quelle distribution utiliser avec Docker comme environnement de compilation ?"
|
||||||
|
@echo "Alpine Linux ou Debian [A*/D]"
|
||||||
|
@read line; if [ $$line = "D" ]; then sed -i -r 's/compilation=.*/compilation=debian/' configuration ; else sed -i -r 's/compilation=.*/compilation=alpine/' configuration ; fi
|
||||||
|
@echo "Quel mode vidéo préférez vous utiliser ?"
|
||||||
|
@echo "VESA ou VGA [E*/G]"
|
||||||
|
@read line; if [ $$line = "G" ]; then sed -i -r 's/video=.*/video=vga/' configuration ; else sed -i -r 's/video=.*/video=vesa/' configuration ; fi
|
||||||
|
|
41
menu.sh
41
menu.sh
|
@ -3,7 +3,7 @@ PWD=$(pwd)
|
||||||
FILE=${PWD}/README.md
|
FILE=${PWD}/README.md
|
||||||
if [ ! -f "$FILE" ]; then
|
if [ ! -f "$FILE" ]; then
|
||||||
echo "Les sources ne sont pas complets..."
|
echo "Les sources ne sont pas complets..."
|
||||||
echo "* Récupération des sources"
|
echo "*** Récupération des sources"
|
||||||
VERSION=$(git --version|grep version)
|
VERSION=$(git --version|grep version)
|
||||||
if [ "${VERSION}" == "" ]; then
|
if [ "${VERSION}" == "" ]; then
|
||||||
echo "Git n'est pas installé, veuillez l'installer et relancer le script"
|
echo "Git n'est pas installé, veuillez l'installer et relancer le script"
|
||||||
|
@ -15,6 +15,10 @@ if [ ! -f "$FILE" ]; then
|
||||||
git reset --hard
|
git reset --hard
|
||||||
rm -rf ../menu.sh
|
rm -rf ../menu.sh
|
||||||
fi
|
fi
|
||||||
|
FILE=${PWD}/configuration
|
||||||
|
if [ ! -f "$FILE" ]; then
|
||||||
|
./make.sh configuration
|
||||||
|
fi
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
clear
|
clear
|
||||||
|
@ -28,17 +32,18 @@ echo "2u Emulation de COS2000 (uefi)"
|
||||||
echo "3l Débuguage de COS2000 (legacy)"
|
echo "3l Débuguage de COS2000 (legacy)"
|
||||||
echo "3u Débuguage de COS2000 (uefi)"
|
echo "3u Débuguage de COS2000 (uefi)"
|
||||||
echo "4l Débuguage de COS2000 boot en mode réel (legacy)"
|
echo "4l Débuguage de COS2000 boot en mode réel (legacy)"
|
||||||
echo "4u Débuguage de COS2000 boot en mode réel (legacy)"
|
echo "4u Débuguage de COS2000 boot en mode réel (uefi)"
|
||||||
echo "5 Réalisez une sauvegarde"
|
echo "5 Réalisez une sauvegarde"
|
||||||
echo "6 Tuer tout les processus"
|
echo "6 Tuer tout les processus"
|
||||||
echo "7 Nettoyer les sources"
|
echo "7 Nettoyer les sources"
|
||||||
echo "8 Voir le disque en hexadécimal"
|
echo "8 Voir le disque en hexadécimal"
|
||||||
echo "9 Voir le système en hexadécimal"
|
echo "9 Voir le système en hexadécimal"
|
||||||
echo "c Changer la version de developpement"
|
echo "c Changer la version de développement"
|
||||||
|
echo "o Changer les options de développement"
|
||||||
echo "0 Quitter"
|
echo "0 Quitter"
|
||||||
echo "------------------------------------------"
|
echo "------------------------------------------"
|
||||||
echo "Choisissez l'action à réaliser..."
|
echo "Choisissez l'action à réaliser..."
|
||||||
read answer
|
read -p"?" answer
|
||||||
clear
|
clear
|
||||||
case "${answer}" in
|
case "${answer}" in
|
||||||
0*) exit;;
|
0*) exit;;
|
||||||
|
@ -54,20 +59,36 @@ case "${answer}" in
|
||||||
7*) ./make.sh clean;;
|
7*) ./make.sh clean;;
|
||||||
8*) ./make.sh view-dsk|more;;
|
8*) ./make.sh view-dsk|more;;
|
||||||
9*) ./make.sh view-sys|more;;
|
9*) ./make.sh view-sys|more;;
|
||||||
|
o*) ./make.sh config;;
|
||||||
c*) echo "Version disponibles:"
|
c*) echo "Version disponibles:"
|
||||||
SELECT=$(git branch|grep "*"|tr -d "* ")
|
SELECT=$(git branch|grep "*"|tr -d "* ")
|
||||||
NUM=1
|
NUM=1
|
||||||
|
echo "XX Hash d'une révision particulière"
|
||||||
while read LINE
|
while read LINE
|
||||||
do
|
do
|
||||||
echo "${NUM} ${LINE}"
|
echo "${NUM} ${LINE}"
|
||||||
(( NUM++ ))
|
(( NUM++ ))
|
||||||
done < <(git branch -lr|tr -d "* "|grep -v HEAD|sed s/".*origin\/"//)
|
done < <(git branch -lr|tr -d "* "|grep -v HEAD|sed s/".*origin\/"//)
|
||||||
read ANSWER
|
read -p"?" ANSWER
|
||||||
CHOOSE=$(git branch -lr|tr -d "* "|grep -v HEAD|sed s/".*origin\/"//|tr "\n" " "|cut -d " " -f${ANSWER})
|
COUNT=$(echo -n ${ANSWER}|wc -c)
|
||||||
echo "vous avez selectionné $ALL..."
|
if [ "${COUNT}" == "1" ]; then
|
||||||
git checkout $CHOOSE
|
CHOOSE=$(git branch -lr|tr -d "* "|grep -v HEAD|sed s/".*origin\/"//|tr "\n" " "|cut -d " " -f${ANSWER})
|
||||||
git clean -fd
|
echo "vous avez selectionné une branche $CHOOSE..."
|
||||||
git reset --hard
|
else
|
||||||
|
EXIST=$(git show ${ANSWER})
|
||||||
|
if [ "${EXIST}" != "" ]; then
|
||||||
|
CHOOSE=${ANSWER}
|
||||||
|
echo "vous avez selectionné une révision ${choose}..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "${CHOOSE}" != "" ]; then
|
||||||
|
echo "*** Application de la version ${CHOOSE}"
|
||||||
|
git pull
|
||||||
|
git checkout $CHOOSE
|
||||||
|
git clean -fd
|
||||||
|
git reset --hard
|
||||||
|
./make.sh tool
|
||||||
|
fi
|
||||||
read
|
read
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Reference in New Issue