| Updated 31.01.2023 | Języki: PL, EN FR, CZ |
Poradnik wspierania projektu
Kompilacja z włączonym szyfrowaniem SQLCipher
Dodaj cabal.project.local
do katalogu głównego projektu z lokalizacją nagłówków i bibliotek OpenSSL oraz flagą ustawiającą tryb szyfrowania:
cp scripts/cabal.project.local.mac cabal.project.local
# lub
# cp scripts/cabal.project.local.linux cabal.project.local
OpenSSL na MacOS
MacOS ma domyślnie zainstalowany LibreSSL, OpenSSL musi być zainstalowany, aby skompilować SimpleX z kodu źródłowego.
OpenSSL można zainstalować za pomocą brew install openssl@3.0
Będziesz musiał dodać /opt/homebrew/opt/openssl@3.0/bin
do swojego PATH, aby wszystko działało poprawnie
Branche projektu
W repo simplex-chat
-
stable
- stabilne wydanie aplikacji, może być używane do aktualizacji poprzedniego stabilnego wydania (GHC 9.6.3). -
stable-android
- używane do budowania stabilnej biblioteki rdzenia Androida z Nix (GHC 8.10.7) - tylko dla Androida armv7a. -
stable-ios
- używane do budowania stabilnej biblioteki rdzenia iOS z Nix (GHC 8.10.7) - ten branch powinien być taki sam jakstable-android
z wyjątkiem plików konfiguracyjnych Nix. Przestarzałe. -
master
- branch dla wydań wersji beta (GHC 9.6.3). -
master-ghc8107
- branch dla wydań wersji beta (GHC 8.10.7). Przestarzałe. -
master-android
- używane do budowania biblioteki rdzenia Androida w wersji beta z Nix (GHC 8.10.7) - tylko dla Androida armv7a. -
master-ios
- służy do budowania biblioteki rdzenia beta iOS z Nix (GHC 8.10.7). Przestarzałe. -
windows-ghc8107
- branch do kompilacji głównej biblioteki Windows (GHC 8.10.7). Przestarzałe?
Branche master-ios
i windows-ghc8107
powinny być takie same jak master-ghc8107
z wyjątkiem plików konfiguracyjnych Nix.
W repo simplexmq
-
master
- używa GHC 9.6.3, jego commit powinien być użyty w branchumaster
repo simplex-chat. -
master-ghc8107
- jego commit powinien być użyty w branchumaster-android
(imaster-ios
) repo simplex-chat. Przestarzałe.
Development i proces wydawania
-
Tworzenie PR-ów do brancha
master
tylko dla repozytoriów simplex-chat i simplexmq. -
Jeśli repozytorium simplexmq zostało zmienione, aby skompilować mobilne biblioteki rdzenia należy połączyć jego branch
master
z branchemmaster-ghc8107
. -
Aby skompilować podstawowe biblioteki dla Androida, iOS i Windows:
-
scal branch
master
z branchemmaster-android
. -
Zaktualizuj kod, aby był kompatybilny z GHC 8.10.7 (patrz niżej).
-
push do GitHuba.
-
Wszystkie biblioteki powinny być budowane z brancha
master
, Android armv7a - z branchamaster-android
. -
Aby zbudować aplikacje Desktop i CLI, należy utworzyć tag w branchu
master
, pliki APK powinny być dołączone do wydania. -
Po publicznym wydaniu w App Store i Play Store, scal:
-
master
dostable
-
master
domaster-android
(i skompiluj/zaktualizuj kod) -
master-android
dostable-android
.
- Branch
master
repo simplexmq powinien zostać niezależnie scalony z branchemstable
w wydaniach stabilnych.
Różnice pomiędzy GHC 8.10.7 i GHC 9.6.3
- Główna różnica związana jest z rozszerzeniem
DuplicateRecordFields
.
W GHC 9.6.3 nie jest już możliwe określenie typu podczas korzystania z selektorów, zamiast tego używane jest rozszerzenie OverloadedRecordDot i składnia, które muszą zostać usunięte w GHC 8.10.7:
{-# LANGUAGE DuplicateRecordFields #-}
-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne
{-# LANGUAGE OverloadedRecordDot #-}
-- syntax GHC 9.6.3
let x = record.field
-- syntax GHC 8.10.7 usunięty w GHC 9.6.3
let x = field (record :: Record)
Nadal możliwe jest określenie typu podczas korzystania ze składni aktualizacji rekordu, użyj tej reguły, aby wyłączyć ostrzeżenie kompilatora:
-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
let r' = (record :: Record) {field = value}
- Większość funkcji monad musi być teraz importowana z
Control.Monad
, a nie z konkretnych modułów monad (np.Control.Monad.Except
).
-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne
import Control.Monad
Ten PR opisuje wszystkie różnice.