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,13 @@
diff --git a/vue.config.js b/vue.config.js
index d6fdd46..141d28f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -9,7 +9,7 @@ const __filename = fileURLToPath(import.meta.url); // get the resolved path to t
const __dirname = path.dirname(__filename); // get the name of the directory
// get git info from command line
-const _COMMIT_HASH = child_process.execSync('git rev-parse --short HEAD').toString().trim();
+const _COMMIT_HASH = "@commit_hash@";
console.info('Commit hash:', _COMMIT_HASH);
export default {

View File

@@ -0,0 +1,265 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
rustPlatform,
makeWrapper,
pkg-config,
perl,
openssl,
rust-jemalloc-sys,
python3,
python3Packages,
wrapQtAppsHook,
qtbase,
qtsvg,
xdg-utils,
replaceVars,
buildNpmPackage,
}:
let
version = "0.13.2";
sources = fetchFromGitHub {
owner = "ActivityWatch";
repo = "activitywatch";
rev = "v${version}";
sha256 = "sha256-Z3WAg3b1zN0nS00u0zIose55JXRzQ7X7qy39XMY7Snk=";
fetchSubmodules = true;
};
in
rec {
aw-watcher-afk = python3Packages.buildPythonApplication {
pname = "aw-watcher-afk";
inherit version;
src = "${sources}/aw-watcher-afk";
pyproject = true;
build-system = [ python3Packages.poetry-core ];
dependencies = with python3Packages; [
aw-client
xlib
pynput
];
pythonRelaxDeps = [
"python-xlib"
];
pythonImportsCheck = [ "aw_watcher_afk" ];
meta = with lib; {
description = "Watches keyboard and mouse activity to determine if you are AFK or not (for use with ActivityWatch)";
homepage = "https://github.com/ActivityWatch/aw-watcher-afk";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-watcher-afk";
license = licenses.mpl20;
};
};
aw-watcher-window = python3Packages.buildPythonApplication {
pname = "aw-watcher-window";
inherit version;
src = "${sources}/aw-watcher-window";
pyproject = true;
build-system = [ python3Packages.poetry-core ];
dependencies = with python3Packages; [
aw-client
xlib
];
pythonRelaxDeps = [
"python-xlib"
];
pythonImportsCheck = [ "aw_watcher_window" ];
meta = with lib; {
description = "Cross-platform window watcher (for use with ActivityWatch)";
homepage = "https://github.com/ActivityWatch/aw-watcher-window";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-watcher-window";
license = licenses.mpl20;
badPlatforms = lib.platforms.darwin; # requires pyobjc-framework
};
};
aw-qt = python3Packages.buildPythonApplication {
pname = "aw-qt";
inherit version;
src = "${sources}/aw-qt";
pyproject = true;
build-system = [
python3Packages.poetry-core
python3Packages.setuptools
];
dependencies = with python3Packages; [
aw-core
qtbase
qtsvg # Rendering icons in the trayicon menu
pyqt6
click
];
nativeBuildInputs = [
wrapQtAppsHook
];
# Prevent double wrapping
dontWrapQtApps = true;
makeWrapperArgs = [
"--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}"
];
postInstall = ''
install -D resources/aw-qt.desktop $out/share/applications/aw-qt.desktop
# For the actual tray icon, see
# https://github.com/ActivityWatch/aw-qt/blob/8ec5db941ede0923bfe26631acf241a4a5353108/aw_qt/trayicon.py#L211-L218
install -D media/logo/logo.png $out/${python3.sitePackages}/media/logo/logo.png
# For .desktop file and your desktop environment
install -D media/logo/logo.svg $out/share/icons/hicolor/scalable/apps/activitywatch.svg
install -D media/logo/logo.png $out/share/icons/hicolor/512x512/apps/activitywatch.png
install -D media/logo/logo-128.png $out/share/icons/hicolor/128x128/apps/activitywatch.png
'';
preFixup = ''
makeWrapperArgs+=(
"''${qtWrapperArgs[@]}"
)
'';
pythonImportsCheck = [ "aw_qt" ];
meta = with lib; {
description = "Tray icon that manages ActivityWatch processes, built with Qt";
homepage = "https://github.com/ActivityWatch/aw-qt";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-qt";
license = licenses.mpl20;
badPlatforms = lib.platforms.darwin; # requires pyobjc-framework
};
};
aw-notify = python3Packages.buildPythonApplication {
pname = "aw-notify";
inherit version;
src = "${sources}/aw-notify";
pyproject = true;
build-system = [ python3Packages.poetry-core ];
dependencies = with python3Packages; [
aw-client
desktop-notifier
];
pythonRelaxDeps = [
"desktop-notifier"
];
pythonImportsCheck = [ "aw_notify" ];
meta = with lib; {
description = "Desktop notification service for ActivityWatch";
homepage = "https://github.com/ActivityWatch/aw-notify";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-notify";
license = licenses.mpl20;
};
};
aw-server-rust = rustPlatform.buildRustPackage {
pname = "aw-server-rust";
inherit version;
src = "${sources}/aw-server-rust";
cargoHash = "sha256-E89E/LWBPHtb6vX94swodmE+UrWMrzQnm8AO5GeyuoA=";
patches = [
# Override version string with hardcoded value as it may be outdated upstream.
(replaceVars ./override-version.patch {
version = sources.rev;
})
];
nativeBuildInputs = [
makeWrapper
pkg-config
perl
];
buildInputs = [
openssl
rust-jemalloc-sys
];
env.AW_WEBUI_DIR = aw-webui;
preCheck = ''
# Fake home folder for tests that use ~/.cache and ~/.local/share
export HOME="$TMPDIR"
'';
meta = with lib; {
description = "High-performance implementation of the ActivityWatch server, written in Rust";
homepage = "https://github.com/ActivityWatch/aw-server-rust";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-server";
platforms = platforms.linux;
license = licenses.mpl20;
};
};
aw-webui = buildNpmPackage {
pname = "aw-webui";
inherit version;
src = "${sources}/aw-server-rust/aw-webui";
npmDepsHash = "sha256-fPk7UpKuO3nEN1w+cf9DIZIG1+XRUk6PJfVmtpC30XE=";
makeCacheWritable = true;
patches = [
# Hardcode version to avoid the need to have the Git repo available at build time.
(replaceVars ./commit-hash.patch {
commit_hash = sources.rev;
})
];
installPhase = ''
runHook preInstall
mv dist $out
mv media/logo/logo.{png,svg} $out
runHook postInstall
'';
doCheck = true;
checkPhase = ''
runHook preCheck
npm test
runHook postCheck
'';
meta = with lib; {
description = "Web-based UI for ActivityWatch, built with Vue.js";
homepage = "https://github.com/ActivityWatch/aw-webui/";
maintainers = with maintainers; [ huantian ];
license = licenses.mpl20;
};
};
}

View File

