Skip to content

Commit 364b065

Browse files
Fetch the Win32 prebuilts via the Bash script and cygwin
1 parent 3e54085 commit 364b065

3 files changed

Lines changed: 36 additions & 12 deletions

File tree

prebuilt/fetch-libraries.sh

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ LIBS_linux=( OpenSSL Curl ICU )
2121
SUBPLATFORMS_ios=( iPhoneSimulator5.1 iPhoneSimulator6.1 iPhoneSimulator7.1 iPhoneSimulator8.2 iPhoneSimulator8.3 iPhoneOS8.2 iPhoneOS8.3 )
2222

2323
# Fetch settings
24-
FETCH_DIR=`pwd`/fetched
25-
EXTRACT_DIR=`pwd`
24+
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
25+
FETCH_DIR="${SCRIPT_DIR}/fetched"
26+
EXTRACT_DIR="${SCRIPT_DIR}"
2627
URL="http://downloads.livecode.com/prebuilts"
2728

2829
mkdir -p "${FETCH_DIR}"
@@ -44,11 +45,18 @@ function fetchLibrary {
4445

4546
if [ ! -f "${FETCH_DIR}/${NAME}.tar.bz2" ] ; then
4647
echo "Fetching library: ${NAME}"
47-
curl --silent "${URL}/${NAME}.tar.bz2" -o "${FETCH_DIR}/${NAME}.tar.bz2"
48-
#cp "`pwd`/packaged/${NAME}.tar.bz2" "${FETCH_DIR}/${NAME}.tar.bz2"
48+
49+
# Download using an HTTP client of some variety
50+
if $(which curl 2>/dev/null) ; then
51+
curl --silent "${URL}/${NAME}.tar.bz2" -o "${FETCH_DIR}/${NAME}.tar.bz2"
52+
else
53+
# Perl as a last resort (useful for Cygwin)
54+
perl -MLWP::Simple -e "getstore('${URL}/${NAME}.tar.bz2', '${FETCH_DIR}/${NAME}.tar.bz2') == 200 or exit 1"
55+
fi
56+
4957
if [ $? -ne 0 ] ; then
5058
echo " failed"
51-
exit
59+
exit 1
5260
fi
5361

5462
echo "Extracting library: ${NAME}"
@@ -59,7 +67,7 @@ function fetchLibrary {
5967
cd "${DIR}"
6068
if [ "${RESULT}" -ne 0 ] ; then
6169
echo " failed"
62-
exit
70+
exit 1
6371
fi
6472
else
6573
echo "Already fetched: ${NAME}"
@@ -72,9 +80,10 @@ else
7280
SELECTED_PLATFORMS="$@"
7381
fi
7482

75-
echo "$SELECTED_PLATFORMS"
83+
for PLATFORM in ${SELECTED_PLATFORMS} ; do
84+
# Work around an issue where Gyp is too enthusiastic in path-ifying arguments
85+
PLATFORM=$(basename "$PLATFORM")
7686

77-
for PLATFORM in "${SELECTED_PLATFORMS}" ; do
7887
eval "ARCHS=( \${ARCHS_${PLATFORM}[@]} )"
7988
eval "LIBS=( \${LIBS_${PLATFORM}[@]} )"
8089
eval "SUBPLATFORMS=( \${SUBPLATFORMS_${PLATFORM}[@]} )"
@@ -93,7 +102,11 @@ for PLATFORM in "${SELECTED_PLATFORMS}" ; do
93102

94103
# Re-name the "i386" output folder to "x86"
95104
if [ -d "${EXTRACT_DIR}/lib/${PLATFORM}/i386" ] ; then
96-
mv "${EXTRACT_DIR}/lib/${PLATFORM}/i386" "${EXTRACT_DIR}/lib/${PLATFORM}/x86"
105+
if [ ! -d "${EXTRACT_DIR}/lib/${PLATFORM}/x86" ] ; then
106+
mkdir "${EXTRACT_DIR}/lib/${PLATFORM}/x86"
107+
fi
108+
mv "${EXTRACT_DIR}/lib/${PLATFORM}/i386"/* "${EXTRACT_DIR}/lib/${PLATFORM}/x86/"
109+
rmdir "${EXTRACT_DIR}/lib/${PLATFORM}/i386"
97110
fi
98111
done
99112

prebuilt/fetch.gyp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@
178178

179179
'action':
180180
[
181-
'../util/invoke-unix.bat',
181+
'cmd',
182+
'/V',
183+
'/K', '../util/invoke-unix.bat',
182184
'./fetch-libraries.sh',
183185
'win32',
184186
],

util/invoke-unix.bat

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
@echo off
22

33
REM This batch file forwards commands to a Unix-like shell
4+
REM
5+
REM We need to work around what looks to be a MCVS bug: the final parameter is
6+
REM missing the terminating '"' when quoted
7+
8+
@echo Invoking Unix command '%*"'
49

510
IF EXIST C:\Cygwin\bin (
6-
C:\Cygwin\bin\bash.exe -c '%*'
11+
REM Obscure way to get the cmd.exe equivalent to `...` substitution
12+
FOR /F "usebackq tokens=*" %%x IN (`C:\Cygwin\bin\cygpath.exe %CD%`) DO SET cygwin_cd=%%x
13+
FOR /F "usebackq tokens=*" %%x IN (`C:\Cygwin\bin\cygpath.exe %*"`) DO SET cygwin_cmd=!cygwin_cmd! %%x
14+
15+
C:\Cygwin\bin\bash.exe -c 'cd !cygwin_cd! ^&^& !cygwin_cmd!'
716
) ELSE (
8-
invoke-unix-wine.exe %*
17+
invoke-unix-wine.exe %*"
918
)
1019

1120
EXIT %ERRORLEVEL%

0 commit comments

Comments
 (0)