Skip to content

Commit b01aef3

Browse files
authored
readies sync (fixes macOS build) (#265)
* readies sync * installation of gnu utils in system-setup.py * circleci: debug macOS * circleci: debug macOS 2 * circleci: debug macOS 3 * circleci: debug macOS 4 * circleci: debug macOS 5 * Added double-panda test for macOS * circleci: workaround for python ssl * circleci: debug macOS 6 * circleci: debug macOS 7 * pack.sh fixes * Test-related changes in Makefile * Test-related changes in Makefile 1 * Improvements for tests in Makefile * pack.sh fix
1 parent b569fce commit b01aef3

File tree

13 files changed

+184
-70
lines changed

13 files changed

+184
-70
lines changed

.circleci/config.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ commands:
1616
name: Install dependencies
1717
command: |
1818
./opt/readies/bin/getpy
19-
./opt/system-setup.py
19+
BREW_NO_UPDATE=1 ./opt/system-setup.py
2020
git clone git://github.com/antirez/redis.git --branch 5.0.7
2121
(cd redis && make malloc=libc -j $(nproc) && make install)
2222
redis-server --version
@@ -72,6 +72,10 @@ jobs:
7272
macos:
7373
xcode: 10.2.1
7474
steps:
75+
- run:
76+
name: Fix macOS Python installation
77+
command: |
78+
brew reinstall -f python2
7579
- ci_steps:
7680
platform: macosx
7781
build-multiarch-docker:
@@ -162,7 +166,6 @@ workflows:
162166
- build-macos:
163167
filters:
164168
branches:
165-
# only: /.*/
166169
ignore: /.*/
167170
tags:
168171
only: /^v[0-9].*/
@@ -182,9 +185,6 @@ workflows:
182185
requires:
183186
- build
184187
filters:
185-
# # uncomment to debug
186-
# tags:
187-
# only: /.*/
188188
branches:
189189
only: master
190190
- deploy_package:

opt/Makefile

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ make build # compile and link
1212
make clean # remove build artifacts
1313
ALL=1 # remove entire artifacts directory
1414
make test # run tests
15+
TEST=test # run only test `test` with Redis output
16+
TEST_ARGS=args # add extra RLTest `args`
1517
make pack # create installation packages
1618
PACK_DEPS=0 # do not pack dependencies
19+
INTO=dir # place artifacts in `dir`
20+
BRANCH=name # use `name` as branch name
1721
make deploy # copy packages to S3
1822
make release # release a version
1923

@@ -123,9 +127,9 @@ fetch deps:
123127

124128
pack:
125129
ifneq ($(PACK_DEPS),0)
126-
$(SHOW)DEVICE=$(DEVICE) BINDIR=$(BINROOT) INSTALL_DIR=$(INSTALL_DIR) DEPS=1 ./pack.sh
130+
$(SHOW)DEVICE=$(DEVICE) BINDIR=$(BINROOT) INSTALL_DIR=$(INSTALL_DIR) BRANCH=$(BRANCH) INTO=$(INTO) DEPS=1 ./pack.sh
127131
else
128-
$(SHOW)DEVICE=$(DEVICE) BINDIR=$(BINROOT) INSTALL_DIR=$(INSTALL_DIR) DEPS=0 ./pack.sh
132+
$(SHOW)DEVICE=$(DEVICE) BINDIR=$(BINROOT) INSTALL_DIR=$(INSTALL_DIR) BRANCH=$(BRANCH) INTO=$(INTO) DEPS=0 ./pack.sh
129133
endif
130134

131135
#----------------------------------------------------------------------------------------------
@@ -134,21 +138,37 @@ TEST_REPORT_DIR ?= $(PWD)
134138

135139
ifeq ($(TEST),)
136140
TEST=basic_tests.py
141+
PYDEBUG=
142+
else
143+
TEST_ARGS += -s
144+
PYDEBUG=1
137145
endif
138146

147+
TEST_PREFIX=set -e; cd $(ROOT)/test
148+
TEST_CMD=\
149+
DEVICE=$(DEVICE) PYDEBUG=$(PYDEBUG) \
150+
python3 -m RLTest $(TEST_ARGS) --test $(TEST) --module $(INSTALL_DIR)/redisai.so
151+
152+
GEN ?= 1
153+
SLAVES ?= 1
154+
AOF ?= 1
155+
139156
test:
140157
ifneq ($(NO_LFS),1)
141158
$(SHOW)if [ "$(git lfs env > /dev/null 2>&1 ; echo $?)" != "0" ]; then cd $(ROOT); git lfs install; fi
142159
$(SHOW)cd $(ROOT); git lfs pull
143160
endif
144-
$(SHOW)set -e ;\
145-
cd $(ROOT)/test ;\
146-
export DEVICE=$(DEVICE) ;\
147-
python3 -m RLTest $(TEST_ARGS) --test $(TEST) --module $(INSTALL_DIR)/redisai.so ;\
148-
python3 -m RLTest $(TEST_ARGS) --test $(TEST) --module $(INSTALL_DIR)/redisai.so --use-slaves ;\
149-
python3 -m RLTest $(TEST_ARGS) --test $(TEST) --module $(INSTALL_DIR)/redisai.so --use-aof
150-
# Commented until the MacOS CI is available
151-
# python3 -m RLTest $(TEST_ARGS) --test double-panda.py --module $(INSTALL_DIR)/redisai.so
161+
ifeq ($(GEN),1)
162+
$(SHOW)$(TEST_PREFIX); $(TEST_CMD)
163+
endif
164+
ifeq ($(AOF),1)
165+
$(SHOW)$(TEST_PREFIX); printf "\nTests with --use-aof:\n\n" ;\
166+
$(TEST_CMD) --use-aof
167+
endif
168+
ifeq ($(SLAVES),1)
169+
$(SHOW)$(TEST_PREFIX); printf "\nTests with --use-slaves:\n\n" ;\
170+
$(TEST_CMD) --use-slaves
171+
endif
152172

153173
#----------------------------------------------------------------------------------------------
154174

opt/pack.sh

Lines changed: 60 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/bash
22

3+
[[ $IGNERR == 1 ]] || set -e
4+
[[ $VERBOSE == 1 ]] && set -x
5+
36
[[ -z $DEVICE ]] && { echo DEVICE undefined; exit 1; }
47
[[ -z $BINDIR ]] && { echo BINDIR undefined; exit 1; }
58
[[ -z $INSTALL_DIR ]] && { echo INSTALL_DIR undefined; exit 1; }
@@ -9,7 +12,7 @@ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
912
. $HERE/readies/shibumi/functions
1013
ROOT=$(realpath $HERE/..)
1114

12-
RAMP_PROG=ramp
15+
RAMP_PROG="python3 -m RAMP.ramp"
1316
REDIS_ENT_LIB_PATH=/opt/redislabs/lib
1417

1518
BINDIR=$(realpath $BINDIR)
@@ -18,30 +21,37 @@ INSTALL_DIR=$(realpath $INSTALL_DIR)
1821
export LC_ALL=C.UTF-8
1922
export LANG=C.UTF-8
2023

24+
export ARCH=$($ROOT/opt/readies/bin/platform --arch)
25+
export OS=$($ROOT/opt/readies/bin/platform --os)
26+
export OSNICK=$($ROOT/opt/readies/bin/platform --osnick)
27+
2128
pack_ramp() {
2229
echo "Building RAMP file ..."
2330
cd $ROOT
31+
32+
local STEM=$PRODUCT.$OS-$OSNICK-$ARCH
33+
local FQ_VER=$GIT_VER
34+
local FQ_PACKAGE=$STEM.$FQ_VER
35+
36+
# this is only to extract {semantic_version} into VERSION
2437
RAMPOUT=$(mktemp /tmp/ramp.XXXXXX)
2538
$RAMP_PROG pack -m $ROOT/ramp.yml -o $BINDIR/$PRODUCT.{os}-{architecture}.{semantic_version}.zip $INSTALL_DIR/$PRODUCT.so 2> /dev/null | grep '.zip' > $RAMPOUT
26-
realpath $(tail -1 $RAMPOUT) > $BINDIR/PACKAGE
27-
cat $BINDIR/PACKAGE | sed -e "s/[^.]*\.[^.]*\.\(.*\)\.zip/\1/" > $BINDIR/VERSION
28-
cat $BINDIR/PACKAGE | sed -e "s/[^.]*\.\([^.]*\)\..*\.zip/\1/" > $BINDIR/OSARCH
29-
PACKAGE=$(cat $BINDIR/PACKAGE)
30-
VERSION=$(cat $BINDIR/VERSION)
31-
OSARCH=$(cat $BINDIR/OSARCH)
32-
$RAMP_PROG pack -m $ROOT/ramp.yml -o "$BINDIR/$PRODUCT.{os}-{architecture}.{semantic_version}.zip" \
33-
-c "BACKENDSPATH $REDIS_ENT_LIB_PATH/$PRODUCT-$DEVICE-$VERSION/backends" $INSTALL_DIR/$PRODUCT.so 2> /dev/null | grep '.zip' > $RAMPOUT
34-
rm -f $RAMPOUT
35-
export PACK_FNAME="$(basename $PACKAGE)"
39+
local rampfile=`realpath $(tail -1 $RAMPOUT)`
40+
rm -f $rampfile $RAMPOUT
41+
echo `basename $rampfile` | sed -e "s/[^.]*\.[^.]*\.\(.*\)\.zip/\1/" > $BINDIR/VERSION
42+
export VERSION=$(cat $BINDIR/VERSION)
43+
44+
$RAMP_PROG pack -m $ROOT/ramp.yml -o $BINDIR/$FQ_PACKAGE.zip \
45+
-c "BACKENDSPATH $REDIS_ENT_LIB_PATH/$PRODUCT-$DEVICE-$VERSION/backends" $INSTALL_DIR/$PRODUCT.so > /dev/null 2>&1
3646

3747
cd "$BINDIR"
38-
RAMP_STEM=$PRODUCT.$OSARCH
39-
ln -sf $PACK_FNAME $RAMP_STEM.latest.zip
40-
[[ ! -z $BRANCH ]] && ln -sf $PACK_FNAME $RAMP_STEM.${BRANCH}.zip
41-
ln -sf $PACK_FNAME $RAMP_STEM.${GIT_VER}.zip
48+
ln -sf $FQ_PACKAGE.zip $STEM.$VERSION.zip
49+
ln -sf $FQ_PACKAGE.zip $STEM.latest.zip
50+
# [[ ! -z $BRANCH ]] && ln -sf $FQ_PACKAGE.zip $STEM.$BRANCH.zip
4251

43-
export RELEASE_ARTIFACTS="$RELEASE_ARTIFACTS $PACK_FNAME $RAMP_STEM.latest.zip"
44-
export DEV_ARTIFACTS="$DEV_ARTIFACTS $RAMP_STEM.${BRANCH}.zip $RAMP_STEM.${GIT_VER}.zip"
52+
export RELEASE_ARTIFACTS="$RELEASE_ARTIFACTS $STEM.$VERSION.zip $RAMP_STEM.latest.zip"
53+
export DEV_ARTIFACTS="$DEV_ARTIFACTS $FQ_PACKAGE.zip $STEM.$BRANCH.zip"
54+
# [[ ! -z $BRANCH ]] && export DEV_ARTIFACTS="$DEV_ARTIFACTS $DEPS.$BRANCH.tgz"
4555

4656
echo "Done."
4757
}
@@ -50,35 +60,37 @@ pack_deps() {
5060
echo "Building dependencies file ..."
5161

5262
cd $ROOT
53-
PACK_FNAME=$(basename `cat $BINDIR/PACKAGE`)
54-
ARCHOSVER=$(echo "$PACK_FNAME" | sed -e "s/^[^.]*\.\([^.]*\..*\)\.zip/\1/")
63+
5564
VERSION=$(cat $BINDIR/VERSION)
65+
local VARIANT=$OS-$OSNICK-$ARCH.$GIT_VER
66+
67+
local STEM=$PRODUCT-$DEVICE-dependencies.$OS-$OSNICK-$ARCH
68+
local FQ_VER=$GIT_VER
69+
local FQ_PACKAGE=$STEM.$FQ_VER
70+
5671
cd $INSTALL_DIR
72+
local BACKENDS_DIR=$PRODUCT-$DEVICE-$VERSION
5773
if [[ ! -h backends ]]; then
5874
[[ ! -d backends ]] && { echo "install-$DEVICE/backend directory not found." ; exit 1; }
59-
rm -rf $PRODUCT-$DEVICE-$VERSION
60-
mkdir $PRODUCT-$DEVICE-$VERSION
75+
rm -rf $BACKENDS_DIR
76+
mkdir $BACKENDS_DIR
6177

62-
mv backends $PRODUCT-$DEVICE-$VERSION
63-
ln -s $PRODUCT-$DEVICE-$VERSION/backends backends
78+
mv backends $BACKENDS_DIR
79+
ln -s $BACKENDS_DIR/backends backends
6480
fi
65-
find $PRODUCT-$DEVICE-$VERSION -name "*.so*" | xargs tar pczf $BINDIR/$PRODUCT-$DEVICE-dependencies.$ARCHOSVER.tgz
66-
export DEPS_FNAME="$PRODUCT-$DEVICE-dependencies.$ARCHOSVER.tgz"
81+
find $BACKENDS_DIR -name "*.so*" | xargs tar pczf $BINDIR/$FQ_PACKAGE.tgz
6782

6883
cd "$BINDIR"
69-
DEPS_STEM=$PRODUCT-$DEVICE-dependencies.$OSARCH
70-
ln -sf $DEPS_FNAME $DEPS_STEM.latest.tgz
71-
[[ ! -z $BRANCH ]] && ln -sf $DEPS_FNAME $DEPS_STEM.${BRANCH}.tgz
72-
ln -sf $DEPS_FNAME $DEPS_STEM.${GIT_VER}.tgz
84+
ln -sf $FQ_PACKAGE.tgz $STEM.$VERSION.tgz
85+
ln -sf $FQ_PACKAGE.tgz $STEM.latest.tgz
86+
# [[ ! -z $BRANCH ]] && ln -sf $FQ_PACKAGE.tgz $STEM.$BRANCH.tgz
7387

74-
export RELEASE_ARTIFACTS="$RELEASE_ARTIFACTS $DEPS_FNAME $DEPS_STEM.latest.tgz"
75-
export DEV_ARTIFACTS="$DEV_ARTIFACTS $DEPS_STEM.${BRANCH}.tgz $DEPS_STEM.${GIT_VER}.tgz"
88+
export RELEASE_ARTIFACTS="$RELEASE_ARTIFACTS $STEM.$VERSION.tgz $STEM.latest.tgz"
89+
export DEV_ARTIFACTS="$DEV_ARTIFACTS $FQ_PACKAGE.tgz"
90+
# [[ ! -z $BRANCH ]] && export DEV_ARTIFACTS="$DEV_ARTIFACTS $STEM.$BRANCH.tgz"
7691

7792
echo "Done."
78-
}
79-
80-
set -e
81-
[[ $VERBOSE == 1 ]] && set -x
93+
}
8294

