guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Packaging IceCat extensions with Guix


From: ng0
Subject: Re: Packaging IceCat extensions with Guix
Date: Fri, 13 Jan 2017 09:49:07 +0000

ng0 <address@hidden> writes:

> Marius Bakke <address@hidden> writes:
>
>> Hi Guix,
>>
>> I read somewhere that Debian packages certain Firefox extensions. I
>> tried doing the same with Guix, but haven't been able to get IceCat to
>> load extensions from a directory.
>>
>> The attached (outdated!) patch adds the "uBlock" XPI to
>> <guix-profile>/lib/icecat/extensions. I've tried symlinking this to
>> "standard" system folders (from IceCat source code), and disabled
>> unsigned extensions, but no luck so far. Maybe someone more familiar
>> with IceCat internals can try it?
>>
>> I would love to have my favourite extensions managed by Guix!
>
> I've had a similar idea last year, and I still think it's worth
> considering. I'm not sure if I mentioned it here on the mailing
> list.
>
> Certain applications, like Chromium based browsers and Mozilla
> based software (firefox, thunderbird) allow the use of an system
> wide extension/addon store. This is how Gentoo handles it, and I
> quiet like it that I don't have to trust these corporations with
> how they think distributing such code is secure/just/etc.
>
> When we do this, we have the possibility to control what's inside
> the app-stores and avoid the web interface as a middleware.
> I have more reasons to lobby for this, but I hope it's just self
> explanatory why this is a good idea.
>
> For starters you could look at the Gentoo ebuild for chromium,
> palemoon, firefox, or let me come up with a short patch to
> icecat. I could work on this tomorrow.

Alright, in addition to what Mark wrote:

The ebuild for firefox based browsers does this:
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/firefox/firefox-45.6.0-r1.ebuild#n145

Which includes a simple sed:

# Ensure that our plugins dir is enabled as default
        sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \
                "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed 
failed to replace plugin path for 32bit!"
        sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \
                "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed 
failed to replace plugin path for 64bit!"

And then there's an appropriate, fitting eclass you use when you
package firefox extensions.
This is for the firefox version they use. I have forgotten which
version we are on, but it really is that simple. Only needs to be
adjusted to a location we agree on. Sort of.

