Skip to content

Commit

Permalink
Build Wine from sources
Browse files Browse the repository at this point in the history
  • Loading branch information
desbma committed Feb 25, 2018
1 parent 8b0d71f commit a4d78cd
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 20 deletions.
10 changes: 5 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ install:
- "pip install -r requirements.txt"
- "pip install coveralls"
- "sudo apt-get -V install optipng jpegoptim"
- "if [ $WINDOWS -eq 1 ]; then sudo apt-get -V install wine p7zip-full; fi"
- "if [ $WINDOWS -eq 1 ]; then sudo apt-get -V install p7zip-full; fi"
script:
- "travis_retry coverage run --source=sacad setup.py test"
- "if [ $WINDOWS -eq 1 ]; then pushd win && TEST_DL_CACHE_DIR=$CI_CACHE_DIR/test DOWNLOAD_DIR=$CI_CACHE_DIR/build WINEARCH=win32 make test && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && TEST_DL_CACHE_DIR=$CI_CACHE_DIR/test DOWNLOAD_DIR=$CI_CACHE_DIR/build WINEARCH=win64 make test && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && TEST_DL_CACHE_DIR=$CI_CACHE_DIR/test DOWNLOAD_DIR=$CI_CACHE_DIR/build WINE_BUILD_DIR=$CI_CACHE_DIR/wine WINEARCH=win32 make test && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && TEST_DL_CACHE_DIR=$CI_CACHE_DIR/test DOWNLOAD_DIR=$CI_CACHE_DIR/build WINE_BUILD_DIR=$CI_CACHE_DIR/wine WINEARCH=win64 make test && popd; fi"
after_success:
- "coveralls"
before_deploy:
- "if [ $PYPI_DEPLOY -eq 1 ]; then sudo apt-get -V install pandoc; fi"
- "if [ $PYPI_DEPLOY -eq 1 ]; then pip install pypandoc; fi"
- "if [ $PYPI_DEPLOY -eq 1 ]; then pip install restructuredtext_lint && t=$(mktemp --suffix=.rst) && pandoc README.md -o $t && rst-lint $t; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && WINEARCH=win32 make all && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && WINEARCH=win64 make all && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && WINE_BUILD_DIR=$CI_CACHE_DIR/wine WINEARCH=win32 make all && popd; fi"
- "if [ $WINDOWS -eq 1 ]; then pushd win && WINE_BUILD_DIR=$CI_CACHE_DIR/wine WINEARCH=win64 make all && popd; fi"
deploy:
- provider: releases
api_key:
Expand Down
61 changes: 46 additions & 15 deletions win/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,19 @@ WINEARCH ?= win32
PYTHON_VERSION := 3.4.4
PYTHON_VERSION_MAJOR := $(word 1,$(subst ., ,${PYTHON_VERSION})).$(word 2,$(subst ., ,${PYTHON_VERSION}))
PYTHON_VERSION_SHORT := $(subst .,,${PYTHON_VERSION_MAJOR})
WINE_VERSION := 2.0.4
WINE_VERSION_MAJOR := $(word 1,$(subst ., ,${WINE_VERSION})).$(word 2,$(subst ., ,${WINE_VERSION}))
CXFREEZE_VERSION := 5.0.2
LXML_VERSION := 4.0.0

# dirs
DOWNLOAD_DIR ?= dl
WINE_DIR := /tmp/$(subst /,_,${CURDIR})/wine-${WINEARCH}
TEST_LIB_DIR := ${WINE_DIR}/drive_c/music
OUTPUT_DIR := sacad-${WINEARCH}
WINE_BUILD_DIR ?= ${CURDIR}/wine-build

