Files
simplex-chat/docs/lang/pl/CONTRIBUTING.md
Evgeny 4f640c96d1 build: use openssl 3.0 (#5183)
* build: use openssl 3.0

* docs

* mac script
2024-11-22 18:38:49 +00:00

122 lines
4.5 KiB
Markdown

---
title: Poradnik wspierania projektu
revision: 31.01.2023
---
| Updated 31.01.2023 | Języki: PL, [EN](/docs/CONTRIBUTING.md) [FR](/docs/lang/fr/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md) |
# 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 jak `stable-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 branchu `master` repo simplex-chat.
- `master-ghc8107` - jego commit powinien być użyty w branchu `master-android` (i `master-ios`) repo simplex-chat. Przestarzałe.
## Development i proces wydawania
1. Tworzenie PR-ów do brancha `master` _tylko_ dla repozytoriów simplex-chat i simplexmq.
2. Jeśli repozytorium simplexmq zostało zmienione, aby skompilować mobilne biblioteki rdzenia należy połączyć jego branch `master` z branchem `master-ghc8107`.
3. Aby skompilować podstawowe biblioteki dla Androida, iOS i Windows:
- scal branch `master` z branchem `master-android`.
- Zaktualizuj kod, aby był kompatybilny z GHC 8.10.7 (patrz niżej).
- push do GitHuba.
4. Wszystkie biblioteki powinny być budowane z brancha `master`, Android armv7a - z brancha `master-android`.
5. Aby zbudować aplikacje Desktop i CLI, należy utworzyć tag w branchu `master`, pliki APK powinny być dołączone do wydania.
6. Po publicznym wydaniu w App Store i Play Store, scal:
- `master` do `stable`
- `master` do `master-android` (i skompiluj/zaktualizuj kod)
- `master-android` do `stable-android`.
7. Branch `master` repo simplexmq powinien zostać niezależnie scalony z branchem `stable` w wydaniach stabilnych.
## Różnice pomiędzy GHC 8.10.7 i GHC 9.6.3
1. 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:
```haskell
{-# 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:
```haskell
-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
let r' = (record :: Record) {field = value}
```
2. Większość funkcji monad musi być teraz importowana z `Control.Monad`, a nie z konkretnych modułów monad (np. `Control.Monad.Except`).
```haskell
-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne
import Control.Monad
```
[Ten PR](https://github.com/simplex-chat/simplex-chat/pull/2975/files) opisuje wszystkie różnice.