Confuso sulla creazione di pacchetti OpenStack?

19

Ho trovato l'attività di compilazione di OpenStack sul sito di Ubuntu QA, ma sono un po 'confuso riguardo ai passi di costruzione.

Ecco il link per i passaggi di costruzione: link

Dal log di costruzione di jenkins, conosco i passaggi su come Ubuntu costruisce un pacchetto Openstack:

  1. ottieni il codice openstack da github, usa git clone
  2. crea openstack tar.gz file utilizzando python setup.py sdist
  3. usa bzr per ottenere i file di controllo debian che sono di manutenzione per canonico
  4. usa il comando dch per generare una nuova versione di build e confermarla a local
  5. usa bzr builddeb -S -- -sa -us -uc per generare il pacchetto sorgente e il relativo file di controllo, ad esempio dsc
  6. firma il pacchetto
  7. usa mk-build-deps per installare la dipendenza
  8. usa sbuild per generare i pacchetti deb veri
  9. carica nei repository di test

Le mie domande sono:

  1. Nel passaggio 5, possiamo già generare i pacchetti deb senza -S , ma perché finalmente usiamo sbuild per generarlo? È solo per la firma?
  2. Qual è la differenza tra bzr builddeb e sbuild ?
  3. Ho trovato gli script di build utilizzati da jenkins qui: ~openstack-ubuntu-testing/openstack-ubuntu-testing , ma quando provo a eseguire qualsiasi comando sotto bin , ottengo sempre:

    [email protected]:~/openstack-ubuntu-testing/bin# ./build-package
    Traceback (most recent call last):
      File "./build-package", line 14, in <module>
        from openstack_ubuntu_testing.build.component_build import ComponentBuild
      File "/home/sysadmin/openstack-ubuntu-testing/bin/openstack_ubuntu_testing/build/component_build.py", line 11, in <module>
        from schroot.executor import SchrootExecutor
    ImportError: No module named schroot.executor
    

Ho provato a usare pip per installare schroot, ma sembra che non abbiano un executor in esso.

Aiutatemi.

    
posta Ray Sun 04.09.2013 - 09:24

1 risposta

1

sbuild crea un pacchetto in un ambiente isolato utilizzando schroot . In questo ambiente, vengono installate solo le dipendenze di compilazione dichiarate dal pacchetto sorgente e nient'altro. Ciò garantisce che la build non sia influenzata dallo sviluppatore o dall'ambiente CI da cui viene eseguito. Ad esempio, senza sbuild, la presenza di un pacchetto nell'ambiente CI potrebbe far sembrare che la compilazione abbia esito positivo quando in realtà era una dipendenza di compilazione non dichiarata e quindi fallisce ovunque. Per motivi di riproducibilità e stabilità, è meglio usare sbuild.

    
risposta data Robie Basak 27.10.2015 - 13:08

Leggi altre domande sui tag