Skip to content

Commit fee7337

Browse files
committed
Merge branch 'release/2.3.0'
2 parents 55e5819 + 03feb1a commit fee7337

40 files changed

+3881
-2547
lines changed

.gitlab-ci.yml

Lines changed: 253 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,8 @@
11
stages:
22
- build
3-
- bundle
4-
5-
.win_build_template: &win_build_definition
6-
stage: build
7-
script:
8-
- if not exist "build" mkdir build
9-
- if not exist "ide" mkdir ide
10-
- cd build
11-
- echo set -x; export PATH=`cygpath -u %QTDIR%/bin`:$PATH; qmake "CONFIG+=bundled" "DEFINES+=MINIZINC_IDE_BUILD=\\\\\\\"\"${CI_PIPELINE_ID}\\\\\\\"\"" ../MiniZincIDE/MiniZincIDE.pro; nmake; cp release/MiniZincIDE.exe ../ide; cd ../ide; windeployqt --no-translations --no-compiler-runtime --no-system-d3d-compiler MiniZincIDE.exe > build.sh
12-
- d2u build.sh
13-
- bash build.sh
14-
artifacts:
15-
paths:
16-
- ide/
3+
- package
174

5+
# ----------- Build MiniZincIDE -----------
186

197
build:linux:
208
stage: build
@@ -26,65 +14,269 @@ build:linux:
2614
- make -j4 INSTALL_ROOT=../ide install; find ../ide/
2715
- cd ..
2816
- linuxdeployqt ide/usr/bin/MiniZincIDE -bundle-non-qt-libs -no-translations -no-copy-copyright-files
29-
tags:
30-
- linux
31-
- docker
17+
# Workaround for: https://github.com/probonopd/linuxdeployqt/issues/35
18+
- "repoquery -l nss-softokn | grep lib64 | grep '.so\\|.chk' | xargs -i cp -R {} ./ide/usr/lib/"
19+
tags: [linux, docker]
3220
artifacts:
33-
paths:
34-
- ide/
35-
cache:
36-
key: "linux_$CI_COMMIT_REF_SLUG"
37-
paths:
38-
- build/
21+
paths: [ide/]
3922

4023
build:osx:
4124
stage: build
42-
variables:
43-
QTDIR: "$OSXQTDIR"
4425
script:
45-
- export PATH="$QTDIR/bin:$PATH"
4626
- mkdir -p build; cd build
4727
- qmake -makefile "CONFIG+=bundled" "DEFINES+=MINIZINC_IDE_BUILD=\\\\\\\"\"${CI_PIPELINE_ID}\\\\\\\"\"" ../MiniZincIDE/MiniZincIDE.pro
4828
- make -j4
4929
- cp -r MiniZincIDE.app ..
50-
tags:
51-
- osx
52-
- cpp
53-
- qt
30+
tags: [osx, cpp, qt]
5431
artifacts:
55-
paths:
56-
- MiniZincIDE.app
57-
cache:
58-
key: "osx_$CI_COMMIT_REF_SLUG"
59-
paths:
60-
- build/
32+
paths: [MiniZincIDE.app]
6133

