push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
# Create a derivation that contains aspell and selected dictionaries.
# Composition is done using `pkgs.buildEnv`.
# Beware of that `ASPELL_CONF` used by this derivation is not always
# respected by libaspell (#28815) and in some cases, when used as
# dependency by another derivation, the passed dictionaries will be
# missing. However, invoking aspell directly should be fine.
{
aspell,
aspellDicts,
makeWrapper,
buildEnv,
}:
f:
let
# Dictionaries we want
dicts = f aspellDicts;
in
buildEnv {
name = "aspell-env";
nativeBuildInputs = [ makeWrapper ];
paths = [ aspell ] ++ dicts;
postBuild = ''
# Construct wrappers in /bin
unlink "$out/bin"
mkdir -p "$out/bin"
pushd "${aspell}/bin"
for prg in *; do
if [ -f "$prg" ]; then
makeWrapper "${aspell}/bin/$prg" "$out/bin/$prg" --set ASPELL_CONF "dict-dir $out/lib/aspell"
fi
done
popd
'';
}

View File

@@ -0,0 +1,18 @@
--- interfaces/cc/aspell.h 2013-10-13 20:29:33.000000000 +0200
+++ interfaces/cc/aspell.h 2013-10-13 20:30:01.000000000 +0200
@@ -237,6 +237,7 @@
/******************************** errors ********************************/
+#ifndef __cplusplus
extern const struct AspellErrorInfo * const aerror_other;
extern const struct AspellErrorInfo * const aerror_operation_not_supported;
extern const struct AspellErrorInfo * const aerror_cant_copy;
@@ -322,6 +323,7 @@
extern const struct AspellErrorInfo * const aerror_bad_magic;
extern const struct AspellErrorInfo * const aerror_expression;
extern const struct AspellErrorInfo * const aerror_invalid_expression;
+#endif
/******************************* speller *******************************/

View File

@@ -0,0 +1,38 @@
diff --git a/common/info.cpp b/common/info.cpp
index 8291cc7..6216326 100644
--- a/common/info.cpp
+++ b/common/info.cpp
@@ -36,6 +36,7 @@
#include "strtonum.hpp"
#include "lock.hpp"
#include "string_map.hpp"
+#include "file_util.hpp"
#include "gettext.h"
@@ -495,6 +496,25 @@ namespace acommon {
lst.clear();
lst.add(config->retrieve("data-dir"));
lst.add(config->retrieve("dict-dir"));
+ if (config->lookup("data-dir") == NULL && config->lookup("dict-dir") == NULL) {
+ const char* cprofiles = getenv("NIX_PROFILES");
+ if (cprofiles != NULL) {
+ char* profiles = strdup(cprofiles);
+ char* profile = profiles;
+ char* end = profile;
+ while (*end != '\0') {
+ if (*end == ' ') {
+ *end = '\0';
+ lst.add(add_possible_dir(profile, "lib/aspell"));
+ profile = ++end;
+ } else {
+ ++end;
+ }
+ }
+ lst.add(add_possible_dir(profile, "lib/aspell"));
+ free(profiles);
+ }
+ }
}
DictExt::DictExt(ModuleInfo * m, const char * e)

View File

@@ -0,0 +1,98 @@
{
lib,
stdenv,
fetchpatch,
fetchurl,
fetchzip,
perl,
ncurses,
# for tests
aspell,
glibc,
runCommand,
searchNixProfiles ? true,
}:
let
# Source for u-deva.cmap and u-deva.cset: use the Marathi
# dictionary like Debian does.
devaMapsSource = fetchzip {
name = "aspell-u-deva";
url = "https://ftp.gnu.org/gnu/aspell/dict/mr/aspell6-mr-0.10-0.tar.bz2";
sha256 = "1v8cdl8x2j1d4vbvsq1xrqys69bbccd6mi03fywrhkrrljviyri1";
};
in
stdenv.mkDerivation rec {
pname = "aspell";
version = "0.60.8.1";
src = fetchurl {
url = "mirror://gnu/aspell/aspell-${version}.tar.gz";
hash = "sha256-1toSs01C1Ff6YE5DWtSEp0su/80SD/QKzWuz+yiH0hs=";
};
patches = [
# fix gcc-15 / clang-19 build. can remove on next update
(fetchpatch {
name = "fix-gcc-15-build.patch";
url = "https://github.com/GNUAspell/aspell/commit/ee6cbb12ff36a1e6618d7388a78dd4e0a2b44041.patch";
hash = "sha256-rW1FcfARdtT4wX+zGd2x/1K8zRp9JZhdR/zRd8RwPZA=";
})
]
++ lib.optional searchNixProfiles ./data-dirs-from-nix-profiles.patch;
postPatch = ''
patch interfaces/cc/aspell.h < ${./clang.patch}
'';
nativeBuildInputs = [ perl ];
buildInputs = [
ncurses
perl
];
doCheck = true;
preConfigure = ''
configureFlagsArray=(
--enable-pkglibdir=$out/lib/aspell
--enable-pkgdatadir=$out/lib/aspell
);
'';
# Include u-deva.cmap and u-deva.cset in the aspell package
# to avoid conflict between 'mr' and 'hi' dictionaries as they
# both include those files.
postInstall = ''
cp ${devaMapsSource}/u-deva.{cmap,cset} $out/lib/aspell/
'';
passthru.tests = {
uses-curses =
runCommand "aspell-curses"
{
buildInputs = [ glibc ];
}
''
if ! ldd ${aspell}/bin/aspell | grep -q ${ncurses}
then
echo "Test failure: It does not look like aspell picked up the curses dependency."
exit 1
fi
touch $out
'';
};
meta = {
description = "Spell checker for many languages";
homepage = "http://aspell.net/";
license = lib.licenses.lgpl2Plus;
maintainers = [ ];
platforms = with lib.platforms; all;
};
}

File diff suppressed because it is too large Load Diff