From 417d6354c8d6f895a1b39d2eb06d26ba405fdf1c Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Tue, 26 Nov 2019 08:25:12 -0500 Subject: [PATCH] next: Fix #74258 Next had a few issues with its packaging: * the platform port was exposed in all-packages And this is not useful for outside users. It's now a local attribute in the next package. * the platform port wasn't wrapped correctly It appears that the lisp core was being wrapped, when instead the actual gtk application that's called within the lisp core had to be wrapped. * codestyle/indentation --- .../browsers/next-gtk-webkit/default.nix | 25 --- .../networking/browsers/next/default.nix | 150 +++++++++--------- .../browsers/next/next-gtk-webkit.nix | 50 ++++++ pkgs/top-level/all-packages.nix | 2 - 4 files changed, 127 insertions(+), 100 deletions(-) delete mode 100644 pkgs/applications/networking/browsers/next-gtk-webkit/default.nix create mode 100644 pkgs/applications/networking/browsers/next/next-gtk-webkit.nix diff --git a/pkgs/applications/networking/browsers/next-gtk-webkit/default.nix b/pkgs/applications/networking/browsers/next-gtk-webkit/default.nix deleted file mode 100644 index 6ab533763109..000000000000 --- a/pkgs/applications/networking/browsers/next-gtk-webkit/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ stdenv, gcc7, pkg-config -, next -, webkitgtk, gsettings-desktop-schemas -}: - -stdenv.mkDerivation rec { - pname = "next-gtk-webkit"; - inherit (next) src version; - - makeFlags = [ "gtk-webkit" "PREFIX=$(out)" ]; - installTargets = "install-gtk-webkit"; - - nativeBuildInputs = [ gcc7 pkg-config ]; - buildInputs = [ - webkitgtk - gsettings-desktop-schemas - ]; - meta = with stdenv.lib; { - description = "Infinitely extensible web-browser (user interface only)"; - homepage = https://next.atlas.engineer; - license = licenses.bsd3; - maintainers = [ maintainers.lewo ]; - platforms = [ "x86_64-linux" ]; - }; -} diff --git a/pkgs/applications/networking/browsers/next/default.nix b/pkgs/applications/networking/browsers/next/default.nix index 9b537c553376..97c65fc12ef5 100644 --- a/pkgs/applications/networking/browsers/next/default.nix +++ b/pkgs/applications/networking/browsers/next/default.nix @@ -1,86 +1,90 @@ -{ pkgs, stdenv, fetchFromGitHub -, gcc7, pkg-config, makeWrapper -, glib-networking -, next-gtk-webkit +{ stdenv +, fetchFromGitHub , lispPackages , sbcl +, callPackage }: +let + + # This is the wrapped webkitgtk platform port that we hardcode into the Lisp Core. + # See https://github.com/atlas-engineer/next/tree/master/ports#next-platform-ports + next-gtk-webkit = callPackage ./next-gtk-webkit.nix {}; + +in + stdenv.mkDerivation rec { - pname = "next"; - version = "1.3.4"; + pname = "next"; + version = "1.3.4"; - src = fetchFromGitHub { - owner = "atlas-engineer"; - repo = "next"; - rev = version; - sha256 = "00iqv4xarabl98gdl1rzqkc5v0vfljx1nawsxqsx9x3a9mnxmgxi"; - }; + src = fetchFromGitHub { + owner = "atlas-engineer"; + repo = "next"; + rev = version; + sha256 = "00iqv4xarabl98gdl1rzqkc5v0vfljx1nawsxqsx9x3a9mnxmgxi"; + }; - # Stripping destroys the generated SBCL image - dontStrip = true; + nativeBuildInputs = [ + sbcl + ] ++ (with lispPackages; [ + prove-asdf + trivial-features + ]); - prePatch = '' - substituteInPlace source/ports/gtk-webkit.lisp \ - --replace "next-gtk-webkit" "${next-gtk-webkit}/bin/next-gtk-webkit" - ''; + buildInputs = with lispPackages; [ + alexandria + bordeaux-threads + cl-annot + cl-ansi-text + cl-css + cl-hooks + cl-json + cl-markup + cl-ppcre + cl-ppcre-unicode + cl-prevalence + closer-mop + dbus + dexador + ironclad + local-time + log4cl + lparallel + mk-string-metrics + parenscript + quri + sqlite + str + swank + trivia + trivial-clipboard + unix-opts + ]; - nativeBuildInputs = - [ sbcl makeWrapper ] ++ (with lispPackages; - [ prove-asdf trivial-features ]); + prePatch = '' + substituteInPlace source/ports/gtk-webkit.lisp \ + --replace "next-gtk-webkit" "${next-gtk-webkit}/bin/next-gtk-webkit" + ''; - buildInputs = with lispPackages; [ - alexandria - bordeaux-threads - cl-annot - cl-ansi-text - cl-css - cl-hooks - cl-json - cl-markup - cl-ppcre - cl-ppcre-unicode - cl-prevalence - closer-mop - dbus - dexador - ironclad - local-time - log4cl - lparallel - mk-string-metrics - parenscript - quri - sqlite - str - swank - trivia - trivial-clipboard - unix-opts - ]; - propagatedBuildInputs = [ next-gtk-webkit ]; + buildPhase = '' + common-lisp.sh --eval "(require :asdf)" \ + --eval "(asdf:load-asd (truename \"next.asd\") :name \"next\")" \ + --eval '(asdf:make :next)' \ + --quit + ''; - buildPhase = '' - common-lisp.sh --eval "(require :asdf)" \ - --eval "(asdf:load-asd (truename \"next.asd\") :name \"next\")" \ - --eval '(asdf:make :next)' \ - --quit - ''; + installPhase = '' + install -D -m0755 next $out/bin/next + ''; - installPhase = '' - install -D -m0755 next $out/bin/next - ''; + # Stripping destroys the generated SBCL image + dontStrip = true; - preFixup = '' - wrapProgram $out/bin/next \ - --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules" - ''; - - meta = with stdenv.lib; { - description = "Infinitely extensible web-browser (with Lisp development files)"; - homepage = https://next.atlas.engineer; - license = licenses.bsd3; - maintainers = [ maintainers.lewo ]; - platforms = [ "x86_64-linux" ]; - }; - } + meta = with stdenv.lib; { + description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)"; + homepage = https://next.atlas.engineer; + license = licenses.bsd3; + maintainers = [ maintainers.lewo ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix b/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix new file mode 100644 index 000000000000..a71583ffbec5 --- /dev/null +++ b/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix @@ -0,0 +1,50 @@ +# https://github.com/atlas-engineer/next/tree/master/ports/gtk-webkit + +{ stdenv +, pkg-config +, next +, webkitgtk +, gtk3 +, glib +, gsettings-desktop-schemas +, glib-networking +, gst_all_1 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "next-gtk-webkit"; + inherit (next) src version; + + nativeBuildInputs = [ + pkg-config + wrapGAppsHook + ]; + + buildInputs = [ + glib + glib-networking + gsettings-desktop-schemas + gtk3 + webkitgtk + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + ]; + + makeFlags = [ + "gtk-webkit" + "PREFIX=${placeholder "out"}" + ]; + + installTargets = [ + "install-gtk-webkit" + ]; + + meta = with stdenv.lib; { + description = "Infinitely extensible web-browser (user interface only)"; + homepage = https://next.atlas.engineer; + license = licenses.bsd3; + maintainers = [ maintainers.lewo ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4371e86690f8..440eb3f53b05 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4559,8 +4559,6 @@ in next = callPackage ../applications/networking/browsers/next { }; - next-gtk-webkit = callPackage ../applications/networking/browsers/next-gtk-webkit { }; - nfpm = callPackage ../tools/package-management/nfpm { }; nginx-config-formatter = callPackage ../tools/misc/nginx-config-formatter { };