8395
if [[ $1 == --help || $1 == help ]]; then
8496
cat <<-END
@@ -103,16 +115,20 @@ PRODUCT_LIB=$PRODUCT.so
103115

104116
GIT_VER=""
105117
if [[ -d $ROOT/.git ]]; then
106-
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
118+
if [[ ! -z $BRANCH ]]; then
119+
GIT_BRANCH="$BRANCH"
120+
else
121+
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
122+
fi
107123
GIT_COMMIT=$(git describe --always --abbrev=7 --dirty="+")
108124
GIT_VER="${GIT_BRANCH}-${GIT_COMMIT}"
109-
fi
110-
111-
OSX=""
112-
if [[ $($HERE/readies/bin/platform --os) == macosx ]]; then
113-
# macOS: ramp is installed here
114-
OSX=1
115-
export PATH=$PATH:$HOME/Library/Python/2.7/bin
125+
else
126+
if [[ ! -z $BRANCH ]]; then
127+
GIT_BRANCH="$BRANCH"
128+
else
129+
GIT_BRANCH=unknown
130+
fi
131+
GIT_VER="$GIT_BRANCH"
116132
fi
117133

118134
if ! command -v redis-server > /dev/null; then
@@ -126,7 +142,7 @@ pack_ramp
126142
if [[ ! -z $INTO ]]; then
127143
mkdir -p $INTO
128144
cd $INTO
129-
mkdir release branch
145+
mkdir -p release branch
130146

