From 2f942de6bca79ab11318e6e3f68ec9ddeb3795cc Mon Sep 17 00:00:00 2001
From: Martina Ferrari <tina@debian.org>
Date: Fri, 12 Nov 2021 16:58:34 +0000
Subject: [PATCH] Rework caching and building librocksdb.

Following suggestions from code review, this commit avoid re-using the working
directory from different versions of the library.
---
 .github/workflows/build.yml | 26 +++++++++++++-------------
 .github/workflows/dist.yml  | 24 +++++++++++++++---------
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7389cd3..f637027 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,13 +1,16 @@
 # vim:ts=2:sw=2:et:ai:sts=2
 name: 'Build'
 
-on: ['push', 'pull_request']
+on:
+  push:
 
 jobs:
   # Build the RocksDB C library and cache the result.
   librocksdb:
     name: 'Build librocksdb'
     runs-on: ${{ matrix.os }}
+    env:
+      LIBROCKSDB_PATH: /opt/rocksdb-${{ matrix.rocksdb_ver }}
     strategy:
       matrix:
         os: [ubuntu-latest]
@@ -18,10 +21,7 @@ jobs:
         id: cache-librocksdb
         with:
           key: ${{ matrix.os }}-librocksdb-${{ matrix.rocksdb_ver }}
-          path: /opt/rocksdb
-          restore-keys: |
-            librocksdb-${{ matrix.os }}-
-            librocksdb-
+          path: ${{ env.LIBROCKSDB_PATH }}
 
       - name: 'Install dependencies'
         if: steps.cache-librocksdb.outputs.cache-hit != 'true'
@@ -31,19 +31,19 @@ jobs:
 
       - name: 'Clone & build RocksDB ${{ matrix.rocksdb_ver }}'
         if: steps.cache-librocksdb.outputs.cache-hit != 'true'
-        run: |
-          pushd /opt &&
-          git clone https://github.com/facebook/rocksdb &&
-          cd rocksdb &&
-          git reset --hard ${{ matrix.rocksdb_ver }} &&
+        run: >
+          git clone https://github.com/facebook/rocksdb --depth 1
+          --branch ${{ matrix.rocksdb_ver }} ${{ env.LIBROCKSDB_PATH }} &&
+          pushd ${{ env.LIBROCKSDB_PATH }} &&
           CXXFLAGS='-flto -Os -s' PORTABLE=1 make shared_lib -j 4 &&
-          make shared_lib &&
           popd
 
   test:
     name: 'Build and test python-rocksdb'
     needs: librocksdb
     runs-on: ${{ matrix.os }}
+    env:
+      LIBROCKSDB_PATH: /opt/rocksdb-${{ matrix.rocksdb_ver }}
     strategy:
       matrix:
         os: [ubuntu-latest]
@@ -71,13 +71,13 @@ jobs:
         id: cache-librocksdb
         with:
           key: ${{ matrix.os }}-librocksdb-${{ matrix.rocksdb_ver }}
-          path: /opt/rocksdb
+          path: ${{ env.LIBROCKSDB_PATH }}
 
       - name: 'Install RocksDB ${{ matrix.rocksdb_ver }}'
         if: steps.cache-librocksdb.outputs.cache-hit == 'true'
         # DO NOT FORGET to call `ldconfig`!
         run: |
-          pushd /opt/rocksdb &&
+          pushd ${{ env.LIBROCKSDB_PATH }} &&
           sudo make install-shared &&
           sudo ldconfig &&
           popd
diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml
index 7ad9d8e..0a3cb3f 100644
--- a/.github/workflows/dist.yml
+++ b/.github/workflows/dist.yml
@@ -10,7 +10,13 @@ on:
 jobs:
   build_wheels:
     name: 'Build wheels'
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
+    env:
+      LIBROCKSDB_PATH: /opt/rocksdb-${{ matrix.rocksdb_ver }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest]
+        rocksdb_ver: ['v6.14.6']
 
     steps:
       - uses: actions/checkout@v2
@@ -29,7 +35,6 @@ jobs:
         run: |
           python3 -m cibuildwheel --output-dir dist
         env:
-          ROCKSDB_VERSION: 'v6.14.6'
           CIBW_MANYLINUX_X86_64_IMAGE: 'manylinux2014'
           CIBW_BUILD: 'cp3*'
           CIBW_SKIP: '*-manylinux_i686'
@@ -46,14 +51,15 @@ jobs:
           CIBW_BEFORE_BUILD: >
             yum install -y bzip2-devel lz4-devel snappy-devel zlib-devel
             python3-Cython &&
-            pushd /opt &&
-            test -d rocksdb || (
-            git clone https://github.com/facebook/rocksdb &&
-            cd rocksdb &&
-            git reset --hard $ROCKSDB_VERSION &&
-            CXXFLAGS='-flto -Os -s' PORTABLE=1 make shared_lib -j 4 &&
-            make install-shared
+            test -d ${{ env.LIBROCKSDB_PATH }} || (
+            git clone https://github.com/facebook/rocksdb --depth 1
+            --branch ${{ matrix.rocksdb_ver }} ${{ env.LIBROCKSDB_PATH }} &&
+            cd ${{ env.LIBROCKSDB_PATH }} &&
+            CXXFLAGS='-flto -Os -s' PORTABLE=1 make shared_lib -j 4
             ) &&
+            pushd ${{ env.LIBROCKSDB_PATH }} &&
+            make install-shared &&
+            ldconfig &&
             popd
 
       - uses: actions/upload-artifact@v2
-- 
GitLab