diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 2eba7d5c51..8366161fc5 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -142,6 +142,11 @@ 5CEACCED27DEA495000BD591 /* MsgContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */; }; 5CEBD7462A5C0A8F00665FE2 /* KeyboardPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */; }; 5CEBD7482A5F115D00665FE2 /* SetDeliveryReceiptsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */; }; + 5CF4DF632AF906B1007893ED /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF4DF5E2AF906B1007893ED /* libgmp.a */; }; + 5CF4DF642AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF4DF5F2AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a */; }; + 5CF4DF652AF906B1007893ED /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF4DF602AF906B1007893ED /* libffi.a */; }; + 5CF4DF662AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF4DF612AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a */; }; + 5CF4DF672AF906B1007893ED /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CF4DF622AF906B1007893ED /* libgmpxx.a */; }; 5CFA59C42860BC6200863A68 /* MigrateToAppGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */; }; 5CFA59D12864782E00863A68 /* ChatArchiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFA59CF286477B400863A68 /* ChatArchiveView.swift */; }; 5CFE0921282EEAF60002594B /* ZoomableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */; }; @@ -157,11 +162,6 @@ 64466DC829FC2B3B00E3D48D /* CreateSimpleXAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64466DC729FC2B3B00E3D48D /* CreateSimpleXAddress.swift */; }; 64466DCC29FFE3E800E3D48D /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64466DCB29FFE3E800E3D48D /* MailView.swift */; }; 6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */; }; - 6449333A2AF8E51000AC506E /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933352AF8E51000AC506E /* libgmpxx.a */; }; - 6449333B2AF8E51000AC506E /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933362AF8E51000AC506E /* libgmp.a */; }; - 6449333C2AF8E51000AC506E /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933372AF8E51000AC506E /* libffi.a */; }; - 6449333D2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a */; }; - 6449333E2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a */; }; 644EFFDE292BCD9D00525D5B /* ComposeVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */; }; 644EFFE0292CFD7F00525D5B /* CIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */; }; 644EFFE2292D089800525D5B /* FramedCIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */; }; @@ -423,6 +423,11 @@ 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MsgContentView.swift; sourceTree = ""; }; 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPadding.swift; sourceTree = ""; }; 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetDeliveryReceiptsView.swift; sourceTree = ""; }; + 5CF4DF5E2AF906B1007893ED /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CF4DF5F2AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a"; sourceTree = ""; }; + 5CF4DF602AF906B1007893ED /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5CF4DF612AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a"; sourceTree = ""; }; + 5CF4DF622AF906B1007893ED /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; 5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToAppGroupView.swift; sourceTree = ""; }; 5CFA59CF286477B400863A68 /* ChatArchiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatArchiveView.swift; sourceTree = ""; }; 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ZoomableScrollView.swift; path = Shared/Views/ZoomableScrollView.swift; sourceTree = SOURCE_ROOT; }; @@ -437,11 +442,6 @@ 64466DC729FC2B3B00E3D48D /* CreateSimpleXAddress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateSimpleXAddress.swift; sourceTree = ""; }; 64466DCB29FFE3E800E3D48D /* MailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = ""; }; 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupLinkView.swift; sourceTree = ""; }; - 644933352AF8E51000AC506E /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 644933362AF8E51000AC506E /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 644933372AF8E51000AC506E /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a"; sourceTree = ""; }; - 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a"; sourceTree = ""; }; 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeVoiceView.swift; sourceTree = ""; }; 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIVoiceView.swift; sourceTree = ""; }; 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FramedCIVoiceView.swift; sourceTree = ""; }; @@ -505,13 +505,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6449333A2AF8E51000AC506E /* libgmpxx.a in Frameworks */, + 5CF4DF662AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 6449333D2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a in Frameworks */, - 6449333B2AF8E51000AC506E /* libgmp.a in Frameworks */, - 6449333C2AF8E51000AC506E /* libffi.a in Frameworks */, + 5CF4DF632AF906B1007893ED /* libgmp.a in Frameworks */, + 5CF4DF642AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a in Frameworks */, + 5CF4DF652AF906B1007893ED /* libffi.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 6449333E2AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a in Frameworks */, + 5CF4DF672AF906B1007893ED /* libgmpxx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -572,11 +572,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 644933372AF8E51000AC506E /* libffi.a */, - 644933362AF8E51000AC506E /* libgmp.a */, - 644933352AF8E51000AC506E /* libgmpxx.a */, - 644933382AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a-ghc8.10.7.a */, - 644933392AF8E51000AC506E /* libHSsimplex-chat-5.4.0.2-G8dwxRnOCEy4X3nT3jgw7a.a */, + 5CF4DF602AF906B1007893ED /* libffi.a */, + 5CF4DF5E2AF906B1007893ED /* libgmp.a */, + 5CF4DF622AF906B1007893ED /* libgmpxx.a */, + 5CF4DF5F2AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz-ghc9.6.3.a */, + 5CF4DF612AF906B1007893ED /* libHSsimplex-chat-5.4.0.2-1SJQ8grxltT8Qxvxi331Zz.a */, ); path = Libraries; sourceTree = ""; diff --git a/cabal.project b/cabal.project index f84d427cfa..0ed57ec28c 100644 --- a/cabal.project +++ b/cabal.project @@ -2,7 +2,7 @@ packages: . -- packages: . ../simplexmq -- packages: . ../simplexmq ../direct-sqlcipher ../sqlcipher-simple -with-compiler: ghc-9.6.2 +with-compiler: ghc-9.6.3 constraints: zip +disable-bzip2 +disable-zstd diff --git a/flake.lock b/flake.lock index 81b3f6f6b8..5f2cde2bdd 100644 --- a/flake.lock +++ b/flake.lock @@ -16,21 +16,6 @@ "type": "github" } }, - "blank": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "cabal-32": { "flake": false, "locked": { @@ -98,64 +83,6 @@ "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "haskellNix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "dmerge": { - "inputs": { - "nixlib": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "haskellNix", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -173,19 +100,21 @@ "type": "github" } }, - "flake-compat_2": { - "flake": false, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1698579227, + "narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f76e870d64779109e41370848074ac4eaa1606ec", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, @@ -204,51 +133,6 @@ "type": "github" } }, - "flake-utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "ghc-8.6.5-iohk": { "flake": false, "locked": { @@ -266,33 +150,51 @@ "type": "github" } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_2", - "utils": "utils" - }, + "ghc98X": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, "hackage": { "flake": false, "locked": { - "lastModified": 1696724662, - "narHash": "sha256-jV2ugSjZE0FjMYR2YIx0p2cDBqd+xxhZrRxp5BmieYk=", + "lastModified": 1698020746, + "narHash": "sha256-/eFVtqLu4sGfjJiwmelfH2qK0ZGFOmyCxBTJ1ncOeSI=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "df603bff8606d8653a0876ae0c3fd1f9014882f2", + "rev": "dc3cf3bbc0b1e9780e008f9cd6af4a9aeb344ad7", "type": "github" }, "original": { @@ -309,33 +211,40 @@ "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "ghc98X": "ghc98X", + "ghc99": "ghc99", "hackage": [ "hackage" ], + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", "nixpkgs": [ - "nixpkgs" + "haskellNix", + "nixpkgs-unstable" ], "nixpkgs-2003": "nixpkgs-2003", "nixpkgs-2105": "nixpkgs-2105", "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage", - "tullia": "tullia" + "stackage": "stackage" }, "locked": { - "lastModified": 1677975916, - "narHash": "sha256-dbe8lEEPyfzjdRwpePClv7J9p9lQg7BwbBqAMCw4RLw=", + "lastModified": 1698666250, + "narHash": "sha256-nt8n0N//L7A6T9tgPVAp0Z2JurVDh/DveN2pAIsvIMI=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "ab5efd87ce3fd8ade38a01d97693d29a4f1ae7e4", + "rev": "cc58b1a8e0faeb1a4968a91affe0bcc21632f138", "type": "github" }, "original": { @@ -345,6 +254,91 @@ "type": "github" } }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -384,37 +378,14 @@ "type": "indirect" } }, - "incl": { - "inputs": { - "nixlib": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -440,32 +411,22 @@ "type": "github" } }, - "n2c": { + "mac2ios": { "inputs": { - "flake-utils": [ - "haskellNix", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ] + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1698662474, + "narHash": "sha256-VoMvl+N1K8LuWO8rjlm6ko//1/l35InxFTrtNSKRc20=", + "owner": "zw3rk", + "repo": "mobile-core-tools", + "rev": "00d48cc5a929af4b047604805dd8aba9933b37e4", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "zw3rk", + "repo": "mobile-core-tools", "type": "github" } }, @@ -490,95 +451,6 @@ "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_2", - "flake-utils": [ - "haskellNix", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "haskellNix", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "haskellNix", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "haskellNix", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "haskellNix", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1657693803, @@ -645,11 +517,11 @@ }, "nixpkgs-2205": { "locked": { - "lastModified": 1672580127, - "narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0874168639713f547c05947c76124f78441ea46c", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { @@ -661,11 +533,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1675730325, - "narHash": "sha256-uNvD7fzO5hNlltNQUAFBPlcEjNG5Gkbhl/ROiX+GZU4=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b7ce17b1ebf600a72178f6302c77b6382d09323f", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { @@ -675,6 +547,40 @@ "type": "github" } }, + "nixpkgs-2305": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -693,11 +599,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1675758091, - "narHash": "sha256-7gFSQbSVAFUHtGCNHPF7mPc5CcqDk9M2+inlVPZSneg=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "747927516efcb5e31ba03b7ff32f61f6d47e7d87", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { @@ -709,82 +615,20 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "lastModified": 1698434055, + "narHash": "sha256-Phxi5mUKSoL7A0IYUiYtkI9e8NcGaaV5PJEaJApU1Ko=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "1a3c95e3b23b3cdb26750621c08cc2f1560cb883", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1676726892, - "narHash": "sha256-M7OYVR6dKmzmlebIjybFf3l18S2uur8lMyWWnHQooLY=", - "owner": "angerman", - "repo": "nixpkgs", - "rev": "729469087592bdea58b360de59dadf6d58714c42", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nosys": { - "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, "old-ghc-nix": { "flake": false, "locked": { @@ -807,17 +651,21 @@ "flake-utils": "flake-utils", "hackage": "hackage", "haskellNix": "haskellNix", - "nixpkgs": "nixpkgs_5" + "mac2ios": "mac2ios", + "nixpkgs": [ + "haskellNix", + "nixpkgs-2305" + ] } }, "stackage": { "flake": false, "locked": { - "lastModified": 1677888571, - "narHash": "sha256-YkhRNOaN6QVagZo1cfykYV8KqkI8/q6r2F5+jypOma4=", + "lastModified": 1698278970, + "narHash": "sha256-CogUKaZr3d4cJTeqk/u04Ct2fg1EHBCuN3SrWbNYsuM=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "cb50e6fabdfb2d7e655059039012ad0623f06a27", + "rev": "d0599a4c08237202eb560aa2d2625b5daa818cc6", "type": "github" }, "original": { @@ -825,113 +673,6 @@ "repo": "stackage.nix", "type": "github" } - }, - "std": { - "inputs": { - "arion": [ - "haskellNix", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_4", - "incl": "incl", - "makes": [ - "haskellNix", - "tullia", - "std", - "blank" - ], - "microvm": [ - "haskellNix", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_4", - "nosys": "nosys", - "yants": "yants" - }, - "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "haskellNix", - "nixpkgs" - ], - "std": "std" - }, - "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "utils": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "yants": { - "inputs": { - "nixpkgs": [ - "haskellNix", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", - "owner": "divnix", - "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 44a2e287ea..3ef1913fd9 100644 --- a/flake.nix +++ b/flake.nix @@ -1,15 +1,15 @@ { description = "nix flake for simplex-chat"; - inputs.nixpkgs.url = "github:angerman/nixpkgs/release-22.11"; inputs.haskellNix.url = "github:input-output-hk/haskell.nix/armv7a"; - inputs.haskellNix.inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "haskellNix/nixpkgs-2305"; + inputs.mac2ios.url = "github:zw3rk/mobile-core-tools"; inputs.hackage = { url = "github:input-output-hk/hackage.nix"; flake = false; }; inputs.haskellNix.inputs.hackage.follows = "hackage"; inputs.flake-utils.url = "github:numtide/flake-utils"; - outputs = { self, haskellNix, nixpkgs, flake-utils, ... }: + outputs = { self, haskellNix, nixpkgs, flake-utils, mac2ios, ... }: let systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; in flake-utils.lib.eachSystem systems (system: # this android26 overlay makes the pkgsCross.{aarch64-android,armv7a-android-prebuilt} to set stdVer to 26 (Android 8). @@ -30,8 +30,8 @@ # `appendOverlays` with a singleton is identical to `extend`. let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project { - compiler-nix-name = "ghc8107"; - index-state = "2023-10-06T00:00:00Z"; + compiler-nix-name = "ghc963"; + index-state = "2023-10-20T00:00:00Z"; # We need this, to specify we want the cabal project. # If the stack.yaml was dropped, this would not be necessary. projectFileName = "cabal.project"; @@ -40,9 +40,12 @@ src = ./.; }; sha256map = import ./scripts/nix/sha256map.nix; - modules = [{ + modules = [ + ({ pkgs, lib, ...}: lib.mkIf (!pkgs.stdenv.hostPlatform.isWindows) { + # This patch adds `dl` as an extra-library to direct-sqlciper, which is needed + # on pretty much all unix platforms, but then blows up on windows m( packages.direct-sqlcipher.patches = [ ./scripts/nix/direct-sqlcipher-2.3.27.patch ]; - } + }) ({ pkgs,lib, ... }: lib.mkIf (pkgs.stdenv.hostPlatform.isAndroid) { packages.simplex-chat.components.library.ghcOptions = [ "-pie" ]; })] ++ extra-modules; @@ -74,6 +77,11 @@ find ${pkgs.gmp6.override { withStatic = true; }}/lib -name "*.a" -exec cp {} $out/_pkg \; # There is no static libc ${pkgs.tree}/bin/tree $out/_pkg + for pkg in $out/_pkg/*.a; do + chmod +w $pkg + ${mac2ios.packages.${system}.mac2ios}/bin/mac2ios $pkg + chmod -w $pkg + done (cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${bundleName}.zip *) rm -fR $out/_pkg mkdir -p $out/nix-support @@ -121,10 +129,114 @@ );in { "${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat; "${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl32).simplex-chat.components.exes.simplex-chat; + "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' { + pkgs' = pkgs.pkgsCross.mingwW64; + extra-modules = [{ + packages.direct-sqlcipher.flags.openssl = true; + packages.bitvec.flags.simd = false; + packages.direct-sqlcipher.patches = [ + ./scripts/nix/direct-sqlcipher-2.3.27-win.patch + ]; + packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [ + (pkgs.pkgsCross.mingwW64.openssl) #.override) # { static = true; enableKTLS = false; }) + ]; + packages.unix-time.postPatch = '' + sed -i 's/mingwex//g' unix-time.cabal + ''; + }]; + }).simplex-chat.components.exes.simplex-chat.override { + postInstall = '' + set -x + ${pkgs.tree}/bin/tree $out + mkdir -p $out/_pkg + cp $out/bin/* $out/_pkg + ${pkgs.tree}/bin/tree $out/_pkg + (cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/${pkgs.pkgsCross.mingwW64.hostPlatform.system}-simplex-chat.zip *) + rm -fR $out/_pkg + mkdir -p $out/nix-support + echo "file binary-dist \"$(echo $out/*.zip)\"" \ + > $out/nix-support/hydra-build-products + ''; + }; + "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec { + pkgs' = pkgs.pkgsCross.mingwW64; + extra-modules = [{ + packages.direct-sqlcipher.flags.openssl = true; + # simd will try to read __cpu_model, which we don't expose + # from the rts (yet!). + packages.bitvec.flags.simd = false; + packages.direct-sqlcipher.patches = [ + ./scripts/nix/direct-sqlcipher-2.3.27-win.patch + ]; + packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [ + pkgs.pkgsCross.mingwW64.openssl + ]; + packages.unix-time.postPatch = '' + sed -i 's/mingwex//g' unix-time.cabal + ''; + }]; + }).simplex-chat.components.library + .override (p: { + # enableShared = false; + setupBuildFlags = p.component.setupBuildFlags ++ map (x: "--ghc-option=${x}") [ + "-shared" + "-threaded" + "-o" "libsimplex.dll" + # "-optl-lHSrts_thr" + "-optl-lffi" + # "-optl-static-libgcc" + # We can't do -optl-static-libstdc++ with gcc. g++ might + # but then we are chaning the compiler altogether. + "${./libsimplex.dll.def}" + ]; + postInstall = '' + set -x + function deps() { + ${pkgs.binutils}/bin/strings "$1" | grep '.\.dll'|grep -v -E 'Winsock|ADVAPI32|dbghelp|KERNEL32|msvcrt|ntdll|ole32|RPCRT4|SHELL32|USER32|WINMM|WS2_32|kernel32|GDI32'|grep -v "$1" + } + ${pkgs.tree}/bin/tree $out + mkdir -p $out/_pkg + cp libsimplex.dll $out/_pkg + cp libsimplex.dll.a $out/_pkg + mkdir $out/libs + find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.openssl} -name "*.dll" -exec cp {} $out/libs \; + find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.libffi} -name "*.dll" -exec cp {} $out/libs \; + find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.gmp} -name "*.dll" -exec cp {} $out/libs \; + find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.stdenv.cc.cc} -name "*.dll" -exec cp {} $out/libs \; + find ${pkgs.lib.getBin pkgs.pkgsCross.mingwW64.windows.mcfgthreads} -name "*.dll" -exec cp {} $out/libs \; + + pushd $out/_pkg + function copyDeps() { + for dep in $(deps "$1"); do + if [ ! -f "$dep" ]; then + if [ ! -f ../libs/"$dep" ]; then + echo "WARN: $1 -> $dep not found!" + else + cp ../libs/"$dep" . + copyDeps "$dep" + fi + fi + done + } + copyDeps libsimplex.dll + popd + ${pkgs.tree}/bin/tree $out/_pkg + (cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-${pkgs.pkgsCross.mingwW64.hostPlatform.system}-libsimplex.zip *) + rm -fR $out/_pkg + mkdir -p $out/nix-support + echo "file binary-dist \"$(echo $out/*.zip)\"" \ + > $out/nix-support/hydra-build-products + ''; + }); # "${pkgs.pkgsCross.muslpi.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.muslpi).simplex-chat.components.exes.simplex-chat; "${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat; "armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override { - smallAddressSpace = true; enableShared = false; + smallAddressSpace = true; + # we won't want -dyamic (see aarch64-android:lib:simplex-chat) + enableShared = false; + # we also do not want to have any dependencies listed (especially no rts!) + enableStatic = false; + setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ]; postInstall = '' @@ -139,13 +251,28 @@ > $out/nix-support/hydra-build-products ''; }; - "aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override { - smallAddressSpace = true; enableShared = false; - setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsupport.so" ]; + # The android-support package is at + # https://github.com/simplex-chat/android-support + "aarch64-android:lib:support" = (drv androidPkgs).android-support.components.library.override (p: { + smallAddressSpace = true; + # no -dynamic + enableShared = false; + # but also no -staticlib + enableStatic = false; + + # we have to do the -shared thing by hand. + postBuild = '' + aarch64-unknown-linux-android-ghc -shared -o libsupport.so \ + -optl-Wl,-u,setLineBuffering \ + -optl-Wl,-u,pipe_std_to_socket \ + dist/build/*.a + ''; + postInstall = '' mkdir -p $out/_pkg cp libsupport.so $out/_pkg + ls -lah $out/_pkg/* ${pkgs.patchelf}/bin/patchelf --remove-needed libunwind.so.1 $out/_pkg/libsupport.so (cd $out/_pkg; ${pkgs.zip}/bin/zip -r -9 $out/pkg-aarch64-android-libsupport.zip *) rm -fR $out/_pkg @@ -154,10 +281,11 @@ echo "file binary-dist \"$(echo $out/*.zip)\"" \ > $out/nix-support/hydra-build-products ''; - }; + }); "armv7a-android:lib:simplex-chat" = (drv' { pkgs' = android32Pkgs; extra-modules = [{ + packages.text.flags.simdutf = false; packages.direct-sqlcipher.flags.openssl = true; packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [ (android32Pkgs.openssl.override { static = true; enableKTLS = false; }) @@ -165,13 +293,53 @@ packages.direct-sqlcipher.patches = [ ./scripts/nix/direct-sqlcipher-android-log.patch ]; + packages.basement.patches = [ + ./scripts/nix/basement-pr-573.patch + ]; + packages.memory.patches = [ + ./scripts/nix/memory-pr-99.patch + ]; }]; - }).simplex-chat.components.library.override { - smallAddressSpace = true; enableShared = false; + }).simplex-chat.components.library.override (p: { + smallAddressSpace = true; + # we want -shared, but not -dyanmic, hence `enableShared = false`. + enableShared = false; + # we _do_ want rts, and other libs. Hence `enableStatic = true`. + enableStatic = true; # for android we build a shared library, passing these arguments is a bit tricky, as # we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for # template haskell cross compilation. Thus we just pass them as linker options (-optl). - setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"]; + setupBuildFlags = p.component.setupBuildFlags + # flags to tell GHC we want to produce a -shared object, and we want to also link + # - the ffi library (ffi) + ++ map (x: "--ghc-option=${x}") [ + "-shared" "-o" "libsimplex.so" + "-threaded" + # "-debug" + "-optl-lffi" + ] + # This is fairly idiotic. LLD will strip out foreign exported + # symbols (a GHC bug? Codegen bug?). So we need to pass `-u ` + # to ensure they stay in the produced library. Having them + # _undefined_ and _lazy_ (lld will tell with -y that the + # symbol is lazy), makes them _defined_. m( + ++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [ + "chat_close_store" + "chat_decrypt_file" + "chat_decrypt_media" + "chat_encrypt_file" + "chat_encrypt_media" + "chat_migrate_init" + "chat_parse_markdown" + "chat_parse_server" + "chat_password_hash" + "chat_read_file" + "chat_recv_msg" + "chat_recv_msg_wait" + "chat_send_cmd" + "chat_valid_name" + "chat_write_file" + ]; postInstall = '' set -x ${pkgs.tree}/bin/tree $out @@ -215,10 +383,11 @@ echo "file binary-dist \"$(echo $out/*.zip)\"" \ > $out/nix-support/hydra-build-products ''; - }; + }); "aarch64-android:lib:simplex-chat" = (drv' { pkgs' = androidPkgs; extra-modules = [{ + packages.text.flags.simdutf = false; packages.direct-sqlcipher.flags.openssl = true; packages.direct-sqlcipher.components.library.libs = pkgs.lib.mkForce [ (androidPkgs.openssl.override { static = true; }) @@ -227,12 +396,48 @@ ./scripts/nix/direct-sqlcipher-android-log.patch ]; }]; - }).simplex-chat.components.library.override { - smallAddressSpace = true; enableShared = false; + }).simplex-chat.components.library.override (p: { + smallAddressSpace = true; + # we do not want a dynamically linked object, even though we _do_ + # want to produce a _shared_ object. But `shared` implied -dyanmic + # with cabal, so we disable and pass `-shared` explicitly. + enableShared = false; + # we do want static (e.g. pass all dependencies in, so we get -staticlib) + enableStatic = true; # for android we build a shared library, passing these arguments is a bit tricky, as # we want only the threaded rts (HSrts_thr) and ffi to be linked, but not fed into iserv for # template haskell cross compilation. Thus we just pass them as linker options (-optl). - setupBuildFlags = map (x: "--ghc-option=${x}") [ "-shared" "-o" "libsimplex.so" "-optl-lHSrts_thr" "-optl-lffi"]; + setupBuildFlags = p.component.setupBuildFlags + # flags to tell GHC we want to produce a -shared object, and we want to also link + # - the ffi library (ffi) + ++ map (x: "--ghc-option=${x}") [ + "-shared" "-o" "libsimplex.so" + "-threaded" + # "-debug" + "-optl-lffi" + ] + # This is fairly idiotic. LLD will strip out foreign exported + # symbols (a GHC bug? Codegen bug?). So we need to pass `-u ` + # to ensure they stay in the produced library. Having them + # _undefined_ and _lazy_ (lld will tell with -y that the + # symbol is lazy), makes them _defined_. m( + ++ map (sym: "--ghc-option=-optl-Wl,-u,${sym}") [ + "chat_close_store" + "chat_decrypt_file" + "chat_decrypt_media" + "chat_encrypt_file" + "chat_encrypt_media" + "chat_migrate_init" + "chat_parse_markdown" + "chat_parse_server" + "chat_password_hash" + "chat_read_file" + "chat_recv_msg" + "chat_recv_msg_wait" + "chat_send_cmd" + "chat_valid_name" + "chat_write_file" + ]; postInstall = '' set -x ${pkgs.tree}/bin/tree $out @@ -276,7 +481,7 @@ echo "file binary-dist \"$(echo $out/*.zip)\"" \ > $out/nix-support/hydra-build-products ''; - }; + }); }; # builds for iOS and iOS simulator diff --git a/libsimplex.dll.def b/libsimplex.dll.def new file mode 100644 index 0000000000..ee32ec36a0 --- /dev/null +++ b/libsimplex.dll.def @@ -0,0 +1,16 @@ +LIBRARY libsimplex +EXPORTS + hs_init + chat_migrate_init + chat_send_cmd + chat_recv_msg + chat_recv_msg_wait + chat_parse_markdown + chat_parse_server + chat_password_hash + chat_encrypt_media + chat_decrypt_media + chat_write_file + chat_read_file + chat_encrypt_file + chat_decrypt_file \ No newline at end of file diff --git a/scripts/nix/basement-pr-573.patch b/scripts/nix/basement-pr-573.patch new file mode 100644 index 0000000000..554d98c3cf --- /dev/null +++ b/scripts/nix/basement-pr-573.patch @@ -0,0 +1,242 @@ +From 38be2c93acb6f459d24ed6c626981c35ccf44095 Mon Sep 17 00:00:00 2001 +From: Sylvain Henry +Date: Thu, 16 Feb 2023 15:40:45 +0100 +Subject: [PATCH] Fix build on 32-bit architectures + +--- + Basement/Bits.hs | 4 ++++ + Basement/From.hs | 24 ----------------------- + Basement/Numerical/Additive.hs | 4 ++++ + Basement/Numerical/Conversion.hs | 20 +++++++++++++++++++ + Basement/PrimType.hs | 6 +++++- + Basement/Types/OffsetSize.hs | 22 +++++++++++++++++++-- + 6 files changed, 53 insertions(+), 27 deletions(-) + +diff --git a/Basement/Bits.hs b/Basement/Bits.hs +index 7eeea0f5..24520ed7 100644 +--- a/Basement/Bits.hs ++++ b/Basement/Bits.hs +@@ -54,8 +54,12 @@ import GHC.Int + import Basement.Compat.Primitive + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | operation over finite bits + class FiniteBitsOps bits where +diff --git a/Basement/From.hs b/Basement/From.hs +index 7bbe141c..80014b3e 100644 +--- a/Basement/From.hs ++++ b/Basement/From.hs +@@ -272,23 +272,11 @@ instance (NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty) + tryFrom = BlockN.toBlockN . UArray.toBlock . BoxArray.mapToUnboxed id + + instance (KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w)) +-#endif + instance From (Zn64 n) Word64 where + from = unZn64 + instance From (Zn64 n) Word128 where +@@ -297,23 +285,11 @@ instance From (Zn64 n) Word256 where + from = from . unZn64 + + instance (KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 where + from = naturalToWord64 . unZn + instance (KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 where +diff --git a/Basement/Numerical/Additive.hs b/Basement/Numerical/Additive.hs +index d0dfb973..8ab65aa0 100644 +--- a/Basement/Numerical/Additive.hs ++++ b/Basement/Numerical/Additive.hs +@@ -30,8 +30,12 @@ import qualified Basement.Types.Word128 as Word128 + import qualified Basement.Types.Word256 as Word256 + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | Represent class of things that can be added together, + -- contains a neutral element and is commutative. +diff --git a/Basement/Numerical/Conversion.hs b/Basement/Numerical/Conversion.hs +index db502c07..fddc8232 100644 +--- a/Basement/Numerical/Conversion.hs ++++ b/Basement/Numerical/Conversion.hs +@@ -26,8 +26,12 @@ import GHC.Word + import Basement.Compat.Primitive + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + intToInt64 :: Int -> Int64 + #if WORD_SIZE_IN_BITS == 64 +@@ -96,11 +100,22 @@ int64ToWord64 (I64# i) = W64# (int64ToWord64# i) + #endif + + #if WORD_SIZE_IN_BITS == 64 ++#if __GLASGOW_HASKELL__ >= 904 ++word64ToWord# :: Word64# -> Word# ++word64ToWord# i = word64ToWord# i ++#else + word64ToWord# :: Word# -> Word# + word64ToWord# i = i ++#endif + {-# INLINE word64ToWord# #-} + #endif + ++#if WORD_SIZE_IN_BITS < 64 ++word64ToWord32# :: Word64# -> Word32# ++word64ToWord32# i = wordToWord32# (word64ToWord# i) ++{-# INLINE word64ToWord32# #-} ++#endif ++ + -- | 2 Word32s + data Word32x2 = Word32x2 {-# UNPACK #-} !Word32 + {-# UNPACK #-} !Word32 +@@ -113,9 +128,14 @@ word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# (G + word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# w64 32#))) (W32# (wordToWord32# w64)) + #endif + #else ++#if __GLASGOW_HASKELL__ >= 904 ++word64ToWord32s :: Word64 -> Word32x2 ++word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord32# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord32# w64)) ++#else + word64ToWord32s :: Word64 -> Word32x2 + word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord# w64)) + #endif ++#endif + + wordToChar :: Word -> Char + wordToChar (W# word) = C# (chr# (word2Int# word)) +diff --git a/Basement/PrimType.hs b/Basement/PrimType.hs +index f8ca2926..a888ec91 100644 +--- a/Basement/PrimType.hs ++++ b/Basement/PrimType.hs +@@ -54,7 +54,11 @@ import Basement.Nat + import qualified Prelude (quot) + + #if WORD_SIZE_IN_BITS < 64 +-import GHC.IntWord64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else ++import GHC.IntWord64 ++#endif + #endif + + #ifdef FOUNDATION_BOUNDS_CHECK +diff --git a/Basement/Types/OffsetSize.hs b/Basement/Types/OffsetSize.hs +index cd944927..1ea80dad 100644 +--- a/Basement/Types/OffsetSize.hs ++++ b/Basement/Types/OffsetSize.hs +@@ -70,8 +70,12 @@ import Data.List (foldl') + import qualified Prelude + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | File size in bytes + newtype FileSize = FileSize Word64 +@@ -225,20 +229,26 @@ countOfRoundUp alignment (CountOf n) = CountOf ((n + (alignment-1)) .&. compleme + + csizeOfSize :: CountOf Word8 -> CSize + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++csizeOfSize (CountOf (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz))) ++#else + csizeOfSize (CountOf (I# sz)) = CSize (W32# (int2Word# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + csizeOfSize (CountOf (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz))) +- + #else + csizeOfSize (CountOf (I# sz)) = CSize (W64# (int2Word# sz)) +- + #endif + #endif + + csizeOfOffset :: Offset8 -> CSize + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++csizeOfOffset (Offset (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz))) ++#else + csizeOfOffset (Offset (I# sz)) = CSize (W32# (int2Word# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + csizeOfOffset (Offset (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz))) +@@ -250,7 +260,11 @@ csizeOfOffset (Offset (I# sz)) = CSize (W64# (int2Word# sz)) + sizeOfCSSize :: CSsize -> CountOf Word8 + sizeOfCSSize (CSsize (-1)) = error "invalid size: CSSize is -1" + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# (int32ToInt# sz)) ++#else + sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# sz) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# (int64ToInt# sz)) +@@ -261,7 +275,11 @@ sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# sz) + + sizeOfCSize :: CSize -> CountOf Word8 + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# (word32ToWord# sz))) ++#else + sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + sizeOfCSize (CSize (W64# sz)) = CountOf (I# (word2Int# (word64ToWord# sz))) diff --git a/scripts/nix/direct-sqlcipher-2.3.27-win.patch b/scripts/nix/direct-sqlcipher-2.3.27-win.patch new file mode 100644 index 0000000000..a204038b75 --- /dev/null +++ b/scripts/nix/direct-sqlcipher-2.3.27-win.patch @@ -0,0 +1,12 @@ +diff --git a/direct-sqlcipher.cabal b/direct-sqlcipher.cabal +index 728ba3e..c63745e 100644 +--- a/direct-sqlcipher.cabal ++++ b/direct-sqlcipher.cabal +@@ -84,6 +84,8 @@ library + cc-options: -DSQLITE_TEMP_STORE=2 + -DSQLITE_HAS_CODEC + ++ extra-libraries: ws2_32 ++ + if !os(windows) && !os(android) + extra-libraries: pthread diff --git a/scripts/nix/memory-pr-99.patch b/scripts/nix/memory-pr-99.patch new file mode 100644 index 0000000000..4a924b766e --- /dev/null +++ b/scripts/nix/memory-pr-99.patch @@ -0,0 +1,36 @@ +From 2738929ce15b4c8704bbbac24a08539b5d4bf30e Mon Sep 17 00:00:00 2001 +From: sternenseemann +Date: Mon, 14 Aug 2023 10:51:30 +0200 +Subject: [PATCH] Data.Memory.Internal.CompatPrim64: fix 32 bit with GHC >= 9.4 + +Since 9.4, GHC.Prim exports Word64# operations like timesWord64# even on +i686 whereas GHC.IntWord64 no longer exists. Therefore, we can just use +the ready made solution. + +Closes #98, as it should be the better solution. +--- + Data/Memory/Internal/CompatPrim64.hs | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Data/Memory/Internal/CompatPrim64.hs b/Data/Memory/Internal/CompatPrim64.hs +index b9eef8a..a134c88 100644 +--- a/Data/Memory/Internal/CompatPrim64.hs ++++ b/Data/Memory/Internal/CompatPrim64.hs +@@ -150,6 +150,7 @@ w64# :: Word# -> Word# -> Word# -> Word64# + w64# w _ _ = w + + #elif WORD_SIZE_IN_BITS == 32 ++#if __GLASGOW_HASKELL__ < 904 + import GHC.IntWord64 + import GHC.Prim (Word#) + +@@ -158,6 +159,9 @@ timesWord64# a b = + let !ai = word64ToInt64# a + !bi = word64ToInt64# b + in int64ToWord64# (timesInt64# ai bi) ++#else ++import GHC.Prim ++#endif + + w64# :: Word# -> Word# -> Word# -> Word64# + w64# _ hw lw = diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 680b920754..adb5d7d7d0 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -2,7 +2,7 @@ "https://github.com/simplex-chat/simplexmq.git"."e9b5a849ab18de085e8c69d239a9706b99bcf787" = "0b50mlnzwian4l9kx4niwnj9qkyp21ryc8x9d3il9jkdfxrx8kqi"; "https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38"; "https://github.com/kazu-yamamoto/http2.git"."f5525b755ff2418e6e6ecc69e877363b0d0bcaeb" = "0fyx0047gvhm99ilp212mmz37j84cwrfnpmssib5dw363fyb88b6"; - "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "0kiwhvml42g9anw4d2v0zd1fpc790pj9syg5x3ik4l97fnkbbwpp"; + "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d"; "https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl"; "https://github.com/simplex-chat/aeson.git"."aab7b5a14d6c5ea64c64dcaee418de1bb00dcc2b" = "0jz7kda8gai893vyvj96fy962ncv8dcsx71fbddyy8zrvc88jfrr"; "https://github.com/simplex-chat/haskell-terminal.git"."f708b00009b54890172068f168bf98508ffcd495" = "0zmq7lmfsk8m340g47g5963yba7i88n4afa6z93sg9px5jv1mijj"; diff --git a/scripts/nix/update-sha256.awk b/scripts/nix/update-sha256.awk index e432ec32d2..6ee0c9a155 100644 --- a/scripts/nix/update-sha256.awk +++ b/scripts/nix/update-sha256.awk @@ -11,7 +11,7 @@ BEGIN { /tag/ && isGit == true { ref=$2 } isGit == true && loc != "" && ref != "" { - cmd = "nix-prefetch-git --quiet "loc" "ref" | jq -r .sha256" + cmd = "nix-prefetch-git --fetch-submodules --quiet "loc" "ref" | jq -r .sha256" cmd | getline sha256 close(cmd) print " \""loc"\".\""ref"\" = \""sha256"\";"; diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 325b767efb..525b3fb5c9 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -1907,7 +1907,8 @@ processChatCommand = \case p {groupPreferences = Just . setGroupPreference' SGFTimedMessages pref $ groupPreferences p} QuitChat -> liftIO exitSuccess ShowVersion -> do - let versionInfo = coreVersionInfo $(simplexmqCommitQ) + -- simplexmqCommitQ makes iOS builds crash m( + let versionInfo = coreVersionInfo "" -- $(simplexmqCommitQ) chatMigrations <- map upMigration <$> withStore' (Migrations.getCurrent . DB.conn) agentMigrations <- withAgent getAgentMigrations pure $ CRVersionInfo {versionInfo, chatMigrations, agentMigrations}