You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ko...@apache.org on 2022/01/25 19:42:22 UTC
[couchdb-erlfdb] 01/01: Fix issues caused by foundationdb.org breakage
This is an automated email from the ASF dual-hosted git repository.
kocolosk pushed a commit to branch fix-devcontainer-package-retrieval
in repository https://gitbox.apache.org/repos/asf/couchdb-erlfdb.git
commit 1c1c4860ea16dd68348ef17cf32a481a0ddf0ee3
Author: Adam Kocoloski <ko...@apache.org>
AuthorDate: Tue Jan 25 14:39:05 2022 -0500
Fix issues caused by foundationdb.org breakage
The foundationdb.org collapse and subsequent move to GitHub created a
bit of fallout:
* Update package URLs from foundationdb.org to github.com
* Install Python package via pip as it's not published on GitHub
* Bump version to 6.3.23 as pypi has limited release selection
* Vendor the create_cluster_file.bash script (FDB elected to remove it
from their published container builds).
---
.devcontainer/Dockerfile | 23 ++++++---------
.devcontainer/create_cluster_file.bash | 52 ++++++++++++++++++++++++++++++++++
.devcontainer/docker-compose.yaml | 4 +--
3 files changed, 62 insertions(+), 17 deletions(-)
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 2dec11e..fb9e43c 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -13,23 +13,11 @@ ARG FDB_VERSION
# Install the FDB client used underneath erlfdb
RUN set -ex; \
- wget https://www.foundationdb.org/downloads/${FDB_VERSION}/ubuntu/installers/foundationdb-clients_${FDB_VERSION}-1_amd64.deb; \
+ wget https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/foundationdb-clients_${FDB_VERSION}-1_amd64.deb; \
mkdir /var/lib/foundationdb; \
dpkg -i foundationdb-clients_${FDB_VERSION}-1_amd64.deb; \
rm foundationdb-clients_${FDB_VERSION}-1_amd64.deb
-# FDB bindings tester uses the Python bindings; install them from a
-# package to avoid building FDB from source
-RUN set -ex; \
- wget https://www.foundationdb.org/downloads/${FDB_VERSION}/bindings/python/foundationdb-${FDB_VERSION}.tar.gz; \
- tar zxf foundationdb-${FDB_VERSION}.tar.gz; \
- cd foundationdb-${FDB_VERSION}; \
- if [ "${FDB_VERSION}" < "6.3.0" ]; then \
- python setup.py install; \
- else \
- python3 setup.py install; \
- fi; \
- rm ../foundationdb-${FDB_VERSION}.tar.gz
# Clone FoundationDB repo to retrieve bindings tester package and
# patch it to support erlfdb
@@ -43,9 +31,14 @@ RUN set -ex; \
RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends \
- dnsutils; \
+ dnsutils \
+ python3-setuptools \
+ python3-pip; \
rm -rf /var/lib/apt/lists/*
-COPY --from=fdb /var/fdb/scripts/create_cluster_file.bash /usr/local/bin/
+# FDB bindings tester uses the Python bindings
+RUN pip3 install foundationdb==${FDB_VERSION}
+
+COPY create_cluster_file.bash /usr/local/bin/
CMD sleep infinity
diff --git a/.devcontainer/create_cluster_file.bash b/.devcontainer/create_cluster_file.bash
new file mode 100644
index 0000000..73b9b12
--- /dev/null
+++ b/.devcontainer/create_cluster_file.bash
@@ -0,0 +1,52 @@
+#! /bin/bash
+
+#
+# create_cluster_file.bash
+#
+# This source file is part of the FoundationDB open source project
+#
+# Copyright 2013-2018 Apple Inc. and the FoundationDB project authors
+#
+# 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
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This script creates a cluster file for a server or client.
+# This takes the cluster file path from the FDB_CLUSTER_FILE
+# environment variable, with a default of /etc/foundationdb/fdb.cluster
+#
+# The name of the coordinator must be defined in the FDB_COORDINATOR environment
+# variable, and it must be a name that can be resolved through DNS.
+
+function create_cluster_file() {
+ FDB_CLUSTER_FILE=${FDB_CLUSTER_FILE:-/etc/foundationdb/fdb.cluster}
+ mkdir -p $(dirname $FDB_CLUSTER_FILE)
+
+ if [[ -n "$FDB_CLUSTER_FILE_CONTENTS" ]]; then
+ echo "$FDB_CLUSTER_FILE_CONTENTS" > $FDB_CLUSTER_FILE
+ elif [[ -n $FDB_COORDINATOR ]]; then
+ coordinator_ip=$(dig +short $FDB_COORDINATOR)
+ if [[ -z "$coordinator_ip" ]]; then
+ echo "Failed to look up coordinator address for $FDB_COORDINATOR" 1>&2
+ exit 1
+ fi
+ coordinator_port=${FDB_COORDINATOR_PORT:-4500}
+ echo "docker:docker@$coordinator_ip:$coordinator_port" > $FDB_CLUSTER_FILE
+ else
+ echo "FDB_COORDINATOR environment variable not defined" 1>&2
+ exit 1
+ fi
+}
+
+if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
+ create_cluster_file "$@"
+fi
\ No newline at end of file
diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml
index 79a310b..dceb276 100644
--- a/.devcontainer/docker-compose.yaml
+++ b/.devcontainer/docker-compose.yaml
@@ -7,7 +7,7 @@ services:
ERLANG_VERSION: "24"
# This should always match the value in fdb.image
- FDB_VERSION: "6.2.30"
+ FDB_VERSION: "6.3.23"
environment:
# This needs to match the name of the FoundationDB service below
@@ -28,4 +28,4 @@ services:
network_mode: service:fdb
fdb:
- image: foundationdb/foundationdb:6.2.30
+ image: foundationdb/foundationdb:6.3.23