aboutsummaryrefslogtreecommitdiff
path: root/.gitlab-ci.d/windows.yml
blob: f889a468b57e9c7adf2f6a1a1747527ccb6e0794 (plain)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.shared_msys2_builder:
  extends: .base_job_template
  tags:
  - shared-windows
  - windows
  - windows-1809
  cache:
    key: "${CI_JOB_NAME}-cache"
    paths:
      - ${CI_PROJECT_DIR}/msys64/var/cache
  needs: []
  stage: build
  timeout: 80m
  artifacts:
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
    expire_in: 7 days
    paths:
      - build/meson-logs/testlog.txt
    reports:
      junit: "build/meson-logs/testlog.junit.xml"
  before_script:
  - If ( !(Test-Path -Path msys64\var\cache ) ) {
      mkdir msys64\var\cache
    }
  - If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
      Invoke-WebRequest
      "https://github.com/msys2/msys2-installer/releases/download/2022-06-03/msys2-base-x86_64-20220603.sfx.exe"
      -outfile "msys64\var\cache\msys2.exe"
    }
  - msys64\var\cache\msys2.exe -y
  - ((Get-Content -path .\msys64\etc\\post-install\\07-pacman-key.post -Raw)
      -replace '--refresh-keys', '--version') |
     Set-Content -Path ${CI_PROJECT_DIR}\msys64\etc\\post-install\\07-pacman-key.post
  - .\msys64\usr\bin\bash -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
  - .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu'  # Core update
  - .\msys64\usr\bin\bash -lc 'pacman --noconfirm -Syuu'  # Normal update
  - taskkill /F /FI "MODULES eq msys-2.0.dll"

msys2-64bit:
  extends: .shared_msys2_builder
  script:
  - .\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm --needed
      bison diffutils flex
      git grep make sed
      mingw-w64-x86_64-capstone
      mingw-w64-x86_64-curl
      mingw-w64-x86_64-cyrus-sasl
      mingw-w64-x86_64-dtc
      mingw-w64-x86_64-gcc
      mingw-w64-x86_64-glib2
      mingw-w64-x86_64-gnutls
      mingw-w64-x86_64-gtk3
      mingw-w64-x86_64-libgcrypt
      mingw-w64-x86_64-libjpeg-turbo
      mingw-w64-x86_64-libnfs
      mingw-w64-x86_64-libpng
      mingw-w64-x86_64-libssh
      mingw-w64-x86_64-libtasn1
      mingw-w64-x86_64-libusb
      mingw-w64-x86_64-lzo2
      mingw-w64-x86_64-nettle
      mingw-w64-x86_64-ninja
      mingw-w64-x86_64-pixman
      mingw-w64-x86_64-pkgconf
      mingw-w64-x86_64-python
      mingw-w64-x86_64-SDL2
      mingw-w64-x86_64-SDL2_image
      mingw-w64-x86_64-snappy
      mingw-w64-x86_64-spice
      mingw-w64-x86_64-usbredir
      mingw-w64-x86_64-zstd "
  - $env:CHERE_INVOKING = 'yes'  # Preserve the current working directory
  - $env:MSYSTEM = 'MINGW64'     # Start a 64-bit MinGW environment
  - $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
  - mkdir build
  - cd build
  # Note: do not remove "--without-default-devices"!
  # commit 9f8e6cad65a6 ("gitlab-ci: Speed up the msys2-64bit job by using --without-default-devices"
  # changed to compile QEMU with the --without-default-devices switch
  # for the msys2 64-bit job, due to the build could not complete within
  # the project timeout.
  - ..\msys64\usr\bin\bash -lc '../configure --target-list=x86_64-softmmu
      --without-default-devices --enable-fdt=system'
  - ..\msys64\usr\bin\bash -lc 'make'
  # qTests don't run successfully with "--without-default-devices",
  # so let's exclude the qtests from CI for now.
  - ..\msys64\usr\bin\bash -lc 'make check MTESTARGS=\"--no-suite qtest\" || { cat meson-logs/testlog.txt; exit 1; } ;'

msys2-32bit:
  extends: .shared_msys2_builder
  script:
  - .\msys64\usr\bin\bash -lc "pacman -Sy --noconfirm --needed
      bison diffutils flex
      git grep make sed
      mingw-w64-i686-capstone
      mingw-w64-i686-curl
      mingw-w64-i686-cyrus-sasl
      mingw-w64-i686-dtc
      mingw-w64-i686-gcc
      mingw-w64-i686-glib2
      mingw-w64-i686-gnutls
      mingw-w64-i686-gtk3
      mingw-w64-i686-libgcrypt
      mingw-w64-i686-libjpeg-turbo
      mingw-w64-i686-libnfs
      mingw-w64-i686-libpng
      mingw-w64-i686-libssh
      mingw-w64-i686-libtasn1
      mingw-w64-i686-libusb
      mingw-w64-i686-lzo2
      mingw-w64-i686-nettle
      mingw-w64-i686-ninja
      mingw-w64-i686-pixman
      mingw-w64-i686-pkgconf
      mingw-w64-i686-python
      mingw-w64-i686-SDL2
      mingw-w64-i686-SDL2_image
      mingw-w64-i686-snappy
      mingw-w64-i686-spice
      mingw-w64-i686-usbredir
      mingw-w64-i686-zstd "
  - $env:CHERE_INVOKING = 'yes'  # Preserve the current working directory
  - $env:MSYSTEM = 'MINGW32'     # Start a 32-bit MinGW environment
  - $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
  - mkdir build
  - cd build
  - ..\msys64\usr\bin\bash -lc '../configure --target-list=ppc64-softmmu
                                --enable-fdt=system'
  - ..\msys64\usr\bin\bash -lc 'make'
  - ..\msys64\usr\bin\bash -lc 'make check MTESTARGS=\"--no-suite qtest\" ||
                                { cat meson-logs/testlog.txt; exit 1; }'