> When we do this, I also suggest to name accordingly, like
> (gnu packages gnuzilla-plugins)
> (gnu packages qupzilla-plugins)
> etc, one module for each compatible browser (extensions which
> work in a family of browsers or deriviates of them).
>
> I am especially unhappy with palemoon, where the website, and
> therefore the store, is behind the great firewall of
> cloudflare. I'm still packaging it, but it's annyoing.
>
>> From 3a1bc1a489c5f7cd624c661a8887bf2e89ea74b2 Mon Sep 17 00:00:00 2001
>> From: Marius Bakke <address@hidden>
>> Date: Tue, 1 Nov 2016 10:33:52 +0000
>> Subject: [PATCH] gnu: Add ublock.
>>
>> ---
>>  gnu/packages/web-plugins.scm | 114 
>> +++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 114 insertions(+)
>>  create mode 100644 gnu/packages/web-plugins.scm
>>
>> diff --git a/gnu/packages/web-plugins.scm b/gnu/packages/web-plugins.scm
>> new file mode 100644
>> index 000000000..e124b8e74
>> --- /dev/null
>> +++ b/gnu/packages/web-plugins.scm
>> @@ -0,0 +1,114 @@
>> +;;; GNU Guix --- Functional package management for GNU
>> +;;; Copyright © 2016 Marius Bakke <address@hidden>
>> +;;;
>> +;;; This file is part of GNU Guix.
>> +;;;
>> +;;; GNU Guix 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.
>> +;;;
>> +;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
>> +
>> +(define-module (gnu packages web-plugins)
>> +  #:use-module ((guix licenses) #:prefix license:)
>> +  #:use-module (guix download)
>> +  #:use-module (guix git-download)
>> +  #:use-module (guix build-system gnu)
>> +  #:use-module (guix build-system trivial)
>> +  #:use-module (guix packages)
>> +  #:use-module (gnu packages python)
>> +  #:use-module (gnu packages zip))
>> +
>> +(define uassets
>> +  (package
>> +    (name "uassets")
>> +    (version "8f505b07572f0ed35d3bfec6ba4c9058f4270ae7")
>> +    (source (origin
>> +              (method git-fetch)
>> +              (uri (git-reference
>> +                    (url "https://github.com/uBlockOrigin/uAssets.git";)
>> +                    (commit version)))
>> +              (file-name (string-append name "-" version "-checkout"))
>> +              (sha256
>> +               (base32
>> +                "154i7p2qa2jq5907n9bqsy9bh2l2iiynhd7x9s4d6dabwfq7aa5n"))))
>> +    (build-system trivial-build-system)
>> +    (arguments
>> +     `(#:modules ((guix build utils))
>> +       #:builder
>> +       (begin
>> +         (use-modules (guix build utils))
>> +         (copy-recursively (assoc-ref %build-inputs "source")
>> +                           (assoc-ref %outputs "out"))
>> +         #t)))
>> +    (synopsis "Filter lists and rulesets for uBlock and uMatrix")
>> +    (description
>> +     "Resources for uBlock Origin, uMatrix: static filter lists,
>> +ready-to-use rulesets, etc.")
>> +    (home-page "https://github.com/uBlockOrigin/uAssets";)
>> +    (license license:gpl3))) ; TODO: verify
>> +
>> +(define-public ublock
>> +  (package
>> +    (name "ublock")
>> +    (version "1.9.16")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri (string-append
>> +                    "https://github.com/gorhill/uBlock/archive/";
>> +                    version ".tar.gz"))
>> +              (sha256
>> +               (base32
>> +                "0460sh05ahxl6539pfxbgaf1ibxxi3c656pxazwnppln2zaiigfz"))))
>> +    (build-system gnu-build-system)
>> +    ;; We use gnu-build-system to benefit from unpack and
>> +    ;; source patching, but won't use any standard phases.
>> +    (arguments
>> +     `(#:tests? #f
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-after 'unpack 'copy-assets
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             (copy-recursively (assoc-ref inputs "uassets")
>> +                               "../uAssets")
>> +             #t))
>> +         (delete 'configure)
>> +         (replace 'build
>> +           (lambda _
>> +             (zero? (system* "./tools/make-firefox.sh" "all"))
>> +             ;(zero? (system* "./tools/make-firefox.sh"))
>> +             ))
>> +         (replace 'install
>> +           (lambda* (#:key outputs #:allow-other-keys)
>> +             (let* ((out (assoc-ref outputs "out"))
>> +                    (extdir (string-append
>> +                             out "/lib/icecat/extensions")))
>> +               ;(mkdir-p extdir)
>> +               ;(copy-recursively "dist/build/uBlock0.firefox" extdir)
>> +               (install-file "dist/build/uBlock0.firefox.xpi" extdir)
>> +               #t))))))
>> +    (native-inputs
>> +     `(("python" ,python-wrapper)
>> +       ("uassets" ,uassets)
>> +       ("zip" ,zip)))
>> +    (synopsis "Efficient content blocker")
>> +    (description
>> +     "uBlock Origin is a \"wide spectrum\" blocker for web content.
>> +It can block ads, trackers, malware sites and similar and comes with a
>> +comprehensive pre-configured filter list covering known-bad sites.")
>> +    (home-page "https://github.com/gorhill/uBlock";)
>> +    ;; uBlock is distributed under GPL3+ but includes a handful of
>> +    ;; components covered by other licenses.
>> +    (license (list license:gpl3+
>> +                   license:cc-by-sa3.0
>> +                   license:mpl2.0
>> +                   ;; The malware hosts list has no proper license and just
>> +                   ;; includes the text "our list can be used by anyone".
>> +                   (license:non-copyleft 
>> "https://www.malwaredomainlist.com/";)))))
>> -- 
>> 2.11.0
>>
>
> -- 
> ♥Ⓐ  ng0 -- https://www.inventati.org/patternsinthechaos/
>
>

-- 
♥Ⓐ  ng0 -- https://www.inventati.org/patternsinthechaos/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]