Skip to content

Commit b839755

Browse files
committed
Fix Python with Vim before Vim 7.3g, test it with vim71
1 parent 3706f14 commit b839755

File tree

3 files changed

+52
-25
lines changed

3 files changed

+52
-25
lines changed

Diff for: example/Dockerfile

+1-1
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 -build \
3+
RUN install_vim -tag v7.1 -name vim71 -py2 -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 \

Diff for: example/Makefile

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

Diff for: scripts/install_vim.sh

+44-24
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,41 @@ EOF
7171

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

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

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

0 commit comments

Comments
 (0)