GNOME Bugzilla – Bug 554121
gmime-2.4.0 is "slottable" but not its documentation
Last modified: 2008-10-04 01:25:46 UTC
Heya, I was trying to update the ebuild on gentoo and here is what I have: * Detected file collision(s): * * /usr/share/gapi-2.0/gmime-api.xml * /usr/share/gtk-doc/html/gmime/gmime-gmime-header.html * /usr/share/gtk-doc/html/gmime/Filters.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-param.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-from.html * /usr/share/gtk-doc/html/gmime/home.png * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-filter.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-multipart-signed.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-fs.html * /usr/share/gtk-doc/html/gmime/gmime-gmime.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-null.html * /usr/share/gtk-doc/html/gmime/core.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-enriched.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-object.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-message-part.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream.html * /usr/share/gtk-doc/html/gmime/up.png * /usr/share/gtk-doc/html/gmime/gmime-gmime-message-partial.html * /usr/share/gtk-doc/html/gmime/gmime-filters.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-cipher-context.html * /usr/share/gtk-doc/html/gmime/gmime.devhelp * /usr/share/gtk-doc/html/gmime/gmime-gmime-utils.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-session-simple.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-basic.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-multipart-encrypted.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-gzip.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-gpg-context.html * /usr/share/gtk-doc/html/gmime/Sessions.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-multipart.html * /usr/share/gtk-doc/html/gmime/gmime-internet-address.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-iconv.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-mmap.html * /usr/share/gtk-doc/html/gmime/gmime.devhelp2 * /usr/share/gtk-doc/html/gmime/gmime-changes-2-0.html * /usr/share/gtk-doc/html/gmime/Headers.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-mem.html * /usr/share/gtk-doc/html/gmime/MimeParts.html * /usr/share/gtk-doc/html/gmime/classes.html * /usr/share/gtk-doc/html/gmime/index.html * /usr/share/gtk-doc/html/gmime/gmime-compiling.html * /usr/share/gtk-doc/html/gmime/left.png * /usr/share/gtk-doc/html/gmime/gmime-gmime-data-wrapper.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-strip.html * /usr/share/gtk-doc/html/gmime/gmime-building.html * /usr/share/gtk-doc/html/gmime/index.sgml * /usr/share/gtk-doc/html/gmime/InternetAddresses.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-crlf.html * /usr/share/gtk-doc/html/gmime/gmime-changes-2-2.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-yenc.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-charset.html * /usr/share/gtk-doc/html/gmime/gmime-resources.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-content-type.html * /usr/share/gtk-doc/html/gmime/style.css * /usr/share/gtk-doc/html/gmime/Parsers.html * /usr/share/gtk-doc/html/gmime/DataWrappers.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-disposition.html * /usr/share/gtk-doc/html/gmime/right.png * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-md5.html * /usr/share/gtk-doc/html/gmime/gmime.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-best.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-message.html * /usr/share/gtk-doc/html/gmime/CipherContexts.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-session.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-html.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-filter-windows.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-buffer.html * /usr/share/gtk-doc/html/gmime/gmime-data-wrappers.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-cat.html * /usr/share/gtk-doc/html/gmime/ch01.html * /usr/share/gtk-doc/html/gmime/gmime-streams.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-iconv-utils.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-stream-file.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-parser.html * /usr/share/gtk-doc/html/gmime/Streams.html * /usr/share/gtk-doc/html/gmime/fundamentals.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-charset.html * /usr/share/gtk-doc/html/gmime/gmime-question-index.html * /usr/share/gtk-doc/html/gmime/gmime-gmime-part.html * /usr/lib/debug/usr/bin/gmime-uudecode.debug * /usr/lib/debug/usr/bin/gmime-uuencode.debug * /usr/bin/gmime-uuencode * /usr/bin/gmime-uudecode * /usr/lib64/mono/gmime-sharp/gmime-sharp.dll So even if gmime is supposed to be parallel installable between 2.2 and 2.4, it seems it's sharp dll and documentation can't. Don't worry about the gmime-uuencode, it's a specific gentoo change to allow multiple uuencode to coexist. For doc, the solution should consist of adding the slot (2.4) to DOC_MODULE
fixed the install of /usr/share/gapi-2.0/gmime-api.xml, dunno why whoever wrote the makefile fu made it install that. I've tried setting the TARGET_DIR for the docs, but it gets ignored - maybe I'll have to make a copy of gtk-doc.make rather than pulling in the version from the installed gtk-docs package. a better solution would be to fix the gtk-doc.make rules in the gtk-doc package to use: TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE_VERSIONED) if DOC_MODULE_VERSIONED is defined. that would solve your docs issue. /usr/lib64/mono/gmime-sharp/gmime-sharp.dll should just be a symlink which I guess is made by gacutil, because the real .dll should be installed into /usr/lib64/mono/gac/gmime-sharp/2.4.0.0__2b75c2ad004c52e4/gmime-sharp.dll
alright, so what shall I do about gmime-sharp ? is it supported to have dll of both slots installed ? how would a program compiled with 2.2 react in presence of 2.4 with the symlink ? should the symlink contain the version of the slot ? sorry I'm a mono n00b :)
those are good questions, I'm not totally sure... fwiw, the only program that uses gmime-2.2's gmime-sharp.dll is beagle and right now, no program sues gmime-2.4's gmime-sharp.dll, but beagle will likely be the first to use it. my suggestion would be to follow beagle's development and see when they finally move to gmime-2.4, when they do that, stop shipping gmime-2.2's gmime-sharp and switch over to gmime-2.4's gmime-sharp the debian gmime package maintainer is also the mono package maintainer iirc, so maybe I can poke him to find out if he has ideas and get back to you with a solution. I'm pretty sure that you can have both gmime-sharp.dll's installed at the same time (2.4 is strong signed with a different key than 2.2), just not sure if the symlink will throw a wrench into the loading.
ok, I have the gmime-sharp.dll issue resolved in svn now, I made it install into a versioned directory ${prefix}/mono/gmime-sharp-2.4/ now I just gotta figure out how I want to solve the docs issue. I may just pull in my own version of gtk-doc.make and modify it to install into a versioned prefix. I hope to have a 2.4.1 with these fixes out sometime this weekend. thanks for bringing these issues to my attention, I totally didn't even notice them when I was checking that 2.4 was parallel installable :(
ok, just released 2.4.1 with fixes for all of these issues. hopefully you won't find more :p
Created attachment 119822 [details] [review] gmime-HEAD-slot-doc.patch actually if you apply this patch on revision 1482, it should make it nicely go into /usr/share/gtk-doc/gmime-2.4/ with no particular hassle. I've commited some entities in gmime-docs.xml because they would prevent doc compilation on my system, feel free to drop that part. docs/reference/Makefile.am | 3 +-- docs/reference/gmime-docs.sgml | 4 ++-- gtk-doc.make | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-)
ah too late for a patch :) well, I'm still happy to say 2.4.1 is now collision-free, thanks very much.
Created attachment 119837 [details] [review] 2.4.1 gtk-doc patch Please reopen; unfortunately 2.4.1 doesn't completely fix these issues. Actually, Gilles solution was much closer. Devhelp requires that the .devhelp file have the same name as the parent directory. Furthermore, the book needs a unique name for both 2.0/2.2 and 2.4 to show up on the book index. I'm attaching a patch for use together with the latest stock gtk-doc.make. Like Gilles, I also get numerous warnings such as: Warning: multiple "IDs" for constraint linkend: InternetAddressGroup. Removing those three lines as Gilles did, though, removes the documentation for those three classes, where leaving them in, while noisy, does build. Also, regarding gmime-sharp, mono/gmime-sharp.dll.config.in needs a 's/2.0/2.4/'.
hmmm, the docs don't build for me if I apply your cygwin ports patch :( the problem with putting the version info in the DOCS_MODULE variable is that gtk-doc.make assumes that $(DOCS_MODULE)-sections.txt, $(DOCS_MODULE).hierarchy, etc all exist but they don't, because they are called gmime-sections.txt, etc. I could rename everything, but that's a huge hassle whenever I might change API again in the future, plus it destroys revision history :( I've submitted a bug report to gtk-doc guys, so maybe this will get fixed soon
(In reply to comment #9) > I could rename everything, but that's a huge hassle whenever I might change API > again in the future, plus it destroys revision history :( hassle: yes, loose history: no svn does keep history for moved and copied files (that's how you do tags as well so it'd better keep the damn history :) ).
good news, I've submitted a gtk-doc patch upstream that solves the devhelp issue as well. see bug #554718
ok, I've just uploaded a new version to: http://www.gnome.org/~fejj/gmime-2.4.1.1.tar.gz could you guys check that this works?