From: Earnie <ea...@us...> - 2011-12-16 20:39:49
|
Charles Wilson wrote: > On 12/16/2011 1:44 PM, Earnie wrote: >> I've set out today do learn to create a mgwport package. I chose >> libiconv as an example > > I'm unsure what you mean. Are you using libiconv*.mgwport as a pattern, > to develop a different package's mgwport, Yes > or are you "re-doing" libiconv > itself just to get a better feel for how mgwport works? > No > If the former...then libiconv is a poor choice; it and gettext exercise > a special purpose feature of mgwport, developed specifically for the > mingw versions of those two packages: the "relocatable" stuff. No other > package includes Bruno Haible's magic relocate machinery, so attempting > to support it (in a .mgwport) for a package that doesn't actually HAVE > it is...ill-advised. > > I'd use mingw32-xz.mgwport as an example, instead. > Ok I'll look at xz. >> where I note one minor bug with a missing >> backslash \ for the mgwconf command after setting CFLAGS so that LDFLAGS >> isn't set. > > Oh, you're right. That means the currently-shipping libiconv is built > with the default -*-libgcc linkage rather than explicitly > -shared-libgcc. But -static- is only the default for "C", all other > languages default to -shared-. Now, libiconv is written in C -- but the > final link is done using C++ (this is part of Bruno's relocation magic) > so I don't think this error has any real effect. > Ack. >> Also, I find that msys-mktemp is required but wasn't installed with the >> installation of mgwport. > > Well, it's only required if your .mgwport does > > 'inherit relocatable' > > which only mingw-libiconv and mingw-gettext should. > Well, brewing beans instead of peas I guess. The mgwport package delivers a script /mingw/lib/mgwport/relocatable.mgwpart that requires it so I see it as a requirement of the package. >> I've created a src_install() function >> >> src_install() { >> local f >> cd ${B} >> mgwinstall >> dodir $(__host_prefix)/share/doc/${PN}/${PV} >> for f in ${S}/COPYING ${S}/COPYING.LIB ${S}/README >> do >> cp -a ${f} $(__host_prefix)/share/doc/${PN}/${PV}/ >> done >> } >> >> but I get >> >> cp: target `/tmp/mgwport-reloc-hZJhGN/mingw/share/doc/libfoo/1.0/' is >> not a directory: No such file or directory >> cp: target `/tmp/mgwport-reloc-hZJhGN/mingw/share/doc/libfoo/1.0/' is >> not a directory: No such file or directory >> cp: target `/tmp/mgwport-reloc-hZJhGN/mingw/share/doc/libfoo/1.0/' is >> not a directory: No such file or directory >> >> So how do I correct the issue? > > I could explain -- but it's unnecessary; the problem is because you're > using 'inherit relocatable' when you shouldn't. Remove that and try again. > Ok, I figured it out anyway; to correct I would use ${D}/$(__host_prefix) but I'll remove the relocatable declaration instead. > BTW, after you do THAT, then you don't need this either: > > > dodir $(__host_prefix)/share/doc/${PN}/${PV} > > for f in ${S}/COPYING ${S}/COPYING.LIB ${S}/README > > do > > cp -a ${f} $(__host_prefix)/share/doc/${PN}/${PV}/ > > done > > If you have some files in ${S} that you want installed into docdir, all > you need to do is add then to the "DOCS" variable: > > DOCS="foo doc/bar doc/*html" > Cool. > somewhere in your .mgwport, and mgwport will handle it automatically. > However, in this case you don't even need to do that, because mgwport > *automatically* installs "README" and "COPYING*" from ${S} into docdir. > > local default_docs="\ > ANNOUNCE ANNOUNCEMENTS AUTHOR AUTHORS \ > BUG-REPORTS BUGS \ > CHANGES Changes ChangeLog CONTRIBUTORS COPYING > COPYING-DOCS COPYING.LIB COPYRIGHT CREDITS \ > FAQ GPL HACKING HISTORY HOW-TO-CONTRIBUTE KNOWNBUG \ > LEGAL LICENCE LICENSE MAINTAINERS NEWS NOTES NOTICE \ > PROGLIST README THANKS TODO WHATSNEW"; > And I just discovered this fact. Also MINGW-PATCHES/libfoo-README is installed by default into share/docs/MinGW. I'm seeing another issue with the compile step. There is an libfoo.asd file and a libfoo.asd.in file. The libfoo.asd file is removed with an "*** Info: Removing libfoo.asd to be regenerated by configure". But then immediately I get an error from ln that it can't find libfoo.asd to create the link in the build directory. *** Info: Removing libfoo.asd to be regenerated by configure ln: creating symbolic link `/usr/src/spud/libfoo-1.0-1-mingw32-src/libfoo-1.0-1/src/libfoo-1.0/libfoo.asd' to `/usr/src/spud/libfoo-1.0-1-mingw32-src/libfoo-1.0-1/build/libfoo.asd': No such file or directory Executing the compile step again works since the libfoo.asd file is already removed. Doing the package step I have PKG_NAMES="${PN} ${PN} ${PN} ${PN} ${PN}" PKG_COMPTYPES="bin dev dll-0 lic doc" PKG_CONTENTS[0]='--exclude=bin/*.dll \ --exclude=bin/libfoo-config \ bin' PKG_CONTENTS[1]='--exclude=bin/*.dll \ --exclude=bin/*.exe \ --exclude=share/doc \ bin \ share \ include \ lib' PKG_CONTENTS[2]='bin/libfoo*.dll' PKG_CONTENTS[3]='share/doc/${PN}/${PV}/COPYING \ share/doc/${PN}/${PV}/COPYING.LIB \ share/doc/${PN}/${PV}/README' PKG_CONTENTS[4]='--exclude=share/doc/${PN}/${PV}/COPYING \ --exclude=share/doc/${PN}/${PV}/COPYING.LIB \ --exclude=share/doc/${PN}/${PV}/README share/doc/${PN}/${PV} \ share/doc/MinGW' The package name is correct but the package contents are pulling from / instead of the libfoo-1.0-1/inst directory. What have I forgotten? I've attached the mgwport file. -- Earnie -- https://sites.google.com/site/earnieboyd/ |