diff --git a/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0002-Remove-etcd-yaml-config-file.patch b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0002-Remove-etcd-yaml-config-file.patch new file mode 100644 index 000000000..7d83c0f42 --- /dev/null +++ b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0002-Remove-etcd-yaml-config-file.patch @@ -0,0 +1,47 @@ +From ca6c05f5cb5f9b2f789fa4ce29d2515246d08e33 Mon Sep 17 00:00:00 2001 +From: Kaustubh Dhokte +Date: Fri, 29 Sep 2023 18:26:00 -0700 +Subject: [PATCH] Remove etcd yaml config file + +This change prevents creation of /etc/etcd/etcd.yaml as it +is not required. Also, it changes owner of /etc/etcd/ from etcd +to root. + +Signed-off-by: Kaustubh Dhokte +--- + manifests/config.pp | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +diff --git a/manifests/config.pp b/manifests/config.pp +index c61c711..dbf66eb 100644 +--- a/manifests/config.pp ++++ b/manifests/config.pp +@@ -4,8 +4,8 @@ class etcd::config { + if $::osfamily == 'Ubuntu' { + file { '/etc/etcd': + ensure => 'directory', +- owner => 'etcd', +- group => 'etcd', ++ owner => 'root', ++ group => 'root', + mode => '0755', + } + } +@@ -15,14 +15,6 @@ class etcd::config { + content => template("${module_name}/etc/etcd/etcd.conf.erb"), + } + +- file { $::etcd::config_yaml_path: +- ensure => 'file', +- owner => 'etcd', +- group => 'etcd', +- mode => '0640', +- content => template("${module_name}/etc/etcd/etcd.yml.erb"), +- } +- + if $::etcd::manage_package and $::etcd::journald_forward_enable and $::operatingsystemmajrelease == '7' { + file { '/etc/systemd/system/etcd.service.d': + ensure => 'directory', +-- +2.25.1 + diff --git a/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0003-Rename-package-name-to-etcd-server.patch b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0003-Rename-package-name-to-etcd-server.patch new file mode 100644 index 000000000..aeb430134 --- /dev/null +++ b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/0003-Rename-package-name-to-etcd-server.patch @@ -0,0 +1,30 @@ +From 3225b87daa590664df84f87291277fa1377ab351 Mon Sep 17 00:00:00 2001 +From: Kaustubh Dhokte +Date: Fri, 29 Sep 2023 18:23:35 -0700 +Subject: [PATCH] Rename package name to etcd-server + +etcd-3.4.27 does not generate binary/package 'etcd'. +Without this change, puppet manifest fails as it can not +find the package etcd. + +Signed-off-by: Kaustubh Dhokte +--- + manifests/params.pp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/manifests/params.pp b/manifests/params.pp +index ea3d7f2..6ff3d44 100644 +--- a/manifests/params.pp ++++ b/manifests/params.pp +@@ -4,7 +4,7 @@ + # + class etcd::params { + $ensure = 'present' +- $package_name = 'etcd' ++ $package_name = 'etcd-server' + $manage_package = true + $manage_service = true + +-- +2.25.1 + diff --git a/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/series b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/series index 5df07950c..f53a1a36c 100644 --- a/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/series +++ b/config/puppet-modules/puppet-etcd-1.12.3/debian/patches/series @@ -1 +1,3 @@ 0001-Allow-use-with-stdlib-5.0.0.patch +0002-Remove-etcd-yaml-config-file.patch +0003-Rename-package-name-to-etcd-server.patch diff --git a/debian_iso_image.inc b/debian_iso_image.inc index ebec525fe..d29615f2c 100644 --- a/debian_iso_image.inc +++ b/debian_iso_image.inc @@ -94,7 +94,6 @@ efitools #etcd etcd-client etcd-server -etcd #golang-etcd-server-dev # not used #facter diff --git a/kubernetes/etcd/debian/deb_folder/changelog b/kubernetes/etcd/debian/deb_folder/changelog new file mode 100644 index 000000000..71d868ab2 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/changelog @@ -0,0 +1,5 @@ +etcd (3.4.27-1) unstable; urgency=medium + + * Updated for stx debian packaging + + -- Kaustubh Dhokte Thu, 21 Sep 2023 23:41:53 +0000 diff --git a/kubernetes/etcd/debian/deb_folder/control b/kubernetes/etcd/debian/deb_folder/control new file mode 100644 index 000000000..9eafcc541 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/control @@ -0,0 +1,150 @@ +Source: etcd +Maintainer: StarlingX Developers +Section: net +Priority: optional +Build-Depends: debhelper-compat (= 13), + dh-golang, + golang-any (>= 2:1.10~), + golang-github-bgentry-speakeasy-dev (>= 0.1.0~), + golang-github-cockroachdb-datadriven-dev, + golang-github-coreos-bbolt-dev, + golang-github-coreos-go-semver-dev (>= 0.2.0~), + golang-github-coreos-go-systemd-dev, + golang-github-coreos-pkg-dev (>= 3~), + golang-github-creack-pty-dev (>= 1.1.11~), + golang-github-dgrijalva-jwt-go-dev (>= 3.2.0~), + golang-github-dustin-go-humanize-dev, + golang-github-gogo-protobuf-dev, + golang-github-golang-groupcache-dev (>= 0.0~git20160516.0.02826c3~), + golang-github-golang-jwt-jwt-dev, + golang-github-google-btree-dev, + golang-github-google-uuid-dev, + golang-github-grpc-ecosystem-go-grpc-middleware-dev, + golang-github-grpc-ecosystem-go-grpc-prometheus-dev, + golang-github-grpc-ecosystem-grpc-gateway-dev (>= 1.2.0~), + golang-github-jonboulle-clockwork-dev, + golang-github-json-iterator-go-dev, + golang-github-modern-go-reflect2-dev, + golang-github-olekukonko-tablewriter-dev (>= 0.0~git20170122.0.a0225b3~), + golang-github-prometheus-client-golang-dev (>= 1.0.0~), + golang-github-prometheus-client-model-dev, + golang-github-soheilhy-cmux-dev, + golang-github-spf13-cobra-dev, + golang-github-spf13-pflag-dev, + golang-github-stretchr-testify-dev, + golang-github-tmc-grpc-websocket-proxy-dev, + golang-github-urfave-cli-dev, + golang-github-xiang90-probing-dev (>= 0.0.1~), + golang-go.uber-zap-dev, + golang-golang-x-crypto-dev, + golang-golang-x-net-dev, + golang-golang-x-sys-dev, + golang-golang-x-time-dev, + golang-golang-x-tools, + golang-google-grpc-dev, + golang-gopkg-cheggaaa-pb.v1-dev, + golang-gopkg-yaml.v2-dev, + golang-goprotobuf-dev, + golang-k8s-sigs-yaml-dev, +Standards-Version: 4.6.2 +Homepage: https://etcd.io +Rules-Requires-Root: no +XS-Go-Import-Path: go.etcd.io/etcd, + github.com/coreos/etcd + +Package: etcd-server +Architecture: any +Pre-Depends: ${misc:Pre-Depends}, +Depends: adduser, + ${misc:Depends}, + ${shlibs:Depends}, +Suggests: etcd-client, +Built-Using: ${misc:Built-Using}, +Description: highly-available key value store -- daemon + A highly-available key value store for shared configuration and service + discovery. etcd is inspired by zookeeper and doozer, with a focus on: + . + * Simple: curl'able user facing API (HTTP+JSON) + * Secure: optional SSL client cert authentication + * Fast: benchmarked 1000s of writes/s per instance + * Reliable: Properly distributed using Raft + . + Etcd uses the Raft consensus algorithm to manage a highly-available replicated + log. + . + This package contains the server binaries. + +Package: etcd-client +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends}, +Built-Using: ${misc:Built-Using}, +Description: highly-available key value store -- client + A highly-available key value store for shared configuration and service + discovery. etcd is inspired by zookeeper and doozer, with a focus on: + . + * Simple: curl'able user facing API (HTTP+JSON) + * Secure: optional SSL client cert authentication + * Fast: benchmarked 1000s of writes/s per instance + * Reliable: Properly distributed using Raft + . + Etcd uses the Raft consensus algorithm to manage a highly-available replicated + log. + . + This package contains the client binaries. + +Package: golang-etcd-server-dev +Architecture: all +Depends: golang-github-bgentry-speakeasy-dev (>= 0.1.0~), + golang-github-cockroachdb-datadriven-dev, + golang-github-coreos-bbolt-dev, + golang-github-coreos-go-semver-dev (>= 0.2.0~), + golang-github-coreos-go-systemd-dev, + golang-github-coreos-pkg-dev (>= 3~), + golang-github-creack-pty-dev (>= 1.1.11~), + golang-github-dustin-go-humanize-dev, + golang-github-gogo-protobuf-dev, + golang-github-golang-groupcache-dev (>= 0.0~git20160516.0.02826c3~), + golang-github-golang-jwt-jwt-dev, + golang-github-google-btree-dev, + golang-github-google-uuid-dev, + golang-github-grpc-ecosystem-go-grpc-middleware-dev, + golang-github-grpc-ecosystem-go-grpc-prometheus-dev, + golang-github-grpc-ecosystem-grpc-gateway-dev (>= 1.2.0~), + golang-github-jonboulle-clockwork-dev, + golang-github-json-iterator-go-dev, + golang-github-modern-go-reflect2-dev, + golang-github-olekukonko-tablewriter-dev (>= 0.0~git20170122.0.a0225b3~), + golang-github-prometheus-client-golang-dev (>= 1.0.0~), + golang-github-prometheus-client-model-dev, + golang-github-soheilhy-cmux-dev, + golang-github-spf13-cobra-dev, + golang-github-spf13-pflag-dev, + golang-github-tmc-grpc-websocket-proxy-dev, + golang-github-urfave-cli-dev, + golang-github-xiang90-probing-dev (>= 0.0.1~), + golang-go.uber-zap-dev, + golang-golang-x-crypto-dev, + golang-golang-x-net-dev, + golang-golang-x-sys-dev, + golang-golang-x-time-dev, + golang-google-grpc-dev, + golang-gopkg-cheggaaa-pb.v1-dev, + golang-gopkg-yaml.v2-dev, + golang-goprotobuf-dev, + golang-k8s-sigs-yaml-dev, + ${misc:Depends}, +Provides: golang-github-coreos-etcd-dev, +Description: highly-available key value store -- source + A highly-available key value store for shared configuration and service + discovery. etcd is inspired by zookeeper and doozer, with a focus on: + . + * Simple: curl'able user facing API (HTTP+JSON) + * Secure: optional SSL client cert authentication + * Fast: benchmarked 1000s of writes/s per instance + * Reliable: Properly distributed using Raft + . + Etcd uses the Raft consensus algorithm to manage a highly-available replicated + log. + . + This package contains the source. diff --git a/kubernetes/etcd/debian/deb_folder/copyright b/kubernetes/etcd/debian/deb_folder/copyright new file mode 100644 index 000000000..835ea5a7d --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/copyright @@ -0,0 +1,64 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: etcd +Source: https://github.com/etcd-io/etcd +Files-Excluded: vendor + +Files: * +Copyright: 2014-2015 CoreOS, Inc + 2013-2017 The etcd Authors +License: Apache-2.0 + +Files: + client/cancelreq.go + client/integration/main_test.go + clientv3/integration/main_test.go + integration/main_test.go + pkg/crc/crc.go + pkg/crc/crc_test.go + pkg/httputil/httputil.go + pkg/pathutil/path.go + pkg/testutil/leak.go + tests/e2e/main_test.go +Copyright: 2013-2015 The Go Authors. +License: BSD-3-clause + +Files: debian/* +Copyright: 2023 Wind River Systems, Inc. +License: Apache-2.0 + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + On Debian systems, the complete text of the Apache 2.0 + License can be found in `/usr/share/common-licenses/Apache-2.0`. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + * The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/kubernetes/etcd/debian/deb_folder/etcd-client.install b/kubernetes/etcd/debian/deb_folder/etcd-client.install new file mode 100644 index 000000000..457d7b1c1 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/etcd-client.install @@ -0,0 +1 @@ +usr/bin/etcdctl diff --git a/kubernetes/etcd/debian/deb_folder/etcd-server.install b/kubernetes/etcd/debian/deb_folder/etcd-server.install new file mode 100644 index 000000000..007f820b0 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/etcd-server.install @@ -0,0 +1 @@ +usr/bin/etcd diff --git a/kubernetes/etcd/debian/deb_folder/etcd-server.postinst b/kubernetes/etcd/debian/deb_folder/etcd-server.postinst new file mode 100644 index 000000000..08a90eff6 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/etcd-server.postinst @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + configure) + mkdir -m 755 -p /etc/etcd + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# diff --git a/kubernetes/etcd/debian/deb_folder/golang-etcd-server-dev.install b/kubernetes/etcd/debian/deb_folder/golang-etcd-server-dev.install new file mode 100644 index 000000000..653271ba9 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/golang-etcd-server-dev.install @@ -0,0 +1 @@ +/usr/share/gocode/src diff --git a/kubernetes/etcd/debian/deb_folder/not-installed b/kubernetes/etcd/debian/deb_folder/not-installed new file mode 100644 index 000000000..cbb01d7d5 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/not-installed @@ -0,0 +1,12 @@ +usr/bin/benchmark +usr/bin/bridge +usr/bin/etcd-agent +usr/bin/etcd-dump-db +usr/bin/etcd-dump-logs +usr/bin/etcd-dump-metrics +usr/bin/etcd-proxy +usr/bin/etcd-runner +usr/bin/etcd-tester +usr/bin/etcd2-backup-coreos +usr/bin/raftexample + diff --git a/kubernetes/etcd/debian/deb_folder/rules b/kubernetes/etcd/debian/deb_folder/rules new file mode 100755 index 000000000..bfa3dbdb8 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/rules @@ -0,0 +1,13 @@ +#!/usr/bin/make -f + +export DH_GOLANG_GO_GENERATE := 0 + +%: + dh $@ --buildsystem=golang --with=golang --builddirectory=_build + +# There is a script named "build" in the upstream source. +# So let us be explicit about the .PHONY target here to avoid conflicts. +build: + dh build --buildsystem=golang --with=golang --builddirectory=_build + +.PHONY: build diff --git a/kubernetes/etcd/debian/deb_folder/source/format b/kubernetes/etcd/debian/deb_folder/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/kubernetes/etcd/debian/deb_folder/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/kubernetes/etcd/debian/deb_patches/0001-Update-config.patch b/kubernetes/etcd/debian/deb_patches/0001-Update-config.patch deleted file mode 100644 index f371bc31f..000000000 --- a/kubernetes/etcd/debian/deb_patches/0001-Update-config.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 7ef071f8616c36bab74f4b367ef6405c20051f84 Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Mon, 4 Oct 2021 14:55:59 +0300 -Subject: [PATCH] Update config - -Updated .default and .service -files with the needed configs. ---- - debian/etcd-server.etcd.default | 8 ++++---- - debian/etcd-server.etcd.service | 4 ++-- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/debian/etcd-server.etcd.default b/debian/etcd-server.etcd.default -index cf1262c9..36255fbc 100644 ---- a/debian/etcd-server.etcd.default -+++ b/debian/etcd-server.etcd.default -@@ -11,12 +11,12 @@ - ## using discovery, each member must have a unique name. `Hostname` or - ## `machine-id` can be a good choice. - ## default: "default" --# ETCD_NAME="default" -+ETCD_NAME="default" - - ##### --data-dir - ## Path to the data directory. - ## default: "${name}.etcd" --# ETCD_DATA_DIR="/var/lib/etcd/default" -+ETCD_DATA_DIR="/var/lib/etcd/default" - - ##### --wal-dir - ## Path to the dedicated wal directory. If this flag is set, etcd will write -@@ -68,7 +68,7 @@ - ## default: "http://localhost:2379" - ## example: "http://10.0.0.1:2379" - ## invalid example: "http://example.com:2379" (domain name is invalid for binding) --# ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" -+ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" - - ##### --max-snapshots - ## Maximum number of snapshot files to retain (0 is unlimited) -@@ -184,7 +184,7 @@ - ## file descriptors) are eventually depleted. - ## default: "http://localhost:2379" - ## example: "http://example.com:2379, http://10.0.0.1:2379" --# ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" -+ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" - - ##### --discovery - ## Discovery URL used to bootstrap the cluster. -diff --git a/debian/etcd-server.etcd.service b/debian/etcd-server.etcd.service -index f4854bec..f7af53a5 100644 ---- a/debian/etcd-server.etcd.service -+++ b/debian/etcd-server.etcd.service -@@ -13,8 +13,8 @@ EnvironmentFile=-/etc/default/%p - Type=notify - User=etcd - PermissionsStartOnly=true --#ExecStart=/bin/sh -c "GOMAXPROCS=$(nproc) /usr/bin/etcd $DAEMON_ARGS" --ExecStart=/usr/bin/etcd $DAEMON_ARGS -+ExecStart=/bin/sh -c "GOMAXPROCS=$(nproc) /usr/bin/etcd --name=\"${ETCD_NAME}\" --data-dir=\"${ETCD_DATA_DIR}\" --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\"" -+#ExecStart=/usr/bin/etcd $DAEMON_ARGS - Restart=on-abnormal - #RestartSec=10s - LimitNOFILE=65536 --- -2.25.1 - diff --git a/kubernetes/etcd/debian/deb_patches/0002-Add-etc-etcd-configuration-directory.patch b/kubernetes/etcd/debian/deb_patches/0002-Add-etc-etcd-configuration-directory.patch deleted file mode 100644 index 3ebcb8a3f..000000000 --- a/kubernetes/etcd/debian/deb_patches/0002-Add-etc-etcd-configuration-directory.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a5d54403cad886ff73a3051d6c3d2fb796e1f65b Mon Sep 17 00:00:00 2001 -From: Charles Short -Date: Wed, 12 Jan 2022 11:42:20 -0500 -Subject: [PATCH] Add /etc/etcd configuration directory - -Ansible playbook expects an /etc/etcd directory so -create one when the etcd-server is installed. - -Signed-off-by: Charles Short ---- - debian/etcd-server.postinst | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/debian/etcd-server.postinst b/debian/etcd-server.postinst -index 0bdc5c20..3ed3754e 100644 ---- a/debian/etcd-server.postinst -+++ b/debian/etcd-server.postinst -@@ -8,6 +8,7 @@ case $1 in - adduser --system --group --disabled-login --disabled-password --home /var/lib/etcd/ etcd - fi - chmod 700 /var/lib/etcd/ -+ mkdir -m 755 -p /etc/etcd - ;; - abort-upgrade|abort-remove|abort-deconfigure) - ;; --- -2.25.1 - diff --git a/kubernetes/etcd/debian/deb_patches/series b/kubernetes/etcd/debian/deb_patches/series deleted file mode 100644 index 4809b53ba..000000000 --- a/kubernetes/etcd/debian/deb_patches/series +++ /dev/null @@ -1,2 +0,0 @@ -0001-Update-config.patch -0002-Add-etc-etcd-configuration-directory.patch diff --git a/kubernetes/etcd/debian/meta_data.yaml b/kubernetes/etcd/debian/meta_data.yaml index df9dcafd6..758bfb781 100644 --- a/kubernetes/etcd/debian/meta_data.yaml +++ b/kubernetes/etcd/debian/meta_data.yaml @@ -1,11 +1,11 @@ --- debname: etcd -debver: 3.3.25+dfsg-6 +debver: 3.4.27 dl_path: - name: etcd-debian-3.3.25+dfsg-6.tar.gz - url: https://salsa.debian.org/go-team/packages/etcd/-/archive/debian/3.3.25+dfsg-6/etcd-debian-3.3.25+dfsg-6.tar.gz - md5sum: 91df267a20b0f34a1ad1ff48a8815706 - sha256sum: c1303c274a3bb83fca94fa862454c7110ed131323d54e5614f401b62f3665e3f + name: etcd-3.4.27.tar.gz + url: https://github.com/etcd-io/etcd/archive/refs/tags/v3.4.27.tar.gz + md5sum: 8337cfbd8c437107b0b95fef06fe1d18 + sha256sum: aad42ea0635bc6481b04eb6e279c6122ccd72117018296aab32d0f9d6d606243 revision: dist: $STX_DIST GITREVCOUNT: