mirror of
1
Fork 0

[chore] Update drone + goreleaser (#3742)

This commit is contained in:
tobi 2025-02-06 16:23:30 +01:00 committed by GitHub
parent 1276cde4b3
commit 00bd0f7658
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 240 deletions

View File

@ -94,7 +94,7 @@ steps:
- pull_request - pull_request
- name: snapshot - name: snapshot
image: superseriousbusiness/gotosocial-drone-build:0.7.0 # https://github.com/superseriousbusiness/gotosocial-drone-build image: superseriousbusiness/gotosocial-drone-build:0.8.0 # https://github.com/superseriousbusiness/gotosocial-drone-build
volumes: volumes:
- name: go-build-cache - name: go-build-cache
path: /root/.cache/go-build path: /root/.cache/go-build
@ -117,18 +117,13 @@ steps:
# Login to Docker, push Docker image snapshots + manifests. # Login to Docker, push Docker image snapshots + manifests.
- /go/dockerlogin.sh - /go/dockerlogin.sh
- docker push superseriousbusiness/gotosocial:snapshot-armv6
- docker push superseriousbusiness/gotosocial:snapshot-armv7
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8 - docker push superseriousbusiness/gotosocial:snapshot-arm64v8
- docker push superseriousbusiness/gotosocial:snapshot-amd64 - docker push superseriousbusiness/gotosocial:snapshot-amd64
- docker manifest create superseriousbusiness/gotosocial:snapshot superseriousbusiness/gotosocial:snapshot-armv6 superseriousbusiness/gotosocial:snapshot-armv7 superseriousbusiness/gotosocial:snapshot-amd64 superseriousbusiness/gotosocial:snapshot-arm64v8 - |
docker manifest create superseriousbusiness/gotosocial:snapshot \
superseriousbusiness/gotosocial:snapshot-amd64 \
superseriousbusiness/gotosocial:snapshot-arm64v8
- docker manifest push superseriousbusiness/gotosocial:snapshot - docker manifest push superseriousbusiness/gotosocial:snapshot
- docker push superseriousbusiness/gotosocial:snapshot-armv6-moderncsqlite
- docker push superseriousbusiness/gotosocial:snapshot-armv7-moderncsqlite
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8-moderncsqlite
- docker push superseriousbusiness/gotosocial:snapshot-amd64-moderncsqlite
- docker manifest create superseriousbusiness/gotosocial:snapshot-moderncsqlite superseriousbusiness/gotosocial:snapshot-armv6-moderncsqlite superseriousbusiness/gotosocial:snapshot-armv7-moderncsqlite superseriousbusiness/gotosocial:snapshot-amd64-moderncsqlite superseriousbusiness/gotosocial:snapshot-arm64v8-moderncsqlite
- docker manifest push superseriousbusiness/gotosocial:snapshot-moderncsqlite
# Publish binary .tar.gz snapshots to S3. # Publish binary .tar.gz snapshots to S3.
- /go/snapshot_publish.sh - /go/snapshot_publish.sh
@ -141,7 +136,7 @@ steps:
- main - main
- name: release - name: release
image: superseriousbusiness/gotosocial-drone-build:0.7.0 # https://github.com/superseriousbusiness/gotosocial-drone-build image: superseriousbusiness/gotosocial-drone-build:0.8.0 # https://github.com/superseriousbusiness/gotosocial-drone-build
volumes: volumes:
- name: go-build-cache - name: go-build-cache
path: /root/.cache/go-build path: /root/.cache/go-build
@ -210,7 +205,7 @@ clone:
steps: steps:
- name: mirror - name: mirror
image: superseriousbusiness/gotosocial-drone-build:0.7.0 image: superseriousbusiness/gotosocial-drone-build:0.8.0
environment: environment:
ORIGIN_REPO: https://github.com/superseriousbusiness/gotosocial ORIGIN_REPO: https://github.com/superseriousbusiness/gotosocial
TARGET_REPO: https://codeberg.org/superseriousbusiness/gotosocial TARGET_REPO: https://codeberg.org/superseriousbusiness/gotosocial
@ -223,6 +218,6 @@ steps:
--- ---
kind: signature kind: signature
hmac: c79f1c3b16db8da7e3b01b960021a583ec81069aff8afd4425f049dd140f0620 hmac: 64ce0d466c7a48b6aa24a8836cfad7eae71faeae0b2e5342beb6428233a65eee
... ...

View File

@ -15,7 +15,7 @@ before:
# https://goreleaser.com/customization/build/ # https://goreleaser.com/customization/build/
builds: builds:
# DEFAULT WASM SQLITE BINARY BUILDS # DEFAULT WASM BINARY BUILDS
- -
id: gotosocial id: gotosocial
main: ./cmd/gotosocial main: ./cmd/gotosocial
@ -39,27 +39,14 @@ builds:
goos: goos:
- linux - linux
- freebsd - freebsd
- netbsd
goarch: goarch:
- 386
- amd64 - amd64
- arm
- arm64 - arm64
goarm:
- 6
- 7
ignore:
# Build FreeBSD
# only for amd64.
- goos: freebsd
goarch: arm64
- goos: freebsd
goarch: arm
- goos: freebsd
goarch: 386
mod_timestamp: "{{ .CommitTimestamp }}" mod_timestamp: "{{ .CommitTimestamp }}"
# MODERNC SQLITE BINARY BUILDS # NOWASM BINARY BUILDS
- -
id: gotosocial_moderncsqlite id: gotosocial_nowasm
main: ./cmd/gotosocial main: ./cmd/gotosocial
binary: gotosocial binary: gotosocial
ldflags: ldflags:
@ -74,12 +61,15 @@ builds:
- static_build - static_build
- kvformat - kvformat
- timetzdata - timetzdata
- nowasm
- >- - >-
{{ if and (index .Env "DEBUG") (.Env.DEBUG) }}debugenv{{ end }} {{ if and (index .Env "DEBUG") (.Env.DEBUG) }}debugenv{{ end }}
- moderncsqlite3
env: env:
- CGO_ENABLED=0 - CGO_ENABLED=0
goos: goos:
# moderncsqlite doesn't
# build for netbsd right
# now so leave it out.
- linux - linux
- freebsd - freebsd
goarch: goarch:
@ -91,8 +81,8 @@ builds:
- 6 - 6
- 7 - 7
ignore: ignore:
# Build FreeBSD # Don't build BSDs
# only for amd64. # for arm/32-bit.
- goos: freebsd - goos: freebsd
goarch: arm64 goarch: arm64
- goos: freebsd - goos: freebsd
@ -103,7 +93,7 @@ builds:
# https://goreleaser.com/customization/docker/ # https://goreleaser.com/customization/docker/
dockers: dockers:
# DEFAULT WASM SQLITE DOCKER BUILDS # DEFAULT WASM DOCKER BUILDS
- -
use: buildx use: buildx
goos: linux goos: linux
@ -150,194 +140,25 @@ dockers:
- go.sum - go.sum
- cmd - cmd
- internal - internal
-
use: buildx
goos: linux
goarch: arm
goarm: 6
id: armv6
ids:
- gotosocial
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6"
- "superseriousbusiness/{{ .ProjectName }}:latest-armv6"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv6{{ end }}"
build_flag_templates:
- "--platform=linux/arm/v6"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
-
use: buildx
goos: linux
goarch: arm
goarm: 7
id: armv7
ids:
- gotosocial
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7"
- "superseriousbusiness/{{ .ProjectName }}:latest-armv7"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv7{{ end }}"
build_flag_templates:
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
# MODERNC SQLITE DOCKER BUILDS
-
use: buildx
goos: linux
goarch: amd64
id: amd64-moderncsqlite
ids:
- gotosocial_moderncsqlite
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64-moderncsqlite"
- "superseriousbusiness/{{ .ProjectName }}:latest-amd64-moderncsqlite"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-amd64-moderncsqlite{{ end }}"
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
-
use: buildx
goos: linux
goarch: arm64
id: arm64v8-moderncsqlite
ids:
- gotosocial_moderncsqlite
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8-moderncsqlite"
- "superseriousbusiness/{{ .ProjectName }}:latest-arm64v8-moderncsqlite"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8-moderncsqlite{{ end }}"
build_flag_templates:
- "--platform=linux/arm64/v8"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
-
use: buildx
goos: linux
goarch: arm
goarm: 6
id: armv6-moderncsqlite
ids:
- gotosocial_moderncsqlite
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6-moderncsqlite"
- "superseriousbusiness/{{ .ProjectName }}:latest-armv6-moderncsqlite"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv6-moderncsqlite{{ end }}"
build_flag_templates:
- "--platform=linux/arm/v6"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
-
use: buildx
goos: linux
goarch: arm
goarm: 7
id: armv7-moderncsqlite
ids:
- gotosocial_moderncsqlite
image_templates:
- "superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7-moderncsqlite"
- "superseriousbusiness/{{ .ProjectName }}:latest-armv7-moderncsqlite"
- "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-armv7-moderncsqlite{{ end }}"
build_flag_templates:
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
extra_files:
- web
- go.mod
- go.sum
- cmd
- internal
# https://goreleaser.com/customization/docker_manifest/ # https://goreleaser.com/customization/docker_manifest/
docker_manifests: docker_manifests:
# DEFAULT WASM SQLITE BUILDS
- name_template: superseriousbusiness/{{ .ProjectName }}:{{ .Version }} - name_template: superseriousbusiness/{{ .ProjectName }}:{{ .Version }}
image_templates: image_templates:
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64 - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8 - superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7
- name_template: superseriousbusiness/{{ .ProjectName }}:latest - name_template: superseriousbusiness/{{ .ProjectName }}:latest
image_templates: image_templates:
- superseriousbusiness/{{ .ProjectName }}:latest-amd64 - superseriousbusiness/{{ .ProjectName }}:latest-amd64
- superseriousbusiness/{{ .ProjectName }}:latest-arm64v8 - superseriousbusiness/{{ .ProjectName }}:latest-arm64v8
- superseriousbusiness/{{ .ProjectName }}:latest-armv6
- superseriousbusiness/{{ .ProjectName }}:latest-armv7
- name_template: "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot{{ end }}" - name_template: "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot{{ end }}"
image_templates: image_templates:
- superseriousbusiness/{{ .ProjectName }}:snapshot-amd64 - superseriousbusiness/{{ .ProjectName }}:snapshot-amd64
- superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8 - superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8
- superseriousbusiness/{{ .ProjectName }}:snapshot-armv6
- superseriousbusiness/{{ .ProjectName }}:snapshot-armv7
# MODERNC SQLITE BUILDS
- name_template: superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-moderncsqlite
image_templates:
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-amd64-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-arm64v8-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv6-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:{{ .Version }}-armv7-moderncsqlite
- name_template: superseriousbusiness/{{ .ProjectName }}:latest-moderncsqlite
image_templates:
- superseriousbusiness/{{ .ProjectName }}:latest-amd64-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:latest-arm64v8-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:latest-armv6-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:latest-armv7-moderncsqlite
- name_template: "{{ if .IsSnapshot }}superseriousbusiness/{{ .ProjectName }}:snapshot-moderncsqlite{{ end }}"
image_templates:
- superseriousbusiness/{{ .ProjectName }}:snapshot-amd64-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:snapshot-arm64v8-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:snapshot-armv6-moderncsqlite
- superseriousbusiness/{{ .ProjectName }}:snapshot-armv7-moderncsqlite
# https://goreleaser.com/customization/archive/ # https://goreleaser.com/customization/archive/
archives: archives:
# DEFAULT WASM SQLITE BUILD # DEFAULT WASM BUILD
- -
id: gotosocial id: gotosocial
builds: builds:
@ -354,11 +175,11 @@ archives:
- example/config.yaml - example/config.yaml
- example/gotosocial.service - example/gotosocial.service
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}" name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}"
# MODERNC SQLITE BUILD # NOWASM BUILD
- -
id: gotosocial_moderncsqlite id: gotosocial_nowasm
builds: builds:
- gotosocial_moderncsqlite - gotosocial_nowasm
files: files:
# standard release files # standard release files
- LICENSE - LICENSE
@ -370,7 +191,7 @@ archives:
# example config files # example config files
- example/config.yaml - example/config.yaml
- example/gotosocial.service - example/gotosocial.service
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}_moderncsqlite" name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 \"v1\") }}{{ .Amd64 }}{{ end }}_nowasm"
- -
id: web-assets id: web-assets
files: files:
@ -460,43 +281,26 @@ release:
### Which release archive/container should I use? ### Which release archive/container should I use?
Tl;dr: Regardless of whether you're using SQLite or Postgres as your DB driver, you most likely you want the regular version without `moderncsqlite` in the name. GoToSocial releases binary builds for 64-bit Linux, FreeBSD, and NetBSD operating systems. We also release Docker builds for 64-bit Linux.
However, if you're on FreeBSD, 32-bit Linux or 32-bit ARM, we recommend using the `moderncsqlite` version instead.
You may need to change some configuration options too. See the table below:
| OS | Architecture | Support level | Binary archive | Docker | | OS | Architecture | Support level | Binary archive | Docker |
| ------- | ----------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | ------- | ----------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| Linux | x86-64/AMD64 (64-bit) | 🟢 Full | [linux_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_amd64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | x86-64/AMD64 (64-bit) | 🟢 Full | [linux_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_amd64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
| Linux | Armv8/ARM64 (64-bit) | 🟢 Full | [linux_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` | | Linux | Armv8/ARM64 (64-bit) | 🟢 Full | [linux_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
| FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full<sup>[1](#freebsd)</sup> | [freebsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64_moderncsqlite.tar.gz) | None provided | | FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full | [freebsd_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64.tar.gz) | Not provided |
| Linux | x86-32/i386 (32-bit) | 🟡 Partial<sup>[2](#32-bit)</sup> | [linux_386_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_386_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` | | FreeBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [freebsd_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_arm64.tar.gz) | Not provided |
| Linux | Armv7/ARM32 (32-bit) | 🟡 Partial<sup>[2](#32-bit)</sup> | [linux_armv7_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` | | NetBSD | x86-64/AMD64 (64-bit) | 🟢 Full | [netbsd_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_amd64.tar.gz) | Not provided |
| Linux | Armv6/ARM32 (32-bit) | 🟡 Partial<sup>[2](#32-bit)</sup> | [linux_armv6_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` | | NetBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [netbsd_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_arm64.tar.gz) | Not provided |
#### FreeBSD #### `nowasm`
`moderncsqlite` version currently recommended, though you might have success with the regular WASM SQLite version. For your convenience, we also provide **UNSUPPORTED, EXPERIMENTAL BUILDS**, created using the `nowasm` tag, in the downloads list below. There is no Docker build for `nowasm`.
If running with regular WASM SQLite and having instability or memory issues, the following settings *may* help: GoToSocial releases built with `nowasm` use the Go-native, modernc version of SQLite instead of the WASM one, and will use *on-system ffmpeg and ffprobe binaries* for media processing.
```yaml Using a `nowasm` build is currently the only way to run GoToSocial on a 32-bit system.
db-max-open-conns-multiplier: 0
db-sqlite-journal-mode: "TRUNCATE"
db-sqlite-synchronous: "FULL"
```
#### 32-bit For more information on running a `nowasm` build, see the [nowasm](https://docs.gotosocial.org/en/latest/advanced/builds/nowasm/) documentation page.
`moderncsqlite` version is needed, as performance with regular WASM SQLite is not guaranteed when running on 32-bit.
Remote media processing will likely not work with reasonable performance, so you should set the following config variables to prevent download of remote media onto your instance:
```yaml
media-remote-max-size: 0
media-emoji-remote-max-size: 0
```
# https://goreleaser.com/customization/changelog/ # https://goreleaser.com/customization/changelog/
changelog: changelog: