mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 23:43:30 +00:00
Merge pull request #279608 from thiagokokada/bump-rar
rar: 6.21 -> 6.24
This commit is contained in:
commit
dde36142ad
@ -1,39 +1,43 @@
|
||||
{ lib, stdenv, fetchurl, autoPatchelfHook, installShellFiles }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, installShellFiles
|
||||
}:
|
||||
|
||||
let
|
||||
version = "6.21";
|
||||
version = "6.24";
|
||||
downloadVersion = lib.replaceStrings [ "." ] [ "" ] version;
|
||||
# Use `nix store prefetch-file <url>` to generate the hashes for the other systems
|
||||
# TODO: create update script
|
||||
srcUrl = {
|
||||
# Use `./update.sh` to generate the entries below
|
||||
srcs = {
|
||||
i686-linux = {
|
||||
url = "https://www.rarlab.com/rar/rarlinux-x32-${downloadVersion}.tar.gz";
|
||||
hash = "sha256-mDeRmLTjF0ZLv4JoLrgI8YBFFulBSKfOPb6hrxDZIkU=";
|
||||
hash = "sha256-aacgJH0iJLRNEaZuVyzl/FxZgSnW3dIZFUfaqt0l88M=";
|
||||
};
|
||||
x86_64-linux = {
|
||||
url = "https://www.rarlab.com/rar/rarlinux-x64-${downloadVersion}.tar.gz";
|
||||
hash = "sha256-3fr5aVkh/r6OfBEcZULJSZp5ydakJOLRPlgzMdlwGTM=";
|
||||
hash = "sha256-iOIqjoQSXJR2N7vyjHRuM4oKYyedgPn51zc2A4ddses=";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
url = "https://www.rarlab.com/rar/rarmacos-arm-${downloadVersion}.tar.gz";
|
||||
hash = "sha256-OR9HBlRteTzuyQ06tyXTSrFTBHFwmZ41kUfvgflogT4=";
|
||||
hash = "sha256-2r4zWDT7Xw/CNvA7oNEsGfrXJDzFa5gNthIB/5TYR5U=";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
url = "https://www.rarlab.com/rar/rarmacos-x64-${downloadVersion}.tar.gz";
|
||||
hash = "sha256-UN3gmEuIpCXwmw3/l+KdarAYLy1DxGoPAOB2bfJTGbw=";
|
||||
hash = "sha256-4vENPNfMpQstsm9+8+glHPK9fAlDmnHWbCHW+HUwSX4=";
|
||||
};
|
||||
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
};
|
||||
manSrc = fetchurl {
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/rar.1?h=rar&id=8e39a12e88d8a3b168c496c44c18d443c876dd10";
|
||||
name = "rar.1";
|
||||
hash = "sha256-93cSr9oAsi+xHUtMsUvICyHJe66vAImS2tLie7nt8Uw=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "rar";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl srcUrl;
|
||||
src = fetchurl (srcs.${stdenv.hostPlatform.system});
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@ -57,12 +61,15 @@ stdenv.mkDerivation rec {
|
||||
installManPage ${manSrc}
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility for RAR archives";
|
||||
homepage = "https://www.rarlab.com/";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
mainProgram = "rar";
|
||||
maintainers = with maintainers; [ thiagokokada ];
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
platforms = lib.attrNames srcs;
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
};
|
||||
}
|
||||
|
78
pkgs/tools/archivers/rar/update.sh
Executable file
78
pkgs/tools/archivers/rar/update.sh
Executable file
@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gawk gnused pup jq
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DIRNAME=$(dirname "$0")
|
||||
readonly DIRNAME
|
||||
readonly NIXPKGS_ROOT="../../../.."
|
||||
readonly NIX_FLAGS=(--extra-experimental-features 'nix-command flakes')
|
||||
|
||||
# awk is used for parsing the RARLAB website to get the newest version
|
||||
readonly AWK_FIELD_SEPARATOR='[-.]'
|
||||
# shellcheck disable=SC2016
|
||||
readonly AWK_COMMAND='
|
||||
# We will get the following output from pup:
|
||||
# /rar/rarlinux-x64-700b3.tar.gz
|
||||
# /rar/rarmacos-x64-700b3.tar.gz
|
||||
# /rar/rarlinux-x64-624.tar.gz
|
||||
# /rar/rarbsd-x64-624.tar.gz
|
||||
# /rar/rarmacos-x64-624.tar.gz
|
||||
|
||||
# Ignore anything that is flagged as beta (e.g.: `/rar/rarlinux-x64-700b3.tar.gz`)
|
||||
!/[0-9]+b[0-9]*.tar.gz$/ {
|
||||
# /rar/rarlinux-x64-624.tar.gz -> 624
|
||||
val = $3
|
||||
# Only get the value if it is bigger than the current one
|
||||
if (val > max) max = val
|
||||
}
|
||||
END {
|
||||
# 624 -> 6.24
|
||||
printf "%.2f\n", max/100
|
||||
}
|
||||
'
|
||||
|
||||
updateHash() {
|
||||
local -r version="${1//./}"
|
||||
local -r arch="$2"
|
||||
local -r os="$3"
|
||||
local -r nix_arch="$4"
|
||||
|
||||
url="https://www.rarlab.com/rar/rar$os-$arch-$version.tar.gz"
|
||||
hash=$(nix store prefetch-file --json "$url" | jq -r .hash)
|
||||
currentHash=$(cd "$DIRNAME" && nix "${NIX_FLAGS[@]}" eval --raw "$NIXPKGS_ROOT#legacyPackages.$nix_arch.rar.src.outputHash")
|
||||
|
||||
sed -i "s|$currentHash|$hash|g" "$DIRNAME/default.nix"
|
||||
}
|
||||
|
||||
updateVersion() {
|
||||
local -r version="$1"
|
||||
sed -i "s|version = \"[0-9.]*\";|version = \"$version\";|g" "$DIRNAME/default.nix"
|
||||
}
|
||||
|
||||
latestVersion="${1:-}"
|
||||
if [[ -z "$latestVersion" ]]; then
|
||||
latestVersion=$(
|
||||
curl --silent --location --fail https://www.rarlab.com/download.htm | \
|
||||
pup 'a[href*=".tar.gz"] attr{href}' | \
|
||||
awk -F"$AWK_FIELD_SEPARATOR" "$AWK_COMMAND"
|
||||
)
|
||||
fi
|
||||
readonly latestVersion
|
||||
echo "Latest version: $latestVersion"
|
||||
|
||||
currentVersion=$(cd "$DIRNAME" && nix "${NIX_FLAGS[@]}" eval --raw "$NIXPKGS_ROOT#legacyPackages.x86_64-linux.rar.version")
|
||||
readonly currentVersion
|
||||
echo "Current version: $currentVersion"
|
||||
|
||||
if [[ "$currentVersion" == "$latestVersion" ]]; then
|
||||
echo "rar is up-to-date"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
updateHash "$latestVersion" x32 linux i686-linux
|
||||
updateHash "$latestVersion" x64 linux x86_64-linux
|
||||
updateHash "$latestVersion" arm macos aarch64-darwin
|
||||
updateHash "$latestVersion" x64 macos x86_64-darwin
|
||||
|
||||
updateVersion "$latestVersion"
|
Loading…
Reference in New Issue
Block a user