From: Vincent T. <vt...@un...> - 2011-07-20 07:02:21
|
Hey On Wed, 20 Jul 2011, Keith Marshall wrote: > On 18/07/11 22:19, Vincent Torri wrote: >> I am writing some mingw packages for our project. It is located here: >> >> http://dev.enlightenment.fr/~doursse/mingw32-efl/ >> >> There are 2 packages : libgpg-error and libgcrypt (which depends on >> libgpg-error). > > Good to see you making this effort. there will not be a lot of packages. Only those I need (mainly graphic libraries (jpeg, png, tiff, gif, and maybe openjpeg), freetype, fontconfig, lua, and libcurl and its dependencies) > Let's see if we can guide you over > the hurdles, in spite of the (currently) non-existent documentation. > > I modified my profile.xml to add your repository, as shown in the > attached profile.diff, and did a "mingw-get update". So far, so good; I > see your catalogues in my "var/lib/mingw-get/data" directory. > >> In mingw32-libgcrypt.xml, i set the download-host uri to >> >> http://dev.enlightenment.fr/~doursse/mingw-efl/libgcrypt/libgcrypt-1.5.0/%F > > I guess you changed it: I now see it as > "http://dev.enlightenment.fr/~doursse/mingw32-efl/packages/%F" Indeed, I've tried to see that if the files are just in the same repo, it would work or not. > which causes any subsequent download attempt to fail with an HTTP-404 > exception, since this host path doesn't actually exist (yet?). Well, for the test, i modified the xml files that are in /mingw/var/lib/mingw-get/data. It's faster than uploading everything. So indeed it's normal that it fails. >> so, it can't find the dependency, which is located in >> >> http://dev.enlightenment.fr/~doursse/mingw32-efl/libgpg-error/libgpg-error-1.10/ >> >> How can I solve that ? (for example, if I specify 2 download-host uri, >> will it work ?) > > No. (Not because you can't specify different host paths for different > package sets, but because the actual problem is entirely unrelated). i've indeed managed that, after i realized that i should look at some already written mingw packages. And I saw the '*' instead of '%' in libarchive xml file. It worked with that change, though i didn't know what it means. > The real problem lies in how you've specified the dependency; mingw-get > is unable to resolve it *locally*, within the XML, long before it ever > gets to looking for a download host. In mingw32-libgcrypt.xml I see: > > <package name="mingw32-libgcrypt" alias="libgcrypt"> > <!-- ...snip... --> > <component class="dll"> > <release tarname="libgcrypt-1.5.0-mingw32-dll.tar.lzma"> > <requires eq="libgpg-error-%-mingw32-%-dll.tar" /> > </release> > </component> > </package> > > which tells mingw-get that libgcrypt-1.5.0-mingw32-dll.tar.lzma has a > dependency on libgpg-error-1.5.0-mingw32-dll.tar, (the percent token in > the "requires" specification says that the version of the required > package must match that of the requirer *exactly*, since this is an > equality specification). However, mingw32-libgpg-error.xml specifies > only a 1.10 version, which cannot satisfy this dependency. > > You have three choices, depending on how you would like the requirement > to be resolved: > > 1) If *any* version of libgpg-error will suffice, write the dependency > as <requires eq="libgpg-error-*-mingw32-*-dll.tar"/> (note the asterisk > "*" token which matches anything, rather than the percent "%" token, to > represent the package and subsystem versions). > > 2) If *only* libgpg-error-1.10 will do, then write this dependency as > <requires eq="libgpg-error-1.10-mingw32-*-dll.tar"/> explicitly. > > 3) If any version from 1.10 onwards will suffice, rather write it as > <requires ge="libgpg-error-1.10-mingw32-*-dll.tar"/>, (and if some > future version then isn't good enough, add an lt="..." attribute as > well, to specify a range of acceptable versions). Thanks for the explanation. I've finally understood what 'eq' means :) I think that it's 'ge' that will mainly be used. Another questions * If I specify <requires ge="libgpg-error-1.8-mingw32-*-dll.tar"/> but only 1.10 and later versions exist, will there be a problem ? * If I add another version of libgcrypt (say 1.6.0) in http://dev.enlightenment.fr/~doursse/mingw32-efl/libgcrypt/libgcrypt-1.6.0/ and after mingw-get update, mingw-get upgrade libgcrypt will install version 1.6.0, right ? thank you for the explanations Vincent Torri |