Skip to content

Commit 3aa4e91

Browse files
author
Pedro Pombeiro
committed
Unify desktop builds. Closes #5406
- Replace Linux and MacOS scripts in `ci/desktop.groovy` with calls to `scripts/create-desktop-package.sh` - Replace use of `deployment/env` with `.env` to avoid confusion and be coherent with mobile platforms
1 parent 4ab5e43 commit 3aa4e91

File tree

13 files changed

+325
-452
lines changed

13 files changed

+325
-452
lines changed

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,19 @@ fastlane/README.md
122122

123123
# Jenkins
124124
pkg
125+
126+
# Status Desktop
127+
cmake_install.cmake
128+
/StatusImPackage/*
129+
/desktop/bin/*
130+
/desktop/lib/*
131+
/desktop/modules/*
132+
/desktop/Makefile
133+
/desktop/run-app.sh
134+
/desktop/CMakeFiles/
135+
/desktop/CMakeCache.txt
136+
/desktop/reportApp/Makefile
137+
/desktop/reportApp/CMakeFiles/*
138+
/desktop/reportApp/reportApp
139+
/desktop/reportApp/reportApp_autogen/
140+
/linuxdeployqt-*.AppImage

Makefile

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,30 @@ HELP_FUN = \
2929
# Main targets
3030

3131
clean: ##@prepare Remove all output folders
32-
git clean -qdxf -f android/ modules/react-native-status/ node_modules/ target/ desktop/modules/ desktop/node_modules/
32+
git clean -qdxf -f android/ modules/react-native-status/ node_modules/ target/ desktop/ StatusImPackage/
3333

3434
setup: ##@prepare Install all the requirements for status-react
3535
./scripts/setup
3636

37-
prepare: ##@prepare Install dependencies and prepare workspace
37+
prepare-desktop: ##@prepare Install desktop platform dependencies and prepare workspace
38+
scripts/prepare-for-platform.sh desktop
39+
npm install
40+
41+
_prepare-mobile: ##@prepare Install mobile platform dependencies and prepare workspace
3842
scripts/prepare-for-platform.sh mobile
3943
npm install
4044

41-
prepare-ios: prepare ##@prepare Install iOS specific dependencies
45+
prepare-ios: _prepare-mobile ##@prepare Install and prepare iOS-specific dependencies
4246
mvn -f modules/react-native-status/ios/RCTStatus dependency:unpack
4347
ifeq ($(OS),Darwin)
4448
cd ios && pod install
4549
endif
4650

47-
prepare-android: prepare ##@prepare Install Android specific dependencies
51+
prepare-android: _prepare-mobile ##@prepare Install and prepare Android-specific dependencies
4852
cd android && ./gradlew react-native-android:installArchives
4953

54+
prepare-mobile: prepare-android prepare-ios ##@prepare Install and prepare mobile platform specific dependencies
55+
5056
#----------------
5157
# Release builds
5258
#----------------
@@ -58,6 +64,9 @@ release-android: prod-build-android ##@build build release for Android
5864
release-ios: prod-build-ios ##@build build release for iOS release
5965
@echo "Build in XCode, see https://wiki.status.im/TBD for instructions"
6066

67+
release-desktop: prod-build-desktop ##@build build release for desktop release
68+
scripts/build-desktop.sh
69+
6170
prod-build:
6271
lein prod-build
6372

@@ -75,6 +84,10 @@ full-prod-build: ##@build build prod for both Android and iOS
7584
rm -r ./modules/react-native-status/ios/RCTStatus/Statusgo.framework/ 2> /dev/null || true
7685
rm ./modules/react-native-status/android/libs/status-im/status-go/local/status-go-local.aar 2> /dev/null
7786

87+
prod-build-desktop:
88+
git clean -qdxf -f ./index.desktop.js desktop/
89+
lein prod-build-desktop
90+
7891
#--------------
7992
# REPL
8093
# -------------

ci/Jenkinsfile.linux

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ pipeline {
3232
LC_ALL = 'en_US.UTF-8'
3333
NPM_CONFIG_CACHE = '/var/tmp/npm'
3434
LEIN_HOME = '/var/tmp/lein'
35+
QT_PATH = '/opt/qt59'
36+
STATUSIM_APPIMAGE = '/opt/StatusImAppImage.zip'
3537
}
3638

3739
stages {
@@ -53,7 +55,7 @@ pipeline {
5355
}
5456
stage('Compile') {
5557
steps {
56-
script { desktop.compileLinux() }
58+
script { desktop.compile() }
5759
}
5860
}
5961
stage('Bundle') {

ci/Jenkinsfile.macos

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ pipeline {
1313
LANG = 'en_US.UTF-8'
1414
LANGUAGE = 'en_US.UTF-8'
1515
LC_ALL = 'en_US.UTF-8'
16+
QT_PATH = '/Users/administrator/qt/5.9.1'
17+
PATH = "${env.QT_PATH}/clang_64/bin:${env.PATH}"
1618
}
1719

1820
stages {
@@ -33,7 +35,7 @@ pipeline {
3335
}
3436
stage('Compile') {
3537
steps {
36-
script { desktop.compileMacOS() }
38+
script { desktop.compile() }
3739
}
3840
}
3941
stage('Bundle') {

ci/desktop.groovy

Lines changed: 6 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,8 @@
11
common = load 'ci/common.groovy'
22

3-
qtBin = '/opt/qt59/bin'
43
packageFolder = './StatusImPackage'
5-
external_modules_dir = [
6-
'node_modules/react-native-i18n/desktop',
7-
'node_modules/react-native-config/desktop',
8-
'node_modules/react-native-fs/desktop',
9-
'node_modules/react-native-http-bridge/desktop',
10-
'node_modules/react-native-webview-bridge/desktop',
11-
'node_modules/react-native-keychain/desktop',
12-
'node_modules/react-native-securerandom/desktop',
13-
'modules/react-native-status/desktop',
14-
'node_modules/google-breakpad',
15-
]
16-
17-
external_fonts = [
18-
'../../../../../resources/fonts/SF-Pro-Text-Regular.otf',
19-
'../../../../../resources/fonts/SF-Pro-Text-Medium.otf',
20-
'../../../../../resources/fonts/SF-Pro-Text-Light.otf',
21-
]
224

235
def cleanupBuild() {
24-
sh """
25-
rm -rf ${packageFolder}
26-
"""
276
sh 'make clean'
287
}
298

@@ -43,16 +22,8 @@ def slackNotify(message, color = 'good') {
4322
}
4423

4524
def buildClojureScript() {
46-
sh 'rm -f index.desktop.js'
47-
sh 'lein prod-build-desktop'
48-
sh "mkdir ${packageFolder}"
49-
sh """
50-
react-native bundle \\
51-
--entry-file index.desktop.js \\
52-
--dev false --platform desktop \\
53-
--bundle-output ${packageFolder}/StatusIm.jsbundle \\
54-
--assets-dest ${packageFolder}/assets
55-
"""
25+
sh 'make prod-build-desktop'
26+
sh './scripts/build-desktop.sh buildClojureScript'
5627
}
5728

5829
def uploadArtifact(filename) {
@@ -85,121 +56,25 @@ def prepDeps() {
8556
cleanupAndDeps()
8657
}
8758

88-
def compileLinux() {
89-
dir('desktop') {
90-
sh 'rm -rf CMakeFiles CMakeCache.txt cmake_install.cmake Makefile'
91-
sh """
92-
cmake -Wno-dev \\
93-
-DCMAKE_BUILD_TYPE=Release \\
94-
-DEXTERNAL_MODULES_DIR='${external_modules_dir.join(";")}' \\
95-
-DDESKTOP_FONTS='${external_fonts.join(";")}' \\
96-
-DJS_BUNDLE_PATH='${workspace}/${packageFolder}/StatusIm.jsbundle' \\
97-
-DCMAKE_CXX_FLAGS:='-DBUILD_FOR_BUNDLE=1'
98-
"""
99-
sh 'make'
100-
}
59+
def compile() {
60+
sh './scripts/build-desktop.sh compile'
10161
}
10262

10363
def bundleLinux(type = 'nightly') {
10464
def pkg
10565

66+
sh './scripts/build-desktop.sh bundle'
10667
dir(packageFolder) {
107-
sh 'rm -rf StatusImAppImage'
108-
/* TODO this needs to be fixed: status-react/issues/5378 */
109-
sh 'cp /opt/StatusImAppImage.zip ./'
110-
sh 'unzip ./StatusImAppImage.zip'
111-
sh 'rm -rf AppDir'
112-
sh 'mkdir AppDir'
113-
}
114-
sh "cp -r ./deployment/linux/usr ${packageFolder}/AppDir"
115-
sh "cp ./deployment/env ${packageFolder}/AppDir/usr/bin"
116-
sh "cp ./desktop/bin/StatusIm ${packageFolder}/AppDir/usr/bin"
117-
sh "cp ./desktop/reportApp/reportApp ${packageFolder}/AppDir/usr/bin"
118-
sh 'wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage'
119-
sh 'chmod a+x ./linuxdeployqt-continuous-x86_64.AppImage'
120-
121-
sh 'rm -f Application-x86_64.AppImage'
122-
sh 'rm -f StatusIm-x86_64.AppImage'
123-
124-
sh "ldd ${packageFolder}/AppDir/usr/bin/StatusIm"
125-
sh """
126-
./linuxdeployqt-continuous-x86_64.AppImage \\
127-
${packageFolder}/AppDir/usr/bin/reportApp \\
128-
-verbose=3 -always-overwrite -no-strip -no-translations -qmake=${qtBin}/qmake \\
129-
-qmldir='${workspace}/desktop/reportApp'
130-
"""
131-
sh """
132-
./linuxdeployqt-continuous-x86_64.AppImage \\
133-
${packageFolder}/AppDir/usr/share/applications/StatusIm.desktop \\
134-
-verbose=3 -always-overwrite -no-strip \\
135-
-no-translations -bundle-non-qt-libs \\
136-
-qmake=${qtBin}/qmake \\
137-
-extra-plugins=imageformats/libqsvg.so \\
138-
-qmldir='${workspace}/node_modules/react-native'
139-
"""
140-
dir(packageFolder) {
141-
sh 'ldd AppDir/usr/bin/StatusIm'
142-
sh 'cp -r assets/share/assets AppDir/usr/bin'
143-
sh 'cp -rf StatusImAppImage/* AppDir/usr/bin'
144-
sh 'rm -f AppDir/usr/bin/StatusIm.AppImage'
145-
}
146-
sh """
147-
./linuxdeployqt-continuous-x86_64.AppImage \\
148-
${packageFolder}/AppDir/usr/share/applications/StatusIm.desktop \\
149-
-verbose=3 -appimage -qmake=${qtBin}/qmake
150-
"""
151-
dir(packageFolder) {
152-
sh 'ldd AppDir/usr/bin/StatusIm'
153-
sh 'rm -rf StatusIm.AppImage'
15468
pkg = common.pkgFilename(type, 'AppImage')
15569
sh "mv ../StatusIm-x86_64.AppImage ${pkg}"
15670
}
15771
return "${packageFolder}/${pkg}".drop(2)
15872
}
15973

