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