unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / Atom feed
* Help with package AppImage support
@ 2021-11-22 14:29 Ekaitz Zarraga
  2021-11-23 17:19 ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Ekaitz Zarraga @ 2021-11-22 14:29 UTC (permalink / raw)
  To: guix-devel\@gnu.org


Hi,

I'm trying to package some AppImage support for later adding it to `guix pack`.

I having issues with AppImageKit (see below)... I'm not able to make it load
the libsquashfuse I already packaged. CMake refuses to find it.

I could use a hand to make this package work or at least some help with CMake,
because I'm not used to work with it and I know some of you have dealt with it
much more than what I did.

Can anyone help me with this?


This is the current file I'm using to test all this:


(define-module (appimage)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module ((srfi srfi-1) #:hide (zip))
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system gnu)
  #:use-module (guix packages)
  #:use-module (gnu packages)
  #:use-module (gnu packages wget)
  #:use-module (gnu packages vim)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages commencement)
  #:use-module (gnu packages backup)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages linux))


(define-public squashfuse
  (package
    (name "squashfuse")
    (version "0.1.104")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/vasi/squashfuse.git")
                     (commit version)))
              (sha256
               (base32
                "1j9phqgg3xqfyk94h1vcl5gkyhdfnglmzwva2vvp5ri07b76y3h4"))))
    (build-system gnu-build-system)
    (native-inputs
      `(("automake" ,automake)
        ("autoconf" ,autoconf)
        ("pkg-config" ,pkg-config)
        ("libtool" ,libtool)))
    (inputs
     `(("fuse" ,fuse)))
    (synopsis "FUSE filesystem to mount squashfs archives")
    (description "Squashfuse lets you mount SquashFS archives in user-space. It
supports almost all features of the SquashFS format, yet is still fast and
memory-efficient.")
    (home-page "https://github.com/vasi/squashfuse")
    (license license:bsd-2)))


(define-public xdg-utils-cxx
  (package
    (name "xdg-utils-cxx")
    (version "1.0.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                      (url "https://github.com/azubieta/xdg-utils-cxx.git")
                      (commit (string-append "v" version))
                      (recursive? #t)))
              (sha256
                (base32
                  "00nvn00z1c7xvpb7xjm6i9i62hchg3nandxw487g6dallv378hw4"))))
    (build-system cmake-build-system)
    (arguments
      `(#:configure-flags
         (list "-DXDG_UTILS_SHARED=ON")))
    (synopsis "Implementation of the FreeDesktop specifications to be used in C++ projects")
    (description "Implementation of the Free Desktop Standards in C++.  This is
a project was started to fulfill the need of a reliable implementations of such
standards in the AppImage project. It is totally standalone and only depends on
the standard c++ libraries (stdlib).")
    (home-page "https://github.com/azubieta/xdg-utils-cxx")
    (license license:expat)))

(define-public libappimage
  (package
    (name "libappimage")
    (version "1.0.3")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/AppImage/libappimage.git")
                     (commit (string-append "v" version))
                     (recursive? #t)))
              (sha256
               (base32
                "1b8kkypzvf12xp25lgcrqrflhj9j8kgwd39za4w90vx3q0c2lpa0"))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags
       (list "-DBUILD_TESTING:bool=False" ; Tests are broken
             "-DUSE_SYSTEM_BOOST=On"
             "-DUSE_SYSTEM_LIBARCHIVE=On"
             "-DUSE_SYSTEM_XZ=On"
             "-DUSE_SYSTEM_XDGUTILS=On"
             "-DUSE_SYSTEM_SQUASHFUSE=On")
       #:tests? #f))                      ; Tests are broken
    (native-inputs
     `(("automake" ,automake)
       ("autoconf" ,autoconf)
       ("git" ,git)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("boost" ,boost)
       ("cairo" ,cairo)
       ("desktop-file-validate" ,desktop-file-utils)
       ("fuse" ,fuse)
       ("libarchive" ,libarchive)
       ("librsvg" ,librsvg)
       ("squashfuse" ,squashfuse)
       ("wget" ,wget)
       ("xdg-utils-cxx" ,xdg-utils-cxx)
       ("xxd" ,xxd)
       ("xz" ,xz)))
    (synopsis "Implements functionality for dealing with AppImage files")
    (description "Library for dealing with AppImage files.")
    (home-page "https://github.com/AppImage/libappimage/")
    (license license:expat)))