160-
def compileMacOS() {
161-
/* add path for QT installation binaries */
162-
env.PATH = "/Users/administrator/qt/5.9.1/clang_64/bin:${env.PATH}"
163-
dir('desktop') {
164-
sh 'rm -rf CMakeFiles CMakeCache.txt cmake_install.cmake Makefile'
165-
sh """
166-
cmake -Wno-dev \\
167-
-DCMAKE_BUILD_TYPE=Release \\
168-
-DEXTERNAL_MODULES_DIR='${external_modules_dir.join(";")}' \\
169-
-DDESKTOP_FONTS='${external_fonts.join(";")}' \\
170-
-DJS_BUNDLE_PATH='${workspace}/${packageFolder}/StatusIm.jsbundle' \\
171-
-DCMAKE_CXX_FLAGS:='-DBUILD_FOR_BUNDLE=1'
172-
"""
173-
sh 'make'
174-
}
175-
}
176-
17774
def bundleMacOS(type = 'nightly') {
17875
def pkg = common.pkgFilename(type, 'dmg')
76+
sh './scripts/build-desktop.sh bundle'
17977
dir(packageFolder) {
180-
sh 'curl -L -O "https://github.com/status-im/StatusAppFiles/raw/PR5702/Status.app.zip"'
181-
sh 'unzip Status.app.zip'
182-
sh 'cp -r assets/share/assets Status.app/Contents/Resources'
183-
sh 'ln -sf ../Resources/assets ../Resources/ubuntu-server ../Resources/node_modules ' +
184-
'Status.app/Contents/MacOS'
185-
sh 'chmod +x Status.app/Contents/Resources/ubuntu-server'
186-
sh 'cp ../desktop/bin/StatusIm Status.app/Contents/MacOS/Status'
187-
sh 'cp ../desktop/reportApp/reportApp Status.app/Contents/MacOS'
188-
sh "cp ../deployment/env Status.app/Contents/Resources"
189-
sh 'ln -sf ../Resources/env Status.app/Contents/MacOS/env'
190-
sh 'cp -f ../deployment/macos/qt-reportApp.conf Status.app/Contents/Resources'
191-
sh 'ln -sf ../Resources/qt-reportApp.conf Status.app/Contents/MacOS/qt.conf'
192-
sh 'install_name_tool -add_rpath "@executable_path/../Frameworks" ' +
193-
'-delete_rpath "/Users/administrator/qt/5.9.1/clang_64/lib" ' +
194-
'Status.app/Contents/MacOS/reportApp'
195-
sh 'cp -f ../deployment/macos/Info.plist Status.app/Contents'
196-
sh 'cp -f ../deployment/macos/status-icon.icns Status.app/Contents/Resources'
197-
sh """
198-
macdeployqt Status.app -verbose=1 \\
199-
-qmldir='${workspace}/node_modules/react-native/ReactQt/runtime/src/qml/'
200-
"""
201-
sh 'rm -f Status.app.zip'
202-
20378
withCredentials([
20479
string(credentialsId: 'desktop-gpg-outer-pass', variable: 'GPG_PASS_OUTER'),
20580
string(credentialsId: 'desktop-gpg-inner-pass', variable: 'GPG_PASS_INNER'),

deployment/env

Lines changed: 0 additions & 20 deletions
This file was deleted.

desktop/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9")
1616
message(STATUS "EXTERNAL_MODULES_DIR: ${EXTERNAL_MODULES_DIR}")
1717

1818
string(REGEX MATCH "BUILD_FOR_BUNDLE" BUILD_FOR_BUNDLE "${CMAKE_CXX_FLAGS}")
19-
if(${BUILD_FOR_BUNDLE} MATCHES "BUILD_FOR_BUNDLE")
20-
set(ENVFILE "/env")
21-
else()
22-
set(ENVFILE "/../../.env")
23-
endif()
19+
set(ENVFILE "/../../.env")
2420

2521
foreach(external_module ${EXTERNAL_MODULES_DIR})
2622
message(STATUS "external_module: ${external_module}")

doc/desktop/DevEnvSetup.md

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)