# installers
DOWNLOAD_DIR ?= dl
PYTHON_INSTALLER-win32 := ${DOWNLOAD_DIR}/python-${PYTHON_VERSION}.msi
PYTHON_INSTALLER-win64 := ${DOWNLOAD_DIR}/python-${PYTHON_VERSION}.amd64.msi
PYTHON_INSTALLER := ${PYTHON_INSTALLER-${WINEARCH}}
Expand All @@ -19,22 +27,22 @@ LXML_WHEEL-win32 := ${DOWNLOAD_DIR}/lxml-${LXML_VERSION}-cp${PYTHON_VERSI
LXML_WHEEL-win64 := ${DOWNLOAD_DIR}/lxml-${LXML_VERSION}-cp${PYTHON_VERSION_SHORT}-none-win_amd64.whl
LXML_WHEEL := ${LXML_WHEEL-${WINEARCH}}
7ZIP_INSTALLER := ${DOWNLOAD_DIR}/7z938.msi

# env
CURL := curl -s -f -L -m 600 --connect-timeout 30 --retry 10 --retry-max-time 5
WINE_DIR := /tmp/$(subst /,_,${CURDIR})/wine-${WINEARCH}
WINE := mkdir -p $(dir ${WINE_DIR}) && WINEPREFIX=${WINE_DIR} WINEARCH=${WINEARCH} WINEDLLOVERRIDES="mscoree,mshtml=" WINEDEBUG=-all wine
WINE_ARCHIVE := ${DOWNLOAD_DIR}/wine-${WINE_VERSION}.tar.xz

# installed files
PYTHON_INSTALLED := ${WINE_DIR}/drive_c/Python${PYTHON_VERSION_SHORT}/python.exe
CXFREEZE_INSTALLED := ${WINE_DIR}/drive_c/Python${PYTHON_VERSION_SHORT}/Scripts/cxfreeze
PIP_INSTALLED := ${WINE_DIR}/drive_c/Python${PYTHON_VERSION_SHORT}/Scripts/pip.exe
LXML_INSTALLED := ${WINE_DIR}/drive_c/Python${PYTHON_VERSION_SHORT}/Lib/site-packages/lxml/__init__.py
7ZIP_INSTALLED := ${WINE_DIR}/drive_c/7-Zip/7z.sfx
WINE_BINARY-win32 := ${WINE_BUILD_DIR}/${WINEARCH}/loader/wine
WINE_BINARY-win64 := ${WINE_BUILD_DIR}/${WINEARCH}/loader/wine64
WINE_BINARY := ${WINE_BINARY-${WINEARCH}}

# temp dirs
TEST_LIB_DIR := ${WINE_DIR}/drive_c/music
OUTPUT_DIR := sacad-${WINEARCH}
# env
CURL := curl -s -f -L -m 600 --connect-timeout 30 --retry 10 --retry-max-time 5
UNTAR := tar -x --touch
WINE := mkdir -p $(dir ${WINE_DIR}) && WINEPREFIX=${WINE_DIR} WINEARCH=${WINEARCH} WINEDLLOVERRIDES="mscoree,mshtml=" WINEDEBUG=-all ${WINE_BINARY}


.PHONY: all test test_ut test_freeze fclean clean
Expand Down Expand Up @@ -115,32 +123,50 @@ ${TEST_LIB_DIR}/test.png: ${TEST_LIB_DIR}/sample.ogg ${OUTPUT_DIR}/sacad_r.exe $
# Installations
#

.requirements: ${PIP_INSTALLED}
.requirements: ${PIP_INSTALLED} ${WINE_BINARY}
cd .. && ${WINE} ${PYTHON_INSTALLED} -m pip -qqq install -r requirements.txt
touch $@

${PYTHON_INSTALLED}: ${PYTHON_INSTALLER}
${PYTHON_INSTALLED}: ${PYTHON_INSTALLER} ${WINE_BINARY}
${WINE} msiexec /i $< /qb > /dev/null 2> /dev/null
patch -s ${WINE_DIR}/drive_c/Python${PYTHON_VERSION_SHORT}/Lib/ssl.py < fix-issue26313-python34.patch
touch $@

${CXFREEZE_INSTALLED}: ${CXFREEZE_WHEEL} ${PIP_INSTALLED} ${PYTHON_INSTALLED}
${CXFREEZE_INSTALLED}: ${CXFREEZE_WHEEL} ${PIP_INSTALLED} ${PYTHON_INSTALLED} ${WINE_BINARY}
${WINE} ${PYTHON_INSTALLED} -m pip -qqq install $<
touch $@

${PIP_INSTALLED}: ${PYTHON_INSTALLED}
${PIP_INSTALLED}: ${PYTHON_INSTALLED} ${WINE_BINARY}
${WINE} ${PYTHON_INSTALLED} -m pip -qqq install -U pip
touch $@

${LXML_INSTALLED}: ${LXML_WHEEL} ${PIP_INSTALLED} ${PYTHON_INSTALLED}
${LXML_INSTALLED}: ${LXML_WHEEL} ${PIP_INSTALLED} ${PYTHON_INSTALLED} ${WINE_BINARY}
${WINE} ${PYTHON_INSTALLED} -m pip -qqq install $<
touch $@

${7ZIP_INSTALLED}: ${7ZIP_INSTALLER}
${7ZIP_INSTALLED}: ${7ZIP_INSTALLER} ${WINE_BINARY}
${WINE} msiexec /i $< /qb INSTALLDIR='c:\7-Zip'
touch $@


#
# Wine
#

${WINE_BINARY}: ${WINE_BUILD_DIR}/${WINEARCH}/Makefile
$(MAKE) -C $(dir $<)

${WINE_BUILD_DIR}/win32/Makefile: ${WINE_BUILD_DIR}/win32/configure
cd $(dir $@) && ./configure --disable-tests

${WINE_BUILD_DIR}/win64/Makefile: ${WINE_BUILD_DIR}/win64/configure
cd $(dir $@) && ./configure --disable-tests --enable-win64

${WINE_BUILD_DIR}/${WINEARCH}/configure: ${WINE_ARCHIVE}
mkdir -p $(dir $@)
${UNTAR} --strip-components=1 -Jf $< -C $(dir $@)


#
# Downloads
#
Expand All @@ -149,6 +175,10 @@ ${PYTHON_INSTALLER}:
mkdir -p $(dir $@)
${CURL} https://www.python.org/ftp/python/${PYTHON_VERSION}/$(notdir $@) > $@

${WINE_ARCHIVE}:
mkdir -p $(dir $@)
${CURL} ftp://ftp.winehq.org/pub/wine/source/${WINE_VERSION_MAJOR}/$(notdir $@) > $@

${CXFREEZE_WHEEL-win32}:
mkdir -p $(dir $@)
${CURL} https://pypi.python.org/packages/67/87/7b376edca85e4cb24c06d7abde7c4b47c6369b2dadb3856ba8d7b6201106/$(notdir $@) > $@
Expand Down Expand Up @@ -185,4 +215,5 @@ fclean:
-rm -f sacad_${WINEARCH}.7z sacad_${WINEARCH}.zip sacad_${WINEARCH}.exe

clean: fclean
-rm -Rf ${WINE_BUILD_DIR}/${WINEARCH}
-rm -Rf ${DOWNLOAD_DIR}

0 comments on commit a4d78cd

Please sign in to comment.