Zbiranje izvajalnih zahtev
Zaženite s Python, ki ga podpira Odoo, in razpoložljivim packaging; virtualno okolje zbirke že zagotavlja oboje:
/srv/pmiverse/_pmisuite18/venv/bin/python /srv/pmiverse/_pmiconfig/scripts/fetch/fetch_requirements.py
Skripta rekurzivno bere lokalne repozitorije pod /srv/pmiverse/_pmisuite18/repos in piše poleg sebe:
| Izhod | Izvorne mape |
|---|---|
requirements-ocb.txt |
OCB |
requirements-oca.txt |
OCA in OCA-l10n |
requirements-pmiverse.txt |
pmiverse in spodaj navedene korenske zahteve orodij |
Lokaciji nadomestite z --repos-root PATH ali --output-dir PATH. Obstoječe izhodne datoteke se zamenjajo. Pred pisanjem se razčlenijo vsi viri.
Izhod PMIVerse vključuje tudi obstoječe korenske requirements.txt iz _pmiconfig, _pmiguidelines in _pmiregistry pod /srv/pmiverse. Z --tools-root PATH neodvisno od --repos-root izberete drugo nadrejeno mapo. Manjkajoče datoteke zahtev orodij se preskočijo. Ti repozitoriji se ne pregledujejo rekurzivno: zgodovinski katalogi, ustvarjeni izhodi in razvojne zahteve so izključeni, razen če jih korenska datoteka izrecno vključi in prestanejo običajna pravila filtriranja. Lokalni vključeni viri ostanejo omejeni na svoj repozitorij orodij.
Odvisnosti Python posameznih modulov, tudi migracijskih skript, vzdržujte v korenskem requirements.txt vsakega repozitorija PMIVerse. Obstoječa pmiverse/pmis-beta/requirements.txt in pmiverse/stock-accounting/requirements.txt se samodejno zbereta v requirements-pmiverse.txt ob upoštevanju spodnjih izključitev in prednosti skupin. Nova datoteka repozitorija ne zahteva spremembe zbiralnika.
Zbiralnik odkrije requirements.txt, datoteke .txt/.in z imenom zahtev in .txt/.in v mapah requirements/. Lokalna -r in --requirement rekurzivno razširi z zaščito pred cikli. Preskoči skrite mape, virtualna okolja, izhode gradenj ter poti dev/test/docs/CI. Deli imen, kot so test, tests, dev in development, označujejo neizvajalne vire. Simbolnim povezavam map ne sledi, vključitve pa ne morejo zapustiti izvornega drevesa.
stash, archive, archives in _to_migrate so izključeni, razen z --include-archived. Znani testni paketi v TEST_PACKAGES, tudi freezegun, mock, odoo-test-helper in unittest-xml-reporting, so izključeni tudi iz izvajalnih datotek; --include-test-packages jih ohrani. Ponovljivi --exclude-package NAME doda izključitve za zagon. Razvrščanje uporablja ta izrecna pravila in ne ugiba o poljubnih imenih paketov.
Imena paketov in dodatki se normalizirajo. Znotraj izhoda se zahteve z istim imenom in okoljskim označevalcem združijo: dodatki se združijo, omejitve različic presekajo. example in example==2 postaneta example==2; paket brez izvorne omejitve ostane brez fiksne različice. Označevalci Python/platforme se ohranijo brez vrednotenja trenutnega računalnika. Različni označevalci ostanejo ločene vrstice v svoji datoteki.
OCB določa skupno osnovo. Normalizirano ime, prisotno v OCB, se izpusti iz OCA in PMIVerse tudi ob različnih omejitvah, dodatkih ali označevalcih. OCA in PMIVerse ohranita svoje dodatne zahteve, tudi skupne pakete. Tako PMIVerse suds-py3 ostane v izhodu, četudi ga navaja tudi izbirni španski repozitorij OCA. Vsak izhod dodatkov dopolnjuje OCB brez predpostavke, da je druga skupina nameščena. Omejitve, skupne OCA in PMIVerse, se ne usklajujejo.
Nasprotujoče si fiksne različice povzročijo napako. To je inventar deklariranih zahtev, ne razreševalnik odvisnosti ali zaklepna datoteka: tranzitivne odvisnosti PyPI, odvisnosti manifestov brez datotek zahtev ter konflikti med različnimi označevalci ali izhodi se ne razrešujejo. Ni omrežnih zahtev, namestitev ali Git fetch. Datoteke omejitev (-c), možnosti namestilnika, editable namestitve, neposredni URL in druga nepodprta sintaksa izrecno odpovejo, namesto da bi bili tiho prezrti.