a ˆlgc"ã@s–ddlZddlZddlZddlZddlZddlZddlZdd„Zdd„Z dd„Z dd „Z d d „Z d d „Z dd„Zdd„Zdd„Zddd„Zdd„ZdS)éNcCsntjj}tjj}|r*tj |d|›¡n@|dkr@tj |¡n*|dvrVtj |¡ntj |d|›¡dS)z? checkout a commit, either latest tag or master or 20YY branch zorigin/Úlatest)ÚmasterÚnightlyN)ÚlibÚargsÚfeedZ git_branchÚgitÚcheckoutÚcheckout_latest_tagÚcheckout_default_branch)ÚprojectrÚbranch©rúX/home/osmocom-build/jenkins/workspace/gerrit-binpkgs@2/osmo-ci/scripts/obs/lib/srcpkg.pyÚcheckout_for_feed src Csœtj |¡}|›d}tj |¡rNtj|dg|dj ¡}|sJt  |d¡|Stj  |¡}|  ddd¡}|  ddd ¡}tjd d d d d|›dg|dd}|j dkrBt |›dƒtjgd¢|djdd…}tjgd¢|dj ¡}z0t |›dƒtj |¡}|›d|›d|›WSt |›dƒd|›d|›YS0|j dkrZt  |d¡|j ¡}|  ddd¡}|  ddd¡}| d¡r˜|dd…}|S) zB :returns: the string from git-version-gen, e.g. '1.7.0.10-76bdb' z/git-version-genÚ.©Úcwdz!empty output from git-version-genú^Úéú$éÿÿÿÿrZdescribez --abbrev=4z--tagsz--match=ÚHEADF©rÚchecké€z: has no git tags)rz rev-parserré)rzrev-listz--countrz': getting version from debian/changelogú-z: using 0.0.0 as versionz0.0.0.zcommand failed unexpectedlyz-gÚvN)rrÚ get_repo_pathÚosÚpathÚexistsÚrun_cmdÚoutputÚrstripÚexit_error_cmdÚget_latest_tag_patternÚreplaceÚ returncodeÚprintÚdebianÚget_last_version_from_changelogÚ startswith) r Ú repo_pathÚ script_pathÚretÚpatternÚresultÚcommitÚcountÚversionrrrÚget_git_versionsV     üü  ÿÿ ÿ       r7cCs‚tjjdkr2tj |¡}| d¡r.|dd…S|St|ƒ}|dkrdtj |¡}d|vrd|  d¡d}tjj }|r~|›d|›}|S)NrrrZUNKNOWNú:r) rrrrÚget_latest_tagr.r7r,r-ÚsplitÚconflict_version)r r1r;rrrÚget_version_for_feedRs   r<cCs&tj |¡}d|vr"| d¡dSdS)aR The osmo-gbproxy used to have the same package version as osmo-sgsn until 2021 where it was split into its own git repository. From then on, osmo-gbproxy has a 0.*.* package version, which is smaller than the previous 1.*.* from osmo-sgsn. We had to set the epoch to 1 for osmo-gbproxy so package managers know these 0.*.* versions are higher than the previous 1.*.* ones that are still found in e.g. debian 11. The epoch is set in debian/changelog, retrieve it from there. :returns: the epoch number if set, e.g. "1" or an empty string r8rr)rr,r-r:)r Ú version_epochrrrÚ get_epochls r>cCstjgd¢tj d¡ddS)zk Download the subproject sources here, so the package can be built in OBS without Internet access. )ÚmesonZ subprojectsZdownloadÚopen5gsrN©rr$rr rrrrÚprepare_project_open5gs}s  ÿrBcCs&tjgd¢tj d¡›ddddS)zB Fix bug in 23.10: https://github.com/myriadrf/LimeSuite/pull/386 )Úmvz-vzliblimesuite22.09-1.installzliblimesuite23.10-1.installÚ limesuitez/debianFrNrArrrrÚprepare_project_limesuite„s ürEcCsJtj |¡}d}tj |›d|›¡rFt|›d|›ƒtj||ddS)z” Run contrib/generate_build_dep.sh if it exists in the given project, to to download sources for dependencies (see e.g. osmo_dia2gsup.git). zcontrib/generate_build_dep.shú/ú : running rN)rrr r!r"r#r+r$)r r/r0rrrÚrun_generate_build_deps  rHcCsPtj |¡}t|›ddƒ }| |›d¡Wdƒn1sB0YdS)Nz/.tarball-versionÚwÚ )rrr ÚopenÚwrite)r r6r/ÚfrrrÚwrite_tarball_version˜s rNcCsHt |¡}tj |¡}t|›d|›dƒt |›d|›d¡ ¡dS)z÷ Write the current git commit to commit_$commit.txt file, so it gets uploaded to OBS along with the rest of the source package. This allows figuring out if the source package is still up-to-date or not for the master feed. z: adding commit_z.txtz/commit_N)rÚget_output_pathrÚget_headr+ÚpathlibÚPathZtouch)r Z output_pathr4rrrÚwrite_commit_txtŸs  rSc Csútjj}tjj}tjj}tj |¡tj |¡|dkrHtj ||¡nt |ƒt |ƒ}|rd||7}t |ƒ}|r~|›d|›n|}tj   |¡du}t|›d|›ƒt||ƒ|tjjvrøtjjsøtjjpÒd|›} tj || |¡|røtj  || |¡tj ||¡t t |¡¡t ¡dtj |¡›} | tƒvrZt|›d| ›ƒtƒ| ƒ|tjjvrpt|ƒtjj rŒtj  |tjj ¡tjj!r¢tj !|¡tj "|¡tj #|¡|rÜtj  $|||¡tj  %|¡|dkrît&|ƒt ¡|S)Nrr8z: building source package zosmocom-Zprepare_project_rGr)'rrr;rÚversion_appendrÚcloneÚcleanÚcheckout_from_reviewrr<r>Úrpm_specÚget_spec_in_pathr+rNÚconfigÚprojects_osmocomZno_metaÚconflict_pkgnamer,Úcontrol_add_dependÚ add_dependÚchangelog_add_entry_if_neededr!ÚmakedirsrOÚremove_cache_extra_filesr"ÚbasenameÚglobalsrHÚconfigure_appendÚdisable_manualsÚbuild_source_packageÚmove_files_to_outputÚgenerateÚcopy_to_outputrS) r Ú gerrit_idr;rrTr6Úepochr=Z has_rpm_specÚmetapkgZproject_specific_funcrrrÚbuild«sV            rmcCs”t t |¡›d¡}t|ƒdks0Jd|›ƒ‚t|ddƒB}| ¡D](}| d¡rHd|vrHWdƒd SqHWdƒn1s†0Yd S) zm Check if an already built source package has osmo-gsm-manuals-dev in Build-Depends of the .dsc file z/*.dscrzfailed to get dsc path for rÚrzBuild-Depends:zosmo-gsm-manuals-devNTF)ÚglobrrOÚlenrKÚ readlinesr.)r Zpath_dscZhandleÚlinerrrÚrequires_osmo_gsm_manuals_devés  ÿ2rs)r)ror!rQÚsysÚ lib.configrÚ lib.debianÚ lib.rpm_specrr7r<r>rBrErHrNrSrmrsrrrrÚs"7   >