62-
.build:win32: #DISABLED
63-
<<: *win_build_definition
64-
variables:
65-
QTDIR: "$WINQTDIR"
34+
build:win64:
35+
stage: build
36+
script:
37+
- if not exist "build" mkdir build
38+
- if not exist "ide" mkdir ide
39+
- cd build
40+
- qmake "CONFIG+=bundled" "DEFINES+=MINIZINC_IDE_BUILD=\\\\\\\"\"%CI_PIPELINE_ID%\\\\\\\"\"" ../MiniZincIDE/MiniZincIDE.pro
41+
- nmake
42+
- cp release/MiniZincIDE.exe ../ide
43+
- cd ../ide
44+
- windeployqt --no-translations --no-compiler-runtime --no-system-d3d-compiler MiniZincIDE.exe
45+
tags: [win64, cpp, qt]
46+
artifacts:
47+
paths: [ide/]
48+
49+
# ----------- MiniZinc Packaging -----------
50+
.packaging_setup: &packaging_setup
6651
before_script:
67-
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0/VC/vcvarsall.bat"
68-
tags:
69-
- win32
70-
- cpp
71-
- qt
72-
cache:
73-
key: "win32_$CI_COMMIT_REF_SLUG"
74-
paths:
75-
- build/
52+
### Set the MZNVERSION variable
53+
- "if [ -n \"$CI_COMMIT_TAG\" ]; then MZNVERSION=\"$CI_COMMIT_TAG\"; else MZNVERSION=\"build$CI_PIPELINE_ID\"; fi"
54+
### Choose the MiniZinc compiler branch
55+
- "if [ -n \"$CI_COMMIT_TAG\" ]; then MZNREF=\"$CI_COMMIT_TAG\"; elif [ \"$CI_COMMIT_REF_NAME\" = \"master\" ]; then MZNREF=\"master\"; else MZNREF=\"develop\"; fi"
56+
### Download Dependencies
57+
- curl --silent -o minizinc.zip --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" "https://gitlab.com/api/v4/projects/minizinc%2Fminizinc/jobs/artifacts/$MZNREF/download?job=build:$MZNARCH"
58+
- unzip -q minizinc.zip
59+
- "[ ${DOWNLOAD_SOLVERS:-1} -eq 1 ] && curl --silent -o vendor.zip --location --header \"PRIVATE-TOKEN:$ACCESS_TOKEN\" \"https://gitlab.com/api/v4/projects/minizinc%2Fvendor/jobs/artifacts/master/download?job=bundle:$MZNARCH\" && unzip -q vendor.zip"
60+
- "[ ${DOWNLOAD_GLOBALIZER:-0} -eq 1 ] && curl --silent -o globalizer.zip --location --header \"PRIVATE-TOKEN:$ACCESS_TOKEN\" \"https://gitlab.com/api/v4/projects/minizinc%2FGlobalizer/jobs/artifacts/master/download?job=build:$MZNARCH\" && unzip -q globalizer.zip"
61+
- "[ ${DOWNLOAD_FINDMUS:-0} -eq 1 ] && curl --silent -o findmus.zip --location --header \"PRIVATE-TOKEN:$ACCESS_TOKEN\" \"https://gitlab.com/api/v4/projects/minizinc%2FFindMUS/jobs/artifacts/master/download?job=build:$MZNARCH\" && unzip -q findmus.zip"
7662

