Merge pull request #131843 from andresilva/signal-preload-sqlcipher

signal-desktop: preload sqlcipher library from nixpkgs
This commit is contained in:
Michael Weiss 2021-10-28 21:53:15 +02:00 committed by GitHub
commit 55495f7428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,6 +10,7 @@
, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
# For a full list of available languages:
# $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
, sqlcipher
}:
let
@ -21,6 +22,40 @@ let
in lib.optionalString (spellcheckerLanguage != null) ''
--set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
--set LC_MESSAGES "${spellcheckerLanguage}"'');
sqlcipher-signal = sqlcipher.overrideAttrs (_: {
# Using the same features as the upstream signal sqlcipher build
# https://github.com/signalapp/better-sqlite3/blob/2fa02d2484e9f9a10df5ac7ea4617fb2dff30006/deps/defines.gypi
CFLAGS = [
"-DSQLITE_LIKE_DOESNT_MATCH_BLOBS"
"-DSQLITE_THREADSAFE=2"
"-DSQLITE_USE_URI=0"
"-DSQLITE_DEFAULT_MEMSTATUS=0"
"-DSQLITE_OMIT_DEPRECATED"
"-DSQLITE_OMIT_GET_TABLE"
"-DSQLITE_OMIT_TCL_VARIABLE"
"-DSQLITE_OMIT_PROGRESS_CALLBACK"
"-DSQLITE_OMIT_SHARED_CACHE"
"-DSQLITE_TRACE_SIZE_LIMIT=32"
"-DSQLITE_DEFAULT_CACHE_SIZE=-16000"
"-DSQLITE_DEFAULT_FOREIGN_KEYS=1"
"-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1"
"-DSQLITE_ENABLE_COLUMN_METADATA"
"-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT"
"-DSQLITE_ENABLE_STAT4"
"-DSQLITE_ENABLE_FTS5"
"-DSQLITE_ENABLE_JSON1"
"-DSQLITE_ENABLE_RTREE"
"-DSQLITE_INTROSPECTION_PRAGMAS"
# SQLCipher-specific options
"-DSQLITE_HAS_CODEC"
"-DSQLITE_TEMP_STORE=2"
"-DSQLITE_SECURE_DELETE"
];
LDFLAGS = [ "-lm" ];
});
in stdenv.mkDerivation rec {
pname = "signal-desktop";
version = "5.21.0"; # Please backport all updates to the stable channel.
@ -115,15 +150,10 @@ in stdenv.mkDerivation rec {
runHook postInstall
'';
# Required for $SQLCIPHER_LIB which contains "/build/" inside the path:
noAuditTmpdir = true;
preFixup = ''
export SQLCIPHER_LIB="$out/lib/Signal/resources/app.asar.unpacked/node_modules/better-sqlite3/build/Release/better_sqlite3.node"
test -x "$SQLCIPHER_LIB" # To ensure the location hasn't changed
gappsWrapperArgs+=(
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ] }"
--prefix LD_PRELOAD : "$SQLCIPHER_LIB"
--prefix LD_PRELOAD : "${sqlcipher-signal}/lib/libsqlcipher.so"
${customLanguageWrapperArgs}
)