summaryrefslogtreecommitdiff
path: root/manaplus.sh
blob: 6b1095dee8b8f99eb012e6794aa7e236aaec26b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env bash

dll_check(){
    # check all but windows own dll's
    windlls=("wldap32.dll opengl32.dll gdi32.dll advapi32.dll kernel32.dll msvcrt.dll wsock32.dll shell32.dll crypt32.dll ws2_32.dll user32.dll iphlpapi.dll winmm.dll")
    striped=${dlls#"Missing dll files: "};
    dlls=`tr -d ',' <<< $striped`
    err=""
    for dll in $dlls
    do
        [[ ! ${windlls[*]} =~ $dll ]] && err="$err $dll";
    done
    [[ "$err" != "" ]] && echo "ERR: missing: $err" && exit 1 || return;
}

# CI_COMMIT_TAG="v2.1.1.1"  # <- test version
# CI_COMMIT_TAG="s20210101" # <- test snapshot2
get_version_by_tag(){
    latest_tag=`git -c 'versionsort.suffix=-' \
        ls-remote --exit-code --refs --sort='version:refname' --tags ${MP_REPOSITORY} '*.*.*' \
        | tail --lines=1 \
        | cut --delimiter='/' --fields=3`
    IFS='.' read -r -a array <<< "$CI_COMMIT_TAG" # splits commit tag in array
    [ "${CI_COMMIT_TAG:0:1}" == "v" ] \
        && V="${array[0]:1}.${array[1]}.${array[2]}.${array[3]}" # add dots to version
    [ "${CI_COMMIT_TAG:0:1}" == "s" ] \
        && V="snapshot-${CI_COMMIT_TAG:1}" # just replace 's' with 'snapshot-'
    [ "${CI_COMMIT_TAG}"     == ""  ] \
        && echo "!WARN: no tag set, using test-0.0.0.1!" \
        && echo "latest tag: '${latest_tag}' on '${MP_REPOSITORY}' master" \
        && V="test-0.0.0.1" # test versions, (not running from tags)
    export PRODUCT_VERSION=$V
    export VERSION=$V
    echo "PRODUCT_VERSION, VERSION = '$V'"
}

make_portable(){
    dll_dir=$1 # handled different, needs to get cp before all others! (to /tmp/Mana/%)
    root_dir="/manaplus/"
    files_list=("build/tmp/src/manaplusd.exe build/tmp/src/manaplus.exe packaging/windows/portable.xml data/ docs/ AUTHORS COPYING NEWS README.txt") # build/tmp/src/gdb.exe (already included in dll_dir)
    tmp_dir="/tmp/Mana/"
    debug_files="${tmp_dir}manaplusd.exe ${tmp_dir}gdb.exe"
    mkdir -p $tmp_dir
    cp ${dll_dir}* $tmp_dir

    files=`tr -d ',' <<< $files_list`
    for file in $files
    do
        cp -r $root_dir$file $tmp_dir
    done

    cd ${root_dir}packaging/windows/ && ./make-translations.sh
    cp -r $root_dir/translations/ ${tmp_dir}
    cd /tmp
    zip -r debug-manaplus-$VERSION.zip Mana/
    sha256sum debug-manaplus-$VERSION.zip > debug-sha256checksum.txt
    rm -rf $debug_files
    zip -r manaplus-$VERSION.zip Mana/
    sha256sum manaplus-$VERSION.zip > sha256checksum.txt

}


cp /mxe/usr/i686-w64-mingw32.shared/bin/gdb.exe /libs/dll/
cp /manaplus/tools/ci/scripts/winvars.sh manaplus/build/
cd /manaplus/

patch_file="../manaplus.patch"
if [[ -f $patch_file ]]; then
    git apply $patch_file || exit 1
fi

cd /manaplus/build/
get_version_by_tag
./winmake --enable-commandlinepassword || exit 1
cp /manaplus/build/tmp/src/manaplus.exe /manaplus/build/tmp/src/manaplusd.exe
cp /mxe/usr/i686-w64-mingw32.shared/bin/gdb.exe /manaplus/build/tmp/src/
strip /manaplus/build/tmp/src/manaplus.exe
# profiler (needs another build)

dll_dir="/libs/dll/"

dlls=`/mxe/tools/copydlldeps.py -C/manaplus/build/tmp/src -L/mxe/usr/i686-w64-mingw32.shared/bin/ ${dll_dir}`
dll_check $dlls

make_portable $dll_dir

#./packwin || exit 1 # disabled (not required @mana-launcher)

# artifacts
#cp /manaplus/packaging/windows/manaplus-*.exe ${CI_PROJECT_DIR}/build/ || exit 1
cp /tmp/*.zip ${CI_PROJECT_DIR}/build/ || exit 1 # copy portable client zip files
cp /tmp/*.txt ${CI_PROJECT_DIR}/build/ || exit 1 # copy sha256checksum files
# TODO: checksum [zip->sha->{version?}.sha] ${CI_PROJECT_DIR}/build/
cp /manaplus/build/tmp/config.log ${CI_PROJECT_DIR}/logs/ || true
cp /manaplus/build/make2.log ${CI_PROJECT_DIR}/logs/ || true