* Packaging Proton Bridge: cryptic compilation failure @ 2024-11-30 16:26 Marek Paśnikowski 2024-11-30 17:29 ` Ian Eure ` (3 more replies) 0 siblings, 4 replies; 16+ messages in thread From: Marek Paśnikowski @ 2024-11-30 16:26 UTC (permalink / raw) To: Guix Help [-- Attachment #1: Type: text/plain, Size: 2281 bytes --] Hello Guix I am towards the end of a first pass of packaging the Proton Bridge program to access my Proton Mail with KMail. I have worked through and learned about many peculiarities of Golang build system. As long as I had an error message, I was able to at least work around problems. However, the latest build failure is completely cryptic to me, as its log contains zero error messages. It works fine until I get a "build failed" summary: [...] /gnu/store/kw4dwavpd5638kxaxnyhchzbip2ihr7q-go-1.21.5/lib/go/pkg/tool/ linux_amd64/compile -o ./go-build882385907/b247/_pkg_.a -trimpath "/tmp/guix- build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/golang.org/x/ text/encoding/ianaindex=>golang.org/x/text/encoding/ianaindex;$WORK/b247=>" -p golang.org/x/text/encoding/ianaindex -complete -buildid oeeEgL1OtT44tPEiSSgm/ oeeEgL1OtT44tPEiSSgm -goversion go1.21.5 -nolocalimports -importcfg ./go- build882385907/b247/importcfg -pack ./src/golang.org/x/text/encoding/ ianaindex/ascii.go ./src/golang.org/x/text/encoding/ianaindex/ianaindex.go ./ src/golang.org/x/text/encoding/ianaindex/tables.go /gnu/store/kw4dwavpd5638kxaxnyhchzbip2ihr7q-go-1.21.5/lib/go/pkg/tool/ linux_amd64/buildid -w $WORK/b247/_pkg_.a # internal cp $WORK/b247/_pkg_.a /tmp/guix-build-go-github-com-protonmail-go-proton- api-0.4.0.drv-0/go-build/ 59/59c52b9f8132289a5cc9772aa1edea166f986e6eb6d79cd07cbaac8bcbf28c75-d # internal Building 'github.com/ProtonMail/go-proton-api' failed. [...] The above is the result of this command: $ guix build -v 3 -L ~/repositories/sovereign/ proton-bridge --cores=1 I have zero knowledge the Go language itself, which could explain why I have trouble understanding this failure. I would very much appreciate any help from the resident Go packagers, as I am unable to make any further progress, and I desire to finally ditch the Proton’s web interface. The entire package code is on my personal channel, in "proton-bridge" branch. There is one external dependency on the Efraim’s DFSG channel. CGIT interface: https://git.marekpasnikowski.pl/sovereign.git/tree/?h=proton-bridge GIT clone URL: https://git.marekpasnikowski.pl/sovereign.git DFSG channel: https://git.sr.ht/~efraim/my-guix [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-11-30 16:26 Packaging Proton Bridge: cryptic compilation failure Marek Paśnikowski @ 2024-11-30 17:29 ` Ian Eure 2024-11-30 18:08 ` Cayetano Santos ` (2 subsequent siblings) 3 siblings, 0 replies; 16+ messages in thread From: Ian Eure @ 2024-11-30 17:29 UTC (permalink / raw) To: help-guix Hi Marek, On Sat, Nov 30, 2024, at 4:26 PM, Marek Paśnikowski wrote: > Hello Guix > > I am towards the end of a first pass of packaging the Proton Bridge program to > access my Proton Mail with KMail. > > I have worked through and learned about many peculiarities of Golang build > system. As long as I had an error message, I was able to at least work around > problems. However, the latest build failure is completely cryptic to me, as > its log contains zero error messages. It works fine until I get a "build > failed" summary: > > [snip] > > The entire package code is on my personal channel, in "proton-bridge" branch. > There is one external dependency on the Efraim’s DFSG channel. > I'm not able to replicate your failure, because your channel has some other dependencies I'm missing: $ guix build -v 3 -KL /tmp/sovereign/ proton-bridge --cores=1 guix build: warning: failed to load '(sovereign devices amd64)': no code for module (dfsg main golang) guix build: warning: failed to load '(sovereign packages bradenaw)': no code for module (dfsg main golang) guix build: warning: failed to load '(sovereign systems aisaka)': no code for module (suweren commons sudoers) guix build: warning: failed to load '(sovereign systems akashi)': no code for module (machines thinkpad-x200) guix build: warning: failed to load '(sovereign systems ayase)': no code for module (suweren commons sudoers) guix build: warning: failed to load '(sovereign systems mcdowell)': no code for module (users id1000) guix build: error: proton-bridge: unknown package $ The Guix manual has a Debugging Build Failures[1] section, which has some good general advice for these kinds of problems. I also suggest opening the build log file (its path should be printed near the end of the build's stdout) and reading through there -- the build-system output makes things noisier in a way that can sometimes make it hard to see the true cause of the failure. For whatever reason, it's usually easier for me to spot the problem when I'm paging through the log file, rather than looking at the same output on the terminal. -- Ian [1]: https://guix.gnu.org/manual/devel/en/html_node/Debugging-Build-Failures.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-11-30 16:26 Packaging Proton Bridge: cryptic compilation failure Marek Paśnikowski 2024-11-30 17:29 ` Ian Eure @ 2024-11-30 18:08 ` Cayetano Santos 2024-11-30 18:56 ` Marek Paśnikowski 2024-12-09 16:24 ` Packaging Proton Bridge: Progress Report #1 Marek Paśnikowski 2024-12-10 10:28 ` Packaging Proton Bridge: Progress Report #2 Marek Paśnikowski 3 siblings, 1 reply; 16+ messages in thread From: Cayetano Santos @ 2024-11-30 18:08 UTC (permalink / raw) To: Marek Paśnikowski; +Cc: Guix Help >sam. 30 nov. 2024 at 17:26, Marek Paśnikowski <marek@marekpasnikowski.pl> wrote: > Hello Guix > > I am towards the end of a first pass of packaging the Proton Bridge program to > access my Proton Mail with KMail. > > I have worked through and learned about many peculiarities of Golang build > system. As long as I had an error message, I was able to at least work around > problems. However, the latest build failure is completely cryptic to me, as > its log contains zero error messages. It works fine until I get a "build > failed" summary: The debug for dummies manual advices using the "--keep-failed" flag when you build packages. Using a shell container helps to understand this kind of cryptic messages too. -- Cayetano Santos ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-11-30 18:08 ` Cayetano Santos @ 2024-11-30 18:56 ` Marek Paśnikowski 2024-11-30 19:22 ` Ian Eure 0 siblings, 1 reply; 16+ messages in thread From: Marek Paśnikowski @ 2024-11-30 18:56 UTC (permalink / raw) To: Guix Help; +Cc: Cayetano Santos, Ian Eure [-- Attachment #1: Type: text/plain, Size: 2615 bytes --] On sobota, 30 listopada 2024 19:08:49 CET Cayetano Santos wrote: > >sam. 30 nov. 2024 at 17:26, Marek Paśnikowski <marek@marekpasnikowski.pl> wrote: > > Hello Guix > > > > I am towards the end of a first pass of packaging the Proton Bridge > > program to access my Proton Mail with KMail. > > > > I have worked through and learned about many peculiarities of Golang build > > system. As long as I had an error message, I was able to at least work > > around problems. However, the latest build failure is completely cryptic > > to me, as its log contains zero error messages. It works fine until I > > get a "build > > failed" summary: > The debug for dummies manual advices using the "--keep-failed" flag when > you build packages. Using a shell container helps to understand this kind > of cryptic messages too. > > -- > Cayetano Santos Thank you Ian, Cayetano for swiftly reminding me to Read The Manual. I was so tired with constant tweaking of package after package, that I forgot to go to the basics. I learned that I can source variables to emulate the build environment, in which I issued the same command that go build system uses to build the package. Here is the result, much cleaner with the interesting stuff right at the end: [...] # github.com/ProtonMail/go-crypto/openpgp/packet /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:12:92: undefined: errors.ErrMalformedMessage /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:13:16: undefined: errors.ErrMalformedMessage /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:94:17: undefined: errors.ErrMalformedMessage /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/config_v5.go:6:2: undefined: V5Disabled /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/marker.go:27:33: undefined: packetTypeMarker /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ github.com/ProtonMail/go-crypto/openpgp/packet/padding.go:20:33: undefined: packetPadding I remember faking a Proton’s fork with the upstream package because GitHub failed to find it. It could be the one, or not. At least I have a thread to follow now; and a new tool for deep inspection. [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-11-30 18:56 ` Marek Paśnikowski @ 2024-11-30 19:22 ` Ian Eure 2024-12-05 16:37 ` sebastien 0 siblings, 1 reply; 16+ messages in thread From: Ian Eure @ 2024-11-30 19:22 UTC (permalink / raw) To: Marek Paśnikowski, Guix Help; +Cc: Cayetano Santos Hi Marek, On Sat, Nov 30, 2024, at 6:56 PM, Marek Paśnikowski wrote: > On sobota, 30 listopada 2024 19:08:49 CET Cayetano Santos wrote: >> >sam. 30 nov. 2024 at 17:26, Marek Paśnikowski <marek@marekpasnikowski.pl> > wrote: >> > Hello Guix >> > >> > I am towards the end of a first pass of packaging the Proton Bridge >> > program to access my Proton Mail with KMail. >> > >> > I have worked through and learned about many peculiarities of Golang build >> > system. As long as I had an error message, I was able to at least work >> > around problems. However, the latest build failure is completely cryptic >> > to me, as its log contains zero error messages. It works fine until I >> > get a "build >> > failed" summary: >> The debug for dummies manual advices using the "--keep-failed" flag when >> you build packages. Using a shell container helps to understand this kind >> of cryptic messages too. >> >> -- >> Cayetano Santos > > > Thank you Ian, Cayetano for swiftly reminding me to Read The Manual. I was so > tired with constant tweaking of package after package, that I forgot to go to > the basics. > > I learned that I can source variables to emulate the build environment, in > which I issued the same command that go build system uses to build the > package. Here is the result, much cleaner with the interesting stuff right at > the end: > > [...] > # github.com/ProtonMail/go-crypto/openpgp/packet > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:12:92: > undefined: errors.ErrMalformedMessage > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:13:16: > undefined: errors.ErrMalformedMessage > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:94:17: > undefined: errors.ErrMalformedMessage > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/config_v5.go:6:2: undefined: > V5Disabled > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/marker.go:27:33: undefined: > packetTypeMarker > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > github.com/ProtonMail/go-crypto/openpgp/packet/padding.go:20:33: undefined: > packetPadding > > I remember faking a Proton’s fork with the upstream package because GitHub > failed to find it. It could be the one, or not. At least I have a thread to > follow now; and a new tool for deep inspection. > It's been a while since I've worked in Go, but based on: https://github.com/ProtonMail/go-crypto/blob/main/openpgp/packet/packet_sequence.go#L9 ...I suspect the go-crypto repository houses multiple Go packages, which all need to be packaged individually in Guix. It looks like your Guix packages aren't doing that, which may explain the error you're getting. This is just a hunch, it's been a few years since I wrote Go, and I never dealt with packaging beyond stuffing static binaries into Docker containers -- but it feels at least close to the root of the issue to me. -- Ian ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-11-30 19:22 ` Ian Eure @ 2024-12-05 16:37 ` sebastien 2024-12-06 13:34 ` woshilapin 2024-12-06 18:01 ` Marek Paśnikowski 0 siblings, 2 replies; 16+ messages in thread From: sebastien @ 2024-12-05 16:37 UTC (permalink / raw) To: Ian Eure; +Cc: Marek Paśnikowski, help-guix, Cayetano Santos [-- Attachment #1.1: Type: text/plain, Size: 3963 bytes --] Le samedi 30 novembre 2024 à 8:22 PM, Ian Eure <ian@retrospec.tv> a écrit : > > > Hi Marek, > > On Sat, Nov 30, 2024, at 6:56 PM, Marek Paśnikowski wrote: > > > On sobota, 30 listopada 2024 19:08:49 CET Cayetano Santos wrote: > > > > > > sam. 30 nov. 2024 at 17:26, Marek Paśnikowski marek@marekpasnikowski.pl > > > > wrote: > > > > Hello Guix > > > > > > > > I am towards the end of a first pass of packaging the Proton Bridge > > > > program to access my Proton Mail with KMail. > > > > > > > > I have worked through and learned about many peculiarities of Golang build > > > > system. As long as I had an error message, I was able to at least work > > > > around problems. However, the latest build failure is completely cryptic > > > > to me, as its log contains zero error messages. It works fine until I > > > > get a "build > > > > failed" summary: > > > > The debug for dummies manual advices using the "--keep-failed" flag when > > > > you build packages. Using a shell container helps to understand this kind > > > > of cryptic messages too. > > > > > > -- > > > Cayetano Santos > > > > Thank you Ian, Cayetano for swiftly reminding me to Read The Manual. I was so > > tired with constant tweaking of package after package, that I forgot to go to > > the basics. > > > > I learned that I can source variables to emulate the build environment, in > > which I issued the same command that go build system uses to build the > > package. Here is the result, much cleaner with the interesting stuff right at > > the end: > > > > [...] > > # github.com/ProtonMail/go-crypto/openpgp/packet > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:12:92: > > undefined: errors.ErrMalformedMessage > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:13:16: > > undefined: errors.ErrMalformedMessage > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:94:17: > > undefined: errors.ErrMalformedMessage > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/config_v5.go:6:2: undefined: > > V5Disabled > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/marker.go:27:33: undefined: > > packetTypeMarker > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > github.com/ProtonMail/go-crypto/openpgp/packet/padding.go:20:33: undefined: > > packetPadding > > > > I remember faking a Proton’s fork with the upstream package because GitHub > > failed to find it. It could be the one, or not. At least I have a thread to > > follow now; and a new tool for deep inspection. > > > It's been a while since I've worked in Go, but based on: https://github.com/ProtonMail/go-crypto/blob/main/openpgp/packet/packet_sequence.go#L9 > > ...I suspect the go-crypto repository houses multiple Go packages, which all need to be packaged individually in Guix. It looks like your Guix packages aren't doing that, which may explain the error you're getting. This is just a hunch, it's been a few years since I wrote Go, and I never dealt with packaging beyond stuffing static binaries into Docker containers -- but it feels at least close to the root of the issue to me. > > -- Ian Hi, As a everyday user of ProtonMail/guix for work i'm also interested to help you on this task. Perhaps could you provide a chan that contain only the dependencies and manifest to build proton-bridge ? That help us to reproduce the build and try to package and push go package that miss. Best regards, SR [-- Attachment #1.2: publickey - s.rey.coyrehourcq@proton.me - 0xC3237850.asc --] [-- Type: application/pgp-keys, Size: 669 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 249 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-12-05 16:37 ` sebastien @ 2024-12-06 13:34 ` woshilapin 2024-12-06 18:01 ` Marek Paśnikowski 1 sibling, 0 replies; 16+ messages in thread From: woshilapin @ 2024-12-06 13:34 UTC (permalink / raw) To: sebastien; +Cc: Ian Eure, Marek Paśnikowski, help-guix, Cayetano Santos Hi, > As a everyday user of ProtonMail/guix for work i'm also interested to help you on this task. Perhaps could you provide a chan that contain only the dependencies and manifest to build proton-bridge ? > Just chiming in, did you know there was also `hydroxide`[1], already packaged into `guix`, and that has worked perfectly well for me as a proton bridge? [1] https://packages.guix.gnu.org/packages/hydroxide/0.2.29/ Hope this helps. -- woshilapin aka Jean SIMARD ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: cryptic compilation failure 2024-12-05 16:37 ` sebastien 2024-12-06 13:34 ` woshilapin @ 2024-12-06 18:01 ` Marek Paśnikowski 1 sibling, 0 replies; 16+ messages in thread From: Marek Paśnikowski @ 2024-12-06 18:01 UTC (permalink / raw) To: sebastien, help-guix [-- Attachment #1: Type: text/plain, Size: 7341 bytes --] On czwartek, 5 grudnia 2024 17:37:05 CET you wrote: > Le samedi 30 novembre 2024 à 8:22 PM, Ian Eure <ian@retrospec.tv> a écrit : > > Hi Marek, > > > > On Sat, Nov 30, 2024, at 6:56 PM, Marek Paśnikowski wrote: > > > On sobota, 30 listopada 2024 19:08:49 CET Cayetano Santos wrote: > > > > > sam. 30 nov. 2024 at 17:26, Marek Paśnikowski > > > > > marek@marekpasnikowski.pl > > > > > wrote: > > > > > Hello Guix > > > > > > > > > > > > > > > I am towards the end of a first pass of packaging the Proton Bridge > > > > > program to access my Proton Mail with KMail. > > > > > > > > > > > > > > > I have worked through and learned about many peculiarities of Golang > > > > > build > > > > > system. As long as I had an error message, I was able to at least > > > > > work > > > > > around problems. However, the latest build failure is completely > > > > > cryptic > > > > > to me, as its log contains zero error messages. It works fine until > > > > > I > > > > > get a "build > > > > > failed" summary: > > > > > The debug for dummies manual advices using the "--keep-failed" flag > > > > > when > > > > > you build packages. Using a shell container helps to understand this > > > > > kind > > > > > of cryptic messages too. > > > > > > > > -- > > > > Cayetano Santos > > > > > > Thank you Ian, Cayetano for swiftly reminding me to Read The Manual. I > > > was so tired with constant tweaking of package after package, that I > > > forgot to go to the basics. > > > > > > > > > I learned that I can source variables to emulate the build environment, > > > in > > > which I issued the same command that go build system uses to build the > > > package. Here is the result, much cleaner with the interesting stuff > > > right at the end: > > > > > > > > > [...] > > > # github.com/ProtonMail/go-crypto/openpgp/packet > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:12:92: > > > undefined: errors.ErrMalformedMessage > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:13:16: > > > undefined: errors.ErrMalformedMessage > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/packet_sequence.go:94:17: > > > undefined: errors.ErrMalformedMessage > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/config_v5.go:6:2: > > > undefined: > > > V5Disabled > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/marker.go:27:33: > > > undefined: > > > packetTypeMarker > > > /tmp/guix-build-go-github-com-protonmail-go-proton-api-0.4.0.drv-0/src/ > > > github.com/ProtonMail/go-crypto/openpgp/packet/padding.go:20:33: > > > undefined: > > > packetPadding > > > > > > > > > I remember faking a Proton’s fork with the upstream package because > > > GitHub > > > failed to find it. It could be the one, or not. At least I have a thread > > > to > > > follow now; and a new tool for deep inspection. > > > > It's been a while since I've worked in Go, but based on: > > https://github.com/ProtonMail/go-crypto/blob/main/openpgp/packet/packet_s > > equence.go#L9 > > > > > > ...I suspect the go-crypto repository houses multiple Go packages, which > > all need to be packaged individually in Guix. It looks like your Guix > > packages aren't doing that, which may explain the error you're getting. > > This is just a hunch, it's been a few years since I wrote Go, and I never > > dealt with packaging beyond stuffing static binaries into Docker > > containers -- but it feels at least close to the root of the issue to me. > > > > > > -- Ian > > Hi, > > As a everyday user of ProtonMail/guix for work i'm also interested to help > you on this task. Perhaps could you provide a chan that contain only the > dependencies and manifest to build proton-bridge ? > > > That help us to reproduce the build and try to package and push go package > that miss. > > Best regards, > SR Thank you for your offer. I accept it with gratitude. During previous 3 days I was spinning in circles trying to pin down a correct combination of dependency versions with the same function prototype. This morning I found one such combination and was able to push through to the top level, where the Go component of proton-bridge itself fails to build. Unfortunately I still can see the same dreaded error of " go build log type func(a Address, b Address) int of func(a, b Address) Int {…} does not match inferred type func(a Address, b Address) bool for func(a E, b E ) bool " I have prepared the "proton-bridge" bridge of my channel in a way preserving the other module files, but hopefully isolating them from use by Guix: " .guix-channel (channel (version 0) (directory "proton-bridge") ; <--- channel-root/proton-bridge/sovereign/... (dependencies (channel (introduction (channel-introduction (version 0) (commit "61c9f87404fcb97e20477ec379b643099e45f1db") (signer "A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351"))) (name efraim-dfsg) (url "https://git.sr.ht/~efraim/my-guix")) (channel (introduction (channel-introduction (version 0) (commit "7c67c3a9f299517bfc4ce8235628657898dd26b2") (signer "CD2D 5EAA A98C CB37 DA91 D6B0 5F58 1664 7F8B E551"))) (name guixrus) (url "https://git.sr.ht/~whereiseveryone/guixrus")) (channel (introduction (channel-introduction (version 0) (commit "897c1a470da759236cc11798f4e0a5f7d4d59fbc") (signer "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))) (name nonguix) (url "https://gitlab.com/nonguix/nonguix")) (channel (introduction (channel-introduction (version 0) (commit "c24ce7cb11e74da13d491f9de3c4b7040a069f43") (signer "590E 500F E39D 26B3 E60B 743B 6D81 B120 7711 899F"))) (name deployment) (url "https://git.marekpasnikowski.pl/git/deployment.git")) (channel (introduction (channel-introduction (version 0) (commit "7d17bded11ef1239592e6e5abd40ceee1e99cbb8") (signer "590E 500F E39D 26B3 E60B 743B 6D81 B120 7711 899F"))) (name distribution) (url "https://git.marekpasnikowski.pl/git/distribution.git"))))) " My intention is to preserve the define-module headers while keeping them accurate. Do let me know if I misunderstood the (directory) field. Please be understanding of the changing code style. Throghout the last two weeks I have iterated through multiple styles with increasing focus on efficiency of implementation. Towards the end I have developed an idea of a universal origin function which constructs an origin object with data supplied to it inside a given package definition. At this point I am more concerned with getting to the finish line than keeping the style consistent. I am planning to rewrite everything from scratch once a working solution is found. [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-11-30 16:26 Packaging Proton Bridge: cryptic compilation failure Marek Paśnikowski 2024-11-30 17:29 ` Ian Eure 2024-11-30 18:08 ` Cayetano Santos @ 2024-12-09 16:24 ` Marek Paśnikowski 2024-12-09 16:38 ` Ian Eure 2024-12-10 10:28 ` Packaging Proton Bridge: Progress Report #2 Marek Paśnikowski 3 siblings, 1 reply; 16+ messages in thread From: Marek Paśnikowski @ 2024-12-09 16:24 UTC (permalink / raw) To: help-guix [-- Attachment #1: Type: text/plain, Size: 809 bytes --] I managed to break through version incompatibilites thanks to discovery of the guix:build-system:go:go-version->git-ref function, which allowed me to use the specifications in go.mod files directly. I am currently blocked on what seems to be an actual upstream coding bug, for which I filed a report: https://github.com/ProtonMail/proton-bridge/issues/511 It boils down to an undefined variable reference, which used to be defined two years ago. Build error: src/github.com/ProtonMail/proton-bridge/v3/internal/frontend/cli/system.go: 48:43: undefined: bridge.Credits Commit reference: https://github.com/ProtonMail/proton-bridge/commit/ 77cd2955f1413c96a1d987d0d7f9d8ecf6a8ad49 The removed code snippet in file internal/bridge/credits.go : package bridge const Credits = "string of go module paths" [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-12-09 16:24 ` Packaging Proton Bridge: Progress Report #1 Marek Paśnikowski @ 2024-12-09 16:38 ` Ian Eure 2024-12-09 16:47 ` Marek Paśnikowski 0 siblings, 1 reply; 16+ messages in thread From: Ian Eure @ 2024-12-09 16:38 UTC (permalink / raw) To: help-guix Hi Marek, On Mon, Dec 9, 2024, at 4:24 PM, Marek Paśnikowski wrote: > I managed to break through version incompatibilites thanks to discovery of the > guix:build-system:go:go-version->git-ref function, which allowed me to use the > specifications in go.mod files directly. > > I am currently blocked on what seems to be an actual upstream coding bug, for > which I filed a report: > https://github.com/ProtonMail/proton-bridge/issues/511 > > It boils down to an undefined variable reference, which used to be defined two > years ago. > > Build error: > src/github.com/ProtonMail/proton-bridge/v3/internal/frontend/cli/system.go: > 48:43: undefined: bridge.Credits > > Commit reference: > https://github.com/ProtonMail/proton-bridge/commit/ > 77cd2955f1413c96a1d987d0d7f9d8ecf6a8ad49 > > The removed code snippet in file internal/bridge/credits.go : > package bridge > const Credits = "string of go module paths" > This isn't an upstream bug, it's an error in your package. As the "(generated)" comment in .gitignore in your liked commit implies, this file is now codegenned as part of the build: https://github.com/ProtonMail/proton-bridge/blob/4f4a2c3fd8f7304a9b3ff81d3f42828b95296b7f/Makefile#L351-L353 Since you're not running the command that creates the file, the build fails. -- Ian ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-12-09 16:38 ` Ian Eure @ 2024-12-09 16:47 ` Marek Paśnikowski 2024-12-09 16:52 ` Ian Eure 0 siblings, 1 reply; 16+ messages in thread From: Marek Paśnikowski @ 2024-12-09 16:47 UTC (permalink / raw) To: help-guix, Ian Eure [-- Attachment #1: Type: text/plain, Size: 1581 bytes --] On poniedziałek, 9 grudnia 2024 17:38:20 CET Ian Eure wrote: > Hi Marek, > > On Mon, Dec 9, 2024, at 4:24 PM, Marek Paśnikowski wrote: > > I managed to break through version incompatibilites thanks to discovery of > > the guix:build-system:go:go-version->git-ref function, which allowed me > > to use the specifications in go.mod files directly. > > > > I am currently blocked on what seems to be an actual upstream coding bug, > > for which I filed a report: > > https://github.com/ProtonMail/proton-bridge/issues/511 > > > > It boils down to an undefined variable reference, which used to be defined > > two years ago. > > > > Build error: > > src/github.com/ProtonMail/proton-bridge/v3/internal/frontend/cli/system.go > > : > > 48:43: undefined: bridge.Credits > > > > Commit reference: > > https://github.com/ProtonMail/proton-bridge/commit/ > > 77cd2955f1413c96a1d987d0d7f9d8ecf6a8ad49 > > > > The removed code snippet in file internal/bridge/credits.go : > > package bridge > > const Credits = "string of go module paths" > > This isn't an upstream bug, it's an error in your package. As the > "(generated)" comment in .gitignore in your liked commit implies, this file > is now codegenned as part of the build: > https://github.com/ProtonMail/proton-bridge/blob/4f4a2c3fd8f7304a9b3ff81d3f > 42828b95296b7f/Makefile#L351-L353 > > Since you're not running the command that creates the file, the build fails. > > -- Ian Thank you for your feedback. Does this mean I will have to `make` the project before `building go`? [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-12-09 16:47 ` Marek Paśnikowski @ 2024-12-09 16:52 ` Ian Eure 2024-12-09 19:15 ` Marek Paśnikowski 0 siblings, 1 reply; 16+ messages in thread From: Ian Eure @ 2024-12-09 16:52 UTC (permalink / raw) To: Marek Paśnikowski, help-guix Hi Marek, On Mon, Dec 9, 2024, at 4:47 PM, Marek Paśnikowski wrote: > > Does this mean I will have to `make` the project before `building go`? > I'm not sure how the go-build-system interacts with stuff like this, or what complexity the Makefile may bring. Probably the simplest thing is to add a build phase which executes the utility script at the corresponding point in your build, but this is ultimately your judgement call. -- Ian ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-12-09 16:52 ` Ian Eure @ 2024-12-09 19:15 ` Marek Paśnikowski 2024-12-09 19:33 ` Ian Eure 0 siblings, 1 reply; 16+ messages in thread From: Marek Paśnikowski @ 2024-12-09 19:15 UTC (permalink / raw) To: Ian Eure, help-guix [-- Attachment #1: Type: text/plain, Size: 9001 bytes --] On poniedziałek, 9 grudnia 2024 17:52:36 CET you wrote: > Hi Marek, > > On Mon, Dec 9, 2024, at 4:47 PM, Marek Paśnikowski wrote: > > Does this mean I will have to `make` the project before `building go`? > > I'm not sure how the go-build-system interacts with stuff like this, or what > complexity the Makefile may bring. Probably the simplest thing is to add a > build phase which executes the utility script at the corresponding point in > your build, but this is ultimately your judgement call. > > -- Ian I copied and extended the invocation of "make" from the gnu-build-system: (arguments (list #:phases '(modify-phases %standard-phases (add-before 'build 'make-project (lambda* (#:key (make-flags (list "build-nogui")) (parallel-build? #t) #:allow-other-keys) (invoke "find" "." "-name" "Makefile") (invoke "ls" "-al" "./src/github.com/ProtonMail/proton-bridge/v3") (apply invoke "make" "-e" "-C" "./src/github.com/ProtonMail/proton-bridge/v3" "--debug=basic" `(,@(if parallel-build? `("-j" ,(number->string (parallel-job-count))) '()) ,@make-flags))))) #:embed-files '(list "children" "nodes" "text") #:unpack-path "github.com/ProtonMail/proton-bridge/v3" #:import-path "github.com/ProtonMail/proton-bridge/v3/cmd/Desktop- Bridge")) I am getting some kind of progress, pasted below. Before continuing, I would appreciate confirmation whether I am on the right track. Some lines in the output state that some files do not exist. Having no experience actually working with make files, I am not sure if this is expected. Should I not worry about the "file does not exist" message class? Should I change anything in my invocation of "make"? starting phase `make-project' ./src/github.com/flynn-archive/go-shlex/Makefile ./src/github.com/chzyer/logex/Makefile ./src/github.com/yuin/goldmark/Makefile ./src/github.com/yuin/goldmark/_benchmark/cmark/Makefile ./src/github.com/hashicorp/go-multierror/Makefile ./src/github.com/cpuguy83/go-md2man/Makefile ./src/github.com/vmihailenco/tagparser/v2/Makefile ./src/github.com/vmihailenco/msgpack/v5/Makefile ./src/github.com/getsentry/sentry-go/Makefile ./src/github.com/mattn/go-sqlite3/_example/mod_vtable/Makefile ./src/github.com/mattn/go-sqlite3/_example/custom_driver_name/Makefile ./src/github.com/mattn/go-sqlite3/_example/mod_regexp/Makefile ./src/github.com/prometheus/procfs/Makefile ./src/github.com/Masterminds/semver/v3/Makefile ./src/github.com/elastic/go-sysinfo/Makefile ./src/github.com/cloudflare/circl/Makefile ./src/github.com/pkg/errors/Makefile ./src/github.com/ProtonMail/proton-bridge/v3/Makefile ./src/google.golang.org/grpc/Makefile ./src/golang.org/x/text/collate/tools/colcmp/Makefile total 368 drwxr-xr-x 12 nixbld nixbld 4096 Jan 1 1970 . drwxr-xr-x 3 nixbld nixbld 4096 Dec 9 18:55 .. -r--r--r-- 1 nixbld nixbld 26 Jan 1 1970 .gitattributes drwxr-xr-x 3 nixbld nixbld 4096 Jan 1 1970 .github -r--r--r-- 1 nixbld nixbld 576 Jan 1 1970 .gitignore -r--r--r-- 1 nixbld nixbld 1469 Jan 1 1970 .gitlab-ci.yml -r--r--r-- 1 nixbld nixbld 98 Jan 1 1970 .gitmodules -r--r--r-- 1 nixbld nixbld 10074 Jan 1 1970 .golangci.yml -r--r--r-- 1 nixbld nixbld 131 Jan 1 1970 .grype.yaml -r--r--r-- 1 nixbld nixbld 3052 Jan 1 1970 BUILDS.md -r--r--r-- 1 nixbld nixbld 498 Jan 1 1970 CONTRIBUTING.md -r--r--r-- 1 nixbld nixbld 18002 Jan 1 1970 COPYING_NOTES.md -r--r--r-- 1 nixbld nixbld 118347 Jan 1 1970 Changelog.md -r--r--r-- 1 nixbld nixbld 32473 Jan 1 1970 LICENSE -r--r--r-- 1 nixbld nixbld 16157 Jan 1 1970 Makefile -r--r--r-- 1 nixbld nixbld 4695 Jan 1 1970 README.md -r--r--r-- 1 nixbld nixbld 141 Jan 1 1970 TODO.md drwxr-xr-x 2 nixbld nixbld 4096 Jan 1 1970 ci drwxr-xr-x 4 nixbld nixbld 4096 Jan 1 1970 cmd drwxr-xr-x 3 nixbld nixbld 4096 Jan 1 1970 dist drwxr-xr-x 3 nixbld nixbld 4096 Jan 1 1970 extern -r--r--r-- 1 nixbld nixbld 6641 Jan 1 1970 go.mod -r--r--r-- 1 nixbld nixbld 74635 Jan 1 1970 go.sum drwxr-xr-x 35 nixbld nixbld 4096 Jan 1 1970 internal drwxr-xr-x 14 nixbld nixbld 4096 Jan 1 1970 pkg drwxr-xr-x 2 nixbld nixbld 4096 Jan 1 1970 release-notes drwxr-xr-x 7 nixbld nixbld 4096 Jan 1 1970 tests drwxr-xr-x 14 nixbld nixbld 4096 Dec 9 18:55 utils GNU Make 4.4.1 Built for x86_64-unknown-linux-gnu Copyright (C) 1988-2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Reading makefiles... make: Entering directory '/tmp/guix-build-go-github-com-protonmail-proton- bridge-3.15.1.drv-0/src/github.com/ProtonMail/proton-bridge/v3' Updating makefiles.... Updating goal targets.... File 'build-nogui' does not exist. File 'proton-bridge' does not exist. File 'gofiles' does not exist. File 'internal/bridge/credits.go' does not exist. Must remake target 'internal/bridge/credits.go'. cd ./utils/ && ./credits.sh bridge File 'build-launcher' does not exist. Must remake target 'build-launcher'. go build -tags='' -ldflags '-X github.com/ProtonMail/proton-bridge/v3/ internal/constants.Version=3.15.1+git -X github.com/ProtonMail/proton-bridge/ v3/internal/constants.Revision=NOGIT -X github.com/ProtonMail/proton-bridge/ v3/internal/constants.Tag=NOGIT -X github.com/ProtonMail/proton-bridge/v3/ internal/constants.BuildTime=2024-12-09T18:55:33+0000 -X "github.com/ ProtonMail/proton-bridge/v3/internal/constants.FullAppName=Proton Mail Bridge" -X github.com/ProtonMail/proton-bridge/v3/internal/constants.BuildEnv=dev' -o "proton-bridge" "/tmp/guix-build-go-github-com-protonmail-proton- bridge-3.15.1.drv-0/src/github.com/ProtonMail/proton-bridge/v3/cmd/launcher/" egrep: warning: egrep is obsolescent; using grep -E egrep: warning: egrep is obsolescent; using grep -E egrep: warning: egrep is obsolescent; using grep -E File 'build-nogui' does not exist. File 'proton-bridge' does not exist. File 'gofiles' does not exist. Must remake target 'gofiles'. Successfully remade target file 'gofiles'. Must remake target 'proton-bridge'. go build -tags='' -ldflags '-X github.com/ProtonMail/proton-bridge/v3/ internal/constants.Version=3.15.1+git -X github.com/ProtonMail/proton-bridge/ v3/internal/constants.Revision=NOGIT -X github.com/ProtonMail/proton-bridge/ v3/internal/constants.Tag=NOGIT -X github.com/ProtonMail/proton-bridge/v3/ internal/constants.BuildTime=2024-12-09T18:55:33+0000 -X "github.com/ ProtonMail/proton-bridge/v3/internal/constants.FullAppName=Proton Mail Bridge" -X github.com/ProtonMail/proton-bridge/v3/internal/constants.BuildEnv=dev' -o "proton-bridge" "./cmd/Desktop-Bridge/" File 'build-nogui' does not exist. # github.com/ProtonMail/proton-bridge/v3/internal/app internal/app/app.go:105:2: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag internal/app/app.go:113:2: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag internal/app/app.go:170:4: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag internal/app/app.go:176:4: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag internal/app/app.go:182:4: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag internal/app/app.go:212:3: unknown field DisableDefaultText in struct literal of type "github.com/urfave/cli/v2".BoolFlag make: *** [Makefile:111: proton-bridge] Error 1 make: Leaving directory '/tmp/guix-build-go-github-com-protonmail-proton- bridge-3.15.1.drv-0/src/github.com/ProtonMail/proton-bridge/v3' error: in phase 'make-project': uncaught exception: %exception #<&invoke-error program: "make" arguments: ("-e" "-C" "./src/ github.com/ProtonMail/proton-bridge/v3" "--debug=basic" "-j" "4" "build- nogui") exit-status: 2 term-signal: #f stop-signal: #f> phase `make-project' failed after 74.2 seconds command "make" "-e" "-C" "./src/github.com/ProtonMail/proton-bridge/v3" "-- debug=basic" "-j" "4" "build-nogui" failed with status 2 -- Marek Pasnikowski [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #1 2024-12-09 19:15 ` Marek Paśnikowski @ 2024-12-09 19:33 ` Ian Eure 0 siblings, 0 replies; 16+ messages in thread From: Ian Eure @ 2024-12-09 19:33 UTC (permalink / raw) To: Marek Paśnikowski; +Cc: help-guix Hi Marek, Marek Paśnikowski <marek@marekpasnikowski.pl> writes: > I copied and extended the invocation of "make" from the > gnu-build-system: > (arguments > (list > #:phases '(modify-phases > %standard-phases > (add-before > 'build > 'make-project > (lambda* > (#:key (make-flags (list "build-nogui")) > (parallel-build? #t) > #:allow-other-keys) > (invoke "find" > "." > "-name" > "Makefile") > (invoke "ls" > "-al" > "./src/github.com/ProtonMail/proton-bridge/v3") > > (apply invoke > "make" > "-e" > "-C" > "./src/github.com/ProtonMail/proton-bridge/v3" > "--debug=basic" > `(,@(if parallel-build? > `("-j" ,(number->string > (parallel-job-count))) > '()) > ,@make-flags))))) > #:embed-files '(list "children" "nodes" "text") > #:unpack-path "github.com/ProtonMail/proton-bridge/v3" > #:import-path > "github.com/ProtonMail/proton-bridge/v3/cmd/Desktop- > Bridge")) > > I am getting some kind of progress, pasted below. Before > continuing, I would > appreciate confirmation whether I am on the right track. > You don’t need to copy anything from gnu-build-system, so your approach is unnecessarily complicated and duplicates work go-build-system needs to do. Replace the lambda in that phase with a (lambda _) which calls: (invoke "make" "gofiles") Or: (with-directory-excursion "utils" (invoke "./credits.sh" "bridge")) ...which is what the Makefile runs to generate the credits source. -- Ian ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #2 2024-11-30 16:26 Packaging Proton Bridge: cryptic compilation failure Marek Paśnikowski ` (2 preceding siblings ...) 2024-12-09 16:24 ` Packaging Proton Bridge: Progress Report #1 Marek Paśnikowski @ 2024-12-10 10:28 ` Marek Paśnikowski 2024-12-10 14:08 ` Suhail Singh 3 siblings, 1 reply; 16+ messages in thread From: Marek Paśnikowski @ 2024-12-10 10:28 UTC (permalink / raw) To: help-guix I successfully built target bridge-nogui . The last step required implementation of a 'make' phase in the go build process. I considered splitting out the go component into its own package, to be an input of a qt package, but was not able to do it correctly. Implementation of a go process in the gnu, or qt, build system is not even worth considering. Thus I settled on invocation of "make" with some flags to make it work in the go build system. I also decided against any further optimization of the make invocation, because I am planning to implement all the build targets defined by upstream, if possible. At this point, I need to rest a little. I will test the binary I built, see if it even works. After that I am going to rewrite the module in a single style. Only then I will work on the other targets. I also need to properly learn the peculiarities of the Go build system. I would not be able to go this far without using random elements found in other Go packages. It is unfortunate, that the build system reference page is missing some key concepts in the Go process. https://guix.gnu.org/manual/en/html_node/Build-Systems.html Marek Pasnikowski ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Packaging Proton Bridge: Progress Report #2 2024-12-10 10:28 ` Packaging Proton Bridge: Progress Report #2 Marek Paśnikowski @ 2024-12-10 14:08 ` Suhail Singh 0 siblings, 0 replies; 16+ messages in thread From: Suhail Singh @ 2024-12-10 14:08 UTC (permalink / raw) To: Marek Paśnikowski; +Cc: help-guix Marek Paśnikowski <marek@marekpasnikowski.pl> writes: > I would not be able to go this far without using random elements found > in other Go packages. It is unfortunate, that the build system > reference page is missing some key concepts in the Go process. > https://guix.gnu.org/manual/en/html_node/Build-Systems.html Please note that the snapshot version of the manual is available at <https://guix.gnu.org/manual/devel/en/html_node/Build-Systems.html> instead. As well, please consider submitting a patch to improve our existing documentation afterwards. -- Suhail ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-12-10 14:34 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-30 16:26 Packaging Proton Bridge: cryptic compilation failure Marek Paśnikowski 2024-11-30 17:29 ` Ian Eure 2024-11-30 18:08 ` Cayetano Santos 2024-11-30 18:56 ` Marek Paśnikowski 2024-11-30 19:22 ` Ian Eure 2024-12-05 16:37 ` sebastien 2024-12-06 13:34 ` woshilapin 2024-12-06 18:01 ` Marek Paśnikowski 2024-12-09 16:24 ` Packaging Proton Bridge: Progress Report #1 Marek Paśnikowski 2024-12-09 16:38 ` Ian Eure 2024-12-09 16:47 ` Marek Paśnikowski 2024-12-09 16:52 ` Ian Eure 2024-12-09 19:15 ` Marek Paśnikowski 2024-12-09 19:33 ` Ian Eure 2024-12-10 10:28 ` Packaging Proton Bridge: Progress Report #2 Marek Paśnikowski 2024-12-10 14:08 ` Suhail Singh
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).