aegisub: refactor

- finalAttrs design pattern
- reorder input set
- remove `null`-ities
- strictDeps
- set openalSupport as true by default
- remove `enableParallelBuilding = true` (since it is true by default in
  cmake+ninja)
- use ninja instead of relying on default make
- move luajit and boost pins to top-level
- use lib.get* functions
- use `cmakeBuildDir`
- get rid of nested with in meta
This commit is contained in:
Anderson Torres 2024-04-15 19:15:58 -03:00
parent f2d00fba3a
commit e691d542b5
3 changed files with 94 additions and 91 deletions

View file

@ -1,86 +1,84 @@
{ lib
, config
, stdenv
, fetchFromGitHub
, boost179
, cmake
, expat
, harfbuzz
, ffmpeg
, ffms
, fftw
, fontconfig
, freetype
, fribidi
, glib
, icu
, intltool
, libGL
, libGLU
, libX11
, libass
, libiconv
, libuchardet
, luajit
, pcre
, pkg-config
, which
, wrapGAppsHook
, wxGTK
, zlib
, spellcheckSupport ? true
, hunspell ? null
, openalSupport ? false
, openal ? null
, alsaSupport ? stdenv.isLinux
, alsa-lib ? null
, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux
, libpulseaudio ? null
, portaudioSupport ? false
, portaudio ? null
, useBundledLuaJIT ? false
, darwin
{
lib,
alsa-lib,
boost,
cmake,
config,
darwin,
expat,
fetchFromGitHub,
ffmpeg,
ffms,
fftw,
fontconfig,
freetype,
fribidi,
glib,
harfbuzz,
hunspell,
icu,
intltool,
libGL,
libGLU,
libX11,
libass,
libiconv,
libpulseaudio,
libuchardet,
luajit,
ninja,
openal,
pcre,
pkg-config,
portaudio,
stdenv,
which,
wrapGAppsHook,
wxGTK,
zlib,
# Boolean guard flags
alsaSupport ? stdenv.isLinux,
openalSupport ? true,
portaudioSupport ? true,
pulseaudioSupport ? config.pulseaudio or stdenv.isLinux,
spellcheckSupport ? true,
useBundledLuaJIT ? false,
}:
assert spellcheckSupport -> (hunspell != null);
assert openalSupport -> (openal != null);
assert alsaSupport -> (alsa-lib != null);
assert pulseaudioSupport -> (libpulseaudio != null);
assert portaudioSupport -> (portaudio != null);
let
luajit52 = luajit.override { enable52Compat = true; };
inherit (lib) optional;
inherit (darwin.apple_sdk.frameworks) CoreText CoreFoundation AppKit Carbon IOKit Cocoa;
inherit (darwin.apple_sdk.frameworks)
AppKit
Carbon
Cocoa
CoreFoundation
CoreText
IOKit
OpenAL;
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "aegisub";
version = "3.3.3";
src = fetchFromGitHub {
owner = "wangqr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-oKhLv81EFudrJaaJ2ga3pVh4W5Hd2YchpjsoYoqRm78=";
repo = "aegisub";
rev = "v${finalAttrs.version}";
hash = "sha256-oKhLv81EFudrJaaJ2ga3pVh4W5Hd2YchpjsoYoqRm78=";
};
nativeBuildInputs = [
cmake
intltool
luajit52
luajit
ninja
pkg-config
which
cmake
wrapGAppsHook
wxGTK
];
buildInputs = [
boost179
boost
expat
ffmpeg
ffms
@ -101,22 +99,21 @@ stdenv.mkDerivation rec {
wxGTK
zlib
]
++ lib.optionals alsaSupport [ alsa-lib ]
++ lib.optionals openalSupport [
(if stdenv.isDarwin then OpenAL else openal)
]
++ lib.optionals portaudioSupport [ portaudio ]
++ lib.optionals pulseaudioSupport [ libpulseaudio ]
++ lib.optionals spellcheckSupport [ hunspell ]
++ lib.optionals stdenv.isDarwin [
CoreText
CoreFoundation
AppKit
Carbon
IOKit
Cocoa
]
++ optional alsaSupport alsa-lib
++ optional openalSupport openal
++ optional portaudioSupport portaudio
++ optional pulseaudioSupport libpulseaudio
++ optional spellcheckSupport hunspell
;
enableParallelBuilding = true;
CoreFoundation
CoreText
IOKit
];
hardeningDisable = [
"bindnow"
@ -124,7 +121,7 @@ stdenv.mkDerivation rec {
];
patches = lib.optionals (!useBundledLuaJIT) [
./remove-bundled-luajit.patch
./000-remove-bundled-luajit.patch
];
# error: unknown type name 'NSUInteger'
@ -133,20 +130,22 @@ stdenv.mkDerivation rec {
--replace "NSUInteger" "size_t"
'';
env.NIX_CFLAGS_COMPILE = "-I${luajit52}/include";
NIX_CFLAGS_LINK = "-L${luajit52}/lib";
env = {
NIX_CFLAGS_COMPILE = "-I${lib.getDev luajit}/include";
NIX_CFLAGS_LINK = "-L${lib.getLib luajit}/lib";
};
configurePhase = ''
export FORCE_GIT_VERSION=${version}
# Workaround for a Nixpkgs bug; remove when the fix arrives
mkdir build-dir
cd build-dir
cmake -DCMAKE_INSTALL_PREFIX=$out ..
preConfigure = ''
export FORCE_GIT_VERSION=${finalAttrs.version}
'';
meta = with lib; {
cmakeBuildDir = "build-directory";
strictDeps = true;
meta = {
homepage = "https://github.com/wangqr/Aegisub";
description = "An advanced subtitle editor";
description = "An advanced subtitle editor; wangqr's fork";
longDescription = ''
Aegisub is a free, cross-platform open source tool for creating and
modifying subtitles. Aegisub makes it quick and easy to time subtitles to
@ -155,9 +154,11 @@ stdenv.mkDerivation rec {
'';
# The Aegisub sources are itself BSD/ISC, but they are linked against GPL'd
# softwares - so the resulting program will be GPL
license = licenses.bsd3;
maintainers = with maintainers; [ AndersonTorres wegank ];
platforms = platforms.unix;
license = with lib.licenses; [
bsd3
];
mainProgram = "aegisub";
maintainers = with lib.maintainers; [ AndersonTorres wegank ];
platforms = lib.platforms.unix;
};
}
})

View file

@ -1578,6 +1578,8 @@ with pkgs;
aefs = callPackage ../tools/filesystems/aefs { };
aegisub = callPackage ../by-name/ae/aegisub/package.nix ({
boost = boost179;
luajit = luajit.override { enable52Compat = true; };
wxGTK = wxGTK32;
} // (config.aegisub or {}));