Skip to content

Commit 76f56f3

Browse files
committed
Fix Python with Vim before Vim 7.3g, test it with vim71
1 parent f29bdf5 commit 76f56f3

File tree

3 files changed

+52
-25
lines changed

3 files changed

+52
-25
lines changed

example/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM testbed/vim
22

3-
RUN install_vim -tag v7.1 -name vim71 -prebuild_script 'echo "#define FEAT_PROFILE" >> src/feature.h' -build \
3+
RUN install_vim -tag v7.1 -name vim71 -py2 -prebuild_script 'echo "#define FEAT_PROFILE" >> src/feature.h' -build \
44
-tag v7.3.429 -name vim73 -py -build \
55
-tag v7.4.052 -name vim74-trusty -build \
66
-tag master -py2 -py3 -ruby -lua -build \

example/Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ test:
3838
fi; \
3939
$(RM) $(TEMPDIR)/py*; \
4040
done; \
41+
$(DOCKER) vim71 -u NONE \
42+
"+py import sys; open('$(TEMPDIR)/py2', 'w').write(str(sys.version_info[0]))" \
43+
'+q'; \
44+
if [ "$$(<$(TEMPDIR)/py2)" != "2" ]; then \
45+
echo "Failed to get Python version from vim71 (2)." >&2; exit 1; \
46+
fi; \
47+
$(RM) $(TEMPDIR)/py2; \
4148
for vim in "neovim-master --headless" vim-master; do \
4249
$(DOCKER) $${vim} -u NONE \
4350
"+ruby open('$(TEMPDIR)/ruby', 'w') { |f| f << 'ruby was here' }" \

scripts/install_vim.sh

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,41 @@ EOF
7272

7373
apk add --virtual vim-build curl gcc libc-dev make
7474

75+
cd /vim
76+
77+
if [ -d "$INSTALL_PREFIX" ]; then
78+
echo "WARNING: $INSTALL_PREFIX exists already. Overwriting."
79+
fi
80+
81+
BUILD_DIR="${FLAVOR}-${repo}-${tag}"
82+
if [ ! -d "$BUILD_DIR" ]; then
83+
mkdir -p "$BUILD_DIR"
84+
cd "$BUILD_DIR"
85+
# The git package adds about 200MB+ to the image. So, no cloning.
86+
url="https://github.com/$repo/archive/${tag}.tar.gz"
87+
echo "Downloading $repo:$tag from $url"
88+
curl --retry 3 -SL "$url" | tar zx --strip-components=1
89+
else
90+
cd "$BUILD_DIR"
91+
fi
92+
93+
vim_has_dynamic_python() {
94+
# Added in b744b2f (released as Vim 7.3g).
95+
if [ -e src/configure.ac ]; then
96+
return 1
97+
fi
98+
grep -q -e '--enable-pythoninterp.*OPTS=.*dynamic' src/configure.in
99+
}
100+
75101
if [ -n "$PYTHON2" ]; then
76102
apk add --virtual vim-build python-dev
77103
if [ "$FLAVOR" = vim ]; then
78-
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-pythoninterp=dynamic"
104+
if vim_has_dynamic_python; then
105+
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-pythoninterp=dynamic"
106+
else
107+
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-pythoninterp"
108+
apk add python
109+
fi
79110
else
80111
apk add --virtual vim-build py2-pip
81112
apk add python
@@ -86,7 +117,15 @@ EOF
86117
if [ -n "$PYTHON3" ]; then
87118
apk add --virtual vim-build python3-dev
88119
if [ "$FLAVOR" = vim ]; then
89-
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-python3interp=dynamic"
120+
if ! [ -e src/if_python3.c ]; then
121+
echo 'WARNING: Python 3 support seems to be missing in this version?!'
122+
fi
123+
if vim_has_dynamic_python; then
124+
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-python3interp=dynamic"
125+
else
126+
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS --enable-python3interp"
127+
apk add python3
128+
fi
90129
else
91130
apk add python3
92131
pip3 install neovim
@@ -114,31 +153,12 @@ EOF
114153
fi
115154
fi
116155

117-
if [ "$FLAVOR" = vim ] && [ -n "$CONFIGURE_OPTIONS" ]; then
118-
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS $CONFIGURE_OPTIONS"
119-
fi
120-
121-
cd /vim
122-
123-
if [ -d "$INSTALL_PREFIX" ]; then
124-
echo "WARNING: $INSTALL_PREFIX exists already. Overwriting."
125-
fi
126-
127-
BUILD_DIR="${FLAVOR}-${repo}-${tag}"
128-
if [ ! -d "$BUILD_DIR" ]; then
129-
mkdir -p "$BUILD_DIR"
130-
cd "$BUILD_DIR"
131-
# The git package adds about 200MB+ to the image. So, no cloning.
132-
url="https://github.com/$repo/archive/${tag}.tar.gz"
133-
echo "Downloading $repo:$tag from $url"
134-
curl --retry 3 -SL "$url" | tar zx --strip-components=1
135-
else
136-
cd "$BUILD_DIR"
137-
fi
138-
139156
if [ "$FLAVOR" = vim ]; then
140157
apk add --virtual vim-build ncurses-dev
141158
apk add ncurses
159+
if [ -n "$CONFIGURE_OPTIONS" ]; then
160+
VIM_CONFIG_ARGS="$VIM_CONFIG_ARGS $CONFIGURE_OPTIONS"
161+
fi
142162
elif [ "$FLAVOR" = neovim ]; then
143163
# Some of them will be installed already, but it is a good reference for
144164
# what is required.

0 commit comments

Comments
 (0)