77-
build:win64:
78-
<<: *win_build_definition
63+
package:linux:
64+
stage: package
65+
image: dekker1/minibuild:package
66+
variables:
67+
MZNARCH: "linux"
68+
DOWNLOAD_GLOBALIZER: 1
69+
DOWNLOAD_FINDMUS: 1
70+
<<: *packaging_setup
71+
script:
72+
- PACKAGE=MiniZincIDE-${MZNVERSION}-bundle-linux
73+
- mkdir -p $PACKAGE/
74+
### Package IDE
75+
- mv ide/usr/* $PACKAGE/
76+
- cp resources/scripts/MiniZincIDE.sh $PACKAGE/
77+
### Package MiniZinc
78+
- mv minizinc/bin/* $PACKAGE/bin/
79+
- mv minizinc/share $PACKAGE/share
80+
### Package vendor solvers
81+
- mv vendor/gecode/bin/fzn-gecode $PACKAGE/bin/
82+
- mv vendor/gecode/share/gecode/mznlib $PACKAGE/share/minizinc/gecode
83+
- mv vendor/chuffed/bin/fzn-chuffed $PACKAGE/bin/
84+
- mv vendor/chuffed/share/chuffed/mznlib $PACKAGE/share/minizinc/chuffed
85+
### Package Globalizer
86+
- mv globalizer/bin/minizinc-globalizer $PACKAGE/bin/
87+
- mv globalizer/share/globalizer/mznlib $PACKAGE/share/minizinc/globalizer
88+
### Package findMUS
89+
- mv findMUS/bin/findMUS $PACKAGE/bin/
90+
### Package solver scripts
91+
- cp resources/scripts/fzn-gecode-gist $PACKAGE/bin/
92+
### Package default settings
93+
- mkdir -p $PACKAGE/share/minizinc/solvers/
94+
- cp resources/solvers/*.msc $PACKAGE/share/minizinc/solvers/
95+
- cp resources/Preferences.json $PACKAGE/share/minizinc/
96+
### Strip included binaries
97+
- (cd $PACKAGE/bin; strip minizinc fzn-gecode fzn-chuffed findMUS minizinc-globalizer mzn2doc)
98+
- cp resources/misc/README $PACKAGE
99+
### Compress package
100+
- tar -czf $PACKAGE.tgz $PACKAGE
101+
### Generate checksum
102+
- sha256sum $PACKAGE.tgz > $PACKAGE.sha256
103+
artifacts:
104+
name: "minizinc_bundle_linux_${CI_PIPELINE_ID}"
105+
paths: [MiniZincIDE*.tgz, MiniZincIDE*.sha256]
106+
dependencies: ["build:linux"]
107+
tags: [linux, docker]
108+
109+
package:osx:
110+
stage: package
111+
variables:
112+
MZNARCH: "osx"
113+
DOWNLOAD_GLOBALIZER: 1
114+
DOWNLOAD_FINDMUS: 1
115+
<<: *packaging_setup
116+
script:
117+
- "DIR=MiniZincIDE.app/Contents/Resources; MZNDIR=$DIR/share/minizinc"
118+
- mkdir -p $MZNDIR/solvers
119+
### Package MiniZinc
120+
- mv minizinc/bin/* $DIR/
121+
- mv minizinc/share/minizinc/* $MZNDIR/
122+
### Package vendor solvers
123+
- mkdir -p $DIR/bin/
124+
- mv vendor/gecode/bin/fzn-gecode $DIR/bin/
125+
- (cd $DIR; ln -s gecode/fzn-gecode)
126+
- mv vendor/gecode/share/gecode/mznlib $MZNDIR/gecode
127+
- mv vendor/chuffed/bin/fzn-chuffed $DIR/bin/
128+
- mv vendor/chuffed/share/chuffed/mznlib $MZNDIR/chuffed
129+
### Package Globalizer
130+
- mv globalizer/bin/minizinc-globalizer $DIR/bin/
131+
- mv globalizer/share/globalizer/mznlib $MZNDIR/globalizer
132+
### Package findMUS
133+
- mv findMUS/bin/findMUS $DIR/bin/
134+
### Package solver scripts
135+
- cp resources/scripts/fzn-gecode-gist $DIR/bin/
136+
### Package default settings
137+
- cp resources/solvers/*.msc $MZNDIR/solvers
138+
- cp resources/Preferences.json $MZNDIR/
139+
### Run automated Qt deployment tool
140+
- macdeployqt ./MiniZincIDE.app -executable=$DIR/bin/fzn-gecode
141+
artifacts:
142+
name: "minizinc_bundle_mac_${CI_PIPELINE_ID}"
143+
paths: [MiniZincIDE.app]
144+
dependencies: ["build:osx"]
145+
tags: [osx, qt]
146+
147+
package:win64:
148+
stage: package
79149
variables:
80-
QTDIR: "$WINQTDIR"
150+
MZNARCH: "win64"
151+
MSVCREDIST: "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Redist/MSVC/14.16.27012/x64/Microsoft.VC141.CRT"
152+
UCRTREDIST: "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/x64"
153+
ISSARCH: "x64"
154+
ISSARCHALLOWED: "x64"
81155
before_script:
82-
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0/VC/vcvarsall.bat" amd64
83-
tags:
84-
- win64
85-
- cpp
86-
- qt
87-
cache:
88-
key: "win64_$CI_COMMIT_REF_SLUG"
89-
paths:
90-
- build/
156+
### Set the MZNVERSION variable
157+
- if defined CI_COMMIT_TAG (set MZNVERSION=%CI_COMMIT_TAG%) else (set MZNVERSION=%CI_PIPELINE_ID%)
158+
### Choose the MiniZinc compiler branch
159+
- if defined CI_COMMIT_TAG (set MZNREF=%CI_COMMIT_TAG%) else if %CI_COMMIT_REF_NAME%==master (set MZNREF=master) else (set MZNREF=develop)
160+
### Download Dependencies
161+
- curl --silent -o minizinc.zip --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" "https://gitlab.com/api/v4/projects/minizinc%%2Fminizinc/jobs/artifacts/%MZNREF%/download?job=build:%MZNARCH%"
162+
- unzip -q minizinc.zip
163+
- curl --silent -o vendor.zip --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" "https://gitlab.com/api/v4/projects/minizinc%%2Fvendor/jobs/artifacts/master/download?job=bundle:%MZNARCH%"
164+
- unzip -q vendor.zip
165+
- curl --silent -o globalizer.zip --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" "https://gitlab.com/api/v4/projects/minizinc%%2Fglobalizer/jobs/artifacts/master/download?job=build:%MZNARCH%"
166+
- unzip -q globalizer.zip
167+
- curl --silent -o findmus.zip --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" "https://gitlab.com/api/v4/projects/minizinc%%2FFindMus/jobs/artifacts/master/download?job=build:%MZNARCH%"
168+
- unzip -q findmus.zip
169+
script:
170+
- "\"C:/Program Files (x86)/Inno Setup 5/ISCC.exe\" /dMyAppVersion=\"%MZNVERSION%\" /dMyMZNVersion=\"%MZNVERSION%\" /dMyAppDirectory=\"%CI_PROJECT_DIR%\" /dMyMSVCRedist=\"%MSVCREDIST%\" /dMyUCRTRedist=\"%UCRTREDIST%\" /dMyAPPArch=\"%MZNARCH%\" /dMyApp64Bit=\"%ISSARCH%\" /dMyAppArchitectures=\"%ISSARCHALLOWED%\" /O\"%CI_PROJECT_DIR%\" resources/pkg_config/minizinc-bundle.iss"
171+
### Generate checksum
172+
- certutil -hashfile MiniZincIDE-%MZNVERSION%-bundled-setup-%MZNARCH%.exe SHA256 > MiniZincIDE-%MZNVERSION%-bundled-setup-%MZNARCH%.sha256
173+
artifacts:
174+
name: "minizinc_bundle_windows_%CI_PIPELINE_ID%"
175+
paths: [MiniZincIDE*.exe, MiniZincIDE*.sha256]
176+
dependencies: ["build:win64"]
177+
tags: [win64]
178+
179+
package:appimage:
180+
stage: package
181+
image: dekker1/minibuild:appimage
182+
variables:
183+
MZNARCH: "linux"
184+
DOWNLOAD_GLOBALIZER: 1
185+
DOWNLOAD_FINDMUS: 1
186+
PACKAGE: "MiniZinc.AppDir"
187+
<<: *packaging_setup
188+
script:
189+
- mkdir -p $PACKAGE/usr/
190+
### Package IDE
191+
- mv ide/usr/* $PACKAGE/usr/
192+
### Package MiniZinc
193+
- mv minizinc/bin/* $PACKAGE/usr/bin/
194+
- mv minizinc/share $PACKAGE/usr/share
195+
### Package vendor solvers
196+
- mv vendor/gecode/bin/fzn-gecode $PACKAGE/usr/bin/
197+
- mv vendor/gecode/share/gecode/mznlib $PACKAGE/usr/share/minizinc/gecode
198+
- mv vendor/chuffed/bin/fzn-chuffed $PACKAGE/usr/bin/
199+
- mv vendor/chuffed/share/chuffed/mznlib $PACKAGE/usr/share/minizinc/chuffed
200+
### Package Globalizer
201+
- mv globalizer/bin/minizinc-globalizer $PACKAGE/usr/bin/
202+
- mv globalizer/share/globalizer/mznlib $PACKAGE/usr/share/minizinc/globalizer
203+
### Package findMUS
204+
- mv findMUS/bin/findMUS $PACKAGE/usr/bin/
205+
### Package solver scripts
206+
- cp resources/scripts/fzn-gecode-gist $PACKAGE/usr/bin/
207+
### Package default settings
208+
- mkdir -p $PACKAGE/usr/share/minizinc/solvers/
209+
- cp resources/solvers/*.msc $PACKAGE/usr/share/minizinc/solvers/
210+
- cp resources/Preferences.json $PACKAGE/usr/share/minizinc/
211+
### Strip included binaries
212+
- (cd $PACKAGE/usr/bin; strip minizinc fzn-gecode fzn-chuffed findMUS minizinc-globalizer mzn2doc)
213+
- cp resources/misc/README $PACKAGE
214+
### Assemble AppImage
215+
- cp resources/scripts/AppRun $PACKAGE
216+
- cp resources/misc/minizinc.desktop $PACKAGE/minizinc.desktop
217+
- cp resources/icon.png $PACKAGE/minizinc.png
218+
- ARCH=x86_64 appimagetool $PACKAGE MiniZincIDE-${MZNVERSION}-x86_64.AppImage
219+
### Generate checksum
220+
- sha256sum MiniZincIDE*.AppImage > MiniZincIDE-${MZNVERSION}-x86_64.sha256
221+
artifacts:
222+
name: "minizinc_appimage_${CI_PIPELINE_ID}"
223+
paths: [MiniZincIDE*.AppImage, MiniZincIDE*.sha256]
224+
dependencies: ["build:linux"]
225+
tags: [linux, docker]
226+
227+
package:docker_alpine:
228+
stage: package
229+
variables:
230+
MZNARCH: "musl"
231+
<<: *packaging_setup
232+
script:
233+
- docker build -f resources/pkg_config/alpine.Dockerfile -t minizinc_alpine .
234+
- if [ -n "$CI_COMMIT_TAG" ]; then docker tag minizinc_alpine minizinc/minizinc:$CI_COMMIT_TAG && docker push minizinc/minizinc:$CI_COMMIT_TAG; fi
235+
- if [ "$CI_COMMIT_REF_NAME" = "master" ]; then docker tag minizinc_alpine minizinc/minizinc:latest && docker push minizinc/minizinc:latest; fi
236+
- if [ "$CI_COMMIT_REF_NAME" = "develop" ]; then docker tag minizinc_alpine minizinc/minizinc:edge && docker push minizinc/minizinc:edge; fi
237+
dependencies: []
238+
only: [tags, master, develop]
239+
tags: [docker-cli]
240+
241+
package:docker_ubuntu:
242+
stage: package
243+
variables:
244+
MZNARCH: "linux"
245+
DOWNLOAD_SOLVERS: 0
246+
<<: *packaging_setup
247+
script:
248+
- curl --silent -o gecode.zip --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" "https://gitlab.com/api/v4/projects/minizinc%2Fvendor/jobs/artifacts/master/download?job=gecode:$MZNARCH"
249+
- unzip -q gecode.zip
250+
- curl --silent -o chuffed.zip --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" "https://gitlab.com/api/v4/projects/minizinc%2Fvendor/jobs/artifacts/master/download?job=chuffed:$MZNARCH"
251+
- unzip -q chuffed.zip
252+
- docker build -f resources/pkg_config/ubuntu.Dockerfile -t minizinc_ubuntu .
253+
- if [ -n "$CI_COMMIT_TAG" ]; then docker tag minizinc_ubuntu minizinc/minizinc:ubuntu_$CI_COMMIT_TAG && docker push minizinc/minizinc:ubuntu_$CI_COMMIT_TAG; fi
254+
- if [ "$CI_COMMIT_REF_NAME" = "master" ]; then docker tag minizinc_ubuntu minizinc/minizinc:ubuntu_latest && docker push minizinc/minizinc:ubuntu_latest; fi
255+
- if [ "$CI_COMMIT_REF_NAME" = "develop" ]; then docker tag minizinc_ubuntu minizinc/minizinc:ubuntu_edge && docker push minizinc/minizinc:ubuntu_edge; fi
256+
dependencies: []
257+
only: [tags, master, develop]
258+
tags: [docker-cli]
259+
260+
package:snap:
261+
stage: package
262+
image: dekker1/minibuild:snap
263+
variables:
264+
MZNARCH: "linux"
265+
DOWNLOAD_GLOBALIZER: 1
266+
DOWNLOAD_FINDMUS: 1
267+
<<: *packaging_setup
268+
script:
269+
- strip minizinc/bin/minizinc vendor/gecode/bin/fzn-gecode vendor/chuffed/bin/fzn-chuffed findMUS/bin/findMUS globalizer/bin/minizinc-globalizer minizinc/bin/mzn2doc
270+
- cp resources/pkg_config/snapcraft.yaml .
271+
- echo "$MZNVERSION" > version.txt
272+
- apt-get update -y
273+
- snapcraft
274+
- echo "$SNAPLOGIN" > login.pass
275+
- snapcraft login --with login.pass
276+
- snapcraft push --release=edge minizinc*.snap
277+
artifacts:
278+
name: "minizinc_snap_${CI_PIPELINE_ID}"
279+
paths: [minizinc*.snap]
280+
dependencies: []
281+
only: [tags, develop]
282+
tags: [linux, docker]

MiniZincIDE.pro

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
TEMPLATE = subdirs
2+
3+
SUBDIRS = MiniZincIDE
4+
5+
libminizinc {
6+
SUBDIRS += libminizinc
7+
MiniZincIDE.depends = libminizinc
8+
}

MiniZincIDE/CHANGES

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
v2.3.0
2+
- The IDE will now check MiniZinc code for syntax and type errors
3+
- The editor performs simple code completion for MiniZinc keywords
4+
- Ensure cursor is visible (editor scrolls to cursor position) when pressing
5+
tab or enter. Fixes #71.
6+
- Replace find dialog with inline widget and incremental search.
7+
- Support dark mode on macOS.
8+
- Add support for extra solver flags (parsed from solver configuration).
9+
- IDE now only uses minizinc executable (not mzn2fzn and solns2out).
10+
- Re-dock configuration editor when closing un-docked window.
11+
- Handle quotes when parsing additional solver command line arguments.
12+
Fixes #77.
13+
- Add workaround for the missing libnss requirements
14+
- Allow spaces in $DIR in MiniZincIDE.sh (Fixes #81)
115
v2.2.3
216
- Only run solution checker if it is enabled in the solver configuration dialog.
317
v2.2.2

0 commit comments

Comments
 (0)