From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 47E8A3858292 for ; Fri, 17 Jun 2022 09:17:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 47E8A3858292 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 7D2431F8F0; Fri, 17 Jun 2022 09:17:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1655457448; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OVYkP7hx2vNNP5OQG9Wf2nicnOrzqXZP8jQDlqugUqs=; b=YLu7Z3RSX4F6YyOnESk8YxXKp5QLJK9p6W1+i+Uprz86U9mFht8m027cHZP4dihyBetFg+ PrPBOh6PiymcJKrI/XIXBUHxT7pWL5YyOUWjHDe7wcxNPV4GPWQF8Zztr0+7ebHdXZ2r7z ofQRjMli9/aOGKtQPY8Vs3m5qJyVOtE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1655457448; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OVYkP7hx2vNNP5OQG9Wf2nicnOrzqXZP8jQDlqugUqs=; b=5k7+AUiAkMyxdwjX/rb4ymgmDWcNnPimNtnoj80eOuUxV80QInKoODSAAxWh77EdDuwT/o EwmaQH9mPMQiwEBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 6865F13458; Fri, 17 Jun 2022 09:17:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id ocqRGKhGrGL2KwAAMHmgww (envelope-from ); Fri, 17 Jun 2022 09:17:28 +0000 Message-ID: Date: Fri, 17 Jun 2022 11:17:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 From: =?UTF-8?Q?Martin_Li=c5=a1ka?= Subject: [RFC,PATCH] containers: extract bb-start.sh to a file and reuse it To: buildbot@sourceware.org Content-Language: en-US Cc: Mark Wielaard Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: buildbot@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "The https://builder.sourceware.org/ buildbot" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2022 09:17:31 -0000 Doing echo "..." > bb-start.sh adds one more level of escaping and it is quite ugly. Use rather a proper file and discard all the Debian switch to bash and back. Mark can you please test it if it works with the newly set 2 ENV variables: ENV IMAGE_NAME=debian-stable ENV CCACHE_LIBDIR=/usr/lib/ccache Thanks, Martin --- .../containers/Containerfile-debian-stable | 31 ++----------------- .../containers/Containerfile-fedora-latest | 25 ++------------- .../containers/Containerfile-opensuse-leap | 25 ++------------- .../Containerfile-opensuse-tumbleweed | 25 ++------------- builder/containers/bb-start.sh | 24 ++++++++++++++ 5 files changed, 36 insertions(+), 94 deletions(-) create mode 100755 builder/containers/bb-start.sh diff --git a/builder/containers/Containerfile-debian-stable b/builder/containers/Containerfile-debian-stable index e7cd134..86ed88f 100644 --- a/builder/containers/Containerfile-debian-stable +++ b/builder/containers/Containerfile-debian-stable @@ -22,34 +22,9 @@ RUN apt-get update && \ # Setup user with same id as host user id. RUN adduser --home /home/builder --uid 1001 builder -# Create buildbot-worker script which sets up shared worker and ccache -# data with the host. Each run gets a new password, so update that too. -# This script needs bash, so set sh to bash and then back... -# Yes, this creates 3 layers... sigh -RUN echo "dash dash/sh boolean false" | debconf-set-selections; \ - DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash -RUN cd /home/builder; \ - echo $'image_name=debian-stable\n\ - worker_dir=shared/$image_name/worker\n\ - tac_file=$worker_dir/buildbot.tac\n\ - if [ ! -f $tac_file ]; then\n\ - mkdir -p $worker_dir\n\ - buildbot-worker create-worker $worker_dir \ - $BUILDMASTER:$BUILDMASTER_PORT $WORKERNAME $WORKERPASS\n\ - echo buildbot@sourceware.org > $worker_dir/info/admin\n\ - echo $image_name > $worker_dir/info/host\n\ - else\n\ - sed -ie \"s/^passwd = .*/passwd = \'$WORKERPASS\'/\" $tac_file\n\ - fi\n\ - unset WORKERPASS\n\ - export PATH=/usr/lib/ccache:$PATH\n\ - mkdir -p shared/$image_name/ccache\n\ - export CCACHE_DIR=/home/builder/shared/$image_name/ccache\n\ - buildbot-worker start --nodaemon $worker_dir\n' \ - > bb-start.sh && \ - chmod 755 bb-start.sh -RUN echo "dash dash/sh boolean true" | debconf-set-selections; \ - DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash; +ENV IMAGE_NAME=debian-stable +ENV CCACHE_LIBDIR=/usr/lib/ccache +COPY bb-start.sh /home/builder/bb-start.sh # And now run the script USER builder diff --git a/builder/containers/Containerfile-fedora-latest b/builder/containers/Containerfile-fedora-latest index ce3b07e..450eea6 100644 --- a/builder/containers/Containerfile-fedora-latest +++ b/builder/containers/Containerfile-fedora-latest @@ -19,28 +19,9 @@ RUN dnf upgrade -y && \ # Setup user with same id as host user id. RUN adduser -u 1001 -U -d /home/builder -m builder -# Create buildbot-worker script which sets up shared worker and ccache -# data with the host. Each run gets a new password, so update that too. -RUN cd /home/builder; \ - echo $'image_name=fedora-latest\n\ - worker_dir=shared/$image_name/worker\n\ - tac_file=$worker_dir/buildbot.tac\n\ - if [ ! -f $tac_file ]; then\n\ - mkdir -p $worker_dir\n\ - buildbot-worker create-worker $worker_dir \ - $BUILDMASTER:$BUILDMASTER_PORT $WORKERNAME $WORKERPASS\n\ - echo buildbot@sourceware.org > $worker_dir/info/admin\n\ - echo $image_name > $worker_dir/info/host\n\ - else\n\ - sed -ie \"s/^passwd = .*/passwd = \'$WORKERPASS\'/\" $tac_file\n\ - fi\n\ - unset WORKERPASS\n\ - export PATH=/usr/lib64/ccache:$PATH\n\ - mkdir -p shared/$image_name/ccache\n\ - export CCACHE_DIR=/home/builder/shared/$image_name/ccache\n\ - buildbot-worker start --nodaemon $worker_dir\n' \ - > bb-start.sh && \ - chmod 755 bb-start.sh +ENV IMAGE_NAME=fedora-latest +ENV CCACHE_LIBDIR=/usr/lib64/ccache +COPY bb-start.sh /home/builder/bb-start.sh # And now run the script USER builder diff --git a/builder/containers/Containerfile-opensuse-leap b/builder/containers/Containerfile-opensuse-leap index 51e74c4..197f1af 100644 --- a/builder/containers/Containerfile-opensuse-leap +++ b/builder/containers/Containerfile-opensuse-leap @@ -25,28 +25,9 @@ RUN pip install buildbot-worker # Setup user with same id as host user id. RUN useradd -u 1001 -U -d /home/builder -m builder -# Create buildbot-worker script which sets up shared worker and ccache -# data with the host. Each run gets a new password, so update that too. -RUN cd /home/builder; \ - echo $'image_name=opensuse-leap\n\ - worker_dir=shared/$image_name/worker\n\ - tac_file=$worker_dir/buildbot.tac\n\ - if [ ! -f $tac_file ]; then\n\ - mkdir -p $worker_dir\n\ - buildbot-worker create-worker $worker_dir \ - $BUILDMASTER:$BUILDMASTER_PORT $WORKERNAME $WORKERPASS\n\ - echo buildbot@sourceware.org > $worker_dir/info/admin\n\ - echo $image_name > $worker_dir/info/host\n\ - else\n\ - sed -ie \"s/^passwd = .*/passwd = \'$WORKERPASS\'/\" $tac_file\n\ - fi\n\ - unset WORKERPASS\n\ - export PATH=/usr/lib64/ccache:$PATH\n\ - mkdir -p shared/$image_name/ccache\n\ - export CCACHE_DIR=/home/builder/shared/$image_name/ccache\n\ - buildbot-worker start --nodaemon $worker_dir\n' \ - > bb-start.sh && \ - chmod 755 bb-start.sh +ENV IMAGE_NAME=opensuse-leap +ENV CCACHE_LIBDIR=/usr/lib64/ccache +COPY bb-start.sh /home/builder/bb-start.sh # And now run the script USER builder diff --git a/builder/containers/Containerfile-opensuse-tumbleweed b/builder/containers/Containerfile-opensuse-tumbleweed index d20ad84..d8157ed 100644 --- a/builder/containers/Containerfile-opensuse-tumbleweed +++ b/builder/containers/Containerfile-opensuse-tumbleweed @@ -21,28 +21,9 @@ RUN pip install buildbot-worker # Setup user with same id as host user id. RUN useradd -u 1001 -U -d /home/builder -m builder -# Create buildbot-worker script which sets up shared worker and ccache -# data with the host. Each run gets a new password, so update that too. -RUN cd /home/builder; \ - echo $'image_name=opensuse-tumbleweed\n\ - worker_dir=shared/$image_name/worker\n\ - tac_file=$worker_dir/buildbot.tac\n\ - if [ ! -f $tac_file ]; then\n\ - mkdir -p $worker_dir\n\ - buildbot-worker create-worker $worker_dir \ - $BUILDMASTER:$BUILDMASTER_PORT $WORKERNAME $WORKERPASS\n\ - echo buildbot@sourceware.org > $worker_dir/info/admin\n\ - echo $image_name > $worker_dir/info/host\n\ - else\n\ - sed -ie \"s/^passwd = .*/passwd = \'$WORKERPASS\'/\" $tac_file\n\ - fi\n\ - unset WORKERPASS\n\ - export PATH=/usr/lib64/ccache:$PATH\n\ - mkdir -p shared/$image_name/ccache\n\ - export CCACHE_DIR=/home/builder/shared/$image_name/ccache\n\ - buildbot-worker start --nodaemon $worker_dir\n' \ - > bb-start.sh && \ - chmod 755 bb-start.sh +ENV IMAGE_NAME=opensuse-tumbleweed +ENV CCACHE_LIBDIR=/usr/lib64/ccache +COPY bb-start.sh /home/builder/bb-start.sh # And now run the script USER builder diff --git a/builder/containers/bb-start.sh b/builder/containers/bb-start.sh new file mode 100755 index 0000000..f8203ef --- /dev/null +++ b/builder/containers/bb-start.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# The script is entrypoint for container workers. +# The following environment variables must by set +# by the corresponding Container files: +# +# - IMAGE_NAME - name of the image +# - CCACHE_LIBDIR - path where to search for ccache (usually /usr/lib64/ccache) + +worker_dir=shared/$IMAGE_NAME/worker +tac_file=$worker_dir/buildbot.tac +if [ ! -f $tac_file ]; then + mkdir -p $worker_dir + buildbot-worker create-worker $worker_dir $BUILDMASTER:$BUILDMASTER_PORT $WORKERNAME $WORKERPASS + echo buildbot@sourceware.org > $worker_dir/info/admin + echo $IMAGE_NAME > $worker_dir/info/host +else + sed -ie "s/^passwd = .*/passwd = '$WORKERPASS'/" $tac_file +fi +unset WORKERPASS +export PATH=$CCACHE_LIBDIR:$PATH +mkdir -p shared/$IMAGE_NAME/ccache +export CCACHE_DIR=/home/builder/shared/$IMAGE_NAME/ccache +buildbot-worker start --nodaemon $worker_dir -- 2.36.1