Retour d'expérience : mon premier build UNOFFICIAL pour Xiaomi MiMix2 (Oreo et Pie)

Hello,

Newbie total de la compilation Android, j’ai voulu tenter l’aventure et générer une image pour mon MiMix2 (chiron) en Oreo (lineageos 15.1).

Comme j’ai un peu galéré, peut-être que ça pourrait servir à certain-e-s …

En bref, là où ça se gâte avec les Xiaomi, c’est de trouver les sources propriétaires :frowning:

Voici donc comment j’ai réussi :slight_smile:

-> Base technique
J’ai choisi de faire ça dans une VM VMware Workstation (j’avais que ça de dispo) :

  • 24GB RAM
  • 12 vCPU (Xeon E5-2643)
  • 32GB + 256GB disque, SSD RAID1+cache
  • Ubuntu Desktop 18.04.3 LTS (sur le disque 32GB) + update complet
  • accès Internet 2 * 2Gb/s (histoire de pas perdre de temps ;))

Pour plus de confort, j’ai tout fait en root (je sais c’est pas bien) : SSH avec un user puis “sudo su -”.

J’ai formaté et monté le disque de 256GB sur /srv.

-> script principal
Puis j’ai installé le script builde.sh à partir de Github : [HOWTO] Build /e/ without docker , dans /srv.

J’ai édité le script pour modifier les variables suivantes :

  • export BRANCH_NAME=‘v1-oreo’
  • export DEVICE_LIST=‘chiron’
  • export INCLUDE_PROPRIETARY=false
    (la dernière variable est indispensable tant que le repo Github TheMuppets est HS).

-> sources
(il faut un compte Github, c’est gratos :wink: )
j’ai forké https://github.com/LineageOS/android_kernel_xiaomi_msm8998 et https://github.com/LineageOS/android_device_xiaomi_chiron
Puis j’ai créé le fichier /srv/local_manifests/roomservice.xml :

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <project name="Mon_Compte_Github/android_device_xiaomi_chiron" path="device/xiaomi/chiron" remote="github" />
  <project name="Mon_Compte_Github/android_kernel_xiaomi_msm8998" path="kernel/xiaomi/msm8998" remote="github" />
  <project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" />
</manifest>

Pour la partie des sources propriétaires il faut aller chercher sur Gitlab : https://gitlab.com/the-muppets
Comme le mec est sympa il fournit directement un manifest à coller à côté de l’autre :slight_smile:
En fait il est assez simple :

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <remote name="gitlab" fetch="https://gitlab.com" />
   <project name="The-Muppets/proprietary_vendor_xiaomi" path="vendor/xiaomi" remote="gitlab" />
</manifest>

-> hop !
On se retrouve donc avec :

  • /srv/builde.sh (modifié)
  • /srv/local_manifests/roomservice.xml
  • /srv/local_manifests/muppets.xml

ça semble un peu léger, mais bon … on tente le coup !

Et 3 heures plus tard …

-> résultat
On se retrouve avec plein de bazar dans /root (du coup, bonne idée d’utiliser le user root pour lancer la compil’ :thinking:)
Et un zoli .zip dans /srv/zips/chiron :slight_smile:

Malheureusement j’utilise actuellement mon smartphone pour des besoins pro, donc c’est pas le moment d’installer une image de test :frowning:. Mais ce n’est que partie remise !

-> références (un peu en vrac)
Un énorme merci à tous les contributeurs :smiley:







Et bien sûr :

https://wiki.lineageos.org/devices/chiron/build

Hello all,

Pour poursuivre, j’ai réussi à produire une image Pie :slight_smile:

Voici comment j’'ai procédé.

-> clean up you room !
J’ai presque tout supprimé de /srv, pour ne conserver que :

  • le script builde.sh
  • le répertoire local_manifests avec son contenu

-> modif
Dans builde.sh, bien sûr il faut modifier "export BRANCH_NAME=‘v1-pie’ "

-> premier test
Pas bon du tout, le truc me sort un message de gitlab en double :frowning:

-> re-modif
Après quelques recherches et tentatives, j’ai trouvé que le gitlab en double est en fait le libellé utilisé dans le manifest TheMuppets !

J’ai donc remplacé les libellés “gitlab” dans le fichier, ça donne :

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <remote name="muppets" fetch="https://gitlab.com" />
   <project name="The-Muppets/proprietary_vendor_xiaomi" path="vendor/xiaomi" remote="muppets" />
</manifest> 

-> bingo !
Tout se télécharge et se compile sans problème :slight_smile:

-> et après ?
Je vais limiter la vitesse de l’interface réseau à quelque chose de plus courant (pour donner un exemple réaliste), nettoyer et relancer.

-> et encore après ?
J’ai en vue un autre chiron d’occasion, que je vais essayer de négocier pas trop cher. Ce qui me permettra de tester mon build en toute sécurité, et de vous partager le résultat :slight_smile:

Re,

Le build est terminé :slight_smile:

Donc avec une connexion bridée à 100Mb/s (voir au début du sujet pour les autres caractéristiques), ça donne :

  • téléchargement : ~2h30
  • compilation : ~2h

Si quelqu’un d’autre veut se lancer dans le build, j’espère que ça pourra être utile !

En tout cas je me suis bien amusé à faire ça, et sûrement encore plus quand j’aurai mon chiron de test :wink:

Pour ceux qui chercheraient le script de build : https://github.com/BallonLac/builde

Merci a @andrelam et aux autres auteurs !