a lg@sjddlZddlZddlZddlZddlZddlZddZddZddZdd Z d d dd igfd dZ dS)NcCs&|d|}|dddd}|S)Nz -osmocom-obs-:-_)replace)distro image_typeretr X/home/osmocom-build/jenkins/workspace/gerrit-binpkgs@2/osmo-ci/scripts/obs/lib/docker.pyget_image_name sr cCs |drt||ddS|S)N_manuals)endswithr r)rrr r r get_distro_froms rc Cst||}t||}td|g}ttjddrFddtjjg}tdddd|dd|dd t g|d |d tj j d |d tj j dgdS)Nzdocker: building image docker_feedz --build-argzFEED=dockerbuildzDISTRO=z DISTRO_FROM=zUID=z-tz-fz/data/z .Dockerfilez/data) r rprintgetattrlibargsrrun_cmdosgetuidconfigpath_top)rr image_nameZ distro_fromZbuild_arg_feedr r r build_images$     rcCsNtjd}dtjvr tjd}tj|r8tj|StdtddS)Nz~/.oscrcZOSCRCz9ERROR: couldn't find ~/.oscrc. Put it there or set OSCRC.) rpath expanduserenvironexistsrealpathrsysexit)rr r r get_oscrc1s     r&FZ build_srcpkgTc Cs8dtjvrdStds*tdtd|s6tjj }t ||}d}|rNt }t d| drtt||ddt||dd d d d d d dtjjdg } |D]\} } | d | d| g7} q|r| d|dg7} | |7} | |d|g7} |r| tjdd7} td|dt| } t| jdS)a :param script_path: what to run inside docker, relative to scripts/obs/ :param add_oscrc: put user's oscrc in docker (contains obs credentials!) :param image_type: which Dockerfile to use (data/{image_type}.Dockerfile) :param distro: which Linux distribution to use, e.g. "debian:11" :param pass_argv: pass arguments from sys.argv to the script :param env: dict of environment variables :param docker_args: extra arguments to pass to docker Z INSIDE_DOCKERNrzERROR: docker is not installedrTr r runz--rmz-ezINSIDE_DOCKER=1zPYTHONUNBUFFERED=1z-vz:/obs=z:/home/user/.oscrcz/obs/zdocker: running: z inside docker)rr!shutilwhichrr$r%rrdocker_distro_defaultr r&set_cmds_verboserrrritemsargv subprocessr' returncode) Z script_pathZ add_oscrcrrZ pass_argvenvZ docker_argsrZoscrccmdZenv_keyZenv_valrr r r run_in_docker_and_exit=s@        r3) rr)r/r$r lib.configr rrr&r3r r r r s