(define-public appimagekit
  (package
    (name "appimagekit")
    (version "13")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/AppImage/appimagekit.git")
                     (commit version)
                     ;; We may be able to disable the recursive flag:
                     ;; - It downloads libappimage
                     ;; - It downloads some CMake related things
                     (recursive? #t)))
              (sha256
               (base32
                "171xrnlkmjrk7a44cr10wfpfr8swgzw3yjk7yn4902r6ia73xa56"))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags
       (list "-DXZ_EXTERNAL=On"
             "-DUSE_SYSTEM_MKSQUASHFS=On")
       #:phases
       (modify-phases
         %standard-phases
         (add-after 'patch-source-shebangs 'unbundle
           (lambda _
             (substitute* "CMakeLists.txt"
                            (("add_subdirectory\\(lib\\)")
                             "")
                            (("include\\(lib\\/libappimage\\/cmake\\/tools\\.cmake\\)")
                             "")))))))
    (native-inputs
      `(("pkg-config" ,pkg-config)))
    (inputs
      `(("fuse" ,fuse)
        ("squashfuse" ,squashfuse)
        ("openssl" ,openssl)
        ("xz" ,xz)))
    (synopsis "Implements functionality for dealing with AppImage files")
    (description "Library for dealing with AppImage files.")
    (home-page "https://github.com/AppImage/libappimage/")
    (license license:expat)))



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-22 14:29 Help with package AppImage support Ekaitz Zarraga
@ 2021-11-23 17:19 ` Ludovic Courtès
  2021-11-23 19:12   ` Ekaitz Zarraga
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2021-11-23 17:19 UTC (permalink / raw)
  To: Ekaitz Zarraga; +Cc: guix-devel

Hello!

Ekaitz Zarraga <ekaitz@elenq.tech> skribis:

> I having issues with AppImageKit (see below)... I'm not able to make it load
> the libsquashfuse I already packaged. CMake refuses to find it.
>
> I could use a hand to make this package work or at least some help with CMake,
> because I'm not used to work with it and I know some of you have dealt with it
> much more than what I did.

Could you show the CMake output?

Sometimes there’s a -D flag you need to pass to help it find the
package.  (I’m not much of a CMake person though…)

Thanks for working on it!

Ludo’.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-23 17:19 ` Ludovic Courtès
@ 2021-11-23 19:12   ` Ekaitz Zarraga
  2021-11-28 17:29     ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Ekaitz Zarraga @ 2021-11-23 19:12 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel\@gnu.org

