Includes the following changes: 1. lazarus: 2.0.8 -> 2.0.10 (built with gtk2) 2. lots of cleanups 3. minor libqt5pas cleanupswip/yesman
parent
84d74ae9c9
commit
c084efb36f
@ -1,53 +1,107 @@ |
||||
{ stdenv, fetchurl, makeWrapper |
||||
{ stdenv, lib, fetchurl, makeWrapper, writeText |
||||
, fpc, gtk2, glib, pango, atk, gdk-pixbuf |
||||
, libXi, xorgproto, libX11, libXext |
||||
, gdb, gnumake, binutils |
||||
, withQt ? false, qtbase ? null, libqt5pas ? null, wrapQtAppsHook ? null |
||||
}: |
||||
|
||||
# TODO: |
||||
# 1. the build date is embedded in the binary through `$I %DATE%` - we should dump that |
||||
|
||||
let |
||||
version = "2.0.10-2"; |
||||
|
||||
# as of 2.0.10 a suffix is being added. That may or may not disappear and then |
||||
# come back, so just leave this here. |
||||
majorMinorPatch = v: |
||||
builtins.concatStringsSep "." (lib.take 3 (lib.splitVersion v)); |
||||
|
||||
overrides = writeText "revision.inc" (lib.concatStringsSep "\n" (lib.mapAttrsToList (k: v: |
||||
"const ${k} = '${v}';") { |
||||
# this is technically the SVN revision but as we don't have that replace |
||||
# it with the version instead of showing "Unknown" |
||||
RevisionStr = version; |
||||
})); |
||||
|
||||
in |
||||
stdenv.mkDerivation rec { |
||||
pname = "lazarus"; |
||||
version = "2.0.8"; |
||||
pname = "lazarus-${LCL_PLATFORM}"; |
||||
inherit version; |
||||
|
||||
src = fetchurl { |
||||
url = "mirror://sourceforge/lazarus/Lazarus%20Zip%20_%20GZip/Lazarus%20${version}/lazarus-${version}.tar.gz"; |
||||
sha256 = "1iciqydb0miqdrh89aj59gy7kfcwikkycqssq9djcqsw1ql3gc4h"; |
||||
url = "mirror://sourceforge/lazarus/Lazarus%20Zip%20_%20GZip/Lazarus%20${majorMinorPatch version}/lazarus-${version}.tar.gz"; |
||||
sha256 = "sha256-ZNViZGjdJKMzKyBfOr0KWBq33hsGCi1X4hhkBmz9Q7c="; |
||||
}; |
||||
|
||||
postPatch = '' |
||||
cp ${overrides} ide/${overrides.name} |
||||
''; |
||||
|
||||
buildInputs = [ |
||||
# we need gtk2 unconditionally as that is the default target when building applications with lazarus |
||||
fpc gtk2 glib libXi xorgproto |
||||
libX11 libXext pango atk |
||||
stdenv.cc makeWrapper gdk-pixbuf |
||||
]; |
||||
stdenv.cc gdk-pixbuf |
||||
] |
||||
++ lib.optionals withQt [ libqt5pas qtbase ]; |
||||
|
||||
nativeBuildInputs = [ |
||||
makeWrapper |
||||
] ++ lib.optional withQt wrapQtAppsHook; |
||||
|
||||
makeFlags = [ |
||||
"FPC=fpc" |
||||
"PP=fpc" |
||||
"LAZARUS_INSTALL_DIR=${placeholder "out"}/share/lazarus/" |
||||
"INSTALL_PREFIX=${placeholder "out"}/" |
||||
"REQUIRE_PACKAGES+=tachartlazaruspkg" |
||||
"bigide" |
||||
]; |
||||
|
||||
LCL_PLATFORM = if withQt then "qt5" else "gtk2"; |
||||
|
||||
NIX_LDFLAGS = lib.concatStringsSep " " ([ |
||||
"-L${stdenv.cc.cc.lib}/lib" |
||||
"-lX11" |
||||
"-lXext" |
||||
"-lXi" |
||||
"-latk-1.0" |
||||
"-lc" |
||||
"-lcairo" |
||||
"-lgcc_s" |
||||
"-lgdk-x11-2.0" |
||||
"-lgdk_pixbuf-2.0" |
||||
"-lglib-2.0" |
||||
"-lgtk-x11-2.0" |
||||
"-lpango-1.0" |
||||
] |
||||
++ lib.optionals withQt [ |
||||
"-L${lib.getLib libqt5pas}/lib" |
||||
"-lQt5Pas" |
||||
]); |
||||
|
||||
preBuild = '' |
||||
export makeFlags="$makeFlags LAZARUS_INSTALL_DIR=$out/share/lazarus/ INSTALL_PREFIX=$out/" |
||||
export NIX_LDFLAGS="$NIX_LDFLAGS -L${stdenv.cc.cc.lib}/lib -lXi -lX11 -lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lc -lXext -lpango-1.0 -latk-1.0 -lgdk_pixbuf-2.0 -lcairo -lgcc_s" |
||||
export LCL_PLATFORM=gtk2 |
||||
mkdir -p $out/share "$out/lazarus" |
||||
tar xf ${fpc.src} --strip-components=1 -C $out/share -m |
||||
sed -e 's@/usr/fpcsrc@'"$out/share/fpcsrc@" -i ide/include/unix/lazbaseconf.inc |
||||
substituteInPlace ide/include/unix/lazbaseconf.inc \ |
||||
--replace '/usr/fpcsrc' "$out/share/fpcsrc" |
||||
''; |
||||
|
||||
postInstall = '' |
||||
wrapProgram $out/bin/startlazarus --prefix NIX_LDFLAGS ' ' \ |
||||
"$(echo "$NIX_LDFLAGS" | sed -re 's/-rpath [^ ]+//g')" \ |
||||
--prefix NIX_LDFLAGS_${binutils.suffixSalt} ' ' \ |
||||
"$(echo "$NIX_LDFLAGS" | sed -re 's/-rpath [^ ]+//g')" \ |
||||
postInstall = let |
||||
ldFlags = ''$(echo "$NIX_LDFLAGS" | sed -re 's/-rpath [^ ]+//g')''; |
||||
in '' |
||||
wrapProgram $out/bin/startlazarus \ |
||||
--prefix NIX_LDFLAGS ' ' "${ldFlags}" \ |
||||
--prefix NIX_LDFLAGS_${binutils.suffixSalt} ' ' "${ldFlags}" \ |
||||
--prefix LCL_PLATFORM ' ' "$LCL_PLATFORM" \ |
||||
--prefix PATH ':' "${fpc}/bin:${gdb}/bin:${gnumake}/bin:${binutils}/bin" |
||||
--prefix PATH ':' "${lib.makeBinPath [ fpc gdb gnumake binutils ]}" |
||||
''; |
||||
|
||||
meta = with stdenv.lib; { |
||||
description = "Lazarus graphical IDE for FreePascal language"; |
||||
homepage = "http://www.lazarus.freepascal.org"; |
||||
description = "Lazarus graphical IDE for the FreePascal language"; |
||||
homepage = "https://www.lazarus.freepascal.org"; |
||||
license = licenses.gpl2Plus ; |
||||
maintainers = with maintainers; [ raskin ]; |
||||
platforms = platforms.linux; |
||||
maintainers = [ maintainers.raskin ]; |
||||
}; |
||||
} |
||||
|
Loading…
Reference in new issue