@@ -0,0 +1,17 @@
diff --git a/aw-server/src/endpoints/mod.rs b/aw-server/src/endpoints/mod.rs
index a080d2a..0411d1e 100644
--- a/aw-server/src/endpoints/mod.rs
+++ b/aw-server/src/endpoints/mod.rs
@@ -76,11 +76,10 @@ async fn root_favicon(state: &State<ServerState>) -> Option<NamedFile> {
fn server_info(config: &State<AWConfig>, state: &State<ServerState>) -> Json<Info> {
#[allow(clippy::or_fun_call)]
let hostname = gethostname().into_string().unwrap_or("unknown".to_string());
- const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
Json(Info {
hostname,
- version: format!("v{} (rust)", VERSION.unwrap_or("(unknown)")),
+ version: String::from("@version@ (rust)"),
testing: config.testing,
device_id: state.device_id.clone(),
})

View File

@@ -0,0 +1,33 @@
{
lib,
symlinkJoin,
aw-server-rust,
aw-qt,
aw-notify,
aw-watcher-afk,
aw-watcher-window,
extraWatchers ? [ ],
}:
symlinkJoin {
name = "activitywatch-${aw-server-rust.version}";
paths = [
aw-server-rust.out
aw-qt.out
aw-notify.out
aw-watcher-afk.out
aw-watcher-window.out
]
++ (lib.forEach extraWatchers (p: p.out));
meta = with lib; {
description = "Best free and open-source automated time tracker";
homepage = "https://activitywatch.net/";
downloadPage = "https://github.com/ActivityWatch/activitywatch/releases";
changelog = "https://github.com/ActivityWatch/activitywatch/releases/tag/v${aw-server-rust.version}";
maintainers = with maintainers; [ huantian ];
mainProgram = "aw-qt";
platforms = platforms.linux;
license = licenses.mpl20;
};
}

View File

@@ -0,0 +1,105 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
wrapGAppsHook3,
wrapQtAppsHook,
gst_all_1,
qtbase,
qtsvg,
qtmultimedia,
qttools,
qtwayland,
zlib,
# only required when using poppler
poppler,
# only required when using mupdf
freetype,
gumbo,
jbig2dec,
mupdf,
openjpeg,
# choose renderer: mupdf or poppler or both (not recommended)
usePoppler ? false,
useMupdf ? true,
useExternalRenderer ? false,
}:
stdenv.mkDerivation rec {
pname = "beamerpresenter";
version = "0.2.6";
src = fetchFromGitHub {
owner = "beamerpresenter";
repo = "BeamerPresenter";
rev = "v${version}";
hash = "sha256-sPeWlPkWOPfLAoAC/+T7nyhPqvoaZg6aMOIVLjMqd2k=";
};
nativeBuildInputs = [
cmake
pkg-config
wrapGAppsHook3
wrapQtAppsHook
];
dontWrapGApps = true;
buildInputs = [
gst_all_1.gst-libav
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
zlib
qtbase
qtsvg
qtmultimedia
qttools
]
++ lib.optionals stdenv.hostPlatform.isLinux [
qtwayland
]
++ lib.optionals useMupdf [
freetype
gumbo
jbig2dec
mupdf
openjpeg
]
++ lib.optionals usePoppler [
poppler
];
cmakeFlags = [
"-DGIT_VERSION=OFF"
"-DUSE_POPPLER=${if usePoppler then "ON" else "OFF"}"
"-DUSE_MUPDF=${if useMupdf then "ON" else "OFF"}"
"-DUSE_QTPDF=OFF"
"-DLINK_MUPDF_THIRD=OFF"
"-DUSE_EXTERNAL_RENDERER=${if useExternalRenderer then "ON" else "OFF"}"
"-DLINK_MUJS=OFF"
"-DLINK_GUMBO=ON"
"-DUSE_TRANSLATIONS=ON"
"-DQT_VERSION_MAJOR=${lib.versions.major qtbase.version}"
];
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = with lib; {
description = "Modular multi screen pdf presentation viewer";
homepage = "https://github.com/beamerpresenter/BeamerPresenter";
license = with licenses; [
agpl3Only
gpl3Plus
];
platforms = platforms.all;
maintainers = with maintainers; [
euxane
dotlambda
];
mainProgram = "beamerpresenter";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
}:
stdenv.mkDerivation {
pname = "bean-add";
version = "unstable-2018-01-08";
src = fetchFromGitHub {
owner = "simon-v";
repo = "bean-add";
rev = "660c657f295b019d8dbc26375924eb17bf654341";
sha256 = "0vzff2hdng8ybwd5frflhxpak0yqg0985p1dy7vpvhr8kbqqzwdz";
};
propagatedBuildInputs = with python3Packages; [ python ];
installPhase = ''
mkdir -p $out/bin/
cp bean-add $out/bin/bean-add
chmod +x $out/bin/bean-add
'';
meta = {
homepage = "https://github.com/simon-v/bean-add/";
description = "Beancount transaction entry assistant";
mainProgram = "bean-add";
# The (only) source file states:
# License: "Do what you feel is right, but don't be a jerk" public license.
maintainers = with lib.maintainers; [ matthiasbeyer ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
python3,
fetchFromGitHub,
beangulp,
beancount,
}:
python3.pkgs.buildPythonApplication rec {
pname = "beancount-ing-diba";
version = "1.1.0";
src = fetchFromGitHub {
owner = "siddhantgoel";
repo = "beancount-ing-diba";
rev = "v${version}";
sha256 = "sha256-zjwajl+0ix4wnW0bf4MAuO9Lr9F8sBv87TIL5Ghmlxg=";
};
format = "pyproject";
propagatedBuildInputs = [
beancount
beangulp
];
nativeBuildInputs = with python3.pkgs; [
poetry-core
];
meta = with lib; {
homepage = "https://github.com/siddhantgoel/beancount-ing-diba";
description = "Beancount Importers for ING-DiBa (Germany) CSV Exports";
license = licenses.mit;
maintainers = with maintainers; [ matthiasbeyer ];
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
python3,
fetchFromGitHub,
beancount,
beancount-plugin-utils,
}:
python3.pkgs.buildPythonApplication rec {
pname = "beancount_share";
version = "0.1.11";
src = fetchFromGitHub {
owner = "akuukis";
repo = "beancount_share";
rev = "v${version}";
sha256 = "sha256-BW2KEC0pmervT71FBixPcQciEuGcElCd2wW7BZL1xUg=";
};
format = "pyproject";
propagatedBuildInputs = [
beancount
beancount-plugin-utils
];
buildInputs = [
python3.pkgs.setuptools
];
meta = with lib; {
homepage = "https://github.com/akuukis/beancount_share";
description = "Beancount plugin to share expenses with external partners within one ledger";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ matthiasbeyer ];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchurl,
qmake,
qtbase,
qtwebkit,
qtx11extras,
lzo,
libX11,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "cb2bib";
version = "2.0.0";
src = fetchurl {
url = "https://www.molspaces.com/dl/progs/${pname}-${version}.tar.gz";
sha256 = "0gv7cnxi84lr6d5y71pd67h0ilmf5c88j1jxgyn9dvj19smrv99h";
};
buildInputs = [
qtbase
qtwebkit
qtx11extras
lzo
libX11
];
nativeBuildInputs = [
qmake
wrapQtAppsHook
];
configurePhase = ''
runHook preConfigure
./configure --prefix $out --qmakepath $QMAKE
runHook postConfigure
'';
meta = with lib; {
description = "Rapidly extract unformatted, or unstandardized bibliographic references from email alerts, journal Web pages and PDF files";
homepage = "http://www.molspaces.com/d_cb2bib-overview.php";
maintainers = with maintainers; [ edwtjo ];
license = licenses.gpl3;
};
}

View File

@@ -0,0 +1,85 @@
{
stdenvNoCC,
lib,
fetchurl,
undmg,
writeScript,
}:
let
appName = "LibreOffice.app";
scriptName = "soffice";
version = "25.2.1";
dist = {
aarch64-darwin = rec {
arch = "aarch64";
archSuffix = arch;
url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg";
sha256 = "d0f8573dfc5d1a858061a9bc7889313cb6837db8a8f1b568d067ca156c03745e";
};
x86_64-darwin = rec {
arch = "x86_64";
archSuffix = "x86-64";
url = "https://download.documentfoundation.org/libreoffice/stable/${version}/mac/${arch}/LibreOffice_${version}_MacOS_${archSuffix}.dmg";
sha256 = "88746b5e46a72ae964ed2275399ee0fb2a0712f6d93a30b151358ffa0ea8349a";
};
};
in
stdenvNoCC.mkDerivation {
inherit version;
pname = "libreoffice";
src = fetchurl {
inherit
(dist.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}")
)
url
sha256
;
};
nativeBuildInputs = [ undmg ];
sourceRoot = appName;
installPhase = ''
runHook preInstall
mkdir -p $out/{Applications/${appName},bin}
cp -R . $out/Applications/${appName}
cat > $out/bin/${scriptName} << EOF
#!${stdenvNoCC.shell}
open -na $out/Applications/${appName} --args "\$@"
EOF
chmod +x $out/bin/${scriptName}
runHook postInstall
'';
passthru.updateScript =
let
defaultNixFile = toString ./default.nix;
updateNix = toString ./update.nix;
aarch64Url = dist."aarch64-darwin".url;
x86_64Url = dist."x86_64-darwin".url;
in
writeScript "update-libreoffice.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash --argstr aarch64Url ${aarch64Url} --argstr x86_64Url ${x86_64Url} --argstr version ${version} ${updateNix}
set -eou pipefail
update-source-version libreoffice-bin $newVersion $newAarch64Sha256 --file=${defaultNixFile} --system=aarch64-darwin --ignore-same-version
update-source-version libreoffice-bin $newVersion $newX86_64Sha256 --file=${defaultNixFile} --system=x86_64-darwin --ignore-same-version
'';
meta = with lib; {
description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org";
homepage = "https://libreoffice.org/";
license = licenses.lgpl3;
maintainers = with maintainers; [ tricktron ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = [
"x86_64-darwin"
"aarch64-darwin"
];
};
}

View File

@@ -0,0 +1,53 @@
# run the tests with nixt <absolutePath to parent dir> -v
{
pkgs ? import <nixpkgs> { },
nixt,
}:
let
inherit (import ./update-utils.nix { inherit (pkgs) lib; })
extractLatestVersionFromHtml
extractSha256FromHtml
getLatestStableVersion
;
in
nixt.mkSuite "LibreOffice Updater" {
"should extract latest stable version from html" =
let
latestVersionHtmlMock = ''
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Index of /libreoffice/stable</title>
<link rel="stylesheet" href="/mirrorbrain.css" type="text/css" />
</head>
<body>
<h1>Index of /libreoffice/stable</h1>
<table><tr><th>&nbsp;</th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/libreoffice/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="7.2.7/">7.2.7/</a></td><td align="right">10-Mar-2022 11:12 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="7.3.3/">7.3.3/</a></td><td align="right">12-May-2022 10:06 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="7.2.6/">7.2.6/</a></td><td align="right">05-May-2022 07:57 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><th colspan="5"><hr /></th></tr>
</table>
<address>Apache Server at <a href="mailto:hostmaster@documentfoundation.org">download.documentfoundation.org</a> Port 80</address>
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
</body></html>
'';
actual = extractLatestVersionFromHtml latestVersionHtmlMock;
in
"7.3.3" == actual;
"should extract latest stable version from website" =
(builtins.compareVersions getLatestStableVersion "7.3.3") >= 0;
"should extract sha256 from html" =
let
sha256Html = "50ed3deb8d9c987516e2687ebb865bca15486c69da79f1b6d74381e43f2ec863 LibreOffice_7.3.3_MacOS_aarch64.dmg\n";
actual = extractSha256FromHtml sha256Html;
in
"50ed3deb8d9c987516e2687ebb865bca15486c69da79f1b6d74381e43f2ec863" == actual;
}

View File

@@ -0,0 +1,52 @@
{ lib }:
let
# extractLatestVersionFromHtml :: String -> String
extractLatestVersionFromHtml =
htmlString:
let
majorMinorPatchGroup = "([0-9]+\\.[0-9]+\\.[0-9]+)";
splittedVersions = builtins.split "href=\"${majorMinorPatchGroup}" htmlString;
stableVersions = builtins.concatLists (builtins.filter (e: builtins.isList e) splittedVersions);
in
if stableVersions == [ ] then
abort "Failed to extract versions from html."
else
lib.last (builtins.sort builtins.lessThan stableVersions);
# getHtml :: String -> String
getHtml = url: builtins.readFile (builtins.fetchurl url);
# getLatestStableVersion :: String
getLatestStableVersion = extractLatestVersionFromHtml (
getHtml "https://download.documentfoundation.org/libreoffice/stable/"
);
# extractSha256FromHtml :: String -> String
extractSha256FromHtml =
htmlString:
let
sha256 = (builtins.match ".*([0-9a-fA-F]{64}).*" htmlString);
in
if sha256 == [ ] then abort "Failed to extract sha256 from html." else builtins.head sha256;
# getSha256 :: String -> String
getSha256 =
dmgUrl: oldVersion: newVersion:
extractSha256FromHtml (getHtml (getSha256Url dmgUrl oldVersion newVersion));
# getSha256Url :: String -> String -> String -> String
getSha256Url =
dmgUrl: oldVersion: newVersion:
(builtins.replaceStrings [ oldVersion ] [ newVersion ] dmgUrl) + ".sha256";
in
{
inherit
extractLatestVersionFromHtml
getHtml
getLatestStableVersion
extractSha256FromHtml
getSha256
getSha256Url
;
}

View File

@@ -0,0 +1,19 @@
# Impure functions, for passthru.updateScript runtime only
{
aarch64Url,
x86_64Url,
version,
pkgs ? import ../../../../../default.nix { },
}:
let
inherit (import ./update-utils.nix { inherit (pkgs) lib; })
getLatestStableVersion
getSha256
;
in
pkgs.mkShell rec {
buildInputs = [ pkgs.common-updater-scripts ];
newVersion = getLatestStableVersion;
newAarch64Sha256 = getSha256 aarch64Url version newVersion;
newX86_64Sha256 = getSha256 x86_64Url version newVersion;
}

View File

@@ -0,0 +1,763 @@
{
stdenv,
runCommand,
fetchurl,
fetchgit,
fetchpatch2,
lib,
pam,
python311,
libxslt,
perl,
perlPackages,
box2d_2,
gettext,
zlib,
libjpeg,
liblangtag,
expat,
freetype,
libwpd,
libxml2,
db,
curl,
fontconfig,
libsndfile,
neon,
bison,
flex,
zip,
unzip,
gtk3,
libmspack,
getopt,
file,
cairo,
which,
icu,
jdk21,
ant,
cups,
xorg,
fontforge,
jre21_minimal,
openssl,
gperf,
cppunit,
poppler,
util-linux,
librsvg,
libGLU,
libGL,
bsh,
coinmp,
libwps,
libabw,
libargon2,
libmysqlclient,
autoconf,
automake,
openldap,
bash,
hunspell,
librdf_rasqal,
librdf_redland,
nss,
nspr,
libwpg,
dbus-glib,
clucene_core_2,
libcdr,
lcms2,
unixODBC,
sane-backends,
mythes,
libexttextcat,
libvisio,
pkg-config,
bluez5,
libtool,
libatomic_ops,
graphite2,
harfbuzz,
libodfgen,
libzmf,
librevenge,
libe-book,
libmwaw,
glm,
gst_all_1,
gdb,
adwaita-icon-theme,
glib,
ncurses,
libepoxy,
gpgme,
libwebp,
abseil-cpp,
libepubgen,
libetonyek,
libpng,
libxcrypt,
langs ? [
"ar"
"ca"
"cs"
"da"
"de"
"en-GB"
"en-US"
"eo"
"es"
"fi"
"fr"
"hu"
"it"
"ja"
"ko"
"nl"
"pl"
"pt"
"pt-BR"
"ro"
"ru"
"sk"
"sl"
"tr"
"uk"
"zh-CN"
"zh-TW"
],
withFonts ? false,
withHelp ? true,
withJava ? true,
kdeIntegration ? false,
variant ? "fresh",
debugLogging ? variant == "still",
qt6,
kdePackages,
symlinkJoin,
libpq,
makeFontsConf,
amiri,
caladea,
carlito,
culmus,
dejavu_fonts,
rubik,
liberation-sans-narrow,
liberation_ttf_v2,
libertine,
libertine-g,
noto-fonts,
noto-fonts-lgc-plus,
noto-fonts-cjk-sans,
rhino,
lp_solve,
xmlsec,
libcmis,
}:
assert builtins.elem variant [
"fresh"
"still"
"collabora"
];
let
inherit (lib)
flatten
flip
concatMapStrings
concatStringsSep
getDev
getLib
optionals
optionalString
;
notoSubset =
suffixes:
runCommand "noto-fonts-subset" { } ''
mkdir -p "$out/share/fonts/noto/"
${concatMapStrings (x: ''
cp "${noto-fonts}/share/fonts/noto/NotoSans${x}["*.[ot]tf "$out/share/fonts/noto/"
'') suffixes}
'';
fontsConf = makeFontsConf {
fontDirectories = [
amiri
caladea
carlito
culmus
dejavu_fonts
rubik
liberation-sans-narrow
liberation_ttf_v2
libertine
libertine-g
# Font priority issues in some tests in Still
noto-fonts-lgc-plus
(if variant == "fresh" then noto-fonts else (notoSubset [ "Arabic" ]))
noto-fonts-cjk-sans
];
};
jre' = jre21_minimal.override {
modules = [
"java.base"
"java.desktop"
"java.logging"
"java.sql"
];
};
importVariant = f: import (./. + "/src-${variant}/${f}");
# Update these files with:
# nix-shell maintainers/scripts/update.nix --argstr package libreoffice-$VARIANT.unwrapped
version = importVariant "version.nix";
srcsAttributes = {
main = importVariant "main.nix";
help = importVariant "help.nix";
translations = importVariant "translations.nix";
deps = (importVariant "deps.nix") ++ [
# TODO: Why is this needed?
rec {
name = "unowinreg.dll";
url = "https://dev-www.libreoffice.org/extern/${md5name}";
sha256 = "1infwvv1p6i21scywrldsxs22f62x85mns4iq8h6vr6vlx3fdzga";
md5 = "185d60944ea767075d27247c3162b3bc";
md5name = "${md5}-${name}";
}
];
};
srcs = {
third_party = map (
x:
(fetchurl {
inherit (x) url sha256 name;
})
// {
inherit (x) md5name md5;
}
) srcsAttributes.deps;
translations = srcsAttributes.translations { inherit fetchurl fetchgit; };
help = srcsAttributes.help { inherit fetchurl fetchgit; };
};
# See `postPatch` for details
kdeDeps = symlinkJoin {
name = "libreoffice-kde-dependencies-${version}";
paths = flatten (
map
(e: [
(getDev e)
(getLib e)
])
[
qt6.qtbase
qt6.qtmultimedia
kdePackages.kconfig
kdePackages.kcoreaddons
kdePackages.ki18n
kdePackages.kio
kdePackages.kwindowsystem
]
);
};
tarballPath = "external/tarballs";
in
stdenv.mkDerivation (finalAttrs: {
pname = "libreoffice";
inherit version;
src = srcsAttributes.main { inherit fetchurl fetchgit; };
postUnpack = ''
mkdir -v $sourceRoot/${tarballPath}
${flip concatMapStrings srcs.third_party (f: ''
ln -sfv ${f} $sourceRoot/${tarballPath}/${f.md5name}
ln -sfv ${f} $sourceRoot/${tarballPath}/${f.name}
'')}
''
+ (
if (variant != "collabora") then
''
ln -sv ${srcs.help} $sourceRoot/${tarballPath}/${srcs.help.name}
ln -svf ${srcs.translations} $sourceRoot/${tarballPath}/${srcs.translations.name}
tar -xf ${srcs.help}
tar -xf ${srcs.translations}
''
else
''
cp -r --no-preserve=mode ${srcs.help}/. $sourceRoot/helpcontent2/
cp -r --no-preserve=mode ${srcs.translations}/. $sourceRoot/translations/
''
);
patches = [
# Skip some broken tests:
# - tdf160386 does not fall back to a CJK font properly for some reason
# - the remaining tests have notes in the patches
# FIXME: get rid of this ASAP
./skip-broken-tests.patch
(./skip-broken-tests- + variant + ".patch")
# Don't detect Qt paths from qmake, so our patched-in onese are used
./dont-detect-qt-paths-from-qmake.patch
# Revert part of https://github.com/LibreOffice/core/commit/6f60670877208612b5ea320b3677480ef6508abb that broke zlib linking
./readd-explicit-zlib-link.patch
]
++ lib.optionals (lib.versionOlder version "25.8") [
# Backport patch to fix build with Poppler 25.05
(fetchpatch2 {
url = "https://github.com/LibreOffice/core/commit/0ee2636304ac049f21415c67e92040f7d6c14d35.patch";
includes = [ "sdext/*" ];
hash = "sha256-8yipl5ln1yCNfVM8SuWowsw1Iy/SXIwbdT1ZfNw4cJA=";
})
]
++ lib.optionals (lib.versionOlder version "24.8") [
(fetchpatch2 {
name = "icu74-compat.patch";
url = "https://gitlab.archlinux.org/archlinux/packaging/packages/libreoffice-fresh/-/raw/main/libreoffice-7.5.8.2-icu-74-compatibility.patch?ref_type=heads.patch";
hash = "sha256-OGBPIVQj8JTYlkKywt4QpH7ULAzKmet5jTLztGpIS0Y=";
})
]
++ lib.optionals (variant == "collabora") [
./fix-unpack-collabora.patch
];
postPatch = ''
# configure checks for header 'gpgme++/gpgmepp_version.h',
# and if it is found (no matter where) uses a hardcoded path
# in what presumably is an effort to make it possible to write
# '#include <context.h>' instead of '#include <gpgmepp/context.h>'.
#
# Fix this path to point to where the headers can actually be found instead.
substituteInPlace configure.ac --replace-fail \
'GPGMEPP_CFLAGS=-I/usr/include/gpgme++' \
'GPGMEPP_CFLAGS=-I${gpgme.dev}/include/gpgme++'
# Fix for Python 3.12
substituteInPlace configure.ac --replace-fail distutils.sysconfig sysconfig
'';
nativeBuildInputs = [
autoconf
automake
bison
flex
fontforge
gdb
gettext
gperf
icu
libmysqlclient
libtool
libxml2
libxslt
perl
perlPackages.ArchiveZip
perlPackages.IOCompress
pkg-config
python311
unzip
zip
]
++ optionals kdeIntegration [
qt6.qtbase
]
++ optionals withJava [
ant
jdk21
];
buildInputs =
finalAttrs.passthru.gst_packages
++ [
# Make libpng not handle APNG images, so LibreOffice's own handler kicks in
# This should be ordered first, so it gets picked up before any other
# propagated libpng
# See: https://www.mail-archive.com/libreoffice@lists.freedesktop.org/msg334080.html
(libpng.override { apngSupport = false; })
coinmp
abseil-cpp
bluez5
box2d_2
cairo
clucene_core_2
cppunit
cups
curl
db
dbus-glib
expat
file
fontconfig
freetype
getopt
glib
glm
adwaita-icon-theme
gpgme
graphite2
gtk3
(harfbuzz.override { withIcu = true; })
hunspell
icu
lcms2
libGL
libGLU
libtool
xorg.libX11
xorg.libXaw
xorg.libXdmcp
xorg.libXext
xorg.libXi
xorg.libXinerama
xorg.libXtst
libabw
libargon2
libatomic_ops
libcdr
libcmis
libe-book
libepoxy
libepubgen
libetonyek
libexttextcat
libjpeg
liblangtag
libmspack
libmwaw
libodfgen
xorg.libpthreadstubs
librdf_redland
librevenge
librsvg
libsndfile
libvisio
libwpd
libwpg
libwps
libxcrypt
libxml2
xorg.libxshmfence
libxslt
libzmf
libwebp
lp_solve
mythes
ncurses
neon
nspr
nss
openldap
openssl
pam
poppler
libpq
python311
sane-backends
unixODBC
util-linux
which
xmlsec
zlib
]
++ optionals kdeIntegration [
qt6.qtbase
kdePackages.kcoreaddons
kdePackages.kio
]
++ optionals withJava [
jre'
];
preConfigure = ''
configureFlagsArray=(
"--with-parallelism=$NIX_BUILD_CORES"
# here because we need to be very specific about spaces
"--with-lang=${concatStringsSep " " langs}"
);
patchShebangs .
NOCONFIGURE=1 ./autogen.sh
''
+ optionalString kdeIntegration ''
# configure.ac assumes that the first directory that contains headers and
# libraries during its checks contains *all* the relevant headers/libs which
# obviously doesn't work for us, so we have 2 options:
#
# 1. patch configure.ac in order to specify the direct paths to various Qt/KDE
# dependencies which is ugly and brittle, or
#
# 2. use symlinkJoin to pull in the relevant dependencies and just patch in
# that path which is *also* ugly, but far less likely to break
#
# The 2nd option is not very Nix'y, but I'll take robust over nice any day.
# Additionally, it's much easier to fix if LO breaks on the next upgrade (just
# add the missing dependencies to it).
export QT6INC=${kdeDeps}/include
export QT6LIB=${kdeDeps}/lib
export KF6INC="${kdeDeps}/include ${kdeDeps}/include/KF6"
export KF6LIB=${kdeDeps}/lib
'';
configureFlags = [
# Explicitly passing in --host even on non-cross, because
# LibreOffice will attempt to detect WSL and cross-compile
# itself to Windows automatically, and we don't want it
# doing that.
"--host=${stdenv.hostPlatform.config}"
"--without-buildconfig-recorded"
(lib.withFeature withHelp "help")
"--with-vendor=NixOS"
"--disable-report-builder"
"--disable-online-update"
"--enable-python=system"
"--enable-dbus"
"--enable-release-build"
"--enable-epm"
(lib.withFeature withJava "java")
# Without these, configure does not finish
"--without-junit"
# Schema files for validation are not included in the source tarball
"--without-export-validation"
# We do tarball prefetching ourselves
"--disable-fetch-external"
"--enable-build-opensymbol"
# I imagine this helps. Copied from go-oo.
# Modified on every upgrade, though
"--disable-odk"
"--disable-firebird-sdbc"
(lib.withFeature withFonts "fonts")
"--without-doxygen"
"--with-system-cairo"
"--with-system-coinmp"
"--with-system-headers"
"--with-system-libabw"
"--with-system-libcmis"
"--with-system-libepubgen"
"--with-system-libetonyek"
"--with-system-liblangtag"
"--with-system-libs"
"--with-system-libwps"
"--with-system-lpsolve"
"--with-system-openldap"
"--with-system-openssl"
"--with-system-orcus"
"--with-system-postgresql"
"--with-system-xmlsec"
# TODO: package these as system libraries
"--without-system-altlinuxhyph"
"--without-system-frozen"
"--without-system-libeot"
"--without-system-libfreehand"
"--without-system-libmspub"
"--without-system-libnumbertext"
"--without-system-libpagemaker"
"--without-system-libstaroffice"
"--without-system-libqxp"
"--without-system-dragonbox"
"--without-system-libfixmath"
# TODO: bump this to 0.20
"--without-system-orcus"
# TODO: bump this to 3.0 (#382851)
"--without-system-mdds"
# requires an oddly specific, old version
"--without-system-hsqldb"
# searches hardcoded paths that are wrong
"--without-system-zxing"
# is packaged but headers can't be found because there is no pkg-config file
"--without-system-zxcvbn"
# cannot find headers, no idea why
"--without-system-boost"
]
++ optionals kdeIntegration [
"--enable-kf6"
"--enable-qt6"
]
++ optionals withJava [
"--with-system-beanshell"
"--with-ant-home=${ant.home}"
"--with-beanshell-jar=${bsh}"
]
++ (
if variant == "fresh" || variant == "collabora" then
[
"--with-system-rhino"
"--with-rhino-jar=${rhino}/share/java/js.jar"
"--without-system-java-websocket"
]
else
[
# our Rhino is too new for older versions
"--without-system-rhino"
]
);
env = {
# FIXME: this is a hack, because the right cflags are not being picked up
# from rasqal's .pc file. Needs more investigation.
NIX_CFLAGS_COMPILE =
"-I${librdf_rasqal}/include/rasqal"
+ (lib.optionalString debugLogging " -DSAL_LOG_WARN=1 -DSAL_LOG_INFO=1 ");
# Provide all the fonts used in tests.
FONTCONFIG_FILE = fontsConf;
};
makeFlags = [ "SHELL=${bash}/bin/bash" ];
enableParallelBuilding = true;
buildTargets = [ "build-nocheck" ];
doCheck = true;
preCheck = ''
export HOME=$(pwd)
'';
checkTarget = concatStringsSep " " [
"unitcheck"
"slowcheck"
"--keep-going" # easier to debug test failures
];
postInstall = optionalString (variant != "collabora") ''
mkdir -p $out/{include,share/icons}
cp -r include/LibreOfficeKit $out/include/
cp -r sysui/desktop/icons/hicolor $out/share/icons
# Rename icons for consistency
for file in $out/share/icons/hicolor/*/apps/*; do
mv $file "$(dirname $file)/libreoffice-$(basename $file)"
done
ln -s $out/lib/libreoffice/share/xdg $out/share/applications
# Unversionize desktop files
. ./bin/get_config_variables PRODUCTVERSION
for file in $out/lib/libreoffice/share/xdg/*.desktop; do
substituteInPlace $file \
--replace-fail "LibreOffice $PRODUCTVERSION" "LibreOffice" \
--replace-warn "Icon=libreoffice$PRODUCTVERSION" "Icon=libreoffice" \
--replace-fail "Exec=libreoffice$PRODUCTVERSION" "Exec=libreoffice"
done
'';
# Wrapping is done in ./wrapper.nix
dontWrapQtApps = true;
strictDeps = true;
passthru = {
inherit srcs;
jdk = if withJava then jre' else null;
python = python311; # for unoconv
updateScript = [
./update.sh
# Pass it this file name as argument
(builtins.unsafeGetAttrPos "pname" finalAttrs.finalPackage).file
# And the variant
variant
];
inherit kdeIntegration;
# For the wrapper.nix
inherit gtk3;
# Although present in qtPackages, we need qtbase.qtPluginPrefix and
# qtbase.qtQmlPrefix
inherit (qt6) qtbase;
gst_packages = with gst_all_1; [
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gstreamer
];
qmlPackages = [
kdePackages.ki18n
kdePackages.knotifications
qt6.qtdeclarative
qt6.qtmultimedia
qt6.qtwayland
kdePackages.solid
kdePackages.sonnet
];
qtPackages = [
kdePackages.kauth
kdePackages.kcompletion
kdePackages.kconfigwidgets
kdePackages.kglobalaccel
kdePackages.ki18n
kdePackages.kio
kdePackages.kitemviews
kdePackages.ktextwidgets
kdePackages.kwidgetsaddons
kdePackages.kwindowsystem
kdePackages.kxmlgui
kdePackages.phonon
qt6.qtbase
qt6.qtdeclarative
qt6.qtmultimedia
qt6.qtsvg
qt6.qttools
qt6.qtwayland
kdePackages.sonnet
];
};
# libreoffice tries to reference the BUILDCONFIG (e.g. PKG_CONFIG_PATH)
# in the binary causing the closure size to blow up because of many unnecessary
# dependencies to dev outputs. This behavior was patched away in nixpkgs
# (see above), make sure these don't leak again by accident.
# FIXME: disabled for kdeIntegration builds because the weird symlinkJoin setup
# leaks all the -dev dependencies :(
disallowedRequisites = lib.optionals (!kdeIntegration) (
lib.concatMap (x: lib.optional (x ? dev) x.dev) finalAttrs.buildInputs
);
requiredSystemFeatures = [ "big-parallel" ];
meta = {
changelog = "https://wiki.documentfoundation.org/ReleaseNotes/${lib.versions.majorMinor version}";
description = "Comprehensive, professional-quality productivity suite, a variant of openoffice.org";
homepage = "https://libreoffice.org/";
# at least one jar in dependencies
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
license = with lib.licenses; [
mpl20
lgpl3Plus
asl20
];
maintainers = with lib.maintainers; [ raskin ];
platforms = lib.platforms.linux;
mainProgram = "libreoffice";
};
})

View File

@@ -0,0 +1,22 @@
diff --git a/configure.ac b/configure.ac
index 2c11703cb3ff..302a006bbf75 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13444,8 +13444,6 @@ then
fi
fi
- qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
- qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
@@ -13585,8 +13583,6 @@ then
AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
fi
- qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
- qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"

View File

@@ -0,0 +1,10 @@
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -31,6 +31,7 @@ define gb_UnpackedTarget__command_unzip
unzip \
-qq \
-d $(UNPACKED_DIR) $(UNPACKED_TARBALL) \
+ && chmod -R u+r $(UNPACKED_DIR) \
$(if $(filter-out 0,$(UNPACKED_STRIP_COMPONENTS)),\
&& UNZIP_DIR=`ls $(UNPACKED_DIR)` \
&& mv $(UNPACKED_DIR)/$$UNZIP_DIR/* $(UNPACKED_DIR) \

View File

@@ -0,0 +1,346 @@
#!/usr/bin/env python3
"""
Converts the LibreOffice `download.lst` file into a Nix expression.
Requires an environment variable named `downloadList` identifying the path
of the input file, and writes the result to stdout.
todo - Ideally we would move as much as possible into derivation dependencies.
"""
import collections, itertools, json, re, subprocess, sys, os
import urllib.request, urllib.error
def main():
packages = list(get_packages())
for x in packages:
print(x, file=sys.stderr)
print('[')
for x in packages:
md5 = x['md5']
upstream_sha256 = x['sha256']
if upstream_sha256:
hash = upstream_sha256
hashtype = 'sha256'
else:
hash = md5
hashtype = 'md5'
tarball = x['tarball']
url = construct_url(x)
print('url: {}'.format(url), file=sys.stderr)
path = download(url, tarball, hash, hashtype)
print('path: {}'.format(path), file=sys.stderr)
sha256 = get_sha256(path)
print('sha256: {}'.format(sha256), file=sys.stderr)
print(' {')
print(' name = "{}";'.format(tarball))
print(' url = "{}";'.format(url))
print(' sha256 = "{}";'.format(sha256))
print(' md5 = "{}";'.format(md5))
print(' md5name = "{}-{}";'.format(md5 or upstream_sha256,tarball))
print(' }')
print(']')
def construct_url(x):
if x['brief']:
url = 'https://dev-www.libreoffice.org/src/{}{}'.format(
x.get('subdir', ''), x['tarball'])
else:
url = 'https://dev-www.libreoffice.org/src/{}{}-{}'.format(
x.get('subdir', ''), x['md5'], x['tarball'])
if x['name'].startswith('FONT_NOTO_') and not probe_url(url):
return 'https://noto-website-2.storage.googleapis.com/pkgs/{}'.format(x['tarball'])
if x['name'] == 'FONT_OPENDYSLEXIC':
return 'https://github.com/antijingoist/opendyslexic/releases/download/v0.91.12/{}'.format(x['tarball'])
return url
def probe_url(url: str) -> bool:
request = urllib.request.Request(url, method='HEAD')
try:
with urllib.request.urlopen(request) as response:
return response.status == 200
except urllib.error.HTTPError as e:
return False
def download(url, name, hash, hashtype):
cmd = ['nix-prefetch-url', url, hash, '--print-path',
'--type', hashtype, '--name', name]
proc = subprocess.run(cmd, stdout=subprocess.PIPE, check=True,
universal_newlines=True)
return proc.stdout.split('\n')[1].strip()
def get_sha256(path):
cmd = ['sha256sum', path]
proc = subprocess.run(cmd, stdout=subprocess.PIPE, check=True,
universal_newlines=True)
return proc.stdout.split(' ')[0].strip()
def get_packages():
"""
All of the package data: What's parsed from download.lst,
plus our additions.
"""
return apply_additions(get_packages_from_download_list(),
get_additions())
def get_additions():
"""
A mapping from package name (the all-caps identifiers used in
`download.lst`) to a dict of additional attributes to set on the package.
"""
with open('./libreoffice-srcs-additions.json') as f:
return json.load(f)
def apply_additions(xs, additions):
for x in xs:
yield dict_merge([x,
additions.get(x['name'], {})])
def get_packages_from_download_list():
"""
The result of parsing `download.lst`: A list of dicts containing keys
'name', 'tarball', 'md5', 'brief'.
"""
def lines():
for x in sub_symbols(parse_lines(get_lines())):
interpretation = interpret(x)
if interpretation == 'unrecognized':
print_skipped_line(x)
else:
yield dict_merge([x,
interpretation])
def cluster(xs):
"""
Groups lines according to their order within the file, to support
packages that are listed in `download.lst` more than once.
"""
keys = ['tarball', 'md5', 'sha256', 'brief']
a = {k: [x for x in xs if k in x['attrs']] for k in keys}
return zip(*[a[k] for k in keys])
def packages():
for (name, group) in groupby(lines(), lambda x: x['name']):
for xs in cluster(group):
yield {'name': name,
'attrs': dict_merge(x['attrs'] for x in xs),
'index': min(x['index'] for x in xs)}
for x in sorted(packages(), key=lambda x: x['index']):
yield dict_merge([{'name': x['name']},
x['attrs']])
def dict_merge(xs):
"""
>>> dict_merge([{1: 2}, {3: 4}, {3: 5}])
{1: 2, 3: 4}
"""
return dict(collections.ChainMap(*xs))
def groupby(xs, f):
"""
>>> groupby([1, 2, 3, 4], lambda x: x % 2)
[(0, [2, 4]), (1, [1, 3])]
"""
for (k, iter) in itertools.groupby(sorted(xs, key=f), f):
group = list(iter)
yield (f(group[0]), group)
def get_lines():
download_list = os.getenv('downloadList')
with open(download_list) as f:
return f.read().splitlines()
def print_skipped_line(x):
print('Skipped line {}: {}'.format(x['index'],
x['original']),
file=sys.stderr)
def parse_lines(lines):
"""
Input: List of strings (the lines from `download.lst`
Output: Iterator of dicts with keys 'key', 'value', and 'index'
"""
for (index, line) in enumerate(lines):
x = { 'index': index, 'original': line }
result = parse_line(line)
if result == 'nothing':
pass
elif result == 'unrecognized':
print_skipped_line(x)
else:
yield dict_merge([x,
result])
def parse_line(line):
"""
Input: A string
Output: One of 1. A dict with keys 'key', 'value'
2. 'nothing' (if the line contains no information)
2. 'unrecognized' (if parsing failed)
"""
if re.match('\s*(#.*)?$', line):
return 'nothing'
match = re.match('([^:\s]+)\s*:=\s*(.*)$', line)
if match:
return {
'key': match.group(1),
'value': match.group(2).strip()
}
else:
return 'unrecognized'
def sub_symbols(xs):
"""
Do substitution of variables across all lines.
>>> sub_symbols([{'key': 'a', 'value': 'x'},
... {'key': 'c': 'value': '$(a)yz'}])
[{'key': 'a', 'value': 'x'}, {'key': 'c': 'value': 'xyz'}]
"""
xs = list(xs)
symbols = {x['key']: x for x in xs}
def get_value(k):
x = symbols.get(k)
return x['value'] if x is not None else ''
for x in xs:
yield dict_merge([{'value': sub_str(x['value'], get_value)},
x])
def sub_str(string, func):
"""
Do substitution of variables in a single line.
>>> sub_str("x = $(x)", lambda k: {'x': 'a'}[k])
"x = a"
"""
def func2(m):
x = m.group(1)
result = func(x)
return result if result is not None else x
return re.sub(r'\$\(([^\$\(\)]+)\)', func2, string)
def interpret(x):
"""
Input: Dict with keys 'key' and 'value'
Output: One of 1. Dict with keys 'name' and 'attrs'
2. 'unrecognized' (if interpretation failed)
"""
for f in [interpret_md5, interpret_sha256, interpret_tarball_with_md5, interpret_tarball, interpret_jar]:
result = f(x)
if result is not None:
return result
return 'unrecognized'
def interpret_md5(x):
"""
>>> interpret_md5("ODFGEN_MD5SUM", "32572ea48d9021bbd6fa317ddb697abc")
{'name': 'ODFGEN', 'attrs': {'md5': '32572ea48d9021bbd6fa317ddb697abc'}}
"""
match = re.match('^(.*)_MD5SUM$', x['key'])
if match:
return {'name': match.group(1),
'attrs': {'md5': x['value'], 'sha256': ''}}
def interpret_sha256(x):
match = re.match('^(.*)_SHA256SUM$', x['key'])
if match:
return {'name': match.group(1),
'attrs': {'sha256': x['value'], 'md5': ''}}
def interpret_tarball(x):
"""
>>> interpret_tarball("FREEHAND_TARBALL", "libfreehand-0.1.1.tar.bz2")
{'name': 'FREEHAND',
'attrs': {'tarball': 'libfreehand-0.1.1.tar.bz2', 'brief': True}}
"""
match = re.match('^(.*)_TARBALL$', x['key'])
if match:
return {'name': match.group(1),
'attrs': {'tarball': x['value'], 'brief': True}}
def interpret_jar(x):
match = re.match('^(.*)_JAR$', x['key'])
if match:
return {'name': match.group(1),
'attrs': {'tarball': x['value'], 'brief': True}}
def interpret_tarball_with_md5(x):
"""
>>> interpret_tarball_with_md5("CLUCENE_TARBALL",\
"48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz")
{'name': 'CLUCENE',
'attrs': {'tarball': 'clucene-core-2.3.3.4.tar.gz',
'md5': '48d647fbd8ef8889e5a7f422c1bfda94', 'brief': False}}
"""
match = {'key': re.match('^(.*)_(TARBALL|JAR)$', x['key']),
'value': re.match('(?P<md5>[0-9a-fA-F]{32})-(?P<tarball>.+)$',
x['value'])}
if match['key'] and match['value']:
return {'name': match['key'].group(1),
'attrs': {'tarball': match['value'].group('tarball'),
'md5': match['value'].group('md5'),
'sha256': '',
'brief': False}}
main()

View File

@@ -0,0 +1,5 @@
{
"LIBGLTF": {"subdir": "libgltf/"},
"ODFVALIDATOR": {"subdir": "../extern/"},
"OFFICEOTRON": {"subdir": "../extern/"}
}

View File

@@ -0,0 +1,36 @@
diff --git a/writerperfect/Library_wpftcalc.mk b/writerperfect/Library_wpftcalc.mk
index 3f7f82329..b7a11088a 100644
--- a/writerperfect/Library_wpftcalc.mk
+++ b/writerperfect/Library_wpftcalc.mk
@@ -60,6 +60,7 @@ $(eval $(call gb_Library_use_externals,wpftcalc,\
icu_headers \
icui18n \
icuuc \
+ zlib \
))
ifneq ($(ENABLE_WASM_STRIP_SCEXPORTS),TRUE)
diff --git a/writerperfect/Library_wpftdraw.mk b/writerperfect/Library_wpftdraw.mk
index a369a626c..cd2fc2be9 100644
--- a/writerperfect/Library_wpftdraw.mk
+++ b/writerperfect/Library_wpftdraw.mk
@@ -65,6 +65,7 @@ $(eval $(call gb_Library_use_externals,wpftdraw,\
icu_headers \
icui18n \
icuuc \
+ zlib \
))
$(eval $(call gb_Library_add_exception_objects,wpftdraw,\
diff --git a/writerperfect/Library_wpftimpress.mk b/writerperfect/Library_wpftimpress.mk
index 3fa007ae5..9b0e37b4b 100644
--- a/writerperfect/Library_wpftimpress.mk
+++ b/writerperfect/Library_wpftimpress.mk
@@ -50,6 +50,7 @@ $(eval $(call gb_Library_use_externals,wpftimpress,\
odfgen \
staroffice \
revenge \
+ zlib \
))
$(eval $(call gb_Library_add_exception_objects,wpftimpress,\

View File

@@ -0,0 +1,202 @@
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 63dc4b92b90d..fc6d83da6448 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -70,8 +70,8 @@ endif
ifneq ($(DISABLE_GUI),TRUE)
ifeq ($(OS),LINUX)
+# CppunitTest_sc_tiledrendering hangs
$(eval $(call gb_Module_add_check_targets,sc,\
- CppunitTest_sc_tiledrendering \
CppunitTest_sc_tiledrendering2 \
))
endif
diff --git a/sc/qa/extras/vba-macro-test.cxx b/sc/qa/extras/vba-macro-test.cxx
index 4dc1f0fe93c4..46b506131719 100644
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -355,7 +355,7 @@ CPPUNIT_TEST_FIXTURE(VBAMacroTest, testVba)
// Failed: : Test change event for Range.FillRight:
// Tests passed: 4
// Tests failed: 4
-#if !defined(_WIN32)
+#if 0 // flaky, see above
{ u"Ranges-3.xls"_ustr,
u"vnd.sun.Star.script:VBAProject.testMacros.test?language=Basic&location=document"_ustr },
#endif
diff --git a/sc/qa/unit/subsequent_export_test2.cxx b/sc/qa/unit/subsequent_export_test2.cxx
index 1396cef69fa5..8ca0e4043f72 100644
--- a/sc/qa/unit/subsequent_export_test2.cxx
+++ b/sc/qa/unit/subsequent_export_test2.cxx
@@ -100,6 +100,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringXLSX)
CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringConfigXLSX)
{
+ return; // fails consistently
+
// this doc is configured with CalcA1 ref syntax
createScDoc("xlsx/empty.xlsx");
@@ -137,6 +139,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringConfigXLSX)
CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringUnspecified)
{
+ return; // fails consistently
+
createScDoc();
ScDocument* pDoc = getScDoc();
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 40d2c6f174de..9f540581133e 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -1507,6 +1507,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaAnnotateTrimOnDoubleRefs)
CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdate)
{
+ return; // fails consistently on nixpkgs?
+
m_pDoc->InsertTab(0, u"Formula"_ustr);
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 3892b36b5a85..68d5c21fc896 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -1580,6 +1580,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testMultiViewInsertDeletePage)
CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testMultiViewInsertDeletePage2)
{
+ return; // fails consistently
+
// Load the document.
SdXImpressDocument* pXImpressDocument = createDoc("dummy.odp");
SdTestViewCallback aView1;
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 17055fa287ed..aa27d6969717 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -1364,6 +1364,8 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFlysInHeader)
#if !defined(MACOSX)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf150606)
{
+ return; // flaky
+
createSwDoc("tdf150606-1-min.odt");
SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
diff --git a/sw/qa/extras/layout/layout4.cxx b/sw/qa/extras/layout/layout4.cxx
index eb9abea5a538..a2d511607a48 100644
--- a/sw/qa/extras/layout/layout4.cxx
+++ b/sw/qa/extras/layout/layout4.cxx
@@ -1518,6 +1518,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf104209VertRTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in LTR text
createSwDoc("tdf56408-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1532,6 +1533,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408RTL)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in RTL text
createSwDoc("tdf56408-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1546,6 +1548,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408RTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408NoUnderflow)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// The fix for tdf#56408 introduced a change to line breaking between text with
// direction changes. This test verifies behavior in the trivial case, when a
// break opportunity exists at the direction change boundary.
@@ -1562,6 +1565,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408NoUnderflow)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408AfterFieldCrash)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify there is no crash/assertion for underflow after a number field
createSwDoc("tdf56408-after-field.fodt");
}
@@ -1619,6 +1623,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf164907_rowHeightAtLeast)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1633,6 +1638,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829RTL)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx
index b2c844e91f81..46356e02c050 100644
--- a/sw/qa/extras/odfexport/odfexport2.cxx
+++ b/sw/qa/extras/odfexport/odfexport2.cxx
@@ -1720,6 +1720,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMidnightRedlineDatetime)
// - Error: "2001-01-01" does not satisfy the "dateTime" type
// because "2001-01-01T00:00:00" became "2001-01-01" on roundtrip.
loadAndReload("midnight_redline.fodt");
+ return; // fails on aarch64
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
assertXPathContent(pXmlDoc,
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 1e404a1d733a..33e9866dc828 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -3788,6 +3788,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testRedlineTooltip)
// toggling Formatting Marks on/off for one view should have no effect on other views
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testToggleFormattingMarks)
{
+ return; // fails consistently
+
SwXTextDocument* pXTextDocument = createDoc();
int nView1 = SfxLokHelper::getView();
diff --git a/unoxml/qa/unit/rdftest.cxx b/unoxml/qa/unit/rdftest.cxx
index 61c556369d21..c91befbbada2 100644
--- a/unoxml/qa/unit/rdftest.cxx
+++ b/unoxml/qa/unit/rdftest.cxx
@@ -962,6 +962,7 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testTdf123293)
CPPUNIT_TEST_FIXTURE(RDFStreamTest, testDocumentMetadataAccess)
{
+ return; // fails on aarch64
loadFromURL(u"private:factory/swriter"_ustr);
uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent,
diff --git a/vcl/qa/cppunit/complextext.cxx b/vcl/qa/cppunit/complextext.cxx
index c8a9e6e7c3cd..c0a2bb33b312 100644
--- a/vcl/qa/cppunit/complextext.cxx
+++ b/vcl/qa/cppunit/complextext.cxx
@@ -553,6 +553,8 @@ CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testMixedCJKLatinScript_glyph_advanceme
CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf107718)
{
+ return; // fails in nixpkgs
+
#if HAVE_MORE_FONTS
#if !defined _WIN32 // TODO: Fails on jenkins but passes locally
vcl::Font aFont(u"Source Han Sans"_ustr, u"Regular"_ustr, Size(0, 72));
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index 4909267f7c74..63a177b0a2a5 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -6056,6 +6056,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162750SmallCapsLigature)
CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf164106SplitReorderedClusters)
{
+ return; // fails due to missing font: Noto Sans
saveAsPDF(u"tdf164106.fodt");
auto pPdfDocument = parsePDFExport();

View File

@@ -0,0 +1,225 @@
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 63dc4b92b90d..fc6d83da6448 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -70,8 +70,8 @@ endif
ifneq ($(DISABLE_GUI),TRUE)
ifeq ($(OS),LINUX)
+# CppunitTest_sc_tiledrendering hangs
$(eval $(call gb_Module_add_check_targets,sc,\
- CppunitTest_sc_tiledrendering \
CppunitTest_sc_tiledrendering2 \
))
endif
diff --git a/sc/qa/extras/vba-macro-test.cxx b/sc/qa/extras/vba-macro-test.cxx
index 4dc1f0fe93c4..46b506131719 100644
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -355,7 +355,7 @@ CPPUNIT_TEST_FIXTURE(VBAMacroTest, testVba)
// Failed: : Test change event for Range.FillRight:
// Tests passed: 4
// Tests failed: 4
-#if !defined(_WIN32)
+#if 0 // flaky, see above
{ u"Ranges-3.xls"_ustr,
u"vnd.sun.Star.script:VBAProject.testMacros.test?language=Basic&location=document"_ustr },
#endif
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 40d2c6f174de..9f540581133e 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -1507,6 +1507,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaAnnotateTrimOnDoubleRefs)
CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdate)
{
+ return; // fails consistently on nixpkgs?
+
m_pDoc->InsertTab(0, u"Formula"_ustr);
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 17055fa287ed..aa27d6969717 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -1364,6 +1364,8 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testRedlineFlysInHeader)
#if !defined(MACOSX)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter, TestTdf150606)
{
+ return; // flaky
+
createSwDoc("tdf150606-1-min.odt");
SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
diff --git a/sw/qa/extras/layout/layout4.cxx b/sw/qa/extras/layout/layout4.cxx
index eb9abea5a538..a2d511607a48 100644
--- a/sw/qa/extras/layout/layout4.cxx
+++ b/sw/qa/extras/layout/layout4.cxx
@@ -1518,6 +1518,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf104209VertRTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in LTR text
createSwDoc("tdf56408-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1532,6 +1533,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408RTL)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in RTL text
createSwDoc("tdf56408-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1546,6 +1548,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408RTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408NoUnderflow)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// The fix for tdf#56408 introduced a change to line breaking between text with
// direction changes. This test verifies behavior in the trivial case, when a
// break opportunity exists at the direction change boundary.
@@ -1562,6 +1565,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408NoUnderflow)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf56408AfterFieldCrash)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify there is no crash/assertion for underflow after a number field
createSwDoc("tdf56408-after-field.fodt");
}
@@ -1619,6 +1623,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf164907_rowHeightAtLeast)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -1633,6 +1638,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter4, TestTdf157829RTL)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
diff --git a/sw/qa/extras/layout/layout5.cxx b/sw/qa/extras/layout/layout5.cxx
index 5f008a55b1c0..c6ae2a9023de 100644
--- a/sw/qa/extras/layout/layout5.cxx
+++ b/sw/qa/extras/layout/layout5.cxx
@@ -1544,6 +1544,8 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf144450)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter5, testTdf166152)
{
+ return; // fails due to missing font: Noto Sans
+
createSwDoc("tdf166152.fodt");
auto* pWrtShell = getSwDocShell()->GetWrtShell();
diff --git i/sw/qa/extras/odfexport/odfexport4.cxx w/sw/qa/extras/odfexport/odfexport4.cxx
index 91d51ef40d48..f4447b5f7f35 100644
--- i/sw/qa/extras/odfexport/odfexport4.cxx
+++ w/sw/qa/extras/odfexport/odfexport4.cxx
@@ -1196,6 +1196,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMidnightRedlineDatetime)
// - Error: "2001-01-01" does not satisfy the "dateTime" type
// because "2001-01-01T00:00:00" became "2001-01-01" on roundtrip.
loadAndReload("midnight_redline.fodt");
+ return; // fails on aarch64
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
assertXPathContent(pXmlDoc,
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 0f0cd9ed3403..b40b3240120c 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -3754,6 +3754,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testRedlineTooltip)
// toggling Formatting Marks on/off for one view should have no effect on other views
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testToggleFormattingMarks)
{
+ return; // fails consistently
+
SwXTextDocument* pXTextDocument = createDoc();
int nView1 = SfxLokHelper::getView();
diff --git a/unoxml/qa/unit/rdftest.cxx b/unoxml/qa/unit/rdftest.cxx
index 61c556369d21..c91befbbada2 100644
--- a/unoxml/qa/unit/rdftest.cxx
+++ b/unoxml/qa/unit/rdftest.cxx
@@ -962,6 +962,7 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testTdf123293)
CPPUNIT_TEST_FIXTURE(RDFStreamTest, testDocumentMetadataAccess)
{
+ return; // fails on aarch64
loadFromURL(u"private:factory/swriter"_ustr);
uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent,
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index 203b9cebc1df..b07082f1e6b1 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -6077,6 +6077,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162750SmallCapsLigature)
CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf164106SplitReorderedClusters)
{
+ return; // fails due to missing font: Noto Sans
saveAsPDF(u"tdf164106.fodt");
auto pPdfDocument = parsePDFExport();
diff --git i/sc/qa/extras/scsolverobj.cxx w/sc/qa/extras/scsolverobj.cxx
index 0537b6e4f4ffdae3b094457db0034f2de8676608..8ce4deaa368f11fdc7eb36fec4e75501fa51ea7d 100644
--- i/sc/qa/extras/scsolverobj.cxx
+++ w/sc/qa/extras/scsolverobj.cxx
@@ -74,6 +74,7 @@ void ScSolverSettingsObj::testCellRangeAddress(const uno::Any& rExpected, const
// Creates a model using the XSolverSettings API checks if it is accessible via the API
void ScSolverSettingsObj::testXSolverSettings()
{
+ return;
uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, uno::UNO_QUERY_THROW);
uno::Reference<container::XIndexAccess> xIndex(xDoc->getSheets(), uno::UNO_QUERY_THROW);
uno::Reference<sheet::XSpreadsheet> xSheet(xIndex->getByIndex(0), uno::UNO_QUERY_THROW);
diff --git i/sc/qa/unit/subsequent_export_test2.cxx w/sc/qa/unit/subsequent_export_test2.cxx
index 956838656b28..70b38e4d59ba 100644
--- i/sc/qa/unit/subsequent_export_test2.cxx
+++ w/sc/qa/unit/subsequent_export_test2.cxx
@@ -100,6 +100,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringXLSX)
CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringConfigXLSX)
{
+ return;
// this doc is configured with CalcA1 ref syntax
createScDoc("xlsx/empty.xlsx");
@@ -137,6 +138,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringConfigXLSX)
CPPUNIT_TEST_FIXTURE(ScExportTest2, testRefStringUnspecified)
{
+ return;
createScDoc();
ScDocument* pDoc = getScDoc();
diff --git i/sw/qa/extras/tiledrendering/tiledrendering.cxx w/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 4ebc4be96149..28ebf8c0d446 100644
--- i/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ w/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -1262,6 +1262,7 @@ static void addDarkLightThemes(const Color& rDarkColor, const Color& rLightColor
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testGetViewRenderState)
{
+ return;
addDarkLightThemes(COL_BLACK, COL_WHITE);
SwXTextDocument* pXTextDocument = createDoc();
int nFirstViewId = SfxLokHelper::getView();
diff --git i/vcl/qa/cppunit/complextext.cxx w/vcl/qa/cppunit/complextext.cxx
index 9be428b59128..b5a5493c53e8 100644
--- i/vcl/qa/cppunit/complextext.cxx
+++ w/vcl/qa/cppunit/complextext.cxx
@@ -794,6 +794,8 @@ CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf165510)
CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf154104)
{
+ return;
+
ScopedVclPtrInstance<VirtualDevice> pOutDev;
vcl::Font aBaseFont{ u"David Libre"_ustr, u"Regular"_ustr, Size{ 0, 72 } };

View File

@@ -0,0 +1,167 @@
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -355,7 +355,7 @@ CPPUNIT_TEST_FIXTURE(VBAMacroTest, testVba)
// Failed: : Test change event for Range.FillRight:
// Tests passed: 4
// Tests failed: 4
-#if !defined(_WIN32)
+#if 0 // flaky, see above
{ u"Ranges-3.xls"_ustr,
u"vnd.sun.Star.script:VBAProject.testMacros.test?language=Basic&location=document"_ustr },
#endif
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -2954,6 +2954,7 @@ CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testCommentCellCopyPaste)
CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testInvalidEntrySave)
{
+ return; // hangs (forever?)
loadFromFile(u"validity.xlsx");
// .uno:Save modifies the original file, make a copy first
@@ -3212,6 +3213,7 @@ CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testUndoReorderingMulti)
CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testGetViewRenderState)
{
+ return; // fails on aarch64
// Add a pair of schemes, last added is the default
svtools::EditableColorConfig aColorConfig;
aColorConfig.AddScheme(u"Dark"_ustr);
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -1507,6 +1507,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaAnnotateTrimOnDoubleRefs)
CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaRefUpdate)
{
+ return; // fails consistently on nixpkgs?
+
m_pDoc->InsertTab(0, u"Formula"_ustr);
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
--- a/sw/qa/extras/layout/layout3.cxx
+++ b/sw/qa/extras/layout/layout3.cxx
@@ -3640,6 +3642,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf104209VertRTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in LTR text
createSwDoc("tdf56408-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -3654,6 +3656,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408RTL)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking a first bidi portion correctly underflows in RTL text
createSwDoc("tdf56408-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -3671,6 +3671,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408RTL)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408NoUnderflow)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// The fix for tdf#56408 introduced a change to line breaking between text with
// direction changes. This test verifies behavior in the trivial case, when a
// break opportunity exists at the direction change boundary.
@@ -3684,6 +3687,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408NoUnderflow)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf56408AfterFieldCrash)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify there is no crash/assertion for underflow after a number field
createSwDoc("tdf56408-after-field.fodt");
}
@@ -3722,6 +3722,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf146081)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf157829LTR)
{
+ return; // fails due to missing font: Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-ltr.fodt");
auto pXmlDoc = parseLayoutDump();
@@ -3736,6 +3740,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf157829LTR)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, TestTdf157829RTL)
{
+ return; // fails due to missing Noto Sans Hebrew
// Verify that line breaking inside a bidi portion triggers underflow to previous bidi portions
createSwDoc("tdf157829-rtl.fodt");
auto pXmlDoc = parseLayoutDump();
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -700,6 +700,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testSearchAll)
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testSearchAllNotifications)
{
+ return; // flaky on GTK
+
SwXTextDocument* pXTextDocument = createDoc("search.odt");
SwWrtShell* pWrtShell = pXTextDocument->GetDocShell()->GetWrtShell();
setupLibreOfficeKitViewCallback(pWrtShell->GetSfxViewShell());
@@ -970,6 +972,8 @@ namespace {
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testMissingInvalidation)
{
+ return; // flaky on GTK
+
// Create two views.
SwXTextDocument* pXTextDocument = createDoc("dummy.fodt");
ViewCallback aView1;
@@ -1003,6 +1007,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testMissingInvalidation)
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testViewCursors)
{
+ return; // flaky on GTK
+
SwXTextDocument* pXTextDocument = createDoc("dummy.fodt");
ViewCallback aView1;
SfxLokHelper::createView();
@@ -3197,6 +3203,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testRedlineNotificationDuringSave)
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testHyperlink)
{
+ return; // flaky on GTK
+
comphelper::LibreOfficeKit::setViewIdForVisCursorInvalidation(true);
SwXTextDocument* pXTextDocument = createDoc("hyperlink.odt");
SwWrtShell* pWrtShell = pXTextDocument->GetDocShell()->GetWrtShell();
@@ -3407,6 +3415,8 @@ static void lcl_extractHandleParameters(std::string_view selection, sal_Int32& i
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testMoveShapeHandle)
{
+ return; // flaky on GTK
+
comphelper::LibreOfficeKit::setActive();
SwXTextDocument* pXTextDocument = createDoc("shape.fodt");
--- a/sw/qa/extras/odfexport/odfexport2.cxx
+++ b/sw/qa/extras/odfexport/odfexport2.cxx
@@ -1711,6 +1711,7 @@ CPPUNIT_TEST_FIXTURE(Test, testMidnightRedlineDatetime)
// - Error: "2001-01-01" does not satisfy the "dateTime" type
// because "2001-01-01T00:00:00" became "2001-01-01" on roundtrip.
loadAndReload("midnight_redline.fodt");
+ return; // fails on aarch64
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
assertXPathContent(pXmlDoc,
--- a/sdext/qa/unit/pdfimport.cxx 2025-03-22 14:46:52.202082763 +0100
+++ b/sdext/qa/unit/pdfimport.cxx 2025-03-22 14:49:22.947719369 +0100
@@ -785,6 +785,7 @@
void testTdf104597_textrun()
{
+ return; // apparently geometry-sensitive ?
#if HAVE_FEATURE_POPPLER
rtl::Reference<pdfi::PDFIRawAdaptor> xAdaptor(new pdfi::PDFIRawAdaptor(OUString(), getComponentContext()));
xAdaptor->setTreeVisitorFactory(createDrawTreeVisitorFactory());
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 2025-03-22 14:51:45.421728759 +0100
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 2025-03-22 14:51:59.684729699 +0100
@@ -5721,6 +5721,7 @@
CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf164106SplitReorderedClusters)
{
+ return; // Unsure where the extra objects on the page come from
aMediaDescriptor[u"FilterName"_ustr] <<= u"writer_pdf_Export"_ustr;
saveAsPDF(u"tdf164106.fodt");

View File

@@ -0,0 +1,153 @@
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 231aea8d0f3c..214a23c82562 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -603,6 +603,8 @@ void DesktopLOKTest::testGetFilterTypes()
void DesktopLOKTest::testSearchCalc()
{
+ return; // flaky
+
LibLibreOffice_Impl aOffice;
LibLODocument_Impl* pDocument = loadDoc("search.ods");
pDocument->pClass->initializeForRendering(pDocument, nullptr);
@@ -633,6 +635,8 @@ void DesktopLOKTest::testSearchCalc()
void DesktopLOKTest::testSearchAllNotificationsCalc()
{
+ return; // flaky
+
LibLibreOffice_Impl aOffice;
LibLODocument_Impl* pDocument = loadDoc("search.ods");
pDocument->pClass->initializeForRendering(pDocument, nullptr);
diff --git a/svgio/qa/cppunit/data/tdf160386.svg b/svgio/qa/cppunit/data/tdf160386.svg
index 1644b0d15514..cf429508bcd4 100644
--- a/svgio/qa/cppunit/data/tdf160386.svg
+++ b/svgio/qa/cppunit/data/tdf160386.svg
@@ -8,7 +8,6 @@
<text systemLanguage="en">Hello!</text>
<text systemLanguage="es">Hola!</text>
<text systemLanguage="fr">Bonjour!</text>
- <text systemLanguage="ja">こんにちは</text>
<text systemLanguage="ru">Привет!</text>
<text>☺</text>
</switch>
diff --git a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx
index d8093e57a4e8..c95a742a68d3 100644
--- a/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx
+++ b/sw/qa/core/accessibilitycheck/AccessibilityCheckTest.cxx
@@ -422,6 +422,8 @@ void checkIssuePosition(std::shared_ptr<sfx::AccessibilityIssue> const& pIssue,
CPPUNIT_TEST_FIXTURE(AccessibilityCheckTest, testOnlineNodeSplitAppend)
{
+ return; // flaky?
+
// Checks the a11y checker is setting the a11y issues to the nodes
// correctly when splitting and appending nodes (through undo), which
// happen on editing all the time.
diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx
index b81146642bd4..2094b7ea9477 100644
--- a/sw/qa/core/text/text.cxx
+++ b/sw/qa/core/text/text.cxx
@@ -1596,6 +1596,8 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testParaUpperMarginFlyIntersect)
CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf129810)
{
+ return; // flaky?
+
// Load the document.
// The document embeds a subset of "Source Han Serif SC" so that it works
// even when the font is not installed.
diff --git a/sw/qa/extras/docbookexport/docbookexport.cxx b/sw/qa/extras/docbookexport/docbookexport.cxx
index e7543d99577e..f44f92a47c7e 100644
--- a/sw/qa/extras/docbookexport/docbookexport.cxx
+++ b/sw/qa/extras/docbookexport/docbookexport.cxx
@@ -21,6 +21,7 @@ public:
CPPUNIT_TEST_FIXTURE(DocbookExportTest, testsimple)
{
+ return; // fails on latest libxml
createSwDoc("simple.docx");
save(mpFilter);
xmlDocUniquePtr pDoc = parseXml(maTempFile);
diff --git a/sw/qa/extras/htmlimport/htmlimport.cxx b/sw/qa/extras/htmlimport/htmlimport.cxx
index 6cf8f22647b9..12848713771b 100644
--- a/sw/qa/extras/htmlimport/htmlimport.cxx
+++ b/sw/qa/extras/htmlimport/htmlimport.cxx
@@ -297,6 +297,8 @@ CPPUNIT_TEST_FIXTURE(HtmlImportTest, testTableBorder1px)
CPPUNIT_TEST_FIXTURE(HtmlImportTest, testOutlineLevel)
{
+ return; // fails consistently, but only in the sandbox
+
createSwWebDoc("outline-level.html");
// This was 0, HTML imported into Writer lost the outline numbering for
// Heading 1 styles.
diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx
index e53d22c8fd1a..2f9decb0d931 100644
--- a/sw/qa/extras/layout/layout3.cxx
+++ b/sw/qa/extras/layout/layout3.cxx
@@ -1388,6 +1388,8 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf158658c)
CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf155177)
{
+ return; // flaky
+
createSwDoc("tdf155177-1-min.odt");
uno::Reference<beans::XPropertySet> xStyle(
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index 794b3bd16ed4..3feaadd7a20f 100644
--- a/sw/qa/extras/odfimport/odfimport.cxx
+++ b/sw/qa/extras/odfimport/odfimport.cxx
@@ -602,6 +602,8 @@ CPPUNIT_TEST_FIXTURE(Test, testFdo56272)
CPPUNIT_TEST_FIXTURE(Test, testIncorrectSum)
{
+ return; // flaky
+
createSwDoc("incorrectsum.odt");
Scheduler::ProcessEventsToIdle();
uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 4ebc4be96149..85b8908e16b9 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -2538,6 +2538,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testVisCursorInvalidation)
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testDeselectCustomShape)
{
+ return; // flaky on some backends?
+
SwXTextDocument* pXTextDocument = createDoc("dummy.fodt");
SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
SwShellCursor* pShellCursor = pWrtShell->getShellCursor(false);
@@ -2745,6 +2747,8 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testDoubleUnderlineAndStrikeOut)
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testTdf43244_SpacesOnMargin)
{
+ return; // fails consistently
+
// Load a document where the top left tile contains
// paragraph and line break symbols with redlining.
SwXTextDocument* pXTextDocument = createDoc("tdf43244_SpacesOnMargin.odt");
@@ -3786,6 +3790,7 @@ CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testRedlineTooltip)
// toggling Formatting Marks on/off for one view should have no effect on other views
CPPUNIT_TEST_FIXTURE(SwTiledRenderingTest, testToggleFormattingMarks)
{
+ return; // fails
SwXTextDocument* pXTextDocument = createDoc();
int nView1 = SfxLokHelper::getView();
diff --git a/sw/qa/extras/uiwriter/uiwriter5.cxx b/sw/qa/extras/uiwriter/uiwriter5.cxx
index e37df27fd817..937c12e8c4c5 100644
--- a/sw/qa/extras/uiwriter/uiwriter5.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter5.cxx
@@ -1549,6 +1549,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest5, testDateFormFieldContentOperations)
CPPUNIT_TEST_FIXTURE(SwUiWriterTest5, testDateFormFieldCurrentDateHandling)
{
+ return; // flaky on KF6
createSwDoc();
SwDoc* pDoc = getSwDoc();
IDocumentMarkAccess* pMarkAccess = pDoc->getIDocumentMarkAccess();

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
{ fetchgit, ... }:
fetchgit {
url = "https://gerrit.libreoffice.org/help";
rev = "refs/tags/cp-25.04.1-1";
hash = "sha256-jKcrkvdxpebCTeILrjA7bKfcsWw8VFjS7eimJI1dgFQ=";
}

View File

@@ -0,0 +1,7 @@
{ fetchgit, ... }:
fetchgit {
url = "https://gerrit.libreoffice.org/core";
rev = "refs/tags/cp-25.04.1-1";
hash = "sha256-WhNNKL1RC0hWi21wH5EJRZ8V8U7jk6z8h3E3mVR56zk=";
fetchSubmodules = false;
}

View File

@@ -0,0 +1,6 @@
{ fetchgit, ... }:
fetchgit {
url = "https://gerrit.libreoffice.org/translations";
rev = "refs/tags/cp-25.04.1-1";
hash = "sha256-kZ5LwhEMWYv9peYPjTL14wjYv4LHUMtaM7XGYSVw68U=";
}

View File

@@ -0,0 +1 @@
"25.04.1-1"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "1dghyg96daa9iff7njanfy8v0lqql3i9vy6cqysdq141rgdbglql";
url = "https://download.documentfoundation.org/libreoffice/src/25.8.1/libreoffice-help-25.8.1.1.tar.xz";
}

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "0gig194j66rxf678n236r7wnqv12w1bknm1kkjj8155y59n2qkjv";
url = "https://download.documentfoundation.org/libreoffice/src/25.8.1/libreoffice-25.8.1.1.tar.xz";
}

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "0x1vx27w8kw4qfjhhdmh5zx68svh27yiy43f057qd61rbnds0p85";
url = "https://download.documentfoundation.org/libreoffice/src/25.8.1/libreoffice-translations-25.8.1.1.tar.xz";
}

View File

@@ -0,0 +1 @@
"25.8.1.1"

View File

@@ -0,0 +1,947 @@
[
{
name = "libabw-0.1.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/libabw-0.1.3.tar.xz";
sha256 = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed";
md5 = "";
md5name = "e763a9dc21c3d2667402d66e202e3f8ef4db51b34b79ef41f56cacb86dcd6eed-libabw-0.1.3.tar.xz";
}
{
name = "phc-winner-argon2-20190702.tar.gz";
url = "https://dev-www.libreoffice.org/src/phc-winner-argon2-20190702.tar.gz";
sha256 = "daf972a89577f8772602bf2eb38b6a3dd3d922bf5724d45e7f9589b5e830442c";
md5 = "";
md5name = "daf972a89577f8772602bf2eb38b6a3dd3d922bf5724d45e7f9589b5e830442c-phc-winner-argon2-20190702.tar.gz";
}
{
name = "boost_1_85_0.tar.xz";
url = "https://dev-www.libreoffice.org/src/boost_1_85_0.tar.xz";
sha256 = "4e23218ff5036d57afd20f7cdab2e94cdbf6ba9c509d656ace643a81c40a985a";
md5 = "";
md5name = "4e23218ff5036d57afd20f7cdab2e94cdbf6ba9c509d656ace643a81c40a985a-boost_1_85_0.tar.xz";
}
{
name = "box2d-2.4.1.tar.gz";
url = "https://dev-www.libreoffice.org/src/box2d-2.4.1.tar.gz";
sha256 = "d6b4650ff897ee1ead27cf77a5933ea197cbeef6705638dd181adc2e816b23c2";
md5 = "";
md5name = "d6b4650ff897ee1ead27cf77a5933ea197cbeef6705638dd181adc2e816b23c2-box2d-2.4.1.tar.gz";
}
{
name = "breakpad-b324760c7f53667af128a6b77b790323da04fcb9.tar.xz";
url = "https://dev-www.libreoffice.org/src/breakpad-b324760c7f53667af128a6b77b790323da04fcb9.tar.xz";
sha256 = "c44a2e898895cfc13b42d2371ba4b88b0777d7782214d6cdc91c33720f3b0d91";
md5 = "";
md5name = "c44a2e898895cfc13b42d2371ba4b88b0777d7782214d6cdc91c33720f3b0d91-breakpad-b324760c7f53667af128a6b77b790323da04fcb9.tar.xz";
}
{
name = "bsh-2.1.1-src.zip";
url = "https://dev-www.libreoffice.org/src/bsh-2.1.1-src.zip";
sha256 = "2248387ceaa319840434a3547a8b2fec12f95a8418ee039ce5ff5726053a139c";
md5 = "";
md5name = "2248387ceaa319840434a3547a8b2fec12f95a8418ee039ce5ff5726053a139c-bsh-2.1.1-src.zip";
}
{
name = "bzip2-1.0.8.tar.gz";
url = "https://dev-www.libreoffice.org/src/bzip2-1.0.8.tar.gz";
sha256 = "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269";
md5 = "";
md5name = "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269-bzip2-1.0.8.tar.gz";
}
{
name = "cairo-1.17.6.tar.xz";
url = "https://dev-www.libreoffice.org/src/cairo-1.17.6.tar.xz";
sha256 = "4eebc4c2bad0402bc3f501db184417094657d111fb6c06f076a82ea191fe1faf";
md5 = "";
md5name = "4eebc4c2bad0402bc3f501db184417094657d111fb6c06f076a82ea191fe1faf-cairo-1.17.6.tar.xz";
}
{
name = "libcdr-0.1.8.tar.xz";
url = "https://dev-www.libreoffice.org/src/libcdr-0.1.8.tar.xz";
sha256 = "ced677c8300b29c91d3004bb1dddf0b99761bf5544991c26c2ee8f427e87193c";
md5 = "";
md5name = "ced677c8300b29c91d3004bb1dddf0b99761bf5544991c26c2ee8f427e87193c-libcdr-0.1.8.tar.xz";
}
{
name = "clucene-core-2.3.3.4.tar.gz";
url = "https://dev-www.libreoffice.org/src/48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
sha256 = "ddfdc433dd8ad31b5c5819cc4404a8d2127472a3b720d3e744e8c51d79732eab";
md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
md5name = "48d647fbd8ef8889e5a7f422c1bfda94-clucene-core-2.3.3.4.tar.gz";
}
{
name = "dragonbox-1.1.3.tar.gz";
url = "https://dev-www.libreoffice.org/src/dragonbox-1.1.3.tar.gz";
sha256 = "09d63b05e9c594ec423778ab59b7a5aa1d76fdd71d25c7048b0258c4ec9c3384";
md5 = "";
md5name = "09d63b05e9c594ec423778ab59b7a5aa1d76fdd71d25c7048b0258c4ec9c3384-dragonbox-1.1.3.tar.gz";
}
{
name = "dtoa-20180411.tgz";
url = "https://dev-www.libreoffice.org/src/dtoa-20180411.tgz";
sha256 = "0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e711b4";
md5 = "";
md5name = "0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e711b4-dtoa-20180411.tgz";
}
{
name = "libcmis-0.6.2.tar.xz";
url = "https://dev-www.libreoffice.org/src/libcmis-0.6.2.tar.xz";
sha256 = "1b5c2d7258ff93eb5f9958ff0e4dfd7332dc75a071bb717dde2217a26602a644";
md5 = "";
md5name = "1b5c2d7258ff93eb5f9958ff0e4dfd7332dc75a071bb717dde2217a26602a644-libcmis-0.6.2.tar.xz";
}
{
name = "CoinMP-1.8.4.tgz";
url = "https://dev-www.libreoffice.org/src/CoinMP-1.8.4.tgz";
sha256 = "3459fb0ccbdd39342744684338984ac4cc153fb0434f4cae8cf74bd67490a38d";
md5 = "";
md5name = "3459fb0ccbdd39342744684338984ac4cc153fb0434f4cae8cf74bd67490a38d-CoinMP-1.8.4.tgz";
}
{
name = "cppunit-1.15.1.tar.gz";
url = "https://dev-www.libreoffice.org/src/cppunit-1.15.1.tar.gz";
sha256 = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7";
md5 = "";
md5name = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7-cppunit-1.15.1.tar.gz";
}
{
name = "curl-8.12.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/curl-8.12.1.tar.xz";
sha256 = "0341f1ed97a26c811abaebd37d62b833956792b7607ea3f15d001613c76de202";
md5 = "";
md5name = "0341f1ed97a26c811abaebd37d62b833956792b7607ea3f15d001613c76de202-curl-8.12.1.tar.xz";
}
{
name = "libe-book-0.1.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/libe-book-0.1.3.tar.xz";
sha256 = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9";
md5 = "";
md5name = "7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9-libe-book-0.1.3.tar.xz";
}
{
name = "libepoxy-1.5.10.tar.gz";
url = "https://dev-www.libreoffice.org/src/libepoxy-1.5.10.tar.gz";
sha256 = "a7ced37f4102b745ac86d6a70a9da399cc139ff168ba6b8002b4d8d43c900c15";
md5 = "";
md5name = "a7ced37f4102b745ac86d6a70a9da399cc139ff168ba6b8002b4d8d43c900c15-libepoxy-1.5.10.tar.gz";
}
{
name = "epm-3.7.tar.gz";
url = "https://dev-www.libreoffice.org/src/3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
sha256 = "b3fc4c5445de6c9a801504a3ea3efb2d4ea9d5a622c9427e716736e7713ddb91";
md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
md5name = "3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz";
}
{
name = "libepubgen-0.1.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/libepubgen-0.1.1.tar.xz";
sha256 = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad";
md5 = "";
md5name = "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad-libepubgen-0.1.1.tar.xz";
}
{
name = "libetonyek-0.1.12.tar.xz";
url = "https://dev-www.libreoffice.org/src/libetonyek-0.1.12.tar.xz";
sha256 = "b9fa82fbeb8cb7a701101060e4f3e1e4ef7c38f574b2859d3ecbe43604c21f83";
md5 = "";
md5name = "b9fa82fbeb8cb7a701101060e4f3e1e4ef7c38f574b2859d3ecbe43604c21f83-libetonyek-0.1.12.tar.xz";
}
{
name = "expat-2.7.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/expat-2.7.1.tar.xz";
sha256 = "354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30";
md5 = "";
md5name = "354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30-expat-2.7.1.tar.xz";
}
{
name = "Firebird-3.0.7.33374-0.tar.bz2";
url = "https://dev-www.libreoffice.org/src/Firebird-3.0.7.33374-0.tar.bz2";
sha256 = "acb85cedafa10ce106b1823fb236b1b3e5d942a5741e8f8435cc8ccfec0afe76";
md5 = "";
md5name = "acb85cedafa10ce106b1823fb236b1b3e5d942a5741e8f8435cc8ccfec0afe76-Firebird-3.0.7.33374-0.tar.bz2";
}
{
name = "fontconfig-2.15.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/fontconfig-2.15.0.tar.xz";
sha256 = "63a0658d0e06e0fa886106452b58ef04f21f58202ea02a94c39de0d3335d7c0e";
md5 = "";
md5name = "63a0658d0e06e0fa886106452b58ef04f21f58202ea02a94c39de0d3335d7c0e-fontconfig-2.15.0.tar.xz";
}
{
name = "crosextrafonts-20130214.tar.gz";
url = "https://dev-www.libreoffice.org/src/368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
sha256 = "c48d1c2fd613c9c06c959c34da7b8388059e2408d2bb19845dc3ed35f76e4d09";
md5 = "368f114c078f94214a308a74c7e991bc";
md5name = "368f114c078f94214a308a74c7e991bc-crosextrafonts-20130214.tar.gz";
}
{
name = "crosextrafonts-carlito-20130920.tar.gz";
url = "https://dev-www.libreoffice.org/src/c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
sha256 = "4bd12b6cbc321c1cf16da76e2c585c925ce956a08067ae6f6c64eff6ccfdaf5a";
md5 = "c74b7223abe75949b4af367942d96c7a";
md5name = "c74b7223abe75949b4af367942d96c7a-crosextrafonts-carlito-20130920.tar.gz";
}
{
name = "dejavu-fonts-ttf-2.37.zip";
url = "https://dev-www.libreoffice.org/src/33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
sha256 = "7576310b219e04159d35ff61dd4a4ec4cdba4f35c00e002a136f00e96a908b0a";
md5 = "33e1e61fab06a547851ed308b4ffef42";
md5name = "33e1e61fab06a547851ed308b4ffef42-dejavu-fonts-ttf-2.37.zip";
}
{
name = "GentiumBasic_1102.zip";
url = "https://dev-www.libreoffice.org/src/1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
sha256 = "2f1a2c5491d7305dffd3520c6375d2f3e14931ee35c6d8ae1e8f098bf1a7b3cc";
md5 = "1725634df4bb3dcb1b2c91a6175f8789";
md5name = "1725634df4bb3dcb1b2c91a6175f8789-GentiumBasic_1102.zip";
}
{
name = "liberation-narrow-fonts-ttf-1.07.6.tar.gz";
url = "https://dev-www.libreoffice.org/src/liberation-narrow-fonts-ttf-1.07.6.tar.gz";
sha256 = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3";
md5 = "";
md5name = "8879d89b5ff7b506c9fc28efc31a5c0b954bbe9333e66e5283d27d20a8519ea3-liberation-narrow-fonts-ttf-1.07.6.tar.gz";
}
{
name = "liberation-fonts-ttf-2.1.5.tar.gz";
url = "https://dev-www.libreoffice.org/src/liberation-fonts-ttf-2.1.5.tar.gz";
sha256 = "7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0";
md5 = "";
md5name = "7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0-liberation-fonts-ttf-2.1.5.tar.gz";
}
{
name = "LinLibertineG-20120116.zip";
url = "https://dev-www.libreoffice.org/src/e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
sha256 = "54adcb2bc8cac0927a647fbd9362f45eff48130ce6e2379dc3867643019e08c5";
md5 = "e7a384790b13c29113e22e596ade9687";
md5name = "e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip";
}
{
name = "NotoKufiArabic-v2.109.zip";
url = "https://dev-www.libreoffice.org/src/NotoKufiArabic-v2.109.zip";
sha256 = "1b6880e4b8df09c3b9e246d6084bfd94bf32a0ffff60cf2dcffd3622d0e2d79f";
md5 = "";
md5name = "1b6880e4b8df09c3b9e246d6084bfd94bf32a0ffff60cf2dcffd3622d0e2d79f-NotoKufiArabic-v2.109.zip";
}
{
name = "NotoSans-v2.015.zip";
url = "https://dev-www.libreoffice.org/src/NotoSans-v2.015.zip";
sha256 = "0c34df072a3fa7efbb7cbf34950e1f971a4447cffe365d3a359e2d4089b958f5";
md5 = "";
md5name = "0c34df072a3fa7efbb7cbf34950e1f971a4447cffe365d3a359e2d4089b958f5-NotoSans-v2.015.zip";
}
{
name = "NotoSerif-v2.015.zip";
url = "https://dev-www.libreoffice.org/src/NotoSerif-v2.015.zip";
sha256 = "0e9a43c8a4b94ac76f55069ed1d7385bbcaf6b99527a94deb5619e032b7e76c1";
md5 = "";
md5name = "0e9a43c8a4b94ac76f55069ed1d7385bbcaf6b99527a94deb5619e032b7e76c1-NotoSerif-v2.015.zip";
}
{
name = "NotoSerifHebrew-v2.004.zip";
url = "https://dev-www.libreoffice.org/src/NotoSerifHebrew-v2.004.zip";
sha256 = "99523f4f21051495f18cbd5169ed0d1e9b395eefe770fece1844a4a7a00c46da";
md5 = "";
md5name = "99523f4f21051495f18cbd5169ed0d1e9b395eefe770fece1844a4a7a00c46da-NotoSerifHebrew-v2.004.zip";
}
{
name = "NotoSansArabic-v2.010.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansArabic-v2.010.zip";
sha256 = "a5a34ac1ea01d0d71c083f99440ebfb1f64224474a0d88bb7ef0e2f8d9a996d2";
md5 = "";
md5name = "a5a34ac1ea01d0d71c083f99440ebfb1f64224474a0d88bb7ef0e2f8d9a996d2-NotoSansArabic-v2.010.zip";
}
{
name = "NotoNaskhArabic-v2.019.zip";
url = "https://dev-www.libreoffice.org/src/NotoNaskhArabic-v2.019.zip";
sha256 = "7a509e10c9c8d21f384a26807ef2f5fbbecec46fdb8626c5441bed6d894edb81";
md5 = "";
md5name = "7a509e10c9c8d21f384a26807ef2f5fbbecec46fdb8626c5441bed6d894edb81-NotoNaskhArabic-v2.019.zip";
}
{
name = "NotoSansHebrew-v3.001.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansHebrew-v3.001.zip";
sha256 = "df0a71814b4e63644cf40fcc4529111b61266b7a2dafbe95068b29a7520cc3cb";
md5 = "";
md5name = "df0a71814b4e63644cf40fcc4529111b61266b7a2dafbe95068b29a7520cc3cb-NotoSansHebrew-v3.001.zip";
}
{
name = "NotoSansArmenian-v2.008.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansArmenian-v2.008.zip";
sha256 = "eab89b99e134177ca6a3f9f0412a7cb812aafceb13175d686b4c45cb237f64ac";
md5 = "";
md5name = "eab89b99e134177ca6a3f9f0412a7cb812aafceb13175d686b4c45cb237f64ac-NotoSansArmenian-v2.008.zip";
}
{
name = "NotoSerifArmenian-v2.008.zip";
url = "https://dev-www.libreoffice.org/src/NotoSerifArmenian-v2.008.zip";
sha256 = "b21c198a4c76ae598a304decefb3b5c2a4c2d4c3ae226728eff359185f291c6f";
md5 = "";
md5name = "b21c198a4c76ae598a304decefb3b5c2a4c2d4c3ae226728eff359185f291c6f-NotoSerifArmenian-v2.008.zip";
}
{
name = "NotoSansGeorgian-v2.005.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansGeorgian-v2.005.zip";
sha256 = "10e85011008108308e6feab0408242acb07804da61ede3d3ff236461ae07ab1b";
md5 = "";
md5name = "10e85011008108308e6feab0408242acb07804da61ede3d3ff236461ae07ab1b-NotoSansGeorgian-v2.005.zip";
}
{
name = "NotoSerifGeorgian-v2.003.zip";
url = "https://dev-www.libreoffice.org/src/NotoSerifGeorgian-v2.003.zip";
sha256 = "cfb41a264b97d463bab6807a5be937ba4a6ddcfa93d519a21b98b0ba73ca27d4";
md5 = "";
md5name = "cfb41a264b97d463bab6807a5be937ba4a6ddcfa93d519a21b98b0ba73ca27d4-NotoSerifGeorgian-v2.003.zip";
}
{
name = "NotoSansLao-v2.003.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansLao-v2.003.zip";
sha256 = "5a87c31b1a40ef8147c1e84437e5f0ceba2d4dbbfc0b56a65821ad29870da8c0";
md5 = "";
md5name = "5a87c31b1a40ef8147c1e84437e5f0ceba2d4dbbfc0b56a65821ad29870da8c0-NotoSansLao-v2.003.zip";
}
{
name = "NotoSerifLao-v2.003.zip";
url = "https://dev-www.libreoffice.org/src/NotoSerifLao-v2.003.zip";
sha256 = "e96a303d3347790b0ef3db274971a989a736ce766ec9ea1bea0e1458568a80b2";
md5 = "";
md5name = "e96a303d3347790b0ef3db274971a989a736ce766ec9ea1bea0e1458568a80b2-NotoSerifLao-v2.003.zip";
}
{
name = "NotoSansLisu-v2.102.zip";
url = "https://dev-www.libreoffice.org/src/NotoSansLisu-v2.102.zip";
sha256 = "b12a1ff762680681b7ce4d98dd29a7f54d90f5bcadd10c955afc640a27b3a268";
md5 = "";
md5name = "b12a1ff762680681b7ce4d98dd29a7f54d90f5bcadd10c955afc640a27b3a268-NotoSansLisu-v2.102.zip";
}
{
name = "culmus-0.133.tar.gz";
url = "https://dev-www.libreoffice.org/src/culmus-0.133.tar.gz";
sha256 = "c0c6873742d07544f6bacf2ad52eb9cb392974d56427938dc1dfbc8399c64d05";
md5 = "";
md5name = "c0c6873742d07544f6bacf2ad52eb9cb392974d56427938dc1dfbc8399c64d05-culmus-0.133.tar.gz";
}
{
name = "libre-hebrew-1.0.tar.gz";
url = "https://dev-www.libreoffice.org/src/libre-hebrew-1.0.tar.gz";
sha256 = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a";
md5 = "";
md5name = "f596257c1db706ce35795b18d7f66a4db99d427725f20e9384914b534142579a-libre-hebrew-1.0.tar.gz";
}
{
name = "alef-1.001.tar.gz";
url = "https://dev-www.libreoffice.org/src/alef-1.001.tar.gz";
sha256 = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52";
md5 = "";
md5name = "b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52-alef-1.001.tar.gz";
}
{
name = "Amiri-1.001.zip";
url = "https://dev-www.libreoffice.org/src/Amiri-1.001.zip";
sha256 = "cae999a9fc5638cb69cf0812e8bca1437ef1ebbf094f8b3c5b3f0a3ea2ef8c3a";
md5 = "";
md5name = "cae999a9fc5638cb69cf0812e8bca1437ef1ebbf094f8b3c5b3f0a3ea2ef8c3a-Amiri-1.001.zip";
}
{
name = "ReemKufi-1.7.zip";
url = "https://dev-www.libreoffice.org/src/ReemKufi-1.7.zip";
sha256 = "2359f036c7bddeb4d5529d7b3c9139c3288c920cc26053d417cdbb563eafe0a4";
md5 = "";
md5name = "2359f036c7bddeb4d5529d7b3c9139c3288c920cc26053d417cdbb563eafe0a4-ReemKufi-1.7.zip";
}
{
name = "Scheherazade-2.100.zip";
url = "https://dev-www.libreoffice.org/src/Scheherazade-2.100.zip";
sha256 = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5";
md5 = "";
md5name = "251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5-Scheherazade-2.100.zip";
}
{
name = "libfreehand-0.1.2.tar.xz";
url = "https://dev-www.libreoffice.org/src/libfreehand-0.1.2.tar.xz";
sha256 = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac";
md5 = "";
md5name = "0e422d1564a6dbf22a9af598535425271e583514c0f7ba7d9091676420de34ac-libfreehand-0.1.2.tar.xz";
}
{
name = "freetype-2.13.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/freetype-2.13.3.tar.xz";
sha256 = "0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289";
md5 = "";
md5name = "0550350666d427c74daeb85d5ac7bb353acba5f76956395995311a9c6f063289-freetype-2.13.3.tar.xz";
}
{
name = "frozen-1.1.1.tar.gz";
url = "https://dev-www.libreoffice.org/src/frozen-1.1.1.tar.gz";
sha256 = "f7c7075750e8fceeac081e9ef01944f221b36d9725beac8681cbd2838d26be45";
md5 = "";
md5name = "f7c7075750e8fceeac081e9ef01944f221b36d9725beac8681cbd2838d26be45-frozen-1.1.1.tar.gz";
}
{
name = "glm-1.0.1.zip";
url = "https://dev-www.libreoffice.org/src/glm-1.0.1.zip";
sha256 = "09c5716296787e1f7fcb87b1cbdbf26814ec1288ed6259ccd30d5d9795809fa5";
md5 = "";
md5name = "09c5716296787e1f7fcb87b1cbdbf26814ec1288ed6259ccd30d5d9795809fa5-glm-1.0.1.zip";
}
{
name = "gpgme-1.24.2.tar.bz2";
url = "https://dev-www.libreoffice.org/src/gpgme-1.24.2.tar.bz2";
sha256 = "e11b1a0e361777e9e55f48a03d89096e2abf08c63d84b7017cfe1dce06639581";
md5 = "";
md5name = "e11b1a0e361777e9e55f48a03d89096e2abf08c63d84b7017cfe1dce06639581-gpgme-1.24.2.tar.bz2";
}
{
name = "graphite2-minimal-1.3.14.tgz";
url = "https://dev-www.libreoffice.org/src/graphite2-minimal-1.3.14.tgz";
sha256 = "b8e892d8627c41888ff121e921455b9e2d26836978f2359173d19825da62b8fc";
md5 = "";
md5name = "b8e892d8627c41888ff121e921455b9e2d26836978f2359173d19825da62b8fc-graphite2-minimal-1.3.14.tgz";
}
{
name = "harfbuzz-8.5.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/harfbuzz-8.5.0.tar.xz";
sha256 = "77e4f7f98f3d86bf8788b53e6832fb96279956e1c3961988ea3d4b7ca41ddc27";
md5 = "";
md5name = "77e4f7f98f3d86bf8788b53e6832fb96279956e1c3961988ea3d4b7ca41ddc27-harfbuzz-8.5.0.tar.xz";
}
{
name = "hsqldb_1_8_0.zip";
url = "https://dev-www.libreoffice.org/src/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
sha256 = "d30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370";
md5 = "17410483b5b5f267aa18b7e00b65e6e0";
md5name = "17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip";
}
{
name = "hunspell-1.7.2.tar.gz";
url = "https://dev-www.libreoffice.org/src/hunspell-1.7.2.tar.gz";
sha256 = "11ddfa39afe28c28539fe65fc4f1592d410c1e9b6dd7d8a91ca25d85e9ec65b8";
md5 = "";
md5name = "11ddfa39afe28c28539fe65fc4f1592d410c1e9b6dd7d8a91ca25d85e9ec65b8-hunspell-1.7.2.tar.gz";
}
{
name = "hyphen-2.8.8.tar.gz";
url = "https://dev-www.libreoffice.org/src/5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
sha256 = "304636d4eccd81a14b6914d07b84c79ebb815288c76fe027b9ebff6ff24d5705";
md5 = "5ade6ae2a99bc1e9e57031ca88d36dad";
md5name = "5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz";
}
{
name = "IAccessible2-1.3+git20231013.3d8c7f0.tar.gz";
url = "https://dev-www.libreoffice.org/src/IAccessible2-1.3+git20231013.3d8c7f0.tar.gz";
sha256 = "0e279003f5199f80031c6dcd08f79d6f65a0505139160e7df0d09b226bff4023";
md5 = "";
md5name = "0e279003f5199f80031c6dcd08f79d6f65a0505139160e7df0d09b226bff4023-IAccessible2-1.3+git20231013.3d8c7f0.tar.gz";
}
{
name = "icu4c-74_2-src.tgz";
url = "https://dev-www.libreoffice.org/src/icu4c-74_2-src.tgz";
sha256 = "68db082212a96d6f53e35d60f47d38b962e9f9d207a74cfac78029ae8ff5e08c";
md5 = "";
md5name = "68db082212a96d6f53e35d60f47d38b962e9f9d207a74cfac78029ae8ff5e08c-icu4c-74_2-src.tgz";
}
{
name = "icu4c-74_2-data.zip";
url = "https://dev-www.libreoffice.org/src/icu4c-74_2-data.zip";
sha256 = "c28c3ca5f4ba3384781797138a294ca360988d4322674ad4d51e52f5d9b0a2b6";
md5 = "";
md5name = "c28c3ca5f4ba3384781797138a294ca360988d4322674ad4d51e52f5d9b0a2b6-icu4c-74_2-data.zip";
}
{
name = "Java-WebSocket-1.5.6.tar.gz";
url = "https://dev-www.libreoffice.org/src/Java-WebSocket-1.5.6.tar.gz";
sha256 = "167e86561cd7b5ed21b67d7543536134edcb14b373892739b28c417566a3832f";
md5 = "";
md5name = "167e86561cd7b5ed21b67d7543536134edcb14b373892739b28c417566a3832f-Java-WebSocket-1.5.6.tar.gz";
}
{
name = "flow-engine-0.9.4.zip";
url = "https://dev-www.libreoffice.org/src/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
sha256 = "233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd";
md5 = "ba2930200c9f019c2d93a8c88c651a0f";
md5name = "ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip";
}
{
name = "flute-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
sha256 = "1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133";
md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
md5name = "d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip";
}
{
name = "libbase-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
sha256 = "75c80359c9ce343c20aab8a36a45cb3b9ee7c61cf92c13ae45399d854423a9ba";
md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
md5name = "eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip";
}
{
name = "libfonts-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
sha256 = "e0531091787c0f16c83965fdcbc49162c059d7f0c64669e7f119699321549743";
md5 = "3bdf40c0d199af31923e900d082ca2dd";
md5name = "3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip";
}
{
name = "libformula-1.1.7.zip";
url = "https://dev-www.libreoffice.org/src/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
sha256 = "5826d1551bf599b85742545f6e01a0079b93c1b2c8434bf409eddb3a29e4726b";
md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
md5name = "3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip";
}
{
name = "liblayout-0.2.10.zip";
url = "https://dev-www.libreoffice.org/src/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
sha256 = "e1fb87f3f7b980d33414473279615c4644027e013012d156efa538bc2b031772";
md5 = "db60e4fde8dd6d6807523deb71ee34dc";
md5name = "db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip";
}
{
name = "libloader-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
sha256 = "3d853b19b1d94a6efa69e7af90f7f2b09ecf302913bee3da796c15ecfebcfac8";
md5 = "97b2d4dba862397f446b217e2b623e71";
md5name = "97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip";
}
{
name = "librepository-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
sha256 = "abe2c57ac12ba45d83563b02e240fa95d973376de2f720aab8fe11f2e621c095";
md5 = "8ce2fcd72becf06c41f7201d15373ed9";
md5name = "8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip";
}
{
name = "libserializer-1.1.6.zip";
url = "https://dev-www.libreoffice.org/src/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
sha256 = "05640a1f6805b2b2d7e2cb9c50db9a5cb084e3c52ab1a71ce015239b4a1d4343";
md5 = "f94d9870737518e3b597f9265f4e9803";
md5name = "f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip";
}
{
name = "libxml-1.1.7.zip";
url = "https://dev-www.libreoffice.org/src/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
sha256 = "7d2797fe9f79a77009721e3f14fa4a1dec17a6d706bdc93f85f1f01d124fab66";
md5 = "ace6ab49184e329db254e454a010f56d";
md5name = "ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip";
}
{
name = "sacjava-1.3.zip";
url = "https://dev-www.libreoffice.org/src/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
sha256 = "085f2112c51fa8c1783fac12fbd452650596415121348393bb51f0f7e85a9045";
md5 = "39bb3fcea1514f1369fcfc87542390fd";
md5name = "39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip";
}
{
name = "libjpeg-turbo-2.1.5.1.tar.gz";
url = "https://dev-www.libreoffice.org/src/libjpeg-turbo-2.1.5.1.tar.gz";
sha256 = "2fdc3feb6e9deb17adec9bafa3321419aa19f8f4e5dea7bf8486844ca22207bf";
md5 = "";
md5name = "2fdc3feb6e9deb17adec9bafa3321419aa19f8f4e5dea7bf8486844ca22207bf-libjpeg-turbo-2.1.5.1.tar.gz";
}
{
name = "language-subtag-registry-2025-03-10.tar.bz2";
url = "https://dev-www.libreoffice.org/src/language-subtag-registry-2025-03-10.tar.bz2";
sha256 = "555968dd413c69fe2c072a29e0f1a2a48856533d923ffd8377ff86f6ea701b39";
md5 = "";
md5name = "555968dd413c69fe2c072a29e0f1a2a48856533d923ffd8377ff86f6ea701b39-language-subtag-registry-2025-03-10.tar.bz2";
}
{
name = "lcms2-2.16.tar.gz";
url = "https://dev-www.libreoffice.org/src/lcms2-2.16.tar.gz";
sha256 = "d873d34ad8b9b4cea010631f1a6228d2087475e4dc5e763eb81acc23d9d45a51";
md5 = "";
md5name = "d873d34ad8b9b4cea010631f1a6228d2087475e4dc5e763eb81acc23d9d45a51-lcms2-2.16.tar.gz";
}
{
name = "libassuan-3.0.2.tar.bz2";
url = "https://dev-www.libreoffice.org/src/libassuan-3.0.2.tar.bz2";
sha256 = "d2931cdad266e633510f9970e1a2f346055e351bb19f9b78912475b8074c36f6";
md5 = "";
md5name = "d2931cdad266e633510f9970e1a2f346055e351bb19f9b78912475b8074c36f6-libassuan-3.0.2.tar.bz2";
}
{
name = "libatomic_ops-7.8.2.tar.gz";
url = "https://dev-www.libreoffice.org/src/libatomic_ops-7.8.2.tar.gz";
sha256 = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51";
md5 = "";
md5name = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51-libatomic_ops-7.8.2.tar.gz";
}
{
name = "libeot-0.01.tar.bz2";
url = "https://dev-www.libreoffice.org/src/libeot-0.01.tar.bz2";
sha256 = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a";
md5 = "";
md5name = "cf5091fa8e7dcdbe667335eb90a2cfdd0a3fe8f8c7c8d1ece44d9d055736a06a-libeot-0.01.tar.bz2";
}
{
name = "libexttextcat-3.4.7.tar.xz";
url = "https://dev-www.libreoffice.org/src/libexttextcat-3.4.7.tar.xz";
sha256 = "df0a59d413a5b202573d8d4f5159e33a8538da4f8e8e60979facc64d6290cebd";
md5 = "";
md5name = "df0a59d413a5b202573d8d4f5159e33a8538da4f8e8e60979facc64d6290cebd-libexttextcat-3.4.7.tar.xz";
}
{
name = "libffi-3.4.4.tar.gz";
url = "https://dev-www.libreoffice.org/src/libffi-3.4.4.tar.gz";
sha256 = "d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676";
md5 = "";
md5name = "d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676-libffi-3.4.4.tar.gz";
}
{
name = "libgpg-error-1.55.tar.bz2";
url = "https://dev-www.libreoffice.org/src/libgpg-error-1.55.tar.bz2";
sha256 = "95b178148863f07d45df0cea67e880a79b9ef71f5d230baddc0071128516ef78";
md5 = "";
md5name = "95b178148863f07d45df0cea67e880a79b9ef71f5d230baddc0071128516ef78-libgpg-error-1.55.tar.bz2";
}
{
name = "liblangtag-0.6.7.tar.bz2";
url = "https://dev-www.libreoffice.org/src/liblangtag-0.6.7.tar.bz2";
sha256 = "5ed6bcd4ae3f3c05c912e62f216cd1a44123846147f729a49fb5668da51e030e";
md5 = "";
md5name = "5ed6bcd4ae3f3c05c912e62f216cd1a44123846147f729a49fb5668da51e030e-liblangtag-0.6.7.tar.bz2";
}
{
name = "libnumbertext-1.0.11.tar.xz";
url = "https://dev-www.libreoffice.org/src/libnumbertext-1.0.11.tar.xz";
sha256 = "5dcb4db3b2340f81f601ce86d8d76b69e34d70f84f804192c901e4b7f84d5fb0";
md5 = "";
md5name = "5dcb4db3b2340f81f601ce86d8d76b69e34d70f84f804192c901e4b7f84d5fb0-libnumbertext-1.0.11.tar.xz";
}
{
name = "ltm-1.3.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/ltm-1.3.0.tar.xz";
sha256 = "296272d93435991308eb73607600c034b558807a07e829e751142e65ccfa9d08";
md5 = "";
md5name = "296272d93435991308eb73607600c034b558807a07e829e751142e65ccfa9d08-ltm-1.3.0.tar.xz";
}
{
name = "libwebp-1.5.0.tar.gz";
url = "https://dev-www.libreoffice.org/src/libwebp-1.5.0.tar.gz";
sha256 = "7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c";
md5 = "";
md5name = "7d6fab70cf844bf6769077bd5d7a74893f8ffd4dfb42861745750c63c2a5c92c-libwebp-1.5.0.tar.gz";
}
{
name = "xmlsec1-1.3.5.tar.gz";
url = "https://dev-www.libreoffice.org/src/xmlsec1-1.3.5.tar.gz";
sha256 = "2ffd4ad1f860ec93e47a680310ab2bc94968bd07566e71976bd96133d9504917";
md5 = "";
md5name = "2ffd4ad1f860ec93e47a680310ab2bc94968bd07566e71976bd96133d9504917-xmlsec1-1.3.5.tar.gz";
}
{
name = "libxml2-2.13.8.tar.xz";
url = "https://dev-www.libreoffice.org/src/libxml2-2.13.8.tar.xz";
sha256 = "277294cb33119ab71b2bc81f2f445e9bc9435b893ad15bb2cd2b0e859a0ee84a";
md5 = "";
md5name = "277294cb33119ab71b2bc81f2f445e9bc9435b893ad15bb2cd2b0e859a0ee84a-libxml2-2.13.8.tar.xz";
}
{
name = "libxslt-1.1.43.tar.xz";
url = "https://dev-www.libreoffice.org/src/libxslt-1.1.43.tar.xz";
sha256 = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a";
md5 = "";
md5name = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a-libxslt-1.1.43.tar.xz";
}
{
name = "lp_solve_5.5.tar.gz";
url = "https://dev-www.libreoffice.org/src/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
sha256 = "171816288f14215c69e730f7a4f1c325739873e21f946ff83884b350574e6695";
md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
md5name = "26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz";
}
{
name = "lxml-5.4.0.tar.gz";
url = "https://dev-www.libreoffice.org/src/lxml-5.4.0.tar.gz";
sha256 = "d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd";
md5 = "";
md5name = "d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd-lxml-5.4.0.tar.gz";
}
{
name = "mariadb-connector-c-3.3.15-src.tar.gz";
url = "https://dev-www.libreoffice.org/src/mariadb-connector-c-3.3.15-src.tar.gz";
sha256 = "b593fdd3d5b8964a9feec2bf57a13e6cc8f178a4fe948e89f60ede9c53d621fe";
md5 = "";
md5name = "b593fdd3d5b8964a9feec2bf57a13e6cc8f178a4fe948e89f60ede9c53d621fe-mariadb-connector-c-3.3.15-src.tar.gz";
}
{
name = "mdds-2.1.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/mdds-2.1.1.tar.xz";
sha256 = "1483d90cefb8aa4563c4d0a85cb7b243aa95217d235d422e9ca6722fd5b97e56";
md5 = "";
md5name = "1483d90cefb8aa4563c4d0a85cb7b243aa95217d235d422e9ca6722fd5b97e56-mdds-2.1.1.tar.xz";
}
{
name = "mDNSResponder-878.200.35.tar.gz";
url = "https://dev-www.libreoffice.org/src/mDNSResponder-878.200.35.tar.gz";
sha256 = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0";
md5 = "";
md5name = "e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0-mDNSResponder-878.200.35.tar.gz";
}
{
name = "libmspub-0.1.4.tar.xz";
url = "https://dev-www.libreoffice.org/src/libmspub-0.1.4.tar.xz";
sha256 = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba";
md5 = "";
md5name = "ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba-libmspub-0.1.4.tar.xz";
}
{
name = "libmwaw-0.3.22.tar.xz";
url = "https://dev-www.libreoffice.org/src/libmwaw-0.3.22.tar.xz";
sha256 = "a1a39ffcea3ff2a7a7aae0c23877ddf4918b554bf82b0de5d7ce8e7f61ea8e32";
md5 = "";
md5name = "a1a39ffcea3ff2a7a7aae0c23877ddf4918b554bf82b0de5d7ce8e7f61ea8e32-libmwaw-0.3.22.tar.xz";
}
{
name = "mythes-1.2.5.tar.xz";
url = "https://dev-www.libreoffice.org/src/mythes-1.2.5.tar.xz";
sha256 = "19279f70707bbe5ffa619f2dc319f888cec0c4a8d339dc0a21330517bd6f521d";
md5 = "";
md5name = "19279f70707bbe5ffa619f2dc319f888cec0c4a8d339dc0a21330517bd6f521d-mythes-1.2.5.tar.xz";
}
{
name = "nss-3.102.1-with-nspr-4.35.tar.gz";
url = "https://dev-www.libreoffice.org/src/nss-3.102.1-with-nspr-4.35.tar.gz";
sha256 = "ddfdec73fb4b0eedce5fc4de09de9ba14d2ddbfbf67e42372903e1510f2d3d65";
md5 = "";
md5name = "ddfdec73fb4b0eedce5fc4de09de9ba14d2ddbfbf67e42372903e1510f2d3d65-nss-3.102.1-with-nspr-4.35.tar.gz";
}
{
name = "libodfgen-0.1.8.tar.xz";
url = "https://dev-www.libreoffice.org/src/libodfgen-0.1.8.tar.xz";
sha256 = "55200027fd46623b9bdddd38d275e7452d1b0ff8aeddcad6f9ae6dc25f610625";
md5 = "";
md5name = "55200027fd46623b9bdddd38d275e7452d1b0ff8aeddcad6f9ae6dc25f610625-libodfgen-0.1.8.tar.xz";
}
{
name = "odfvalidator-0.9.0-RC2-SNAPSHOT-jar-with-dependencies-2726ab578664434a545f8379a01a9faffac0ae73.jar";
url = "https://dev-www.libreoffice.org/src/../extern/odfvalidator-0.9.0-RC2-SNAPSHOT-jar-with-dependencies-2726ab578664434a545f8379a01a9faffac0ae73.jar";
sha256 = "d55495ab3a86544650587de2a72180ddf8bfc6376d14ddfa923992dbc86a06e0";
md5 = "";
md5name = "d55495ab3a86544650587de2a72180ddf8bfc6376d14ddfa923992dbc86a06e0-odfvalidator-0.9.0-RC2-SNAPSHOT-jar-with-dependencies-2726ab578664434a545f8379a01a9faffac0ae73.jar";
}
{
name = "officeotron-0.7.4-master.jar";
url = "https://dev-www.libreoffice.org/src/../extern/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
sha256 = "f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770";
md5 = "8249374c274932a21846fa7629c2aa9b";
md5name = "8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar";
}
{
name = "onlineupdate-c003be8b9727672e7d30972983b375f4c200233f-2.tar.xz";
url = "https://dev-www.libreoffice.org/src/onlineupdate-c003be8b9727672e7d30972983b375f4c200233f-2.tar.xz";
sha256 = "37206cf981e8409d048b59ac5839621ea107ff49af72beb9d7769a2f41da8d90";
md5 = "";
md5name = "37206cf981e8409d048b59ac5839621ea107ff49af72beb9d7769a2f41da8d90-onlineupdate-c003be8b9727672e7d30972983b375f4c200233f-2.tar.xz";
}
{
name = "openldap-2.6.9.tgz";
url = "https://dev-www.libreoffice.org/src/openldap-2.6.9.tgz";
sha256 = "2cb7dc73e9c8340dff0d99357fbaa578abf30cc6619f0521972c555681e6b2ff";
md5 = "";
md5name = "2cb7dc73e9c8340dff0d99357fbaa578abf30cc6619f0521972c555681e6b2ff-openldap-2.6.9.tgz";
}
{
name = "openssl-3.0.16.tar.gz";
url = "https://dev-www.libreoffice.org/src/openssl-3.0.16.tar.gz";
sha256 = "57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86";
md5 = "";
md5name = "57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86-openssl-3.0.16.tar.gz";
}
{
name = "liborcus-0.19.2.tar.xz";
url = "https://dev-www.libreoffice.org/src/liborcus-0.19.2.tar.xz";
sha256 = "69ed26a00d4aaa7688e62a6e003cbc81928521a45e96605e53365aa499719e39";
md5 = "";
md5name = "69ed26a00d4aaa7688e62a6e003cbc81928521a45e96605e53365aa499719e39-liborcus-0.19.2.tar.xz";
}
{
name = "libpagemaker-0.0.4.tar.xz";
url = "https://dev-www.libreoffice.org/src/libpagemaker-0.0.4.tar.xz";
sha256 = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d";
md5 = "";
md5name = "66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d-libpagemaker-0.0.4.tar.xz";
}
{
name = "pdfium-6425.tar.bz2";
url = "https://dev-www.libreoffice.org/src/pdfium-6425.tar.bz2";
sha256 = "fe0291b96d7352bac530d13ef2e5fd63ad9980e0128911f88b957b5992508f1c";
md5 = "";
md5name = "fe0291b96d7352bac530d13ef2e5fd63ad9980e0128911f88b957b5992508f1c-pdfium-6425.tar.bz2";
}
{
name = "pixman-0.42.2.tar.gz";
url = "https://dev-www.libreoffice.org/src/pixman-0.42.2.tar.gz";
sha256 = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e";
md5 = "";
md5name = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e-pixman-0.42.2.tar.gz";
}
{
name = "libpng-1.6.47.tar.xz";
url = "https://dev-www.libreoffice.org/src/libpng-1.6.47.tar.xz";
sha256 = "b213cb381fbb1175327bd708a77aab708a05adde7b471bc267bd15ac99893631";
md5 = "";
md5name = "b213cb381fbb1175327bd708a77aab708a05adde7b471bc267bd15ac99893631-libpng-1.6.47.tar.xz";
}
{
name = "tiff-4.7.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/tiff-4.7.0.tar.xz";
sha256 = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017";
md5 = "";
md5name = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017-tiff-4.7.0.tar.xz";
}
{
name = "poppler-25.04.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/poppler-25.04.0.tar.xz";
sha256 = "b010c596dce127fba88532fd2f1043e55ea30601767952d0f2c0a80e7dc0da3d";
md5 = "";
md5name = "b010c596dce127fba88532fd2f1043e55ea30601767952d0f2c0a80e7dc0da3d-poppler-25.04.0.tar.xz";
}
{
name = "poppler-data-0.4.12.tar.gz";
url = "https://dev-www.libreoffice.org/src/poppler-data-0.4.12.tar.gz";
sha256 = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74";
md5 = "";
md5name = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74-poppler-data-0.4.12.tar.gz";
}
{
name = "postgresql-13.19.tar.bz2";
url = "https://dev-www.libreoffice.org/src/postgresql-13.19.tar.bz2";
sha256 = "482cce0a9f8d24c2447cfc7b2817e55f86d51afe5f7f1a85214bf93644e774ea";
md5 = "";
md5name = "482cce0a9f8d24c2447cfc7b2817e55f86d51afe5f7f1a85214bf93644e774ea-postgresql-13.19.tar.bz2";
}
{
name = "Python-3.9.22.tar.xz";
url = "https://dev-www.libreoffice.org/src/Python-3.9.22.tar.xz";
sha256 = "8c136d199d3637a1fce98a16adc809c1d83c922d02d41f3614b34f8b6e7d38ec";
md5 = "";
md5name = "8c136d199d3637a1fce98a16adc809c1d83c922d02d41f3614b34f8b6e7d38ec-Python-3.9.22.tar.xz";
}
{
name = "libqxp-0.0.2.tar.xz";
url = "https://dev-www.libreoffice.org/src/libqxp-0.0.2.tar.xz";
sha256 = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c";
md5 = "";
md5name = "e137b6b110120a52c98edd02ebdc4095ee08d0d5295a94316a981750095a945c-libqxp-0.0.2.tar.xz";
}
{
name = "raptor2-2.0.15.tar.gz";
url = "https://dev-www.libreoffice.org/src/a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
sha256 = "ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed";
md5 = "a39f6c07ddb20d7dd2ff1f95fa21e2cd";
md5name = "a39f6c07ddb20d7dd2ff1f95fa21e2cd-raptor2-2.0.15.tar.gz";
}
{
name = "rasqal-0.9.33.tar.gz";
url = "https://dev-www.libreoffice.org/src/1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
sha256 = "6924c9ac6570bd241a9669f83b467c728a322470bf34f4b2da4f69492ccfd97c";
md5 = "1f5def51ca0026cd192958ef07228b52";
md5name = "1f5def51ca0026cd192958ef07228b52-rasqal-0.9.33.tar.gz";
}
{
name = "redland-1.0.17.tar.gz";
url = "https://dev-www.libreoffice.org/src/e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
sha256 = "de1847f7b59021c16bdc72abb4d8e2d9187cd6124d69156f3326dd34ee043681";
md5 = "e5be03eda13ef68aabab6e42aa67715e";
md5name = "e5be03eda13ef68aabab6e42aa67715e-redland-1.0.17.tar.gz";
}
{
name = "librevenge-0.0.5.tar.bz2";
url = "https://dev-www.libreoffice.org/src/librevenge-0.0.5.tar.bz2";
sha256 = "5892ca6796f7a2a93d580832e907e849b19d980b40d326a283b18877ab6de0c5";
md5 = "";
md5name = "5892ca6796f7a2a93d580832e907e849b19d980b40d326a283b18877ab6de0c5-librevenge-0.0.5.tar.bz2";
}
{
name = "rhino-1.7.14.zip";
url = "https://dev-www.libreoffice.org/src/rhino-1.7.14.zip";
sha256 = "bf4d2d0c5ff8889fd494486db09291cb7965f0bf2f93ef005d3b08070a5a4f5c";
md5 = "";
md5name = "bf4d2d0c5ff8889fd494486db09291cb7965f0bf2f93ef005d3b08070a5a4f5c-rhino-1.7.14.zip";
}
{
name = "skia-m116-2ddcf183eb260f63698aa74d1bb380f247ad7ccd.tar.xz";
url = "https://dev-www.libreoffice.org/src/skia-m116-2ddcf183eb260f63698aa74d1bb380f247ad7ccd.tar.xz";
sha256 = "2223ebce534458a37826e8fe4f24635b0712cde7ed1bd3208f089f6fdd796e01";
md5 = "";
md5name = "2223ebce534458a37826e8fe4f24635b0712cde7ed1bd3208f089f6fdd796e01-skia-m116-2ddcf183eb260f63698aa74d1bb380f247ad7ccd.tar.xz";
}
{
name = "libstaroffice-0.0.7.tar.xz";
url = "https://dev-www.libreoffice.org/src/libstaroffice-0.0.7.tar.xz";
sha256 = "f94fb0ad8216f97127bedef163a45886b43c62deac5e5b0f5e628e234220c8db";
md5 = "";
md5name = "f94fb0ad8216f97127bedef163a45886b43c62deac5e5b0f5e628e234220c8db-libstaroffice-0.0.7.tar.xz";
}
{
name = "twaindsm_2.4.1.orig.tar.gz";
url = "https://dev-www.libreoffice.org/src/twaindsm_2.4.1.orig.tar.gz";
sha256 = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6";
md5 = "";
md5name = "82c818be771f242388457aa8c807e4b52aa84dc22b21c6c56184a6b4cbb085e6-twaindsm_2.4.1.orig.tar.gz";
}
{
name = "libvisio-0.1.8.tar.xz";
url = "https://dev-www.libreoffice.org/src/libvisio-0.1.8.tar.xz";
sha256 = "b4098ffbf4dcb9e71213fa0acddbd928f27bed30db2d80234813b15d53d0405b";
md5 = "";
md5name = "b4098ffbf4dcb9e71213fa0acddbd928f27bed30db2d80234813b15d53d0405b-libvisio-0.1.8.tar.xz";
}
{
name = "libwpd-0.10.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/libwpd-0.10.3.tar.xz";
sha256 = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09";
md5 = "";
md5name = "2465b0b662fdc5d4e3bebcdc9a79027713fb629ca2bff04a3c9251fdec42dd09-libwpd-0.10.3.tar.xz";
}
{
name = "libwpg-0.3.4.tar.xz";
url = "https://dev-www.libreoffice.org/src/libwpg-0.3.4.tar.xz";
sha256 = "b55fda9440d1e070630eb2487d8b8697cf412c214a27caee9df69cec7c004de3";
md5 = "";
md5name = "b55fda9440d1e070630eb2487d8b8697cf412c214a27caee9df69cec7c004de3-libwpg-0.3.4.tar.xz";
}
{
name = "libwps-0.4.14.tar.xz";
url = "https://dev-www.libreoffice.org/src/libwps-0.4.14.tar.xz";
sha256 = "365b968e270e85a8469c6b160aa6af5619a4e6c995dbb04c1ecc1b4dd13e80de";
md5 = "";
md5name = "365b968e270e85a8469c6b160aa6af5619a4e6c995dbb04c1ecc1b4dd13e80de-libwps-0.4.14.tar.xz";
}
{
name = "xsltml_2.1.2.zip";
url = "https://dev-www.libreoffice.org/src/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
sha256 = "75823776fb51a9c526af904f1503a7afaaab900fba83eda64f8a41073724c870";
md5 = "a7983f859eafb2677d7ff386a023bc40";
md5name = "a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip";
}
{
name = "zlib-1.3.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/zlib-1.3.1.tar.xz";
sha256 = "38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32";
md5 = "";
md5name = "38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32-zlib-1.3.1.tar.xz";
}
{
name = "libzmf-0.0.2.tar.xz";
url = "https://dev-www.libreoffice.org/src/libzmf-0.0.2.tar.xz";
sha256 = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22";
md5 = "";
md5name = "27051a30cb057fdb5d5de65a1f165c7153dc76e27fe62251cbb86639eb2caf22-libzmf-0.0.2.tar.xz";
}
{
name = "zxcvbn-c-2.5.tar.gz";
url = "https://dev-www.libreoffice.org/src/zxcvbn-c-2.5.tar.gz";
sha256 = "77d6c6ecb35952a8d8ce7f736b7a2bf466275c48210e309b73782d6b7e84dffd";
md5 = "";
md5name = "77d6c6ecb35952a8d8ce7f736b7a2bf466275c48210e309b73782d6b7e84dffd-zxcvbn-c-2.5.tar.gz";
}
{
name = "zxing-cpp-2.2.1.tar.gz";
url = "https://dev-www.libreoffice.org/src/zxing-cpp-2.2.1.tar.gz";
sha256 = "02078ae15f19f9d423a441f205b1d1bee32349ddda7467e2c84e8f08876f8635";
md5 = "";
md5name = "02078ae15f19f9d423a441f205b1d1bee32349ddda7467e2c84e8f08876f8635-zxing-cpp-2.2.1.tar.gz";
}
]

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "0139rsgny1n554qycwmwsxyirr4afbw2q0r326s2mz6bxfg817qm";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.7/libreoffice-help-24.8.7.2.tar.xz";
}

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "1swl16qznhzbchjzx6rp0a388s1ndwpdqswjpz1mxga514dlgpzh";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.7/libreoffice-24.8.7.2.tar.xz";
}

View File

@@ -0,0 +1,5 @@
{ fetchurl, ... }:
fetchurl {
sha256 = "0r4zvy4xlhz23bk4vmh03qa1d5qdrcjg4fppy0q92yclxkrnzlgh";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.7/libreoffice-translations-24.8.7.2.tar.xz";
}

View File

@@ -0,0 +1 @@
"24.8.7.2"

View File

@@ -0,0 +1,120 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p python3 pup curl jq nix nix-prefetch-git
set -euo pipefail
echoerr() { echo "$@" 1>&2; }
fname="$1"
echoerr got fname $fname
shift
variant="$1"
# See comment near version_major variable
if [[ $variant == fresh ]]; then
head_tail=head
elif [[ $variant == still ]]; then
head_tail=tail
elif [[ $variant == collabora ]]; then
true
else
echoerr got unknown variant $variant
exit 3
fi
echoerr got variant $variant
shift
# Not totally needed, but makes it easy to run the update in case tis folder is
# deleted.
mkdir -p "$(dirname $fname)/src-$variant"
cd "$(dirname $fname)/src-$variant"
case $variant in
(fresh|still)
# The pup command prints both fresh and still versions one after another, and
# we use either head -1 or tail -1 to get the right version, per the if elif
# above.
version_major="$(curl --silent https://www.libreoffice.org/download/download-libreoffice/ |\
pup '.dl_version_number text{}' | $head_tail -1)"
echoerr got from website ${variant}_version $version_major
baseurl=https://download.documentfoundation.org/libreoffice/src/$version_major
tarballs=($(curl --silent $baseurl/ |\
pup 'table json{}' |\
jq --raw-output '.. | .href? | strings' |\
grep "$version_major.*.tar.xz$"))
full_version="$(echo ${tarballs[0]} | sed -e 's/^libreoffice-//' -e 's/.tar.xz$//')"
echoerr full version is $full_version
echo \"$full_version\" > version.nix
for t in help translations; do
echo "{ fetchurl, ... }:" > $t.nix
echo "fetchurl {" >> $t.nix
echo " sha256 = "\"$(nix-prefetch-url $baseurl/libreoffice-$t-$full_version.tar.xz)'";' >> $t.nix
echo " url = "\"$baseurl/libreoffice-$t-$full_version.tar.xz'";' >> $t.nix
echo "}" >> $t.nix
done
# Out of loop nix-prefetch-url, because there is no $t, and we want the output
# path as well, to get the download.lst file from there afterwards.
main_path_hash=($(nix-prefetch-url --print-path $baseurl/libreoffice-$full_version.tar.xz))
echo "{ fetchurl, ... }:" > main.nix
echo "fetchurl {" >> main.nix
echo " sha256 = "\"${main_path_hash[0]}'";' >> main.nix
echo " url = "\"$baseurl/libreoffice-$full_version.tar.xz'";' >> main.nix
echo "}" >> main.nix
echoerr got filename ${main_path_hash[1]}
# Environment variable required by ../generate-libreoffice-srcs.py
export downloadList=/tmp/nixpkgs-libreoffice-update-download-$full_version.lst
# Need to extract the file only if it doesn't exist, otherwise spare time be
# skipping this.
if [[ ! -f "$downloadList" ]]; then
tar --extract \
--file=${main_path_hash[1]} \
libreoffice-$full_version/download.lst \
-O > $downloadList
else
echoerr relying on previously downloaded downloadList file
fi
;;
(collabora)
all_tags=$(git ls-remote --tags --sort -v:refname https://gerrit.libreoffice.org/core)
rev=$(grep --perl-regexp --only-matching --max-count=1 \
'\Krefs/tags/cp-\d+\.\d+\.\d+-\d+$' <<< "$all_tags")
full_version=${rev#refs/tags/cp-}
echoerr full version is $full_version
echo \"$full_version\" > version.nix
# The full checkout including the submodules is too big for Hydra, so we fetch
# submodules separately.
declare -A dirnames=([help]=helpcontent2 [translations]=translations)
for t in help translations; do
sub_rev=$(curl --silent "https://git.libreoffice.org/core/+/$rev/${dirnames[$t]}" |\
pup '.gitlink-detail text{}' |\
sed -n 's/^Submodule link to \([0-9a-f]\{40\}\) of .*/\1/p')
echoerr got rev $sub_rev for $t
prefetch_output=$(nix-prefetch-git "https://gerrit.libreoffice.org/$t" --rev "$sub_rev")
echo "{ fetchgit, ... }:" > $t.nix
echo "fetchgit {" >> $t.nix
echo " url = \"$(jq -r '.url' <<< "$prefetch_output")\";" >> $t.nix
echo " rev = \"$rev\";" >> $t.nix
echo " hash = \"$(jq -r '.hash' <<< "$prefetch_output")\";" >> $t.nix
echo "}" >> "$t.nix"
done
prefetch_output=$(nix-prefetch-git "https://gerrit.libreoffice.org/core" --rev "$rev")
echo "{ fetchgit, ... }:" > main.nix
echo "fetchgit {" >> main.nix
echo " url = \"$(jq -r '.url' <<< "$prefetch_output")\";" >> main.nix
echo " rev = \"$rev\";" >> main.nix
echo " hash = \"$(jq -r '.hash' <<< "$prefetch_output")\";" >> main.nix
echo " fetchSubmodules = false;" >> main.nix
echo "}" >> main.nix
# Environment variable required by ../generate-libreoffice-srcs.py
export downloadList=$(jq -r '.path' <<< "$prefetch_output")/download.lst
esac
cd ..
python3 ./generate-libreoffice-srcs.py > src-$variant/deps.nix

View File

@@ -0,0 +1,177 @@
{
lib,
stdenv,
# The unwrapped libreoffice derivation
unwrapped,
makeWrapper,
xorg, # for lndir
runCommand,
# For Emulating wrapGAppsHook3
gsettings-desktop-schemas,
hicolor-icon-theme,
dconf,
librsvg,
gdk-pixbuf,
# some scripts need these when used in conjunction with firejail
coreutils,
gnugrep,
# Configuration options for the wrapper
extraMakeWrapperArgs ? [ ],
dbusVerify ? stdenv.hostPlatform.isLinux,
dbus,
}:
let
inherit (unwrapped) version;
major = lib.versions.major version;
minor = lib.versions.minor version;
makeWrapperArgs = builtins.concatStringsSep " " (
[
"--set"
"GDK_PIXBUF_MODULE_FILE"
"${librsvg}/${gdk-pixbuf.moduleDir}.cache"
"--prefix"
"GIO_EXTRA_MODULES"
":"
"${lib.getLib dconf}/lib/gio/modules"
"--prefix"
"XDG_DATA_DIRS"
":"
"${unwrapped.gtk3}/share/gsettings-schemas/${unwrapped.gtk3.name}"
"--prefix"
"XDG_DATA_DIRS"
":"
"$out/share"
"--prefix"
"XDG_DATA_DIRS"
":"
"${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}"
"--prefix"
"XDG_DATA_DIRS"
":"
"${hicolor-icon-theme}/share"
"--prefix"
"GST_PLUGIN_SYSTEM_PATH_1_0"
":"
"${lib.makeSearchPath "lib/girepository-1.0" unwrapped.gst_packages}"
"--suffix"
"PATH"
":"
"${lib.makeBinPath [
coreutils
gnugrep
]}"
]
++ lib.optionals unwrapped.kdeIntegration [
"--prefix"
"QT_PLUGIN_PATH"
":"
"${lib.makeSearchPath unwrapped.qtbase.qtPluginPrefix (map lib.getBin unwrapped.qtPackages)}"
"--prefix"
"QML2_IMPORT_PATH"
":"
"${lib.makeSearchPath unwrapped.qtbase.qtQmlPrefix (map lib.getBin unwrapped.qmlPackages)}"
]
++ [
# Add dictionaries from all NIX_PROFILES
"--run"
(lib.escapeShellArg ''
for PROFILE in $NIX_PROFILES; do
HU_DIR="$PROFILE/share/hunspell"
HY_DIR="$PROFILE/share/hyphen"
if [ -d "$HU_DIR" ]; then
export DICPATH=$DICPATH''${DICPATH:+:}$HU_DIR
fi
if [ -d "$HY_DIR" ]; then
export DICPATH=$DICPATH''${DICPATH:+:}$HY_DIR
fi
done
'')
]
++ lib.optionals dbusVerify [
# If no dbus is running, start a dedicated dbus daemon
"--run"
(lib.escapeShellArg ''
if ! ( test -n "$DBUS_SESSION_BUS_ADDRESS" ); then
dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"
if ! test -d "$dbus_tmp_dir" && test -d "/run"; then
mkdir -p "$dbus_tmp_dir"
fi
if ! test -d "$dbus_tmp_dir"; then
dbus_tmp_dir="/tmp/libreoffice-$(id -u)/libreoffice-dbus"
mkdir -p "$dbus_tmp_dir"
fi
dbus_socket_dir="$(mktemp -d -p "$dbus_tmp_dir")"
"${dbus}"/bin/dbus-daemon \
--nopidfile \
--nofork \
--config-file "${dbus}"/share/dbus-1/session.conf \
--address "unix:path=$dbus_socket_dir/session" &> /dev/null &
dbus_pid=$!
export DBUS_SESSION_BUS_ADDRESS="unix:path=$dbus_socket_dir/session"
fi
'')
]
++ [
"--inherit-argv0"
]
++ extraMakeWrapperArgs
);
in
runCommand "${unwrapped.name}-wrapped"
{
inherit (unwrapped) meta;
paths = [ unwrapped ];
nativeBuildInputs = [
makeWrapper
xorg.lndir
];
passthru = {
inherit unwrapped;
# For backwards compatibility:
libreoffice = lib.warn "libreoffice: Use the unwrapped attributed, using libreoffice.libreoffice is deprecated." unwrapped;
inherit (unwrapped) kdeIntegration;
};
}
(
''
mkdir -p $out/share
for dir in ${unwrapped}/share/*; do
dirname="''${dir##*/}"
if [[ $dirname == "applications" ]]; then
cp -r $dir/ $out/share/
else
ln -s $dir $out/share/
fi
done
for f in $out/share/applications/*.desktop; do
substituteInPlace "$f" \
--replace "Exec=libreoffice${major}.${minor}" "Exec=soffice"
done
mkdir -p $out/bin
mkdir -p $out/lib/libreoffice/program
lndir -silent ${unwrapped}/lib/libreoffice/program $out/lib/libreoffice/program
for i in sbase scalc sdraw smath swriter simpress soffice unopkg; do
# Delete the symlink created by lndir, and replace it by our wrapper
rm $out/lib/libreoffice/program/$i
makeWrapper \
${unwrapped}/lib/libreoffice/program/$i \
$out/lib/libreoffice/program/$i \
${makeWrapperArgs}
''
+ lib.optionalString dbusVerify ''
# Delete the dbus socket directory after libreoffice quits
sed -i 's/^exec -a "$0" //g' $out/lib/libreoffice/program/$i
echo 'code="$?"' >> $out/lib/libreoffice/program/$i
echo 'test -n "$dbus_socket_dir" && { rm -rf "$dbus_socket_dir"; kill $dbus_pid; }' >> $out/lib/libreoffice/program/$i
echo 'exit "$code"' >> $out/lib/libreoffice/program/$i
''
+ ''
ln -s $out/lib/libreoffice/program/$i $out/bin/$i
done
# A symlink many users rely upon
ln -s $out/bin/soffice $out/bin/libreoffice
''
)

View File

@@ -0,0 +1,47 @@
{
lib,
fetchurl,
appimageTools,
gconf,
imagemagick,
}:
let
pname = "mendeley";
version = "2.138.0";
executableName = "${pname}-reference-manager";
src = fetchurl {
url = "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-${version}-x86_64.AppImage";
hash = "sha256-OS5VarPvWC3KUIAFEw2QndiNZ2ryj81MxTp1fkvuobE=";
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
mv $out/bin/$pname $out/bin/${executableName}
install -m 444 -D ${appimageContents}/${executableName}.desktop $out/share/applications/${executableName}.desktop
${imagemagick}/bin/convert ${appimageContents}/${executableName}.png -resize 512x512 ${pname}_512.png
install -m 444 -D ${pname}_512.png $out/share/icons/hicolor/512x512/apps/${executableName}.png
substituteInPlace $out/share/applications/${executableName}.desktop \
--replace 'Exec=AppRun' 'Exec=${executableName}'
'';
meta = with lib; {
homepage = "https://www.mendeley.com";
description = "Reference manager and academic social network";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ atila ];
mainProgram = "mendeley-reference-manager";
};
}

View File

@@ -0,0 +1,61 @@
{ writeScript, runtimeShell }:
writeScript "update-mendeley" ''
#!${runtimeShell}
function follow() {
local URL=$1
while true; do
NEWURL=$(curl -m20 -sI "$URL" -o /dev/null -w '%{redirect_url}')
[ -z "$NEWURL" ] && break
[[ $NEWURL = $URL ]] && (echo "redirect loop?!"; exit 1)
echo "Following $URL -> $NEWURL ..." >&2
URL=$NEWURL
done
echo $URL
}
amd64URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/amd64/mendeleydesktop-latest)
amd64V=$(basename $amd64URL|grep -m1 -o "[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?")
i386URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/i386/mendeleydesktop-latest)
i386V=$(basename $i386URL|grep -m1 -o "[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?")
echo "amd64 version: $amd64V"
echo "i386 version: $i386V"
if [[ $amd64V != $i386V ]]; then
echo "Versions not the same!"
exit 1
fi
if grep -q -F "$amd64V" ${./default.nix}; then
echo "No new version yet, nothing to do."
echo "Have a nice day!"
exit 0
fi
amd64OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "x86_64-linux"| tr -d '"')
i386OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "i686-linux"| tr -d '"')
echo "Prefetching amd64..."
amd64NewHash=$(nix-prefetch-url $amd64URL)
echo "Prefetching i386..."
i386NewHash=$(nix-prefetch-url $i386URL)
# Don't actually update, just report that an update is available
cat <<EOF
Time to update to $amd64V !
32bit (i386):
Old: $i386OldHash
New: $i386NewHash
64bit (amd64):
Old: $amd64OldHash
New: $amd64NewHash
Exiting so this information is seen...
(no update is actually performed here)
EOF
exit 1
''

View File

@@ -0,0 +1,57 @@
{
lib,
mkDerivation,
fetchFromGitHub,
qmake,
qtsvg,
makeWrapper,
xdg-utils,
}:
mkDerivation rec {
pname = "mytetra";
version = "1.44.183";
src = fetchFromGitHub {
owner = "xintrea";
repo = "mytetra_dev";
rev = "v.${version}";
sha256 = "sha256-9fPioIws+9rzczCsbtOS/ra4eW5FZZeiKmDpqJqx3MQ=";
};
nativeBuildInputs = [
qmake
makeWrapper
];
buildInputs = [ qtsvg ];
hardeningDisable = [ "format" ];
preBuild = ''
substituteInPlace app/app.pro \
--replace /usr/local/bin $out/bin \
--replace /usr/share $out/share
substituteInPlace app/src/views/mainWindow/MainWindow.cpp \
--replace ":/resource/pic/logo.svg" "$out/share/icons/hicolor/48x48/apps/mytetra.png"
# https://github.com/xintrea/mytetra_dev/issues/164
substituteInPlace thirdParty/mimetex/mimetex.c \
--replace "const char *strcasestr" "char *strcasestr"
'';
postFixup = ''
# make xdg-open overrideable at runtime
wrapProgram $out/bin/mytetra \
--suffix PATH : ${xdg-utils}/bin
'';
meta = with lib; {
description = "Smart manager for information collecting";
mainProgram = "mytetra";
homepage = "https://webhamster.ru/site/page/index/articles/projectcode/138";
license = licenses.gpl3;
maintainers = [ ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,12 @@
diff --git a/paperwork-backend/tests/docimport/tests_converted.py b/paperwork-backend/tests/docimport/tests_converted.py
index 1d1ae39b..bda63fce 100644
--- a/paperwork-backend/tests/docimport/tests_converted.py
+++ b/paperwork-backend/tests/docimport/tests_converted.py
@@ -102,6 +102,7 @@ class TestConvertedImport(unittest.TestCase):
)
)
+ @unittest.skip("flaky test: https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/1035#note_1493700")
def test_import_duplicated_docx(self):
with tempfile.TemporaryDirectory() as tmp_dir:
self.config.settings = {

View File

@@ -0,0 +1,64 @@
{
buildPythonPackage,
lib,
callPackage,
isPy3k,
isPyPy,
distro,
setuptools,
psutil,
certifi,
setuptools-scm,
pkgs,
}:
buildPythonPackage rec {
pname = "openpaperwork-core";
inherit (callPackage ./src.nix { }) version src;
format = "pyproject";
sourceRoot = "${src.name}/openpaperwork-core";
# Python 2.x is not supported.
disabled = !isPy3k && !isPyPy;
patchPhase = ''
chmod a+w -R ..
patchShebangs ../tools
'';
propagatedBuildInputs = [
distro
setuptools
psutil
certifi
];
nativeBuildInputs = [
pkgs.gettext
pkgs.which
setuptools-scm
];
preBuild = ''
make l10n_compile
'';
preCheck = ''
export HOME=$(mktemp -d)
'';
meta = {
description = "Backend part of Paperwork (Python API, no UI)";
homepage = "https://openpaper.work/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
aszlig
symphorien
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,64 @@
{
buildPythonPackage,
lib,
callPackage,
isPy3k,
isPyPy,
openpaperwork-core,
pillow,
pygobject3,
distro,
setuptools-scm,
pkgs,
}:
buildPythonPackage rec {
pname = "openpaperwork-gtk";
inherit (callPackage ./src.nix { }) version src;
format = "pyproject";
sourceRoot = "${src.name}/openpaperwork-gtk";
# Python 2.x is not supported.
disabled = !isPy3k && !isPyPy;
patchPhase = ''
chmod a+w -R ..
patchShebangs ../tools
'';
nativeBuildInputs = [
pkgs.gettext
pkgs.which
setuptools-scm
];
preBuild = ''
make l10n_compile
'';
propagatedBuildInputs = [
pillow
pygobject3
pkgs.poppler_gi
pkgs.gtk3
pkgs.libhandy
distro
pkgs.pango
openpaperwork-core
];
meta = {
description = "Reusable GTK components of Paperwork";
homepage = "https://openpaper.work/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
aszlig
symphorien
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,96 @@
{
buildPythonPackage,
lib,
callPackage,
pyenchant,
scikit-learn,
pypillowfight,
pycountry,
whoosh,
termcolor,
pygobject3,
pyocr,
natsort,
libinsane,
distro,
openpaperwork-core,
openpaperwork-gtk,
psutil,
gtk3,
poppler_gi,
gettext,
which,
shared-mime-info,
libreoffice,
unittestCheckHook,
setuptools-scm,
}:
buildPythonPackage rec {
pname = "paperwork-backend";
inherit (callPackage ./src.nix { }) version src;
format = "pyproject";
sourceRoot = "${src.name}/paperwork-backend";
patches = [
# disables a flaky test https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/1035#note_1493700
./flaky_test.patch
];
patchFlags = [ "-p2" ];
postPatch = ''
chmod a+w -R ..
patchShebangs ../tools
'';
propagatedBuildInputs = [
distro
gtk3
libinsane
natsort
openpaperwork-core
pyenchant
pycountry
pygobject3
pyocr
pypillowfight
poppler_gi
scikit-learn
termcolor
whoosh
];
nativeBuildInputs = [
gettext
shared-mime-info
which
setuptools-scm
];
preBuild = ''
make l10n_compile
'';
nativeCheckInputs = [
libreoffice
openpaperwork-gtk
psutil
unittestCheckHook
];
preCheck = ''
export HOME=$TMPDIR
'';
meta = with lib; {
description = "Backend part of Paperwork (Python API, no UI)";
homepage = "https://openpaper.work";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
aszlig
symphorien
];
};
}

View File

@@ -0,0 +1,162 @@
{
lib,
callPackage,
python3Packages,
gtk3,
cairo,
adwaita-icon-theme,
librsvg,
xvfb-run,
dbus,
libnotify,
wrapGAppsHook3,
which,
gettext,
gobject-introspection,
gdk-pixbuf,
texliveSmall,
imagemagick,
perlPackages,
writeScript,
}:
let
documentation_deps = [
(texliveSmall.withPackages (
ps: with ps; [
wrapfig
gensymb
]
))
xvfb-run
imagemagick
perlPackages.Po4a
];
inherit (callPackage ./src.nix { }) version src sample_documents;
in
python3Packages.buildPythonApplication rec {
inherit src version;
pname = "paperwork";
format = "pyproject";
sample_docs = sample_documents // {
# a trick for the update script
name = "sample_documents";
src = sample_documents;
};
sourceRoot = "${src.name}/paperwork-gtk";
postPatch = ''
chmod a+w -R ..
patchShebangs ../tools
export HOME=$(mktemp -d)
'';
preBuild = ''
make l10n_compile
'';
postInstall = ''
# paperwork-shell needs to be re-wrapped with access to paperwork
for exe in paperwork-cli paperwork-json; do
cp ${python3Packages.paperwork-shell}/bin/.$exe-wrapped $out/bin/$exe
done
# install desktop files and icons
XDG_DATA_HOME=$out/share $out/bin/paperwork-gtk install --user
# fixes [WARNING] [openpaperwork_core.resources.setuptools] Failed to find
# resource file paperwork_gtk.icon.out/paperwork_128.png, tried at path
# /nix/store/3n5lz6y8k9yks76f0nar3smc8djan3xr-paperwork-2.0.2/lib/python3.8/site-packages/paperwork_gtk/icon/out/paperwork_128.png.
site=$out/${python3Packages.python.sitePackages}/paperwork_gtk
for i in $site/data/paperwork_*.png; do
ln -s $i $site/icon/out;
done
export XDG_DATA_DIRS=$XDG_DATA_DIRS:${adwaita-icon-theme}/share
# build the user manual
PATH=$out/bin:$PATH PAPERWORK_TEST_DOCUMENTS=${sample_docs} make data
for i in src/paperwork_gtk/model/help/out/*.pdf; do
install -Dt $site/model/help/out $i
done
'';
nativeCheckInputs = [ dbus ];
nativeBuildInputs = [
wrapGAppsHook3
gobject-introspection
python3Packages.setuptools-scm
(lib.getBin gettext)
which
gdk-pixbuf # for the setup hook
]
++ documentation_deps;
buildInputs = [
adwaita-icon-theme
libnotify
librsvg
gtk3
cairo
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
checkPhase = ''
runHook preCheck
# A few parts of chkdeps need to have a display and a dbus session, so we not
# only need to run a virtual X server + dbus but also have a large enough
# resolution, because the Cairo test tries to draw a 200x200 window.
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus}/share/dbus-1/session.conf \
$out/bin/paperwork-gtk chkdeps
$out/bin/paperwork-cli chkdeps
$out/bin/paperwork-json chkdeps
# content of make test, without the dep on make install
python -m unittest discover --verbose -s tests
runHook postCheck
'';
propagatedBuildInputs = with python3Packages; [
paperwork-backend
paperwork-shell
openpaperwork-gtk
openpaperwork-core
pypillowfight
pyxdg
setuptools
];
disallowedRequisites = documentation_deps;
passthru.updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts
version=$(list-git-tags | sed 's/^v//' | sort -V | tail -n1)
update-source-version paperwork "$version" --file=pkgs/applications/office/paperwork/src.nix
docs_version="$(curl https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/raw/$version/paperwork-gtk/src/paperwork_gtk/model/help/screenshot.sh | grep TEST_DOCS_TAG= | cut -d'"' -f2)"
update-source-version paperwork.sample_docs "$docs_version" --file=pkgs/applications/office/paperwork/src.nix --version-key=rev
'';
meta = {
description = "Personal document manager for scanned documents";
homepage = "https://openpaper.work/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
aszlig
symphorien
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,74 @@
{
buildPythonPackage,
lib,
callPackage,
isPy3k,
isPyPy,
openpaperwork-core,
openpaperwork-gtk,
paperwork-backend,
fabulous,
rich,
getkey,
psutil,
shared-mime-info,
setuptools-scm,
pkgs,
}:
buildPythonPackage rec {
pname = "paperwork-shell";
inherit (callPackage ./src.nix { }) version src;
format = "pyproject";
sourceRoot = "${src.name}/paperwork-shell";
# Python 2.x is not supported.
disabled = !isPy3k && !isPyPy;
patchPhase = ''
chmod a+w -R ..
patchShebangs ../tools
'';
propagatedBuildInputs = [
openpaperwork-core
paperwork-backend
fabulous
getkey
psutil
rich
];
nativeCheckInputs = [
shared-mime-info
openpaperwork-gtk
];
nativeBuildInputs = [
pkgs.gettext
pkgs.which
setuptools-scm
];
preBuild = ''
make l10n_compile
'';
preCheck = ''
export HOME=$(mktemp -d)
"$out/bin/paperwork-cli" chkdeps
'';
meta = {
description = "CLI for Paperwork";
homepage = "https://openpaper.work/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
aszlig
symphorien
];
};
}

View File

@@ -0,0 +1,43 @@
{
fetchFromGitLab,
srcOnly,
fetchpatch,
stdenv,
}:
rec {
version = "2.2.5";
src = srcOnly {
pname = "paperwork-patched-src";
inherit version stdenv;
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
repo = "paperwork";
group = "World";
owner = "OpenPaperwork";
rev = version;
sha256 = "sha256-PRh0ohmPLwpM76qYfbExFqq4OK6Hm0fbdzrjXungSoY=";
};
patches = [
# fix installing translations
# remove on next release
(
assert version == "2.2.5";
fetchpatch {
url = "https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/commit/b8e2633ace0f3d9d57e68c27db8f594b8a5ddd7e.patch";
hash = "sha256-VUT86kF0ZHLGK457ZrrIBMeiZqg/rPRpbkBA/ua9rU8=";
}
)
];
};
sample_documents = fetchFromGitLab {
domain = "gitlab.gnome.org";
repo = "paperwork-test-documents";
group = "World";
owner = "OpenPaperwork";
# https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/blob/master/paperwork-gtk/src/paperwork_gtk/model/help/screenshot.sh see TEST_DOCS_TAG
rev = "2.1";
sha256 = "0m79fgc1ycsj0q0alqgr0axn16klz1sfs2km1h83zn3kysqcs6xr";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
mkDerivation,
fetchFromGitLab,
fetchpatch,
fetchpatch2,
cmake,
pkg-config,
qtbase,
qttools,
qpdf,
podofo,
imagemagick,
}:
mkDerivation rec {
pname = "pdfmixtool";
version = "1.1.1";
src = fetchFromGitLab {
owner = "scarpetta";
repo = "pdfmixtool";
rev = "v${version}";
hash = "sha256-fgtRKUG6J/CM6cXUTHWAPemqL8loWZT3wZmGdRHldq8=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
imagemagick
qtbase
qttools
qpdf
podofo
];
patches = [
# fix incompatibility with qpdf11.3.0 usage of c++17 - delete this patch when we reach pdfmixtool version > v1.1.1
(fetchpatch {
url = "https://gitlab.com/scarpetta/pdfmixtool/-/commit/bd5f78c3a4d977d9b0c74302ce2521c737189b43.diff";
hash = "sha256-h2g5toFqgEEnObd2TYQms1a1WFTgN7VsIHyy0Uyq4/I=";
})
# https://gitlab.com/scarpetta/pdfmixtool/-/merge_requests/14
(fetchpatch2 {
url = "https://gitlab.com/scarpetta/pdfmixtool/-/commit/268291317ccd1805dc1c801ff88641ba06c6a7f0.patch";
hash = "sha256-56bDoFtE+IOQHcV9xPfyrgYYFvTfB0QiLIfRl91irb0=";
})
];
meta = with lib; {
description = "Application to split, merge, rotate and mix PDF files";
mainProgram = "pdfmixtool";
homepage = "https://gitlab.com/scarpetta/pdfmixtool";
license = licenses.gpl3Only;
maintainers = with maintainers; [ onny ];
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
fetchFromGitHub,
python3Packages,
wrapQtAppsHook,
}:
python3Packages.buildPythonPackage rec {
pname = "qnotero";
version = "2.3.1";
format = "setuptools";
src = fetchFromGitHub {
owner = "ealbiter";
repo = "qnotero";
tag = "v${version}";
sha256 = "sha256-Rym7neluRbYCpuezRQyLc6gSl3xbVR9fvhOxxW5+Nzo=";
};
propagatedBuildInputs = [
python3Packages.pyqt5
wrapQtAppsHook
];
patchPhase = ''
substituteInPlace ./setup.py \
--replace "/usr/share" "usr/share"
substituteInPlace ./libqnotero/_themes/light.py \
--replace "/usr/share" "$out/usr/share"
'';
preFixup = ''
wrapQtApp "$out"/bin/qnotero
'';
postInstall = ''
mkdir $out/share
mv $out/usr/share/applications $out/share/applications
substituteInPlace $out/share/applications/qnotero.desktop \
--replace "Icon=/usr/share/qnotero/resources/light/qnotero.png" "Icon=qnotero"
mkdir -p $out/share/icons/hicolor/64x64/apps
ln -s $out/usr/share/qnotero/resources/light/qnotero.png \
$out/share/icons/hicolor/64x64/apps/qnotero.png
'';
# no tests executed
doCheck = false;
meta = {
description = "Quick access to Zotero references";
mainProgram = "qnotero";
homepage = "https://www.cogsci.nl/software/qnotero";
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin; # Build fails even after adding cx-freeze to `buildInputs`
maintainers = [ lib.maintainers.nico202 ];
};
}

View File

@@ -0,0 +1,75 @@
{
lib,
mkDerivation,
fetchurl,
qmake,
qtbase,
qttools,
qtsvg,
pkg-config,
poppler,
djvulibre,
libspectre,
cups,
file,
ghostscript,
}:
mkDerivation rec {
pname = "qpdfview";
version = "0.5.0";
src = fetchurl {
url = "https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-0.5.tar.gz";
hash = "sha256-RO/EQKRhy911eps5bxRh7novQ2ToHfVb0CIfkQIZvpk=";
};
nativeBuildInputs = [
qmake
qttools
pkg-config
];
buildInputs = [
qtbase
qtsvg
poppler
djvulibre
libspectre
cups
file
ghostscript
];
# needed for qmakeFlags+=( below
__structuredAttrs = true;
preConfigure = ''
lrelease qpdfview.pro
qmakeFlags+=(*.pro)
'';
qmakeFlags = [
"TARGET_INSTALL_PATH=${placeholder "out"}/bin"
"PLUGIN_INSTALL_PATH=${placeholder "out"}/lib/qpdfview"
"DATA_INSTALL_PATH=${placeholder "out"}/share/qpdfview"
"MANUAL_INSTALL_PATH=${placeholder "out"}/share/man/man1"
"ICON_INSTALL_PATH=${placeholder "out"}/share/icons/hicolor/scalable/apps"
"LAUNCHER_INSTALL_PATH=${placeholder "out"}/share/applications"
"APPDATA_INSTALL_PATH=${placeholder "out"}/share/appdata"
];
env = {
# Fix build due to missing `std::option`.
NIX_CFLAGS_COMPILE = "-std=c++17";
};
meta = with lib; {
description = "Tabbed document viewer";
mainProgram = "qpdfview";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ raskin ];
platforms = platforms.linux;
homepage = "https://launchpad.net/qpdfview";
};
}

View File

@@ -0,0 +1,101 @@
{
lib,
mkDerivation,
fetchFromGitLab,
wafHook,
pkg-config,
cmake,
qtbase,
python3,
qtwebengine,
qtsvg,
ncurses6,
kio,
kauth,
kiconthemes,
kconfigwidgets,
kxmlgui,
kcoreaddons,
kconfig,
kwidgetsaddons,
ki18n,
sonnet,
kdelibs4support,
}:
mkDerivation rec {
pname = "semantik";
version = "1.2.10";
src = fetchFromGitLab {
owner = "ita1024";
repo = "semantik";
rev = "semantik-${version}";
hash = "sha256-qJ6MGxnxXcibF2qXZ2w7Ey/aBIEIx8Gg0dM2PnCl09Y=";
};
patches = [
./qt5.patch
];
postPatch = ''
echo "${lib.getDev qtwebengine}"
substituteInPlace wscript \
--replace @Qt5Base_dev@ "${lib.getDev qtbase}" \
--replace @KF5KIOCore_dev@ "${lib.getDev kio}" \
--replace @KF5Auth_dev@ "${lib.getDev kauth}" \
--replace @KF5IconThemes_dev@ "${lib.getDev kiconthemes}" \
--replace @KF5ConfigWidgets_dev@ "${lib.getDev kconfigwidgets}" \
--replace @KF5XmlGui_dev@ "${lib.getDev kxmlgui}" \
--replace @KF5CoreAddons_dev@ "${lib.getDev kcoreaddons}" \
--replace @KF5Config_dev@ "${lib.getDev kconfig}" \
--replace @KF5WidgetsAddons_dev@ "${lib.getDev kwidgetsaddons}" \
--replace @KF5I18n_dev@ "${lib.getDev ki18n}" \
--replace @KF5SonnetUi_dev@ "${lib.getDev sonnet}" \
--replace @Qt5Svg@ "${qtsvg}" \
--replace @Qt5Svg_dev@ "${lib.getDev qtsvg}" \
--replace @Qt5WebEngine@ "${qtwebengine}" \
--replace @Qt5WebEngine_dev@ "${lib.getDev qtwebengine}" \
--replace /usr/include/KF5/KDELibs4Support "${lib.getDev kdelibs4support}/include/KF5/KDELibs4Support"
'';
nativeBuildInputs = [
(lib.getDev qtsvg)
(lib.getLib qtsvg)
python3
pkg-config
wafHook
cmake
];
buildInputs = [
qtbase
qtwebengine
qtsvg
ncurses6
kio
kauth
kiconthemes
kconfigwidgets
kxmlgui
kcoreaddons
kconfig
kwidgetsaddons
ki18n
sonnet
kdelibs4support
];
wafConfigureFlags = [
"--qtlibs=${lib.getLib qtbase}/lib"
];
meta = with lib; {
description = "Mind-mapping application for KDE";
license = licenses.mit;
homepage = "https://waf.io/semantik.html";
maintainers = [ maintainers.shamilton ];
platforms = platforms.linux;
mainProgram = "semantik";
};
}

View File

@@ -0,0 +1,79 @@
diff --color -ur a/wscript b/wscript
--- a/wscript 2020-08-17 19:49:43.389864343 +0200
+++ b/wscript 2020-08-18 00:22:51.172556519 +0200
@@ -149,6 +149,26 @@
if not conf.env.QT_LRELEASE: conf.fatal('Semantik requires the program lrelease (from the Qt linguist package? - compilation only)')
conf.find_program('python3', var='PYTHON')
conf.load('python')
+ conf.env.HAVE_QT5SVG = 1
+ conf.env.DEFINES_QT5SVG = [ 'QT_SVG_LIB' ]
+ conf.env.INCLUDES_QT5SVG = [ '@Qt5Svg_dev@/include/QtSvg' ]
+ conf.env.LIBPATH_QT5SVG = '@Qt5Svg@/lib'
+ conf.env.LIB_QT5SVG = [ 'Qt5Svg', 'Qt5Core', 'Qt5Gui', 'Qt5Widgets' ]
+ conf.env.HAVE_QT5WEBENGINEWIDGETS = 1
+ conf.env.DEFINES_QT5WEBENGINEWIDGETS = [ 'QT_WEBENGINEWIDGETS_LIB' ]
+ conf.env.INCLUDES_QT5WEBENGINEWIDGETS = [ '@Qt5WebEngine_dev@/include/QtWebEngineWidgets' ]
+ conf.env.LIBPATH_QT5WEBENGINEWIDGETS = '@Qt5WebEngine@/lib'
+ conf.env.LIB_QT5WEBENGINEWIDGETS = [
+ 'Qt5WebEngineWidgets',
+ 'Qt5Core',
+ 'Qt5Gui',
+ 'Qt5WebEngineCore',
+ 'Qt5Widgets',
+ 'Qt5Network',
+ 'Qt5Quick',
+ 'Qt5PrintSupport'
+ ]
+ print("conf.env.LIB_QT5SVG : ",conf.env)
if not conf.env.LIB_QT5SVG: conf.fatal('Could not find Qt5Svg - Semantik requires Qt >= 5')
if not conf.env.LIB_QT5WEBENGINEWIDGETS: conf.fatal('Could not find Qt5WebEngineWidgets - check `pkg-config --libs Qt5WebEngineWidgets`')
if not conf.env.LIB_QT5DBUS: conf.fatal('Install Qt Dbus')
@@ -186,7 +206,11 @@
raise ValueError('Could not find QT_HOST_DATA')
specpath = conf.cmd_and_log(conf.env.QMAKE + ['-query', 'QMAKE_SPEC'], quiet=0, stdout=True)
+ path = "@Qt5Base_dev@"
+ print("\n\n[log] specpath = ",specpath,"\n")
+ print("\n\n[log] path = ",path,"\n")
specpath = os.path.join(path, 'mkspecs', specpath.strip())
+ print("\n\n[log] specpath = ",specpath,"\n")
if not os.path.exists(specpath):
raise ValueError('No spec path, cannot build')
@@ -196,17 +220,29 @@
conf.env.append_value('INCLUDES_KDECORE', specpath)
- libs = ['KF5KIOCore', 'KF5Auth', 'KF5KIOWidgets',
- 'KF5IconThemes', 'KF5ConfigWidgets', 'KF5XmlGui',
- 'KF5CoreAddons', 'KF5ConfigGui', 'KF5ConfigCore',
- 'KF5WidgetsAddons', 'KF5I18n', 'KF5SonnetUi', 'KF5AuthCore']
+ libs = {
+ 'KF5KIOCore': '@KF5KIOCore_dev@',
+ 'KF5Auth': '@KF5Auth_dev@',
+ 'KF5KIOWidgets': '@KF5KIOCore_dev@',
+ 'KF5IconThemes': '@KF5IconThemes_dev@',
+ 'KF5ConfigWidgets': '@KF5ConfigWidgets_dev@',
+ 'KF5XmlGui': '@KF5XmlGui_dev@',
+ 'KF5CoreAddons': '@KF5CoreAddons_dev@',
+ 'KF5ConfigGui': '@KF5Config_dev@',
+ 'KF5ConfigCore': '@KF5Config_dev@',
+ 'KF5WidgetsAddons': '@KF5WidgetsAddons_dev@',
+ 'KF5I18n': '@KF5I18n_dev@',
+ 'KF5SonnetUi': '@KF5SonnetUi_dev@',
+ 'KF5AuthCore': '@KF5Auth_dev@',
+ }
- for lib in libs:
+ for lib,mkspec_path in libs.items():
+ print("[log] mkspec : ", mkspec_path)
name = lib[3:]
if not name.startswith('K') and name != 'SonnetUi':
name = 'K' + name
-
- p = '%s/qt_%s.pri' % (path, name)
+ p = '%s/qt_%s.pri' % (mkspec_path+"/mkspecs/modules", name)
+ print("[log] path :",path,", name : ",name)
try:
code = Utils.readf(p)
except EnvironmentError:

View File

@@ -0,0 +1,100 @@
{
makeDesktopItem,
pname,
suiteName,
}:
{
planmaker = makeDesktopItem {
name = "${pname}-planmaker";
desktopName = "${suiteName} PlanMaker";
icon = "${pname}-pml";
categories = [ "Office" ];
exec = "${pname}-planmaker %F";
tryExec = "${pname}-planmaker";
mimeTypes = [
"application/x-pmd"
"application/x-pmdx"
"application/x-pmv"
"application/excel"
"application/x-excel"
"application/x-ms-excel"
"application/x-msexcel"
"application/x-sylk"
"application/x-xls"
"application/xls"
"application/vnd.ms-excel"
"application/vnd.stardivision.calc"
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
"application/vnd.openxmlformats-officedocument.spreadsheetml.template"
"application/vnd.ms-excel.sheet.macroenabled.12"
"application/vnd.ms-excel.template.macroEnabled.12"
"application/x-dif"
"text/spreadsheet"
"text/csv"
"application/x-prn"
"application/vnd.ms-excel.sheet.binary.macroenabled.12"
];
startupWMClass = "pm";
};
presentations = makeDesktopItem {
name = "${pname}-presentations";
desktopName = "${suiteName} Presentations";
icon = "${pname}-prl";
categories = [ "Office" ];
exec = "${pname}-presentations %F";
tryExec = "${pname}-presentations";
mimeTypes = [
"application/x-prdx"
"application/x-prvx"
"application/x-prsx"
"application/x-prd"
"application/x-prv"
"application/x-prs"
"application/ppt"
"application/mspowerpoint"
"application/vnd.ms-powerpoint"
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
"application/vnd.ms-powerpoint.presentation.macroenabled.12"
"application/vnd.openxmlformats-officedocument.presentationml.template"
"application/vnd.ms-powerpoint.template.macroEnabled.12"
"application/vnd.ms-powerpoint.slideshow.macroenabled.12"
"application/vnd.openxmlformats-officedocument.presentationml.slideshow"
];
startupWMClass = "pr";
};
textmaker = makeDesktopItem {
name = "${pname}-textmaker";
desktopName = "${suiteName} TextMaker";
icon = "${pname}-tml";
categories = [ "Office" ];
exec = "${pname}-textmaker %F";
tryExec = "${pname}-textmaker";
mimeTypes = [
"application/x-tmdx"
"application/x-tmvx"
"application/x-tmd"
"application/x-tmv"
"application/msword"
"application/vnd.ms-word"
"application/x-doc"
"text/rtf"
"application/rtf"
"application/vnd.oasis.opendocument.text"
"application/vnd.oasis.opendocument.text-template"
"application/vnd.stardivision.writer"
"application/vnd.sun.xml.writer"
"application/vnd.sun.xml.writer.template"
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
"application/vnd.ms-word.document.macroenabled.12"
"application/vnd.openxmlformats-officedocument.wordprocessingml.template"
"application/vnd.ms-word.template.macroenabled.12"
"application/x-pocket-word"
"application/x-dbf"
"application/msword-template"
];
startupWMClass = "tm";
};
}

View File

@@ -0,0 +1,32 @@
{
callPackage,
fetchurl,
# This is a bit unusual, but makes version and hash easily
# overridable. This is useful when the upstream archive was replaced
# and nixpkgs is not in sync yet.
officeVersion ? {
version = "1220";
edition = "2024";
hash = "sha256-F1Srm3/4UPifYls21MhjbpxSyLaT0gEVzEMQF0gIzi0=";
},
...
}@args:
callPackage ./generic.nix (
args
// rec {
inherit (officeVersion) version edition;
pname = "freeoffice";
suiteName = "FreeOffice";
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-freeoffice-${edition}-${version}-amd64.tgz";
};
archive = "freeoffice${edition}.tar.lzma";
}
)

View File

@@ -0,0 +1,165 @@
{
lib,
stdenv,
autoPatchelfHook,
makeDesktopItem,
makeWrapper,
copyDesktopItems,
# Dynamic Libraries
curl,
glib,
gst_all_1,
libGL,
libX11,
libXext,
libXmu,
libXrandr,
libXrender,
# For fixing up execution of /bin/ls, which is necessary for
# product unlocking.
coreutils,
libredirect,
# Extra utilities used by the SoftMaker applications.
gnugrep,
util-linux,
which,
pname,
version,
edition,
suiteName,
src,
archive,
...
}:
let
desktopItems = import ./desktop_items.nix {
inherit makeDesktopItem pname suiteName;
};
shortEdition = builtins.substring 2 2 edition;
in
stdenv.mkDerivation {
inherit pname src;
version = if edition != "" then "${edition}.${version}" else version;
nativeBuildInputs = [
autoPatchelfHook
copyDesktopItems
makeWrapper
];
buildInputs = [
curl
glib
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
libGL
libX11
libXext
libXmu
libXrandr
libXrender
(lib.getLib stdenv.cc.cc)
];
dontBuild = true;
dontConfigure = true;
unpackPhase = ''
runHook preUnpack
mkdir installer
tar -C installer -xf ${src}
mkdir ${pname}
tar -C ${pname} -xf installer/${archive}
runHook postUnpack
'';
installPhase =
let
# SoftMaker/FreeOffice collects some system information upon
# unlocking the product. But in doing so, it attempts to execute
# /bin/ls. If the execve syscall fails, the whole unlock
# procedure fails. This works around that by rewriting /bin/ls
# to the proper path.
#
# In addition, it expects some common utilities (which, whereis)
# to be in the path.
#
# SoftMaker Office restarts itself upon some operations, such
# changing the theme and unlocking. Unfortunately, we do not
# have control over its environment then and it will fail
# with an error.
extraWrapperArgs = ''
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/bin/ls=${coreutils}/bin/ls" \
--prefix PATH : "${
lib.makeBinPath [
coreutils
gnugrep
util-linux
which
]
}"
'';
in
''
runHook preInstall
mkdir -p $out/share
cp -r ${pname} $out/share/${pname}${edition}
# Wrap rather than symlinking, so that the programs can determine
# their resource path.
mkdir -p $out/bin
makeWrapper $out/share/${pname}${edition}/planmaker $out/bin/${pname}-planmaker \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/presentations $out/bin/${pname}-presentations \
${extraWrapperArgs}
makeWrapper $out/share/${pname}${edition}/textmaker $out/bin/${pname}-textmaker \
${extraWrapperArgs}
for size in 16 32 48 64 96 128 256 512 1024; do
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
for app in pml prl tml; do
ln -s $out/share/${pname}${edition}/icons/''${app}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/${pname}-''${app}.png
done
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/mimetypes
for mimetype in pmd prd tmd; do
ln -s $out/share/${pname}${edition}/icons/''${mimetype}_''${size}.png \
$out/share/icons/hicolor/''${size}x''${size}/mimetypes/application-x-''${mimetype}.png
done
done
# freeoffice 973 misses the 96x96 application icons, giving broken symbolic links
# remove broken symbolic links
find $out -xtype l -ls -exec rm {} \;
# Add mime types
install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml
runHook postInstall
'';
desktopItems = builtins.attrValues desktopItems;
meta = {
description = "Office suite with a word processor, spreadsheet and presentation program";
homepage = "https://www.softmaker.com/";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ liberodark ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,32 @@
{
callPackage,
fetchurl,
# This is a bit unusual, but makes version and hash easily
# overridable. This is useful when the upstream archive was replaced
# and nixpkgs is not in sync yet.
officeVersion ? {
version = "1228";
edition = "";
hash = "sha256-Va0QkLQtsPbDAo3ygfp6UKr0OkLLBS0yAup+xLoLD0s=";
},
...
}@args:
callPackage ./generic.nix (
args
// rec {
inherit (officeVersion) version edition;
pname = "softmaker-office-nx";
suiteName = "SoftMaker Office NX";
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-office-nx-${version}-amd64.tgz";
};
archive = "officenx.tar.lzma";
}
)

View File

@@ -0,0 +1,33 @@
{
callPackage,
fetchurl,
# This is a bit unusual, but makes version and hash easily
# overridable. This is useful when people have an older version of
# Softmaker Office or when the upstream archive was replaced and
# nixpkgs is not in sync yet.
officeVersion ? {
version = "1228";
edition = "2024";
hash = "sha256-3/pdn3LLYy5U6GZp5jABH2oMpP/kDU9oAO9KvMwo9V8=";
},
...
}@args:
callPackage ./generic.nix (
args
// rec {
inherit (officeVersion) version edition;
pname = "softmaker-office";
suiteName = "SoftMaker Office";
src = fetchurl {
inherit (officeVersion) hash;
url = "https://www.softmaker.net/down/softmaker-office-${edition}-${version}-amd64.tgz";
};
archive = "office${edition}.tar.lzma";
}
)

View File

@@ -0,0 +1,48 @@
{
stdenv,
lib,
fetchzip,
qtbase,
qttools,
cmake,
sqlite,
wrapQtAppsHook,
}:
stdenv.mkDerivation rec {
pname = "tagainijisho";
version = "1.2.2";
src = fetchzip {
url = "https://github.com/Gnurou/tagainijisho/releases/download/${version}/tagainijisho-${version}.tar.gz";
hash = "sha256-CTDMoYGbVE4W0SDerW//aAdUVsySWFQycSy0I3a9+94=";
};
nativeBuildInputs = [
qttools
cmake
wrapQtAppsHook
];
buildInputs = [
qtbase
sqlite
];
cmakeFlags = [
"-DEMBED_SQLITE=OFF"
];
meta = with lib; {
description = "Free, open-source Japanese dictionary and kanji lookup tool";
mainProgram = "tagainijisho";
homepage = "https://www.tagaini.net/";
license = with licenses; [
# program
gpl3Plus
# data
cc-by-sa-30
];
platforms = platforms.linux;
maintainers = with maintainers; [ vbgl ];
};
}