wpsoffice-cn: 12.1.0.17900 -> 12.1.2.22571
This commit is contained in:
@@ -8,46 +8,35 @@
|
||||
libtool,
|
||||
libxkbcommon,
|
||||
nspr,
|
||||
mesa,
|
||||
libtiff,
|
||||
udev,
|
||||
gtk3,
|
||||
libgbm,
|
||||
libusb1,
|
||||
libsForQt5,
|
||||
xorg,
|
||||
cups,
|
||||
pango,
|
||||
libjpeg,
|
||||
gtk2,
|
||||
gdk-pixbuf,
|
||||
libpulseaudio,
|
||||
libbsd,
|
||||
libusb1,
|
||||
bzip2,
|
||||
libmysqlclient,
|
||||
llvmPackages,
|
||||
dbus,
|
||||
gcc-unwrapped,
|
||||
freetype,
|
||||
curl,
|
||||
makeWrapper,
|
||||
runCommandLocal,
|
||||
cacert,
|
||||
curl,
|
||||
coreutils,
|
||||
cacert,
|
||||
}:
|
||||
let
|
||||
pkgVersion = "12.1.0.17900";
|
||||
url = "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2023/${lib.last (lib.splitVersion pkgVersion)}/wps-office_${pkgVersion}_amd64.deb";
|
||||
hash = "sha256-i2EVCmDLE2gx7l2aAo+fW8onP/z+xlPIbQYwKhQ46+o=";
|
||||
uri = builtins.replaceStrings [ "https://wps-linux-personal.wpscdn.cn" ] [ "" ] url;
|
||||
securityKey = "7f8faaaa468174dc1c9cd62e5f218a5b";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "wpsoffice-cn";
|
||||
version = pkgVersion;
|
||||
|
||||
src =
|
||||
runCommandLocal "wps-office_${version}_amd64.deb"
|
||||
let
|
||||
pname = "wpsoffice-cn";
|
||||
sources = import ./sources.nix;
|
||||
version = sources.version;
|
||||
|
||||
fetch =
|
||||
{
|
||||
url,
|
||||
uri,
|
||||
hash,
|
||||
}:
|
||||
runCommandLocal "wpsoffice-cn-${version}-src"
|
||||
{
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = hash;
|
||||
|
||||
@@ -60,108 +49,95 @@ stdenv.mkDerivation rec {
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
}
|
||||
''
|
||||
readonly SECURITY_KEY="7f8faaaa468174dc1c9cd62e5f218a5b"
|
||||
|
||||
timestamp10=$(date '+%s')
|
||||
md5hash=($(echo -n "${securityKey}${uri}$timestamp10" | md5sum))
|
||||
curl \
|
||||
--retry 3 --retry-delay 3 \
|
||||
"${url}?t=$timestamp10&k=$md5hash" \
|
||||
> $out
|
||||
md5hash=($(printf '%s' "$SECURITY_KEY${uri}$timestamp10" | md5sum))
|
||||
|
||||
curl --retry 3 --retry-delay 3 "${url}?t=$timestamp10&k=$md5hash" > $out
|
||||
'';
|
||||
|
||||
srcs = {
|
||||
x86_64-linux = fetch sources.x86_64;
|
||||
};
|
||||
|
||||
src =
|
||||
srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit pname src version;
|
||||
|
||||
unpackCmd = "dpkg -x $src .";
|
||||
sourceRoot = ".";
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
at-spi2-core
|
||||
libtool
|
||||
libjpeg
|
||||
libxkbcommon
|
||||
nspr
|
||||
mesa
|
||||
libtiff
|
||||
udev
|
||||
gtk3
|
||||
libsForQt5.qt5.qtbase
|
||||
libgbm
|
||||
libusb1
|
||||
libsForQt5.qtbase
|
||||
xorg.libXdamage
|
||||
xorg.libXtst
|
||||
xorg.libXv
|
||||
gtk2
|
||||
gdk-pixbuf
|
||||
libpulseaudio
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXxf86vm
|
||||
libbsd
|
||||
libusb1
|
||||
libmysqlclient
|
||||
llvmPackages.openmp
|
||||
dbus
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
stripAllList = [ "opt" ];
|
||||
|
||||
runtimeDependencies = map lib.getLib [
|
||||
cups
|
||||
pango
|
||||
freetype
|
||||
gcc-unwrapped.lib
|
||||
];
|
||||
|
||||
autoPatchelfIgnoreMissingDeps = [
|
||||
# distribution is missing libkappessframework.so
|
||||
"libkappessframework.so"
|
||||
# qt4 support is deprecated
|
||||
"libQtCore.so.4"
|
||||
"libQtNetwork.so.4"
|
||||
"libQtXml.so.4"
|
||||
# file manager integration. Not needed
|
||||
"libnautilus-extension.so.1"
|
||||
"libcaja-extension.so.1"
|
||||
"libpeony.so.3"
|
||||
# libuof.so is a exclusive library in WPS. No need to repatch it
|
||||
"libuof.so"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
prefix=$out/opt/kingsoft/wps-office
|
||||
|
||||
mkdir -p $out
|
||||
|
||||
cp -r opt $out
|
||||
cp -r usr/* $out
|
||||
for i in wps wpp et wpspdf; do
|
||||
substituteInPlace $out/bin/$i \
|
||||
--replace /opt/kingsoft/wps-office $prefix
|
||||
done
|
||||
for i in $out/share/applications/*;do
|
||||
cp -r usr/{bin,share} $out
|
||||
|
||||
for i in $out/bin/*; do
|
||||
substituteInPlace $i \
|
||||
--replace /usr/bin $out/bin
|
||||
--replace-fail /opt/kingsoft/wps-office $out/opt/kingsoft/wps-office
|
||||
done
|
||||
# need system freetype and gcc lib to run properly
|
||||
for i in wps wpp et wpspdf wpsoffice; do
|
||||
wrapProgram $out/opt/kingsoft/wps-office/office6/$i \
|
||||
--set LD_PRELOAD "${freetype}/lib/libfreetype.so" \
|
||||
--set LD_LIBRARY_PATH "${lib.makeLibraryPath [ gcc-unwrapped.lib ]}"
|
||||
|
||||
for i in $out/share/applications/*; do
|
||||
substituteInPlace $i \
|
||||
--replace-fail /usr/bin $out/bin
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
# The following libraries need libtiff.so.5, but nixpkgs provides libtiff.so.6
|
||||
patchelf --replace-needed libtiff.so.5 libtiff.so $out/opt/kingsoft/wps-office/office6/{libpdfmain.so,libqpdfpaint.so,qt/plugins/imageformats/libqtiff.so,addons/pdfbatchcompression/libpdfbatchcompressionapp.so}
|
||||
patchelf --replace-needed libtiff.so.5 libtiff.so $out/opt/kingsoft/wps-office/office6/addons/ksplitmerge/libksplitmergeapp.so
|
||||
patchelf --add-needed libtiff.so $out/opt/kingsoft/wps-office/office6/libwpsmain.so
|
||||
# Fix: Wrong JPEG library version: library is 62, caller expects 80
|
||||
patchelf --add-needed libjpeg.so $out/opt/kingsoft/wps-office/office6/libwpsmain.so
|
||||
# libbz2 dangling symlink
|
||||
ln -sf ${bzip2.out}/lib/libbz2.so $out/opt/kingsoft/wps-office/office6/libbz2.so
|
||||
# dlopen dependency
|
||||
patchelf --add-needed libudev.so.1 $out/opt/kingsoft/wps-office/office6/addons/cef/libcef.so
|
||||
# libmysqlclient dependency
|
||||
patchelf --replace-needed libmysqlclient.so.18 libmysqlclient.so $out/opt/kingsoft/wps-office/office6/libFontWatermark.so
|
||||
patchelf --add-rpath ${libmysqlclient}/lib/mariadb $out/opt/kingsoft/wps-office/office6/libFontWatermark.so
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Office suite, formerly Kingsoft Office";
|
||||
homepage = "https://www.wps.com";
|
||||
@@ -174,6 +150,7 @@ stdenv.mkDerivation rec {
|
||||
th0rgal
|
||||
wineee
|
||||
pokon548
|
||||
chillcicada
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: 2025-09-15
|
||||
{
|
||||
version = "12.1.2.22571";
|
||||
x86_64 = {
|
||||
url = "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2023/22571/wps-office_12.1.2.22571.AK.preread.sw_480057_amd64.deb";
|
||||
uri = "/wps/download/ep/Linux2023/22571/wps-office_12.1.2.22571.AK.preread.sw_480057_amd64.deb";
|
||||
hash = "sha256-aB1EWP0Ev5WuAuzih3ybD23qaRRTUjlES1emas+sUDA=";
|
||||
};
|
||||
}
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p nix curl cacert
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
export SSL_CERT_FILE=$NIX_SSL_CERT_FILE
|
||||
|
||||
readonly SECURITY_KEY="7f8faaaa468174dc1c9cd62e5f218a5b"
|
||||
prefix="https://wps-linux-personal.wpscdn.cn"
|
||||
|
||||
payload=$(curl -s "https://www.wps.cn/product/wpslinux")
|
||||
|
||||
version=$(echo "$payload" | grep -oP '(?<=banner_txt">)[^<]+')
|
||||
|
||||
amd64_url=$(echo "$payload" | grep -oP "downLoad\('[^']*'" | head -1 | sed "s/downLoad('//;s/'$//")
|
||||
amd64_uri="${amd64_url#$prefix}"
|
||||
|
||||
timestamp10=$(date '+%s')
|
||||
md5hash=($(printf '%s' "$SECURITY_KEY$amd64_uri$timestamp10" | md5sum))
|
||||
|
||||
amd64_hash=$(nix-prefetch-url --name "wpsoffice-cn-$version.deb" "$amd64_url?t=$timestamp10&k=$md5hash")
|
||||
|
||||
amd64_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$amd64_hash")
|
||||
|
||||
cat > sources.nix << EOF
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: $(date +%F)
|
||||
{
|
||||
version = "$version";
|
||||
x86_64 = {
|
||||
url = "$amd64_url";
|
||||
uri = "$amd64_uri";
|
||||
hash = "$amd64_hash";
|
||||
};
|
||||
}
|
||||
EOF
|
||||
Reference in New Issue
Block a user