[-- Attachment #1: Type: text/plain, Size: 349 bytes --]


> Could you show the CMake output?

I attach it in this email.
It's a "TARGET NOT FOUND" :S

> Sometimes there’s a -D flag you need to pass to help it find the
> package. (I’m not much of a CMake person though…)

yeah... I tried many, but I didn't find the one.

> Thanks for working on it!

Thank you for the help Ludo

Ekaitz

[-- Attachment #2: 884g21d0ixc86sbnnzhj8yqyf1cyzj-appimagekit-13.drv.bz2 --]
[-- Type: application/x-bzip, Size: 7480 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-23 19:12   ` Ekaitz Zarraga
@ 2021-11-28 17:29     ` Ludovic Courtès
  2021-11-28 17:38       ` Ekaitz Zarraga
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2021-11-28 17:29 UTC (permalink / raw)
  To: Ekaitz Zarraga; +Cc: guix-devel

Hi,

The log reads:

--8<---------------cut here---------------start------------->8---
-- Found PkgConfig: /gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2/bin/pkg-config (found version "0.29.2") 
-- Importing target libfuse via pkg-config (fuse, shared)
-- Checking for module 'fuse'
--   Found fuse, version 2.9.9
-- Importing target libssl via pkg-config (openssl, shared)
-- Checking for module 'openssl'
--   Found openssl, version 1.1.1j
-- Using system mksquashfs
CMake Error at src/build-runtime.cmake:19 (message):
  TARGET NOT found libsquashfuse
Call Stack (most recent call first):
  src/CMakeLists.txt:16 (include)


-- Configuring incomplete, errors occurred!
See also "/tmp/guix-build-appimagekit-13.drv-0/build/CMakeFiles/CMakeOutput.log".
command "cmake" "../source" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_INSTALL_PREFIX=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" "-DCMAKE_INSTALL_RPATH=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13/lib" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DXZ_EXTERNAL=On" "-DUSE_SYSTEM_MKSQUASHFS=On" failed with status 1
--8<---------------cut here---------------end--------------->8---

Maybe “TARGET NOT found” is CMake’s original way of saying that you’re
missing a dependency (libsquashfuse), no?

BTW, since your ultimate goal is to have ‘guix pack -f appimage’, you
could look at the AppImage spec.  It might be that you can do the heavy
lifting of creating a file in that format without resorting to
AppImageKit.

HTH,
Ludo’.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-28 17:29     ` Ludovic Courtès
@ 2021-11-28 17:38       ` Ekaitz Zarraga
  2021-11-28 19:49         ` Ricardo Wurmus
  0 siblings, 1 reply; 10+ messages in thread
From: Ekaitz Zarraga @ 2021-11-28 17:38 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel\@gnu.org

> Hi,
>
> The log reads:
>
> --8<---------------cut here---------------start------------->8---
> -- Found PkgConfig: /gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2/bin/pkg-config (found version "0.29.2")
> -- Importing target libfuse via pkg-config (fuse, shared)
> -- Checking for module 'fuse'
> --   Found fuse, version 2.9.9
> -- Importing target libssl via pkg-config (openssl, shared)
> -- Checking for module 'openssl'
> --   Found openssl, version 1.1.1j
> -- Using system mksquashfs
> CMake Error at src/build-runtime.cmake:19 (message):
>   TARGET NOT found libsquashfuse
> Call Stack (most recent call first):
>   src/CMakeLists.txt:16 (include)
>
>
> -- Configuring incomplete, errors occurred!
> See also "/tmp/guix-build-appimagekit-13.drv-0/build/CMakeFiles/CMakeOutput.log".
> command "cmake" "../source" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_INSTALL_PREFIX=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" "-DCMAKE_INSTALL_RPATH=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13/lib" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DXZ_EXTERNAL=On" "-DUSE_SYSTEM_MKSQUASHFS=On" failed with status 1
> --8<---------------cut here---------------end--------------->8---
>
> Maybe “TARGET NOT found” is CMake’s original way of saying that you’re
> missing a dependency (libsquashfuse), no?

I mean, I already reached that conclusion but if you check the packages in the
original message, the dependency is included. I can't find why isn't it finding
the library.

I need there some help making CMake find the dependency I already included and
packaged.

> BTW, since your ultimate goal is to have ‘guix pack -f appimage’, you
> could look at the AppImage spec.  It might be that you can do the heavy
> lifting of creating a file in that format without resorting to
> AppImageKit.

There are some possible options for this.

Appimage is basically an ELF with the contents on an Squashfs image inside.
When it runs it decompresses itself and runs the contents. Appimagekit is
basically one possible runtime for this behavior, which is just a simple
shell-like launcher.

I just wanted to add this package too, for those who want to generate appimages
by themselves and later decide if I want to use it or not in the actual
implementation.

> HTH,
> Ludo’.

Thanks!
Ekaitz



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-28 17:38       ` Ekaitz Zarraga
@ 2021-11-28 19:49         ` Ricardo Wurmus
  2021-11-29 12:48           ` Ekaitz Zarraga
  0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2021-11-28 19:49 UTC (permalink / raw)
  To: Ekaitz Zarraga; +Cc: guix-devel


Ekaitz Zarraga <ekaitz@elenq.tech> writes:

>> Maybe “TARGET NOT found” is CMake’s original way of saying that 
>> you’re
>> missing a dependency (libsquashfuse), no?
>
> I mean, I already reached that conclusion but if you check the 
> packages in the
> original message, the dependency is included. I can't find why 
> isn't it finding
> the library.
>
> I need there some help making CMake find the dependency I 
> already included and
> packaged.

Does the CMakeLists.txt or the files under cmake/ mention 
libsquashfuse?  There should either be a Find* macro that 
describes the tests CMake will perform to determine certain 
variables for using libsquashfuse, or it will use a conventional 
way to do that: via pkg-config or using .cmake files in 
libsquashfuse.

So there coulde be different problems here: libsquashfuse doesn’t 
install the expected cmake files or installs them in the wrong 
place; or this package tells CMake to search using pkg-config but 
you don’t have pkg-config among the inputs; or this is all the 
case and pkg-config fails because a library isn’t propagated when 
it should be, etc.

The first step should be to figure out if CMake uses one of these 
Find* macros or some other way.  If it’s a Find* macro, determine 
if it is provided by libsquashfuse or appimagekit.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-28 19:49         ` Ricardo Wurmus
@ 2021-11-29 12:48           ` Ekaitz Zarraga
  2021-11-29 13:20             ` Ricardo Wurmus
  0 siblings, 1 reply; 10+ messages in thread
From: Ekaitz Zarraga @ 2021-11-29 12:48 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Hi Ricardo,


> Ekaitz Zarraga <ekaitz@elenq.tech> writes:
>
> >> Maybe “TARGET NOT found” is CMake’s original way of saying that
> >> you’re
> >> missing a dependency (libsquashfuse), no?
> >
> > I mean, I already reached that conclusion but if you check the
> > packages in the
> > original message, the dependency is included. I can't find why
> > isn't it finding
> > the library.
> >
> > I need there some help making CMake find the dependency I
> > already included and
> > packaged.
>
> Does the CMakeLists.txt or the files under cmake/ mention
> libsquashfuse?  There should either be a Find* macro that
> describes the tests CMake will perform to determine certain
> variables for using libsquashfuse, or it will use a conventional
> way to do that: via pkg-config or using .cmake files in
> libsquashfuse.
>
> So there coulde be different problems here: libsquashfuse doesn’t
> install the expected cmake files or installs them in the wrong
> place; or this package tells CMake to search using pkg-config but
> you don’t have pkg-config among the inputs; or this is all the
> case and pkg-config fails because a library isn’t propagated when
> it should be, etc.

All packages use pkg-config as a native input.

This is the directory structure of squashfuse. It doens't include the Find* but
it contains a pkgconfig file. I'm not sure if it's located in the correct
path though.

--8<---------------cut here---------------start------------->8---

/gnu/store/3ksjpfy6lma86b03fal3n0q1zfm1l9v2-squashfuse-0.1.104
├── bin
│   ├── squashfuse
│   └── squashfuse_ll
├── include
│   └── squashfuse
│       ├── cache.h
│       ├── common.h
│       ├── config.h
│       ├── decompress.h
│       ├── dir.h
│       ├── file.h
│       ├── fs.h
│       ├── squashfs_fs.h
│       ├── squashfuse.h
│       ├── stack.h
│       ├── table.h
│       ├── traverse.h
│       ├── util.h
│       └── xattr.h
├── lib
│   ├── libsquashfuse.a
│   ├── libsquashfuse.la
│   ├── libsquashfuse.so -> libsquashfuse.so.0.0.0
│   ├── libsquashfuse.so.0 -> libsquashfuse.so.0.0.0
│   ├── libsquashfuse.so.0.0.0
│   └── pkgconfig
│       └── squashfuse.pc
└── share
    ├── doc
    │   └── squashfuse-0.1.104
    │       └── LICENSE
    └── man
        └── man1
            └── squashfuse.1.gz
--8<---------------cut here---------------end--------------->8---

> The first step should be to figure out if CMake uses one of these
> Find* macros or some other way.  If it’s a Find* macro, determine
> if it is provided by libsquashfuse or appimagekit.

This is the only reference I find to squashfuse so I don't know what's the
mechanism they are doing. In cmake/dependencies.cmake they are not searching
for squashfuse neither...
https://github.com/AppImage/AppImageKit/blob/8bbf694455d00f48d835f56afaa1dabcd9178ba6/src/build-runtime.cmake#L18


Thanks for the help,
Ekaitz


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-29 12:48           ` Ekaitz Zarraga
@ 2021-11-29 13:20             ` Ricardo Wurmus
  2021-11-29 14:27               ` Ekaitz Zarraga
  0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2021-11-29 13:20 UTC (permalink / raw)
  To: Ekaitz Zarraga; +Cc: guix-devel


Ekaitz Zarraga <ekaitz@elenq.tech> writes:

>> The first step should be to figure out if CMake uses one of 
>> these
>> Find* macros or some other way.  If it’s a Find* macro, 
>> determine
>> if it is provided by libsquashfuse or appimagekit.
>
> This is the only reference I find to squashfuse so I don't know 
> what's the
> mechanism they are doing. In cmake/dependencies.cmake they are 
> not searching
> for squashfuse neither...
> https://github.com/AppImage/AppImageKit/blob/8bbf694455d00f48d835f56afaa1dabcd9178ba6/src/build-runtime.cmake#L18

appimagekit includes a copy of libappimage; that repository 
contains a Findsquashfuse.cmake file, which defines how squashfuse 
is found:

    https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake

-- 
Ricardo


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-29 13:20             ` Ricardo Wurmus
@ 2021-11-29 14:27               ` Ekaitz Zarraga
  2021-11-29 15:06                 ` Ricardo Wurmus
  0 siblings, 1 reply; 10+ messages in thread
From: Ekaitz Zarraga @ 2021-11-29 14:27 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Hi Ricardo,

> appimagekit includes a copy of libappimage; that repository
> contains a Findsquashfuse.cmake file, which defines how squashfuse
> is found:
>
> https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake
>
> Ricardo

I see what's going on now.

I unbundled libappimage from appimage kit and added it as a dependency so
there's no way to find libsquashfuse in appimagekit because it tries to use the
bundled lib I removed.

So I'm not sure what to do right now to be honest. This way to bundle
everything makes me mad... All this packages are mixed together in a way that
is hard to separate... :S

Thanks for the info now I know why was all this happening! I was completely
lost with the "target not found" issue because I didn't know where was it
coming from!

Ekaitz



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Help with package AppImage support
  2021-11-29 14:27               ` Ekaitz Zarraga
@ 2021-11-29 15:06                 ` Ricardo Wurmus
  0 siblings, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2021-11-29 15:06 UTC (permalink / raw)
  To: Ekaitz Zarraga; +Cc: guix-devel


Ekaitz Zarraga <ekaitz@elenq.tech> writes:

> Hi Ricardo,
>
>> appimagekit includes a copy of libappimage; that repository
>> contains a Findsquashfuse.cmake file, which defines how 
>> squashfuse
>> is found:
>>
>> https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake
>>
>> Ricardo
>
> I see what's going on now.
>
> I unbundled libappimage from appimage kit and added it as a 
> dependency so
> there's no way to find libsquashfuse in appimagekit because it 
> tries to use the
> bundled lib I removed.

There are a few different ways around it: libappimage could 
install the cmake file; but perhaps that’s a bit weird.  Or you 
could add this .cmake file as a native input to appimagekit.  Or 
you could fetch the sources recursively (including libappimage) 
and not build it as you do now.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-11-29 15:08 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-22 14:29 Help with package AppImage support Ekaitz Zarraga
2021-11-23 17:19 ` Ludovic Courtès
2021-11-23 19:12   ` Ekaitz Zarraga
2021-11-28 17:29     ` Ludovic Courtès
2021-11-28 17:38       ` Ekaitz Zarraga
2021-11-28 19:49         ` Ricardo Wurmus
2021-11-29 12:48           ` Ekaitz Zarraga
2021-11-29 13:20             ` Ricardo Wurmus
2021-11-29 14:27               ` Ekaitz Zarraga
2021-11-29 15:06                 ` Ricardo Wurmus

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).