From: ng0@n0.is
To: swedebugia <swedebugia@riseup.net>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Help needed with newmoon
Date: Thu, 7 Mar 2019 07:07:15 +0000 [thread overview]
Message-ID: <20190307070715.s2rbkxocbkkiexfv@uptimegirl> (raw)
In-Reply-To: <7a6ed6cd-ec48-0023-d637-8ca9c7e410f6@riseup.net>
swedebugia transcribed 63K bytes:
> Hi
>
> My pet project for today was working on getting newmoon to build. I
> failed :/
>
> I got the definition from ng0 and have improved a few things and updated
> it to the newest version.
>
> I investigated the 3 errors below:
> 1. sqlite3 needs to be compiled with SQLITE_ENABLE_FTS3 (this results in
> a lot of builds, patch attached)
> 2. our libvpx does not provide vpx_mem/vpx_mem.h even though it is in
> the source of libvpx it is not installed it seems.
> 3. the pulseaudio-error I do not understand: <built-in>: fatal error:
> when writing output to : Broken pipe ??
Oops. Sorry, I should have appended this. I had taken my sqlite3
variants for granted :/
> Here are the errors with context:
>
> 0:19.11 checking for vpx >= 1.5.0... yes
> 0:19.11 checking MOZ_LIBVPX_CFLAGS...
> 0:19.11 checking MOZ_LIBVPX_LIBS...
> -L/gnu/store/7s6z2ybw86k7r97cwzrix9hngs729lrk-libvpx-1.8.0/lib -lvpx -lm
> 0:19.17 checking for vpx/vpx_decoder.h... yes
> 0:19.38 checking for vpx_codec_dec_init_ver in -lvpx... yes
> 0:19.42 checking for vpx_mem/vpx_mem.h... no
> 0:19.44 checking for libpulse... yes
> 0:19.45 checking MOZ_PULSEAUDIO_CFLAGS... -D_REENTRANT
> 0:19.45 checking MOZ_PULSEAUDIO_LIBS...
> -L/gnu/store/hd3x89yknm4k6k4gw16jy5xk7idq1sxf-pulseaudio-12.2/lib -lpulse
> 0:19.47 <built-in>: fatal error: when writing output to : Broken pipe
> 0:19.47 compilation terminated.
> 0:19.48 /tmp/guix-build-newmoon-28.4.0.drv-0/source/old-configure: line
> 14935: test: : integer expression expected
> 0:19.50 checking for wget... no
> 0:19.52 checking for sqlite3 >= 3.26.0... yes
> 0:19.52 checking SQLITE_CFLAGS...
> 0:19.52 checking SQLITE_LIBS...
> -L/gnu/store/kg104rhqzvmnpqxk91ayvwxzsrncr0f4-sqlite-3.26.0/lib -lsqlite3
> 0:19.67 checking for SQLITE_SECURE_DELETE support in system SQLite... yes
> 0:19.78 checking for SQLITE_THREADSAFE support in system SQLite... yes
> 0:19.90 checking for SQLITE_ENABLE_FTS3 support in system SQLite... no
> 0:19.90 configure: error: System SQLite library is not compiled with
> SQLITE_ENABLE_FTS3.
> 0:19.93 DEBUG: <truncated - see config.log for full output>
> 0:19.94 DEBUG: configure:15039: checking for wget
> 0:19.94 DEBUG: configure:15362: checking for sqlite3 >= 3.26.0
> 0:19.94 DEBUG: configure:15369: checking SQLITE_CFLAGS
> 0:19.94 DEBUG: configure:15374: checking SQLITE_LIBS
> 0:19.94 DEBUG: configure:15405: checking for SQLITE_SECURE_DELETE
> support in system SQLite
> 0:19.94 DEBUG: configure:15428:
> /gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/bin/gcc -std=gnu99
> -o conftest -fno-strict-aliasing -fno-math-errno -msse2 -mfpmath=sse
> -pthread -lpthread -Wl,-z,noexecstack -Wl,-z,text -Wl,--build-id
> conftest.c -ldl
> -L/gnu/store/kg104rhqzvmnpqxk91ayvwxzsrncr0f4-sqlite-3.26.0/lib
> -lsqlite3 1>&5
> 0:19.94 DEBUG: configure:15451: checking for SQLITE_THREADSAFE support
> in system SQLite
> 0:19.94 DEBUG: configure:15474:
> /gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/bin/gcc -std=gnu99
> -o conftest -fno-strict-aliasing -fno-math-errno -msse2 -mfpmath=sse
> -pthread -lpthread -Wl,-z,noexecstack -Wl,-z,text -Wl,--build-id
> conftest.c -ldl
> -L/gnu/store/kg104rhqzvmnpqxk91ayvwxzsrncr0f4-sqlite-3.26.0/lib
> -lsqlite3 1>&5
> 0:19.94 DEBUG: configure:15497: checking for SQLITE_ENABLE_FTS3 support
> in system SQLite
> 0:19.94 DEBUG: configure:15520:
> /gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/bin/gcc -std=gnu99
> -o conftest -fno-strict-aliasing -fno-math-errno -msse2 -mfpmath=sse
> -pthread -lpthread -Wl,-z,noexecstack -Wl,-z,text -Wl,--build-id
> conftest.c -ldl
> -L/gnu/store/kg104rhqzvmnpqxk91ayvwxzsrncr0f4-sqlite-3.26.0/lib
> -lsqlite3 1>&5
> 0:19.94 DEBUG: configure: failed program was:
> 0:19.94 DEBUG: #line 15511 "configure"
> 0:19.94 DEBUG: #include "confdefs.h"
> 0:19.94 DEBUG:
> 0:19.94 DEBUG: #include "sqlite3.h"
> 0:19.94 DEBUG:
> 0:19.94 DEBUG: int main(int argc, char **argv){
> 0:19.94 DEBUG: return
> !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
> 0:19.94 DEBUG: }
> 0:19.94 DEBUG: configure: error: System SQLite library is not compiled
> with SQLITE_ENABLE_FTS3.
> 0:19.94 ERROR: old-configure failed
> 0:19.98 *** Fix above errors and then restart with\
> 0:19.98
> "/gnu/store/7j3941iannrngdvgbclyxid12vds5w9i-make-4.2.1/bin/make -f
> client.mk build"
> 0:19.98 make[1]: *** [client.mk:378: configure] Error 1
> make: *** [GNUmakefile:9: build] Error 2
>
>
> --
> Cheers Swedebugia
> From 89c0629198b10264c07de88f2f678af5292d4fbf Mon Sep 17 00:00:00 2001
> From: swedebugia <swedebugia@riseup.net>
> Date: Sat, 23 Feb 2019 05:34:45 +0100
> Subject: [PATCH 1/2] WIP gnu: Add New Moon.
>
> ---
> gnu/packages/web-browsers.scm | 400 +++++++++++++++++++++++++++++++++-
> 1 file changed, 395 insertions(+), 5 deletions(-)
>
> diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
> index a19a0dc7c..105fe2839 100644
> --- a/gnu/packages/web-browsers.scm
> +++ b/gnu/packages/web-browsers.scm
> @@ -4,10 +4,12 @@
> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
> ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
> +;;; Copyright © 2017, 2018 Nils Gillmann <ng0@ng0.is>
> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
> ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
> ;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
> +;;; Copyright © 2019 Pierre Neidhardt <swedebugia@riseup.net>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -28,30 +30,52 @@
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (guix packages)
> #:use-module (gnu packages)
> + #:use-module (gnu packages admin)
> + #:use-module (gnu packages assembly)
> + #:use-module (gnu packages autotools)
> + #:use-module (gnu packages base)
> + #:use-module (gnu packages bash)
> #:use-module (gnu packages compression)
> + #:use-module (gnu packages cups)
> + #:use-module (gnu packages databases)
> #:use-module (gnu packages documentation)
> #:use-module (gnu packages fltk)
> #:use-module (gnu packages fontutils)
> - #:use-module (gnu packages gtk)
> + #:use-module (gnu packages gcc)
> + #:use-module (gnu packages gl)
> + #:use-module (gnu packages glib)
> + #:use-module (gnu packages gnome)
> #:use-module (gnu packages gnupg)
> + #:use-module (gnu packages gnuzilla)
> + #:use-module (gnu packages gstreamer)
> + #:use-module (gnu packages gtk)
> + #:use-module (gnu packages icu4c)
> + #:use-module (gnu packages image)
> + #:use-module (gnu packages kerberos)
> + #:use-module (gnu packages libcanberra)
> #:use-module (gnu packages libevent)
> + #:use-module (gnu packages libffi)
> #:use-module (gnu packages libidn)
> + #:use-module (gnu packages libreoffice)
> + #:use-module (gnu packages linux)
> #:use-module (gnu packages lisp)
> #:use-module (gnu packages lua)
> - #:use-module (gnu packages gnome)
> + #:use-module (gnu packages m4)
> #:use-module (gnu packages ncurses)
> #:use-module (gnu packages perl)
> #:use-module (gnu packages pkg-config)
> + #:use-module (gnu packages pulseaudio)
> #:use-module (gnu packages python)
> - #:use-module (gnu packages python-web)
> +; #:use-module (gnu packages python-web)
> #:use-module (gnu packages python-xyz)
> #:use-module (gnu packages qt)
> - #:use-module (gnu packages image)
> + #:use-module (gnu packages shells)
> #:use-module (gnu packages sqlite)
> #:use-module (gnu packages tls)
> + #:use-module (gnu packages video)
> #:use-module (gnu packages webkit)
> + #:use-module (gnu packages xdisorg)
> #:use-module (gnu packages xorg)
> - #:use-module (gnu packages gcc)
> #:use-module (guix download)
> #:use-module (guix git-download)
> #:use-module (guix build-system gnu)
> @@ -473,3 +497,369 @@ features for productive professionals.")
> ("unix-opts" ,sbcl-unix-opts)
> ("trivial-clipboard" ,sbcl-trivial-clipboard)))
> (synopsis "Infinitely extensible web-browser (with Lisp development files)")))
> +
> +(define-public newmoon
> + (package
> + (name "newmoon")
> + (version "28.4.0")
> + (source
> + (origin
> + ;; Only generated github tarball available.
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/MoonchildProductions/UXP")
> + (commit (string-append "PM" version "_Release"))))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32
> + "0wnn15y7qpmz1b31rrmdlf3w4qz6f6qqrl8f1lgafx8czqgg9lwx"))))
> + (build-system gnu-build-system)
> + (inputs
> + `(
> + ;; ("gst-plugins-base" ,gst-plugins-base)
> + ;; ("gstreamer" ,gstreamer)
> + ;; ("mozjs" ,mozjs)
> + ;; ("nss" ,nss)
> + ;; ("openssl" ,openssl)
> + ("alsa-lib" ,alsa-lib)
> + ("bzip2" ,bzip2)
> + ("cairo" ,cairo)
> + ("cups" ,cups)
> + ("dbus" ,dbus)
> + ("dbus-glib" ,dbus-glib)
> + ("ffmpeg" ,ffmpeg)
> + ("freetype" ,freetype)
> + ("glib" ,glib)
> + ("gobject-introspection" ,gobject-introspection)
> + ("gtk+-2" ,gtk+-2)
> + ("hunspell" ,hunspell)
> + ("inetutils" ,inetutils) ; Native-input?
> + ("libcanberra" ,libcanberra)
> + ("libevent" ,libevent)
> + ("libffi" ,libffi)
> + ("libgnome" ,libgnome)
> + ("libidl" ,libidl)
> + ("libjpeg-turbo" ,libjpeg-turbo)
> + ("libnotify" ,libnotify)
> + ("libpng-apng" ,libpng-apng)
> + ("libvpx" ,libvpx)
> + ("libwebp" ,libwebp)
> + ("libx11" ,libx11)
> + ("libxcomposite" ,libxcomposite)
> + ("libxext" ,libxext)
> + ("libxft" ,libxft)
> + ("libxi" ,libxi)
> + ("libxrender" ,libxrender)
> + ("libxscrnsaver" ,libxscrnsaver)
> + ("libxt" ,libxt)
> + ("libxt" ,libxt)
> + ("mesa" ,mesa)
> + ("mit-krb5" ,mit-krb5)
> + ("nspr" ,nspr)
> + ("pixman" ,pixman)
> + ("pulseaudio" ,pulseaudio)
> + ("python-2" ,python-2)
> + ("python-ply" ,python-ply)
> + ("sqlite" ,sqlite-3.26.0)
> + ("startup-notification" ,startup-notification)
> + ("tcsh" ,tcsh)
> + ("unzip" ,unzip)
> + ("xextproto" ,xextproto)
> + ("yasm" ,yasm)
> + ("zip" ,zip)))
> + (native-inputs
> + `(("autoconf-2.13" ,autoconf-2.13)
> + ("fontconfig" ,fontconfig)
> + ("perl" ,perl)
> + ("pkg-config" ,pkg-config)
> + ("m4" ,m4)
> + ("which" ,which)
> + ("bash" ,bash)))
> + (arguments
> + `(#:modules ((ice-9 ftw)
> + (ice-9 rdelim)
> + (ice-9 match)
> + ,@%gnu-build-system-modules)
> + ;; #:validate-runpath? #f
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'configure
> + ;; According to <https://forum.palemoon.org/viewtopic.php?f=19&t=4166>
> + ;; the only way to set configure options is in the .mozconfig file
> + ;; (or the file set by variable MOZCONFIG). If you try to use
> + ;; our configure-flags, the configuration will break in unexpected
> + ;; ways. This includes breaking the mach build system detection
> + ;; of --host, --build, and --arch, and carrying flags recursively
> + ;; on to parts used later in the build system.
> + ;; The palemoon.org link describes an MS Windows build, but at
> + ;; least for Gentoo it is done comparable:
> + ;; <https://data.gpo.zugaina.org/palemoon/>.
> + (lambda* (#:key outputs configure-flags #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (bash (which "bash"))
> + (abs-srcdir (getcwd))
> + (srcdir (string-append "../" (basename abs-srcdir)))
> + (flags `(,(string-append "--prefix=" out)
> + ,@configure-flags))
> + (mozconfig (string-append (getcwd) "/.mozconfig")))
> + (setenv "SHELL" bash)
> + (setenv "AUTOCONF"
> + (string-append (assoc-ref %build-inputs
> + "autoconf-2.13")
> + "/bin/autoconf"))
> + (setenv "BUILD_OBJ_DIR" (string-append (getcwd) "/o"))
> + (setenv "CONFIG_SHELL" bash)
> + (setenv "QA_CONFIGURE_OPTIONS" ".*")
> + (setenv "MOZBUILD_STATE_PATH"
> + (string-append (getcwd) "/mach_state"))
> + (setenv "MOZCONFIG"
> + (string-append (getcwd) "/.mozconfig"))
> + (setenv "MOZ_NOSPAM" "1")
> + (mkdir-p (string-append (getcwd) "/builddir"))
> + (with-output-to-file mozconfig
> + (lambda ()
> + ;; These procedures help us create the .mozbuild-file
> + (define (enable option)
> + (string-append "ac_add_options --enable-" option "\n"))
> + (define (disable option)
> + (string-append "ac_add_options --disable-" option "\n"))
> + (define (var env)
> + (string-append "mk_add_options " env "\n"))
> + (define (with option)
> + (string-append "ac_add_options --with-" option "\n"))
> + ;; The full list of options can be obtained by running:
> + ;; $ ./configure --help
> + (display
> + (string-append
> + ;; Todo: dbus, safe-browsing,
> + (enable "application=palemoon")
> + (enable "chrome-format=omni")
> + (enable "content-sandbox")
> + (enable "default-toolkit=\"cairo-gtk2\"")
> + (enable "devtools")
> + (enable "export-js")
> + (enable "ffmpeg")
> + (enable "jemalloc")
> + (enable "pulseaudio")
> + (enable "sandbox")
> + (enable "skia")
> + (enable "startup-notification")
> + (enable "strip")
> + (enable "system-cairo")
> + (enable "system-ffi")
> + (enable "system-hunspell")
> + (enable "system-pixman")
> + (enable "system-sqlite") ;Needs >= sqlite-3.26.0
> +
> + (disable "accessibility") ;There is no such option?
> + (disable "alsa")
> + ;;(disable "codesighs")
> + (disable "debug-symbols")
> + (disable "debug")
> + (disable "gamepad")
> + (disable "install-strip")
> + (disable "necko-wifi")
> + (disable "official-branding") ; Trademarks apply for official branding
> + (disable "optimize")
> + (disable "parental-controls") ;Yes? No?
> + (disable "tests") ; TODO fix tests
> + (disable "updater")
> + (disable "valgrind")
> +
> + (with "pthreads")
> + (with "system-bz2")
> + (with "system-icu")
> + (with "system-jpeg")
> + (with "system-libevent")
> + (with "system-libvpx")
> + (with "system-nspr")
> + (with "system-png")
> + (with "system-zlib")
> +
> + (var "AUTOCONF=\"autoconf\"")
> + (var (string-append "MOZ_OBJDIR=" (getenv "BUILD_OBJ_DIR"))) ;new
> + (var "PYTHON=\"python2\"")
> + "ac_add_options --prefix=" out "\n"
> +
> + ;;"ac_add_options --disable-installer\n" ; no such option.
> + ;;"ac_add_options --disable-logging\n"
> + ;;"ac_add_options --disable-websms-backend\n"
> + ;;"ac_add_options --with-intl-api\n"
> + ;;"ac_add_options --with-system-ply\n"
> + ;;"ac_add_options --with-system-webp\n"
> + ))))
> + (display "mach configure, this is expected to \"crash\"\n")
> + (zero? (system* "./mach" "configure"))
> + (display "mach, and another round.\n")
> + (zero? (system* "./mach")))
> + #t))
> + (add-after 'patch-source-shebangs 'setenvs
> + (lambda _
> + (substitute* (list "build/autoconf/config.guess"
> + "client.mk"
> + "js/src/configure.in"
> + "intl/icu/source/configure")
> + (("/bin/sh") (which "sh")))
> + #t))
> + (add-before 'build 'patch-clientmk
> + (lambda _
> + (substitute* "client.mk"
> + (("/bin/sh") (which "sh")))
> + #t))
> + (replace 'build
> + (lambda _
> + (chdir "build")
> + (display "mach build, the real build now\n")
> + (system* "../mach" "build")
> + #t))
> + (add-after
> + 'unpack 'arrange-to-link-libxul-with-libraries-it-might-dlopen
> + (lambda _
> + ;; libxul.so dynamically opens libraries, so here we explicitly
> + ;; link them into libxul.so instead.
> + ;;
> + ;; TODO: It might be preferable to patch in absolute file names in
> + ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
> + ;; work. More investigation is needed.
> + (substitute* "toolkit/library/moz.build"
> + (("^# This needs to be last")
> + "OS_LIBS += [
> + 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
> + 'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0', 'png' ]\n\n"))
> + #t))
> + (add-after 'unpack 'privacy-patch-branding
> + (lambda _
> + (substitute* "application/palemoon/branding/unofficial/pref/palemoon-branding.js"
> + (("http://www.palemoon.org/unofficial.shtml")
> + "https://gnu.org/s/guix"))
> + (substitute* "application/palemoon/branding/shared/pref/preferences.inc"
> + (("http://www.palemoon.org/firstrun.shtml")
> + "https://gnu.org"))
> + (substitute* "application/palemoon/branding/shared/locales/browserconfig.properties"
> + (("http://start.palemoon.org/")
> + "https://gnu.org/s/guix"))
> + #t))
> + (replace 'install
> + (lambda* (#:key name outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (bin (string-append out "/bin"))
> + (lib (string-append out "/lib"))
> + (palemoon (string-append
> + out "/lib/palemoon/palemoon"))
> + ;; Use one objectdirectory for all architectures.
> + (objdir "o")
> + ;; (prefsfile (string-append objdir "/dist/bin/browser"
> + ;; "/defaults/profile"
> + ;; "/prefs.js"))
> + (tarfile (string-append objdir "/dist/palemoon-"
> + ,version ".linux-x86_64"
> + ".tar.bz2")))
> + ;; We skip this for now.
> + ;; (substitute* prefsfile
> + ;; (("# Mozilla User Preferences")
> + ;; "# Mozilla User Preferences\n
> + ;; pref(\"app.update.enabled\", false);\n
> + ;; pref(\"browser.backspace_action\", 0);\n
> + ;; pref(\"browser.ctrlTab.previews\", false);\n
> + ;; pref(\"intl.locale.matchOS\", true);\n
> + ;; pref(\"general.useragent.locale\", \"chrome://global/locale/intl.properties\");\n
> + ;; pref(\"browser.display.use_system_colors\", true);"))
> + ;; Create the package, unpack it, manually install
> + ;; the files from there to not miss anything.
> + (zero? (system* "../mach" "package"))
> + (display (getcwd))
> + (chdir (string-append "../" objdir "/dist"))
> + (zero? (system* "tar" "xjpf"
> + "palemoon-" ,version ".linux-x86_64.tar.bz2"))
> + (mkdir-p (string-append out "/lib/palemoon"))
> + (copy-recursively "palemoon"
> + (string-append out "/lib/palemoon"))
> + (mkdir-p bin)
> + (symlink (string-append out "/lib/palemoon/palemoon")
> + (string-append bin "/newmoon"))
> + ;; Avoid duplicate binaries.
> + ;; https://bugzilla.mozilla.org/show_bug.cgi?id=658850 for
> + (delete-file (string-append out "/lib/palemoon/palemoon-bin")))))
> + ;; swap check and install phases and set paths to installed binaries
> + (add-before 'check 'set-path-for-check
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
> + #t))
> + (add-after 'install 'check
> + ;;(assoc-ref %standard-phases 'check))
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (bin (string-append out "/bin/newmoon")))
> + (invoke bin "--version"))))
> + (delete 'check)
> + (delete 'bootstrap)
> + ;; (replace 'check
> + ;; (lambda* (#:key outputs #:allow-other-keys)
> + ;; (let* ((out (assoc-ref outputs "out"))
> + ;; (bin (string-append out "/bin/newmoon")))
> + ;; (invoke bin "--version"))))
> + (add-after 'install 'install-icons
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out")))
> + (display (getcwd))
> + (with-directory-excursion "../../browser/branding/unofficial"
> + (for-each
> + (lambda (file)
> + (let* ((size (string-filter char-numeric? file))
> + (icons (string-append out "/share/icons/hicolor/"
> + size "x" size "/apps")))
> + (mkdir-p icons)
> + (copy-file file (string-append icons "/newmoon.png"))))
> + '("default16.png" "default32.png" "default48.png"
> + "mozicon128.png"))))))
> + (add-after 'install 'install-desktop-file
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (apps (string-append out "/share/applications")))
> + (display (getcwd))
> + (with-directory-excursion "../../browser/branding/official"
> + (substitute* "palemoon.desktop"
> + (("Pale Moon")
> + "New Moon")
> + (("Exec=palemoon -new-tab https://start.palemoon.org")
> + "Exec=newmoon -new-tab https://gnu.org/s/guix")
> + (("Exec=palemoon -new-window")
> + "Exec=newmoon -new-window")
> + (("Exec=palemoon -private-window")
> + "Exec=newmoon -private-window")
> + (("palemoon")
> + "newmoon"))
> + (install-file "palemoon.desktop"
> + (string-append apps
> + "/newmoon.desktop")))))))))
> +
> + (home-page "https://www.palemoon.org/")
> + (synopsis "Web Browser compiled from Pale Moon sources")
> + (description
> + "New Moon is a web browser compiled from Pale Moon sourcecode. New Moon
> +is an independent browser derived from Firefox.
> +
> +Among its features are:
> +@itemize
> +@item It's fast (much codebloat has been removed since the fork from Firefox).
> +@item The developers adhere to defence-in-depth, increasing the security
> +step-by-step.
> +@item Builds upon the Unified XUL Platform
> +@item Comes with the Goanna layout engine (forked from Gecko).
> +@item Uses the pre-Australis Firefox user interface Continues add-on support
> +for XUL, XPCOM, and NPAPI plugins.
> +@item Supports extensions and themes exclusive to Pale Moon, such as Adblock
> +Latitude.
> +@item Defaults to DuckDuckGo as the search engine.
> +@item Uses the IP-API service instead of Google's for geolocation.
> +@item Fully customizable user interface.
> +@item Newmoon is not a full featured (bloated) media player or recorder but
> +does support the HTML5 video standard.
> +@end itemize\n")
> + (properties '((upstream-name . "Pale-Moon")))
> + ;; The exception clause of the Palemoon license states that
> + ;; New Moon builds can be redistributed freely.
> + (license (list license:mpl2.0 ;and others, see toolkit/content/license.html
> + license:gpl2+
> + license:lgpl2.1))))
> --
> 2.19.2
>
> From 9296960b3d24e0ae00894ba8c7547b7c3cb77ad1 Mon Sep 17 00:00:00 2001
> From: swedebugia <swedebugia@riseup.net>
> Date: Wed, 6 Mar 2019 20:56:27 +0100
> Subject: [PATCH 2/2] gnu: sqlite: Add build flag: SQLITE_ENABLE_FTS3
>
> * gnu/packages/sqlite.scm (sqlite)[arguments]: Add it.
> ---
> gnu/packages/sqlite.scm | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
> index 05d7ce6b9..7bacbfe2e 100644
> --- a/gnu/packages/sqlite.scm
> +++ b/gnu/packages/sqlite.scm
> @@ -73,7 +73,8 @@
> ;; to use the system SQLite unless these options are enabled.
> (list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
> "-DSQLITE_ENABLE_UNLOCK_NOTIFY "
> - "-DSQLITE_ENABLE_DBSTAT_VTAB"))))
> + "-DSQLITE_ENABLE_DBSTAT_VTAB "
> + "-DSQLITE_ENABLE_FTS3")))) ; Needed for newmoon
> (home-page "https://www.sqlite.org/")
> (synopsis "The SQLite database management system")
> (description
> --
> 2.19.2
>
> ;;; ports - package definitions for infotropique OS/core
> ;;; Copyright (C) 2017, 2018 Nils Gillmann <gillmann@infotropique.org>
> ;;;
> ;;; This program is free software: you can redistribute it and/or modify
> ;;; it under the terms of the GNU General Public License as
> ;;; published by the Free Software Foundation, either version 3 of the
> ;;; License, or (at your option) any later version.
> ;;;
> ;;; This program is distributed in the hope that it will be useful,
> ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
> ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> ;;; GNU General Public License for more details.
> ;;;
> ;;; You should have received a copy of the GNU General Public License
> ;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
>
> ;; Part of this module were originally based on the gnu/packages/gnuzilla.scm file
> ;; from GNU Guix which is covered by the GPL3 license. Consult the file for the
> ;; list of contributors.
>
> (define-module (ports www palemoon palemoon)
> #:use-module ((srfi srfi-1) #:hide (zip))
> #:use-module (gnu packages)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (guix packages)
> #:use-module (guix download)
> #:use-module (guix build-system gnu)
> #:use-module (gnu packages autotools)
> #:use-module (gnu packages admin)
> #:use-module (gnu packages base)
> #:use-module (gnu packages databases)
> #:use-module (gnu packages glib)
> #:use-module (gnu packages gstreamer)
> #:use-module (gnu packages gtk)
> #:use-module (gnu packages gnome)
> #:use-module (gnu packages gnuzilla)
> #:use-module (gnu packages libcanberra)
> #:use-module (gnu packages cups)
> #:use-module (gnu packages kerberos)
> #:use-module (gnu packages m4)
> #:use-module (gnu packages linux)
> #:use-module (gnu packages perl)
> #:use-module (gnu packages pkg-config)
> #:use-module (gnu packages compression)
> #:use-module (gnu packages fontutils)
> #:use-module (gnu packages libevent)
> #:use-module (gnu packages libreoffice) ;for hunspell
> #:use-module (gnu packages image)
> #:use-module (gnu packages libffi)
> #:use-module (gnu packages pulseaudio)
> #:use-module (gnu packages python)
> #:use-module (gnu packages shells)
> #:use-module (gnu packages tls)
> #:use-module (gnu packages xorg)
> #:use-module (gnu packages gl)
> #:use-module (gnu packages assembly)
> #:use-module (gnu packages icu4c)
> #:use-module (gnu packages video)
> #:use-module (gnu packages xdisorg)
> #:use-module (gnu packages xorg)
> #:use-module (gnu packages bash))
>
> (define-public newmoon
> (package
> (name "newmoon")
> (version "28.0.1")
> (source
> (origin
> (method url-fetch)
> (uri (string-append "https://github.com/MoonchildProductions/"
> "UXP/archive/" version "_Release.tar.gz"))
> ;; https://github.com/MoonchildProductions/UXP/archive/PM28.0.1_Release.tar.gz
> (file-name (string-append name "-" version ".tar.gz"))
> (sha256
> (base32
> "0xfkbxa8618zb379m3aaycmbz0lj1s5f2mlwgykp8d5qyvd35bdj"))))
> (build-system gnu-build-system)
> (inputs
> `(("alsa-lib" ,alsa-lib)
> ("mit-krb5" ,mit-krb5)
> ("bzip2" ,bzip2)
> ("cairo" ,cairo)
> ("cups" ,cups)
> ("libgnome" ,libgnome)
> ("libcanberra" ,libcanberra)
> ("dbus-glib" ,dbus-glib)
> ("dbus" ,dbus)
> ("glib" ,glib)
> ("gstreamer" ,gstreamer)
> ("gst-plugins-base" ,gst-plugins-base)
> ("gtk+-2" ,gtk+-2)
> ("gobject-introspection" ,gobject-introspection)
> ("freetype" ,freetype)
> ("hunspell" ,hunspell)
> ("libxt" ,libxt)
> ("libffi" ,libffi)
> ("libvpx" ,libvpx)
> ("libxt" ,libxt)
> ("libxcomposite" ,libxcomposite)
> ("libidl" ,libidl)
> ("libwebp" ,libwebp)
> ("libpng-apng" ,libpng-apng)
> ("libjpeg-turbo" ,libjpeg-turbo)
> ("libxscrnsaver" ,libxscrnsaver)
> ("libx11" ,libx11)
> ("libxext" ,libxext)
> ("libxft" ,libxft)
> ("libxi" ,libxi)
> ("libxrender" ,libxrender)
> ("xextproto" ,xextproto)
> ("libevent" ,libevent)
> ("libnotify" ,libnotify)
> ("mesa" ,mesa)
> ;; ("mozjs" ,mozjs)
> ("nspr" ,nspr)
> ;; ("nss" ,nss)
> ;; ("openssl" ,openssl)
> ("python-2" ,python-2)
> ("python-ply" ,python-ply)
> ("pixman" ,pixman)
> ("pulseaudio" ,pulseaudio)
> ("startup-notification" ,startup-notification)
> ("sqlite" ,sqlite)
> ("tcsh" ,tcsh)
> ("unzip" ,unzip)
> ("yasm" ,yasm)
> ("zip" ,zip)
> ("zlib" ,zlib)
> ("inetutils" ,inetutils))) ; Native-input?
> (native-inputs
> `(("autoconf-2.13" ,autoconf-2.13)
> ("fontconfig" ,fontconfig)
> ("perl" ,perl)
> ("pkg-config" ,pkg-config)
> ("m4" ,m4)
> ("which" ,which)
> ("bash" ,bash)))
> (arguments
> `(#:modules ((ice-9 ftw)
> (ice-9 rdelim)
> (ice-9 match)
> ,@%gnu-build-system-modules)
> ;; #:validate-runpath? #f
> #:phases
> (modify-phases %standard-phases
> (replace 'configure
> ;; According to <https://forum.palemoon.org/viewtopic.php?f=19&t=4166>
> ;; the only way to set configure options is in the .mozconfig file
> ;; (or the file set by variable MOZCONFIG). If you try to use
> ;; our configure-flags, the configuration will break in unexpected
> ;; ways. This includes breaking the mach build system detection
> ;; of --host, --build, and --arch, and carrying flags recursively
> ;; on to parts used later in the build system.
> ;; The palemoon.org link describes an MS Windows build, but at
> ;; least for Gentoo it is done comparable:
> ;; <https://data.gpo.zugaina.org/palemoon/>.
> (lambda* (#:key outputs configure-flags #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bash (which "bash"))
> (abs-srcdir (getcwd))
> (srcdir (string-append "../" (basename abs-srcdir)))
> (flags `(,(string-append "--prefix=" out)
> ,@configure-flags))
> (mozconfig (string-append (getcwd) "/.mozconfig")))
> (setenv "SHELL" bash)
> (setenv "AUTOCONF"
> (string-append (assoc-ref %build-inputs
> "autoconf-2.13")
> "/bin/autoconf"))
> (setenv "BUILD_OBJ_DIR" (string-append (getcwd) "/o"))
> (setenv "CONFIG_SHELL" bash)
> (setenv "QA_CONFIGURE_OPTIONS" ".*")
> (setenv "MOZBUILD_STATE_PATH"
> (string-append (getcwd) "/mach_state"))
> (setenv "MOZCONFIG"
> (string-append (getcwd) "/.mozconfig"))
> (setenv "MOZ_NOSPAM" "1")
> (mkdir-p (string-append (getcwd) "/builddir"))
> (with-output-to-file mozconfig
> (lambda ()
> (display
> (string-append
> "ac_add_options --enable-application=browser\n"
> "mk_add_options MOZ_OBJDIR=" (getenv "BUILD_OBJ_DIR") "\n" ;new
> "ac_add_options --prefix=" out "\n"
> "ac_add_options --disable-debug\n"
> "ac_add_options --disable-debug-symbols\n"
> "ac_add_options --disable-accessibility\n" ;There is no such option?
> "ac_add_options --disable-updater\n"
> "ac_add_options --disable-installer\n"
> "ac_add_options --disable-parental-controls\n" ;Yes? No?
> "ac_add_options --disable-install-strip"
> "ac_add_options --disable-tests\n"
> "ac_add_options --with-system-ply\n"
> "ac_add_options --with-system-libevent\n"
> "ac_add_options --with-system-zlib\n"
> "ac_add_options --with-system-bz2\n"
> "ac_add_options --with-system-webp\n"
> "ac_add_options --with-system-libvpx\n"
> "ac_add_options --enable-system-hunspell\n"
> "ac_add_options --enable-system-ffi\n"
> "ac_add_options --enable-system-sqlite\n" ;Needs >= sqlite-3.21.0
> "ac_add_options --enable-system-cairo\n"
> "ac_add_options --enable-system-pixman\n"
> "ac_add_options --enable-shared-js\n"
> "ac_add_options --disable-valgrind\n"
> "ac_add_options --with-pthreads\n"
> "ac_add_options --disable-optimize\n"
> "ac_add_options --enable-gstreamer\n"
> "ac_add_options --enable-default-toolkit=\"cairo-gtk2\"\n"
> "ac_add_options --disable-alsa\n"
> "ac_add_options --enable-strip\n"
> "ac_add_options --disable-codesighs\n"
> "ac_add_options --disable-gamepad\n"
> "ac_add_options --disable-logging\n"
> "ac_add_options --disable-websms-backend\n"
> "ac_add_options --enable-chrome-format=omni\n"
> "ac_add_options --enable-startup-notification\n"
> "ac_add_options --enable-shared-js\n"
> "ac_add_options --enable-devtools\n"
> ;; XXX!
> "ac_add_options --with-system-png\n"
> "ac_add_options --enable-pulseaudio\n"
> "ac_add_options --disable-necko-wifi\n"
> "ac_add_options --with-system-jpeg\n"
> "ac_add_options --disable-official-branding\n" ; Trademarks apply for official branding
> "mk_add_options PYTHON=\"python2\"\n"
> "mk_add_options AUTOCONF=\"autoconf\"\n"
> "ac_add_options --with-system-nspr\n"
> "ac_add_options --enable-sandbox\n"
> "ac_add_options --enable-content-sandbox\n"
> "ac_add_options --enable-skia\n"
> "ac_add_options --enable-jemalloc\n"
> "ac_add_options --with-system-icu\n"
> "ac_add_options --with-intl-api\n"))))
> (display "mach configure, this is expected to \"crash\"")
> (zero? (system* "./mach" "configure"))
> (display "mach, and another round.")
> (zero? (system* "./mach")))))
> (add-after 'patch-source-shebangs 'setenvs
> (lambda _
> (substitute* (list "build/autoconf/config.guess"
> "client.mk"
> "js/src/configure.in"
> "intl/icu/source/configure")
> (("/bin/sh") (which "sh")))
> #t))
> (add-before 'build 'patch-clientmk
> (lambda _
> (substitute* "client.mk"
> (("/bin/sh") (which "sh")))
> #t))
> (replace 'build
> (lambda _
> (chdir "build")
> (display "mach build, the real build now")
> (system* "../mach" "build")
> #t))
> (add-after
> 'unpack 'arrange-to-link-libxul-with-libraries-it-might-dlopen
> (lambda _
> ;; libxul.so dynamically opens libraries, so here we explicitly
> ;; link them into libxul.so instead.
> ;;
> ;; TODO: It might be preferable to patch in absolute file names in
> ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
> ;; work. More investigation is needed.
> (substitute* "toolkit/library/moz.build"
> (("^# This needs to be last")
> "OS_LIBS += [
> 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
> 'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0', 'png' ]\n\n"))
> #t))
> (add-after 'unpack 'privacy-patch-branding
> (lambda _
> (substitute* "browser/branding/unofficial/pref/palemoon-branding.js"
> (("http://www.palemoon.org/unofficial.shtml")
> "https://gnu.org/s/guix"))
> (substitute* "browser/branding/shared/pref/preferences.inc"
> (("http://www.palemoon.org/firstrun.shtml")
> "https://gnu.org"))
> (substitute* "browser/branding/shared/locales/browserconfig.properties"
> (("http://start.palemoon.org/")
> "https://gnu.org/s/guix"))
> #t))
> (replace 'install
> (lambda* (#:key name outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bin (string-append out "/bin"))
> (lib (string-append out "/lib"))
> (palemoon (string-append
> out "/lib/palemoon/palemoon"))
> ;; Use one objectdirectory for all architectures.
> (objdir "o")
> ;; (prefsfile (string-append objdir "/dist/bin/browser"
> ;; "/defaults/profile"
> ;; "/prefs.js"))
> (tarfile (string-append objdir "/dist/palemoon-"
> ,version ".linux-x86_64"
> ".tar.bz2")))
> ;; We skip this for now.
> ;; (substitute* prefsfile
> ;; (("# Mozilla User Preferences")
> ;; "# Mozilla User Preferences\n
> ;; pref(\"app.update.enabled\", false);\n
> ;; pref(\"browser.backspace_action\", 0);\n
> ;; pref(\"browser.ctrlTab.previews\", false);\n
> ;; pref(\"intl.locale.matchOS\", true);\n
> ;; pref(\"general.useragent.locale\", \"chrome://global/locale/intl.properties\");\n
> ;; pref(\"browser.display.use_system_colors\", true);"))
> ;; Create the package, unpack it, manually install
> ;; the files from there to not miss anything.
> (zero? (system* "../mach" "package"))
> (display (getcwd))
> (chdir (string-append "../" objdir "/dist"))
> (zero? (system* "tar" "xjpf"
> "palemoon-" ,version ".linux-x86_64.tar.bz2"))
> (mkdir-p (string-append out "/lib/palemoon"))
> (copy-recursively "palemoon"
> (string-append out "/lib/palemoon"))
> (mkdir-p bin)
> (symlink (string-append out "/lib/palemoon/palemoon")
> (string-append bin "/newmoon"))
> ;; Avoid duplicate binaries.
> ;; https://bugzilla.mozilla.org/show_bug.cgi?id=658850 for
> (delete-file (string-append out "/lib/palemoon/palemoon-bin")))))
> ;; swap check and install phases and set paths to installed binaries
> (add-before 'check 'set-path-for-check
> (lambda* (#:key outputs #:allow-other-keys)
> (let ((out (assoc-ref outputs "out")))
> (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
> #t))
> (add-after 'install 'check
> ;;(assoc-ref %standard-phases 'check))
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bin (string-append out "/bin/newmoon")))
> (invoke bin "--version"))))
> (delete 'check)
> (delete 'bootstrap)
> ;; (replace 'check
> ;; (lambda* (#:key outputs #:allow-other-keys)
> ;; (let* ((out (assoc-ref outputs "out"))
> ;; (bin (string-append out "/bin/newmoon")))
> ;; (invoke bin "--version"))))
> (add-after 'install 'install-icons
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out")))
> (display (getcwd))
> (with-directory-excursion "../../browser/branding/unofficial"
> (for-each
> (lambda (file)
> (let* ((size (string-filter char-numeric? file))
> (icons (string-append out "/share/icons/hicolor/"
> size "x" size "/apps")))
> (mkdir-p icons)
> (copy-file file (string-append icons "/newmoon.png"))))
> '("default16.png" "default32.png" "default48.png"
> "mozicon128.png"))))))
> (add-after 'install 'install-desktop-file
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (apps (string-append out "/share/applications")))
> (display (getcwd))
> (with-directory-excursion "../../browser/branding/official"
> (substitute* "palemoon.desktop"
> (("Pale Moon")
> "New Moon")
> (("Exec=palemoon -new-tab https://start.palemoon.org")
> "Exec=newmoon -new-tab https://gnu.org/s/guix")
> (("Exec=palemoon -new-window")
> "Exec=newmoon -new-window")
> (("Exec=palemoon -private-window")
> "Exec=newmoon -private-window")
> (("palemoon")
> "newmoon"))
> (install-file "palemoon.desktop"
> (string-append apps
> "/newmoon.desktop")))))))))
>
> (home-page "https://www.palemoon.org/")
> (synopsis "Web Browser compiled from Pale Moon sources")
> (description
> "New Moon is a web browser compiled from Pale Moon sourcecode. New Moon
> is an independent browser derived from Firefox. Among its features are:
> Replaces the Gecko layout engine with the Goanna fork Uses the pre-Australis
> Firefox user interface Continues add-on support for XUL, XPCOM, and NPAPI
> plugins[9] Supports extensions and themes exclusive to Pale Moon, such as
> Adblock Latitude[ Defaults to a customizable start page in cooperation with
> start.me Defaults to DuckDuckGo as the search engine instead of Google or
> Yahoo! Uses the IP-API service instead of Google's for geolocation Fully
> customizable user interface
>
> NOTE: Please note that in this work-in-progress version it points to the start
> page which promotes some services and needs cookies, and has some other
> issues. IMPORTANT: This version is based on the old Pale Moon codebase which
> is in maintenance mode, but continues to receive security patches and
> updates.")
> (properties '((upstream-name . "Pale-Moon")))
> ;; The exception clause of the Palemoon license states that
> ;; New Moon builds can be redistributed freely.
> (license (list license:mpl2.0 ;and others, see toolkit/content/license.html
> license:gpl2+
> license:lgpl2.1))))
>
> (define-public newmoon
> (package
> (name "newmoon")
> (version "27.9.4")
> (source
> (origin
> (method url-fetch)
> (uri (string-append "https://github.com/MoonchildProductions/"
> "Pale-Moon/archive/" version "_Release.tar.gz"))
> (file-name (string-append name "-" version ".tar.gz"))
> (sha256
> (base32
> "0xfkbxa8618zb379m3aaycmbz0lj1s5f2mlwgykp8d5qyvd35bdj"))))
> (build-system gnu-build-system)
> (inputs
> `(("alsa-lib" ,alsa-lib)
> ("mit-krb5" ,mit-krb5)
> ("bzip2" ,bzip2)
> ("cairo" ,cairo)
> ("cups" ,cups)
> ("libgnome" ,libgnome)
> ("libcanberra" ,libcanberra)
> ("dbus-glib" ,dbus-glib)
> ("dbus" ,dbus)
> ("glib" ,glib)
> ("gstreamer" ,gstreamer)
> ("gst-plugins-base" ,gst-plugins-base)
> ("gtk+-2" ,gtk+-2)
> ("gobject-introspection" ,gobject-introspection)
> ("freetype" ,freetype)
> ("hunspell" ,hunspell)
> ("libxt" ,libxt)
> ("libffi" ,libffi)
> ("libvpx" ,libvpx)
> ("libxt" ,libxt)
> ("libxcomposite" ,libxcomposite)
> ("libidl" ,libidl)
> ("libwebp" ,libwebp)
> ("libpng-apng" ,libpng-apng)
> ("libjpeg-turbo" ,libjpeg-turbo)
> ("libxscrnsaver" ,libxscrnsaver)
> ("libx11" ,libx11)
> ("libxext" ,libxext)
> ("libxft" ,libxft)
> ("libxi" ,libxi)
> ("libxrender" ,libxrender)
> ("xextproto" ,xextproto)
> ("libevent" ,libevent)
> ("libnotify" ,libnotify)
> ("mesa" ,mesa)
> ;; ("mozjs" ,mozjs)
> ("nspr" ,nspr)
> ;; ("nss" ,nss)
> ;; ("openssl" ,openssl)
> ("python-2" ,python-2)
> ("python-ply" ,python-ply)
> ("pixman" ,pixman)
> ("pulseaudio" ,pulseaudio)
> ("startup-notification" ,startup-notification)
> ("sqlite" ,sqlite)
> ("tcsh" ,tcsh)
> ("unzip" ,unzip)
> ("yasm" ,yasm)
> ("zip" ,zip)
> ("zlib" ,zlib)
> ("inetutils" ,inetutils))) ; Native-input?
> (native-inputs
> `(("autoconf-2.13" ,autoconf-2.13)
> ("fontconfig" ,fontconfig)
> ("perl" ,perl)
> ("pkg-config" ,pkg-config)
> ("m4" ,m4)
> ("which" ,which)
> ("bash" ,bash)))
> ;; Only processors with SSE2 are supported.
> (supported-systems '("x86_64-linux" "i686-linux"))
> (arguments
> `(#:modules ((ice-9 ftw)
> (ice-9 rdelim)
> (ice-9 match)
> ,@%gnu-build-system-modules)
> ;; We encounter runpath issues, looks harmless in practice.
> ;; But nevertheless: FIXME!!!!!!
> #:validate-runpath? #f
> #:phases
> (modify-phases %standard-phases
> (replace 'configure
> ;; According to <https://forum.palemoon.org/viewtopic.php?f=19&t=4166>
> ;; the only way to set configure options is in the .mozconfig file
> ;; (or the file set by variable MOZCONFIG). If you try to use
> ;; our configure-flags, the configuration will break in unexpected
> ;; ways. This includes breaking the mach build system detection
> ;; of --host, --build, and --arch, and carrying flags recursively
> ;; on to parts used later in the build system.
> ;; The palemoon.org link describes an MS Windows build, but at
> ;; least for Gentoo it is done comparable:
> ;; <https://data.gpo.zugaina.org/palemoon/>.
> (lambda* (#:key outputs configure-flags #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bash (which "bash"))
> (abs-srcdir (getcwd))
> (srcdir (string-append "../" (basename abs-srcdir)))
> (flags `(,(string-append "--prefix=" out)
> ,@configure-flags))
> (mozconfig (string-append (getcwd) "/.mozconfig")))
> (setenv "SHELL" bash)
> (setenv "AUTOCONF"
> (string-append (assoc-ref %build-inputs
> "autoconf-2.13")
> "/bin/autoconf"))
> (setenv "BUILD_OBJ_DIR" (string-append (getcwd) "/o"))
> (setenv "CONFIG_SHELL" bash)
> (setenv "QA_CONFIGURE_OPTIONS" ".*")
> (setenv "MOZBUILD_STATE_PATH"
> (string-append (getcwd) "/mach_state"))
> (setenv "MOZCONFIG"
> (string-append (getcwd) "/.mozconfig"))
> (setenv "MOZ_NOSPAM" "1")
> (mkdir-p (string-append (getcwd) "/builddir"))
> (with-output-to-file mozconfig
> (lambda ()
> (display
> (string-append
> "ac_add_options --enable-application=browser\n"
> "mk_add_options MOZ_OBJDIR=" (getenv "BUILD_OBJ_DIR") "\n" ;new
> "ac_add_options --prefix=" out "\n"
> "ac_add_options --disable-debug\n"
> "ac_add_options --disable-debug-symbols\n"
> "ac_add_options --disable-accessibility\n" ;There is no such option?
> "ac_add_options --disable-updater\n"
> "ac_add_options --disable-installer\n"
> "ac_add_options --disable-parental-controls\n" ;Yes? No?
> "ac_add_options --disable-install-strip"
> "ac_add_options --disable-tests\n"
> "ac_add_options --with-system-ply\n"
> "ac_add_options --with-system-libevent\n"
> "ac_add_options --with-system-zlib\n"
> "ac_add_options --with-system-bz2\n"
> "ac_add_options --with-system-webp\n"
> "ac_add_options --with-system-libvpx\n"
> "ac_add_options --enable-system-hunspell\n"
> "ac_add_options --enable-system-ffi\n"
> "ac_add_options --enable-system-sqlite\n" ;Needs >= sqlite-3.21.0
> "ac_add_options --enable-system-cairo\n"
> "ac_add_options --enable-system-pixman\n"
> "ac_add_options --enable-shared-js\n"
> "ac_add_options --disable-valgrind\n"
> "ac_add_options --with-pthreads\n"
> "ac_add_options --disable-optimize\n"
> "ac_add_options --enable-gstreamer\n"
> "ac_add_options --enable-default-toolkit=\"cairo-gtk2\"\n"
> "ac_add_options --disable-alsa\n"
> "ac_add_options --enable-strip\n"
> "ac_add_options --disable-codesighs\n"
> "ac_add_options --disable-gamepad\n"
> "ac_add_options --disable-logging\n"
> "ac_add_options --disable-websms-backend\n"
> "ac_add_options --enable-chrome-format=omni\n"
> "ac_add_options --enable-startup-notification\n"
> "ac_add_options --enable-shared-js\n"
> "ac_add_options --enable-devtools\n"
> ;; XXX!
> "ac_add_options --with-system-png\n"
> "ac_add_options --enable-pulseaudio\n"
> "ac_add_options --disable-necko-wifi\n"
> "ac_add_options --with-system-jpeg\n"
> "ac_add_options --disable-official-branding\n" ; Trademarks apply for official branding
> "mk_add_options PYTHON=\"python2\"\n"
> "mk_add_options AUTOCONF=\"autoconf\"\n"
> "ac_add_options --with-system-nspr\n"
> "ac_add_options --enable-sandbox\n"
> "ac_add_options --enable-content-sandbox\n"
> "ac_add_options --enable-skia\n"
> "ac_add_options --enable-jemalloc\n"
> "ac_add_options --with-system-icu\n"
> "ac_add_options --with-intl-api\n"))))
> (display "mach configure, this is expected to \"crash\"")
> (zero? (system* "./mach" "configure"))
> (display "mach, and another round.")
> (zero? (system* "./mach")))))
> (add-after 'patch-source-shebangs 'setenvs
> (lambda _
> (substitute* (list "build/autoconf/config.guess"
> "client.mk"
> "js/src/configure.in"
> "intl/icu/source/configure")
> (("/bin/sh") (which "sh")))
> #t))
> (add-before 'build 'patch-clientmk
> (lambda _
> (substitute* "client.mk"
> (("/bin/sh") (which "sh")))
> #t))
> (replace 'build
> (lambda _
> (chdir "build")
> (display "mach build, the real build now")
> (system* "../mach" "build")
> #t))
> (add-after
> 'unpack 'arrange-to-link-libxul-with-libraries-it-might-dlopen
> (lambda _
> ;; libxul.so dynamically opens libraries, so here we explicitly
> ;; link them into libxul.so instead.
> ;;
> ;; TODO: It might be preferable to patch in absolute file names in
> ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
> ;; work. More investigation is needed.
> (substitute* "toolkit/library/moz.build"
> (("^# This needs to be last")
> "OS_LIBS += [
> 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
> 'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0', 'png' ]\n\n"))
> #t))
> (add-after 'unpack 'privacy-patch-branding
> (lambda _
> (substitute* "browser/branding/unofficial/pref/palemoon-branding.js"
> (("http://www.palemoon.org/unofficial.shtml")
> "https://gnu.org/s/guix"))
> (substitute* "browser/branding/shared/pref/preferences.inc"
> (("http://www.palemoon.org/firstrun.shtml")
> "https://gnu.org"))
> (substitute* "browser/branding/shared/locales/browserconfig.properties"
> (("http://start.palemoon.org/")
> "https://gnu.org/s/guix"))
> #t))
> (add-after 'unpack 'add-vendor-options
> (lambda _
> (substitute* "browser/branding/unofficial/pref/palemoon-branding.js"
> (("pref(\"app.update.url\", \"\")")
> "pref(\"app.update.url\", \"\");\n
> pref(\"browser.backspace_action\", 0);\n
> pref(\"browser.ctrlTab.previews\", false);\n
> pref(\"intl.locale.matchOS\", true);\n
> pref(\"extensions.blocklist.enabled\", false);\n
> pref(\"geo.enabled\", false);\n
> pref(\"services.sync.prefs.sync.security.OCSP.enabled\", false);\n
> pref(\"security.OCSP.GET.enabled\", false);\n
> pref(\"security.OCSP.require\", false);\n
> pref(\"general.useragent.locale\", \"chrome://global/locale/intl.properties\");\n
> pref(\"browser.display.use_system_colors\", true);"))
> #t))
> (replace 'install
> (lambda* (#:key name outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bin (string-append out "/bin"))
> (lib (string-append out "/lib"))
> (palemoon (string-append
> out "/lib/palemoon/palemoon"))
> ;; Use one objectdirectory for all architectures.
> (objdir "o")
> ;; (prefsfile (string-append objdir "/dist/bin/browser"
> ;; "/defaults/preferences/"
> ;; "/palemoon-branding.js"))
> (tarfile (string-append objdir "/dist/palemoon-"
> ,version ".linux-x86_64"
> ".tar.bz2")))
> ;; Create the package, unpack it, manually install
> ;; the files from there to not miss anything.
> (zero? (system* "../mach" "package"))
> (display (getcwd))
> (chdir (string-append "../" objdir "/dist"))
> (zero? (system* "tar" "xjpf"
> "palemoon-" ,version ".linux-x86_64.tar.bz2"))
> (mkdir-p (string-append out "/lib/palemoon"))
> (copy-recursively "palemoon"
> (string-append out "/lib/palemoon"))
> (mkdir-p bin)
> (symlink (string-append out "/lib/palemoon/palemoon")
> (string-append bin "/newmoon"))
> ;; Avoid duplicate binaries.
> ;; https://bugzilla.mozilla.org/show_bug.cgi?id=658850 for
> (delete-file (string-append out "/lib/palemoon/palemoon-bin")))))
> ;; swap check and install phases and set paths to installed binaries
> (add-before 'check 'set-path-for-check
> (lambda* (#:key outputs #:allow-other-keys)
> (let ((out (assoc-ref outputs "out")))
> (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
> #t))
> (add-after 'install 'check
> ;;(assoc-ref %standard-phases 'check))
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (bin (string-append out "/bin/newmoon")))
> (invoke bin "--version"))))
> (delete 'check)
> (delete 'bootstrap)
> ;; (replace 'check
> ;; (lambda* (#:key outputs #:allow-other-keys)
> ;; (let* ((out (assoc-ref outputs "out"))
> ;; (bin (string-append out "/bin/newmoon")))
> ;; (invoke bin "--version"))))
> (add-after 'install 'install-icons
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out")))
> (display (getcwd))
> (with-directory-excursion "../../browser/branding/unofficial"
> (for-each
> (lambda (file)
> (let* ((size (string-filter char-numeric? file))
> (icons (string-append out "/share/icons/hicolor/"
> size "x" size "/apps")))
> (mkdir-p icons)
> (copy-file file (string-append icons "/newmoon.png"))))
> '("default16.png" "default32.png" "default48.png"
> "mozicon128.png"))))))
> (add-after 'install 'install-desktop-file
> (lambda* (#:key outputs #:allow-other-keys)
> (let* ((out (assoc-ref outputs "out"))
> (apps (string-append out "/share/applications")))
> (display (getcwd))
> (with-directory-excursion "../../browser/branding/official"
> (substitute* "palemoon.desktop"
> (("Pale Moon")
> "New Moon")
> (("Exec=palemoon -new-tab https://start.palemoon.org")
> "Exec=newmoon -new-tab https://gnu.org/s/guix")
> (("Exec=palemoon -new-window")
> "Exec=newmoon -new-window")
> (("Exec=palemoon -private-window")
> "Exec=newmoon -private-window")
> (("palemoon")
> "newmoon"))
> (install-file "palemoon.desktop"
> (string-append apps
> "/newmoon.desktop")))))))))
>
> (home-page "https://www.palemoon.org/")
> (synopsis "Web Browser compiled from Pale Moon sources")
> (description
> "New Moon is a web browser compiled from Pale Moon sourcecode. New Moon
> is an independent browser derived from Firefox. Among its features are:
> Replaces the Gecko layout engine with the Goanna fork Uses the pre-Australis
> Firefox user interface Continues add-on support for XUL, XPCOM, and NPAPI
> plugins[9] Supports extensions and themes exclusive to Pale Moon, such as
> Adblock Latitude[ Defaults to a customizable start page in cooperation with
> start.me Defaults to DuckDuckGo as the search engine instead of Google or
> Yahoo! Uses the IP-API service instead of Google's for geolocation Fully
> customizable user interface
>
> NOTE: Please note that in this work-in-progress version it points to the start
> page which promotes some services and needs cookies, and has some other
> issues. IMPORTANT: This version is based on the old Pale Moon codebase which
> is in maintenance mode, but continues to receive security patches and
> updates.")
> (properties '((upstream-name . "Pale-Moon")))
> ;; The exception clause of the Palemoon license states that
> ;; New Moon builds can be redistributed freely.
> (license (list license:mpl2.0 ;and others, see toolkit/content/license.html
> license:gpl2+
> license:lgpl2.1))))
prev parent reply other threads:[~2019-03-07 7:07 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-06 20:04 Help needed with newmoon swedebugia
2019-03-06 20:59 ` Leo Famulari
2019-03-07 7:07 ` ng0 [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190307070715.s2rbkxocbkkiexfv@uptimegirl \
--to=ng0@n0.is \
--cc=guix-devel@gnu.org \
--cc=swedebugia@riseup.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).