131147
for f in $RELEASE_ARTIFACTS; do
132148
[[ -f $BINDIR/$f ]] && cp $BINDIR/$f release/

opt/readies/bin/platform

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ if ret == "":
4949
else:
5050
nick = ""
5151
ret = os + " " + platform.os_ver + nick + " " + platform.arch
52-
print(ret.strip())
52+
if ret.strip() != "":
53+
print(ret.strip())

opt/readies/paella/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def __setattr__(self,name,value):
2626

2727
#----------------------------------------------------------------------------------------------
2828

29-
Global.bb = bb
29+
Global.BB = bb
3030
Global.eprint = eprint
3131
Global.fatal = fatal
3232
Global.cwd = cwd

opt/readies/paella/debug.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44
#----------------------------------------------------------------------------------------------
55

6-
if 'PYDEBUG' in os.environ:
6+
pydebug = os.environ.get('PYDEBUG', '')
7+
if pydebug == '1' or pydebug == 'pudb':
78
try:
89
from pudb import set_trace as bb
910
except ImportError:
1011
from pdb import set_trace as bb
12+
elif pydebug == 'pdb':
13+
from pdb import set_trace as bb
1114
else:
1215
def bb(): pass
1316

opt/readies/paella/files.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
from contextlib import contextmanager
33
import os
44
import os.path
5-
import urllib.request
65
import tempfile
6+
try:
7+
from urllib2 import urlopen
8+
except:
9+
from urllib.request import urlopen
710

811
#----------------------------------------------------------------------------------------------
912

@@ -38,7 +41,10 @@ def wget(url, dest="", tempdir=False):
3841
dest = tempfilepath()
3942
elif tempdir:
4043
dest = os.path.join('/tmp', dest)
41-
urllib.request.urlretrieve(url, dest)
44+
ufile = urlopen(url)
45+
data = ufile.read()
46+
with open(dest, "wb") as file:
47+
file.write(data)
4248
return os.path.abspath(dest)
4349

4450
#----------------------------------------------------------------------------------------------
@@ -59,3 +65,6 @@ def mkdir_p(dir):
5965
os.makedirs(dir, exist_ok=True)
6066

6167
#----------------------------------------------------------------------------------------------
68+
69+
def relpath(dir, rel):
70+
return os.path.abspath(os.path.join(dir, rel))

0 commit comments

Comments
 (0)