This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: [ANNOUNCEMENT] Server Test 22




> 1) I have no objections to moving the official libz package 
> from contrib
> to latest, and will do so at the earliest opportunity.

Good


> 
> 2) I'd prefer to relinquish Xpm support to the cygwin-xfree 
> project, but
> the noX version of Xpm still needs a home, and **needs cooperation**
> from cygwin-xfree since both X-based and noX-based libs share xpm.h. 
> noX-Xpm is *required* for the cygwin, native-windowing version of
> XEmacs.

IS XEmacs installed by Cygwin Setup.exe?  If not then I would recommend
putting your non-X version of Xpm with XEmacs. Majority of applications
which link to Xpm also link to libX11. It is never a good idea to keep
duplicate headers for the same libraries.  At the moment, Xpm headers may
be identical in /usr/include/X11 and /usr/X11R6/include, but in future
we are definitely going to face a problem.



> 
> 4) Suhaib's proprietary attitude toward zlib and xpm is 
> misplaced.  The
> Xfree folks copied the zlib code into their codebase a long time ago,
> true -- 

everything in xc sources tree came from elsewhere, xfree86 folks
only wrote hw/xfree86 and a few other server codes under xc/programs/Xserver

I mentioned there should be coordination then people start creating dlls
and including in base packages while they knew other projects depends upon
them.
This creates a chaos as a final result.

We will not link CygIPC. Thanks for input


Suhaib


>but that doesn't make XFree's version official
> (Xfree/xc/zlib/README still says 1.0.8 BTW, not 1.1.3).  xpm was an
> independent entity for YEARS (xpm-3.4k, anyone?) before finally being
> adopted into the xfree codebase at 4.0.0.  However, in that case,
> xfree's version was officially recognized as the official 
> xpm.  But zlib
> is a system library (you don't see libz.so inside
> xfree86-4.0.3-X-i386.rpm, do you?)
> 
> 5) I hereby pledge not to provide a freetype library.  (Thank God.  I
> was dreading it.  I also didn't realize that it is now a part 
> of XFree. 
> It wasn't in x11r6.4)  Suhaib was right -- I *was* planning to migrate
> my port.  But now I won't.  And that makes me happy. :-)
> 
> 6) cygIPC.  I recommend against building cygwin/XFree86 with this
> dependency.  There is already work underway to add IPC 
> functionality to
> the cygwin1.dll, although full IPC support will require a "cygwin
> daemon".  Once this capability is added to the official cygwin dist,
> then it will be actively supported by the cgywin developers.  However,
> CygIPC (by which I mean the specific package at
> http://www.neuro.gatech.edu/users/cwilson/cygutils/V1.1/cygipc/ ) will
> NEVER be added to the official dist, for licensing reasons.  
> Therefore,
> CygIPC is not supported by the list, but by one person.  Me.  And I've
> got really limited cycles; I'm afraid that hundreds of new 
> cygwin-xfree
> users will overwhelm my ability to support.  The end result: people
> upset with me, people upset with cygwin-xfree, and really really
> confused newbies.  But it's your decision.
> 
> --------------------------------------
> -----SECTION 1
> --------------------------------------
> zlib moving to latest.  What does "contrib" vs. "latest" 
> mean?  A bit of
> history.
> 
> my dll-ized version of zlib first appeared in cygwin/latest on Sat, 13
> May 2000.  
> 
> It is true that cygwin-xfree contained a zlib library at that time. 
> However, zlib is required for many other packages and it was IMO silly
> to force people who wanted libpng (which depends on libz) to 
> download a
> 21Meg package (xfree86-bin.tar.bz2 was 21Meg, at the time) in order to
> get a 50k dll that is, in fact, a separate project.  libz has its own
> webpage, and its own (okay, halted) development.  But the source code
> inside xfree/zlib/ is NOT the official repository of zlib. 
> http://www.info-zip.org/pub/infozip/zlib/ is.
> 
> At best, we have two separate forks of zlib.  Not "Xfree's official
> non-forked zlib" and that scuzball cwilson's evil fork.  XFree forked
> the zlib code at 1.0.8 and included the code within its own 
> codebase.  I
> took 1.1.3 and applied the patches necessary to get it to 
> build as a dll
> on cygwin, and follow the cygwin conventions.  xfree *may* have been
> tracking the official zlib code changes from 1.0.8--1.1.3, but I'm not
> sure.  I do know that cygwin-xfree's version of libz.dll does 
> not follow
> the cygwin naming conventions.  So which one is the fork?  Which one
> *should* be official? (answer left as an exercise for the 
> student).  The
> main difference between the two libz dll's is the __declspec()
> decorations in zlib-1.1.3-6's cygz.dll, and no declspec decorations in
> cygwin-xfree's libz.dll.  Also, the name cygz.dll vs. libz.dll.  Not
> counting the actual dll's, zlib-1.1.3-6 provides /usr/lib/libz.dll.a
> (import lib) AND /usr/lib/libz.a (static lib).  xfree provides only
> /usr/X11R6/lib/libz.a (import lib). NO possibility of static linking
> with the xfree version of libz.  I'll point out, also, that 
> the official
> cygwin/windows dll naming scheme requires cygz.dll and 
> libz.dll.a names
> for dll and import lib.
> 
> Anyway, I contributed zlib as a dll and static lib to cygwin in May of
> 2000.  It was always my hope that the cygwin-xfree folks would start
> using it instead of rolling their own, but that never happened (until
> now, maybe).  I'm not sure why, but whatever the reason, it's not
> important.
> 
> I provided the zlib package as a service to cygwin users -- including
> xfree-folks -- and did NOT intend it as an insult or slight to the
> cygwin-xfree people.  I also don't consider it a fork.  I submitted my
> changes, which enable zlib to build as a dll on cygwin following the
> appropriate conventions, back to Greg Roelofs.  He has placed them at
> http://www.info-zip.org/pub/infozip/zlib/contrib/  However, he is
> reluctant to release a 1.1.4 with any additional patches 
> without the OK
> from Jean-loup Gailly -- and HE doesn't really want to release ANY
> updates that aren't strictly bugfix.  Thus, any new platform support
> (e.g. a dll-ized cygwin zlib) can only be as official as the
> infozip/zlib/contrib directory on the info-zip.org website.  Until
> Jean-loup and Mark Adler decide to fix any bugs. :-(
> 
> Mea culpa:  I haven't submitted my changes to Greg since
> cygwin-zlib-1.1.3-2.  We're now at 1.1.3-6.  The library name change
> happened eight months ago at 1.1.3-5, in order to follow the official
> dll naming convention for cygwin.  I'm terribly sorry about the
> oversight.  I'll correct that immediately and submit my 
> latest patch to
> Greg.
> 
> Anyway, back to cygwin-zlib.  In June 2000, at zlib-1.1.3-3, zlib was
> moved to the newly created cygwin/contrib directory.  (Remember,
> zlib-1.1.3-1,2 both lived in cygwin/latest).  This was because, at the
> time, the "official" packages (e.g. from DJ, Chris, and Corinna) would
> be in "latest" and EVERYTHING else would go in "contrib".  We even
> talked about porter-specific contrib dirs, but decided 
> against it.  Note
> that the distinction between latest and contrib was based on 
> SOURCE (who
> submitted it), not on a distinction between "required" and 
> "optional" --
> although, in the end, that's the way it has worked out.
> 
> Right now, though, setup.exe -- the REQUIRED method of 
> installing cygwin
> -- makes no distinction at ALL between "latest" and "contrib".  zlib
> could be in /cygwin/dont-install-me/zlib/ and setup.exe would still
> happily display it as an option.  So, currently, the 
> "contrib" directory
> is meaningless except at the meta-level as a contributer-ID
> classification.
> 
> My understanding of the "protocol" was that once an "official" package
> -- e.g. one in /latest/ -- developed a dependency on a "contrib"
> package, then either (a) remove the dependency, or (b) move 
> the package
> into latest.  This happened recently with ncurses -- the inetutils
> (talk) package acquired a dependency, so we moved ncurses from contrib
> to latest.  So far, to my knowledge, no package currently in /latest/
> depends on zlib, so I haven't moved zlib into latest.  But I 
> will do so
> now.
> 
> Eventually, it would be nice if setup (a) understood dependencies (b)
> knew what was "optional" and what was "required" -- but it 
> doesn't.  And
> even then, the "latest" vs. "contrib" is meaningless.  
> "inetutils" is in
> "latest" but is hardly required -- most folks use sshd/ssh not
> telnetd/telnet or rtalk, etc.
> 
> Finally, the zlib package installs itself into /usr/lib, /usr/bin, and
> /usr/include (along with documentation elsewhere).  The fact that the
> archive originates in /cygwin/contrib/zlib/ is largely meaningless.
> 
> To summarize:
>   zlib-1.1.3-1: my first dll-ized zlib contribution, May 2000. in
> latest.
>   zlib-1.1.3-3: zlib moved to contrib (a new subdir), Jun 2000.
>   zlib-1.1.3-5: the great name change of '00.  "cygz.dll" Oct 2000.
>   current: zlib-1.1.3-6
>   xfree's copy of zlib sources is not the official one.
>   (neither is mine for that matter, but it's as close as we 
> can get with
> current zlib project status (cf. Jean-loup Gailly, Mark Adler, Greg
> Roelofs)  Alternative: no dll.
>   did not intend insult to cygwin-xfree folks.
>   setup.exe required install method for cygwin, "contrib"/"latest"
> meaningless.
>   I'll move zlib to "latest" anyway, if it makes people happy.
> 
> --------------------------------------
> -----SECTION 2
> --------------------------------------
> xpm.  XEmacs.  noX.
> 
> I'd love to turn over xpm support to the cygwin-xfree folks.  There's
> just a few problems, but we can probably find solutions.  
> First, though,
> I'd like to reiterate: xpm existed as an independent package for many
> years.  It was not an integral part of xfree until 4.0.0.  
> Suhaib stated
> that he thought xpm was part of the various Xfree packages distributed
> in the past for B19 and B20.1 -- those packagers MAY have included the
> compiled lib, but only as a convenience.  X11R6.3 and X11R6.4 source
> archives did not contain xpm themselves.  In any case, when I built
> libxpm-3.4k for cygwin-pre21/ v1.1, there were no other precompiled
> binary packages for cygwin-pre21/v1.1 that included it.
> 
> When it came time to migrate the xpm package from the 
> cygutils external
> site into the official dist, I went looking for updated source.  All I
> found was the newly assimiliated version inside XFree86-4.0.0, but
> discovered it was identical to the original xpm-3.4k.  I considered
> stopping, then -- if xfree would provide it, why should I 
> step on their
> turf?  However, the Xpm dll in the cygwin-xfree project required an
> Xserver.  If you built an app and linked to cygwin-xfree's 
> Xpm library,
> you couldn't run your app without an Xserver.  So, I grabbed the code
> and built the noX version.  Also, I patched it so that it 
> would build a
> dll *according to the official cygwin dll naming convention* 
> unlike the
> cygwin-free one.  This had the beneficial result that there 
> was no name
> conflict with what was, at that time, "Suhaib's version".
> 
> So, my intention with the xpm package was to provide an Xless 
> version --
> specifically for use by the xless-rxvt and by native-ms-windowing
> XEmacs.  However (and this was discussed on cygwin-apps) I 
> also included
> an X version of the library as well, with symlinks and 
> whatnot to allow
> the user to choose which one to link against at compile time. 
>  This was
> perhaps a mistake, for which I apologize.
> 
> That's all water under the bridge.  I'd like to remove the xpm package
> and let you guys have it.  But...
> 
> a) all currently compiled binaries that depend on cygXpm-X.dll or
> cygXpm-noX.dll will break.  They must be recompiled to look for the
> cgywin-xfree libXpm.dll (symlinks won't work. copying libXpm.dll to
> cygXpm-X.dll won't work -- dll's contain their own name reference)
> 
> I am not sure how many packages this would affect.  The precompiled
> cygwin XEmacs at http://www.xemacs.org/ would be one.  That's very
> bad....
> 
> b) it will no longer be possible to build, OOB, an executable 
> that uses
> libXpm to interpret and decode Xpm formatted images/icons, but that
> doesn't display them or that uses Windows GDI to draw its own 
> display --
> unless you have an Xserver running.  Particularly, this means XEmacs.
> 
> Perhaps the best thing to do is for me to modify the "xpm" package to
> ONLY include the noX version.  However, since both the X 
> version and the
> noX version should use the same header (with different 
> #define options,
> certainly) this would require some modification to your official xpm.h
> to allow both to work together.  Is that acceptable?
> 
> To summarize:
>   cygwin-xfree should distribute the official X version of libXpm.dll
> for cygwin
>   the "xpm" package should contain the noX version, only
>   header files should be harmonized
>   the "xpm" package should be renamed "xpm-noX" ?????
>   how can setup deal with files present in two 
> packages...should we just
> insure that they are identical and let setup overwrite each with the
> other?
>   many apps will break -- incl. the "official" XEmacs -- unless
> cygXpm-noX.dll is retained.
>     --- VERY BAD.
>   many apps may break if cygXpm-X.dll is replaced by libXpm.dll
>     --- possibly ok?
> 
> --------------------------------------
> -----SECTION 3
> --------------------------------------
> dll naming convention.  how the linker works.  
> 
> See the cygwin-apps mailing list for the full discussion.  I summarize
> the results here:
>   dll's:        /usr/bin/cyg<package><maj-ver>.dll
>   import libs:  /usr/lib/lib<package>.dll.a
>   static libs:  /usr/lib/lib<package>.a
> For whatever reason, cygwin-xfree chose not to follow this protocol. 
> That was their decision -- and it had the serendipitous side 
> effect that
> my Xpm dll and their Xpm dll didn't conflict.  (until now?)
> 
> At least one poster claimed that native windows tools build "foo.dll"
> and "foo.lib", not "libfoo.dll".  Not entirely true; for example, the
> MikTeX distribution of netpbm (http://www.miktex.org/,
> http://www.ctan.org/tex-archive/systems/win32/miktex/util/netp
> bm/ ) uses
> libppm.dll, libpng.dll, libtiff.dll (and the exception that proves the
> rule, zlib.dll)
> 
> There seemed to be some confusion in this thread as to how cygwin's
> linker finds libraries and dlls, I'll summarize here:
> 
> The linker, when given the argument "-lfoo" will look for the 
> library in
> the following order:
> 
> 1. In the first directory in the library search path,
>    a. libfoo.dll.a
>    b. foo.dll.a
>    c. libfoo.a
>    d. cygfoo.dll (*)
>    e. libfoo.dll
>    f. foo.dll
> 
> (*) this target is added because gcc's spec file calls ld with the
> "--dll-search-prefix=cyg" option. Note that this only works for
> versionless dll's, or if the version is explicitly specified 
> (-lfoo5 ==
> cygfoo5.dll). 
> 
> 2. go to next directory in search path and repeat.
> 
> Note that the linker will first search for "import libs", then the
> static lib, and then as a fallback it will attempt to use DJ's magic
> "generate virtual import lib" stuff inside binutils and link 
> directly to
> the dll.  This virtual import lib stuff is NOT supposed to be used in
> general, except as an emergency fallback.  You're supposed to provide
> import libs with your packages.
> 
> Anyway, most of my "forks" are merely attempts to
>   a) make the library build as a dll and as a static lib -- updated
> makefiles, .def files, etc. This requires more patching than I would
> like because until VERY recently, libtool didn't play nicely with the
> cygwin dll-building process
>   b) add cygwin-specific documentation.
> 
> One area where my dll's differ from the cygwin-xfree project: I
> explicitly use __declspec() on exported functions and variables, but
> cgywin-xfree does not.  My way can lead to "__imp__symbol not found"
> errors unless you're careful with your headers (*), but is more
> "correct" on pei386.  (also, you MUST use __declspec() on exported
> global variables; I'm unsure how cygwin-xfree avoids that 
> issue, unless
> XFree86 libs don't export any global vars)
> 
> (*) by default, the headers corresponding to all libraries 
> I've dll-ized
> and contributed to cygwin, are set up to be "careful" and allow proper
> linking to the dll with no extra action by the user except 
> #include the
> header as normal and "-lfoo" as normal.
> 
> In any case, I almost always submit my changes back to the maintainers
> (libpng has adopted them completely, for instance).  Some maintainers
> incorporate them, others do not.  What am I supposed to do when they
> don't accept them?  Say, "Sorry cygwiners but Sam Smith of the foobar
> project rejected my patch.  I'm giving up; no dll for 
> libfoobar.  You'll
> have to live with the static lib if it builds at all."  In some cases
> the maintainer is MIA.  What then?  
> 
> I really resent this criticism about "forking" when there 
> really doesn't
> seem to be any alternative AND the "fork" is minimal in 
> nature: minimum
> changes necessary to build a working shared lib with a BRAIN-DAMAGED
> Microsoft-induced format.  I really really resent the psuedo-ownership
> asserted, in which I'm somehow not ALLOWED to provide a port of an
> independent package as a service to the entire community, 
> merely because
> the proprietor of a HUGE 21MEG project wants to bundle it 
> inside his own
> mega project.
> 
> This is not to belittle cygwin-xfree; it's a great project 
> and I use it
> myself daily (okay, I use the libs and client progs. I'm not brave
> enough for the server yet; I use X-Win32).  I just disagree 
> when smaller
> but useful-by-themselves projects like zlib are assimilated, borglike,
> into the collective. 
> 
> About my other "forks"
>   libpng -- all changes submitted (and accepted by) png-develop
>   gettext -- all changes submitted, but maintainer decided to wait for
> autoconf improvements to support dlls on cygwin, rather than use my
> changes.  However, it's been a long time and that STILL hasn't
> happened.  Meanwhile, cygwin has a gettext shared lib (which 
> wouldn't be
> possible without the "fork")
>   ncurses -- changes submitted back to maintainer
>   jpeg -- changes NOT submitted (why? because there will never be
> another jpeg release without major rewrite for jpeg2000 
> support. jpeg-6b
> is frozen, there will be no jpeg-6c.  jpeg2000 support may be in a
> future library, but it won't be "libjpeg".)
>   jbigkit -- changes NOT submitted back to maintainer. I probably
> should, but development seems dead.
>   readline -- changes submitted back to maintainer.  
> 
> In any case, most of the changes I've made to these packages are the
> BARE minimum to (a) get them to compile with full functionality on
> cygwin (b) install and name themselves in the "official" 
> cygwin way (c)
> dll-ize themselves.
> 
> In many cases, maintainers are reluctant to absorb the 
> changes necessary
> to support cygwin/windows' whacked mechanism of supporting dlls. Your
> choice: "fork" w/ shared libs, or no "fork" and static lib only (or no
> lib at all, in some cases).
> 
> --------------------------------------
> -----SECTION 4
> --------------------------------------
> zlib and xpm belong to XFree.  That Charles person is a jerk for
> stealing "our" packages and releasing them separately.
> 
> zlib: not true. never has been true.  zlib is its own package.  XFree
> copied the code into its codebase long ago, but even then Xfree's
> version was not the official one, anymore that the one inside 
> newlib is
> official.
> 
> xpm: NOW it is true, but it was not true back when I first 
> ported xpm to
> cygwin-pre21/v1.1.  those were the days of X11R6.4 which did 
> NOT include
> xpm.  Now the xpm sources inside XFree-4.0.x are considered canon,
> however.
> 
> 'nuff said.  This is a dead horse.
> 
> --------------------------------------
> -----SECTION 5
> --------------------------------------
> freetype. 
> 
> back in the days of cygwin-pre21/v1.1, I decided to port all of Andy
> Piper's usrlocal tarball (for cygiwn B20.1) to the new cygwin
> snapshots.  Because of internal changes to cygwin, ALL 
> libraries had to
> be recompiled, so I jumped in as a service to the community.  My
> usr-local tarball for v1.1 was 35.1M uncompressed, and contained
>      autoconf-2.13 
>      automake-1.4 
>      bzip2-0.9.5d 
>      cvs-1.10 
>   >> freetype-1.3 
>      gdbm-1.8.0 
>      gettext-0.10.35 
>      groff-1.11.1 
>      inetutils-1.3.2 
>      jbig-1.0 
>      jpeg-6b 
>      libcrypt 
>      libpng-1.0.5 
>      login 
>      man-1.5g 
>      ncurses-5.0 
>      readline-4.0 
>      rxvt-2.6.1 
>      tar-1.12+bzip2 
>      texinfo-3.12 
>      tiff-v3.5.2 
>      unzip-5.32 
>      vim-5.5 no GUI 
>   >> xpm-3.4k (includes two libXpm's: one is not dependent on X) 
>      zip-2.2 
>      zlib-1.1.3 
> 
> Many of these original components have been obsoleted by later
> contributions to the official cygwin distro -- most by 
> others, but some
> I have ported, recompiled, packaged up, and added.  Anyway, 
> freetype-1.3
> was NOT part of X11R6.4 (nor was xpm-3.4k); also, for the 
> most part, the
> freetype libraries didn't depend on X at all, and only a few of the
> freetype executables did.  Anyway, the fourth release of my usr-local
> tarball contains only:
> 
>      automake-1.4 ("recently" OBSOLETED)
>      freetype-1.3  (static lib only)
>      ncftp-3.0.1  ("recently" OBSOLETED)
>      rxvt-2.6.2 
>      unzip-5.41   ("recently" OBSOLETED) 
>      wget-1.5.3   ("recently" OBSOLETED) 
>      zip-2.3      ("recently" OBSOLETED)
> 
> leaving only rxvt and freetype.  Since Steve O. is soon to contribute
> his X-less rxvt, I WAS planning to dll-ize freetype (perhaps moving to
> freetype2).  And then usr-local would be extinct.  But, I've been
> putting that off for a long time since it was going to be a very
> difficult job...I'm **OVERJOYED** to be able to cross 
> freetype off of my
> list, and make my usr-local dist obsolete NOW.
> 
> BTW, I *think* freetype is still an independent project (like 
> zlib, but
> unlike xpm).  I don't think it is correct for cygwin-xfree to be
> "proprietary" toward the freetype library. (e.g. Suhaib's threat *)
> HOWEVER, for the purposes of the CYGWIN port, we can, I 
> think, all agree
> that the official freetype dll/lib/headers for cygwin will be provided
> by the cgywin-xfree team and not by some external effort.
> 
> For my part, I agree not put forth that external effort.  :-)
> 
> (*) Suhaib said, "[if] libraries which are already being used by
> Cygwin/XFree86, like libfreetype, fonts, and xpm, start showing up in
> contrib I will rather take off"  This is silly.  XFree86 doesn't own
> libfreetype or zlib (it only recently assimilated xpm).  My 
> contribution
> of zlib and xpm was not intended to "creating headache for 
> developers on
> this list" -- but to help all cygwin users, many of whom 
> needed zlib and
> xpm support but did not own or want or need an Xserver; 
> recall that the
> cygwin-xfree Xserver, at the time, was non-functional.  
> However, in the
> interests of harmony, I personally, and I hope everyone else, 
> will agree
> that cygwin-xfree will be the final arbiter when it comes to
> libfreetype.
> 
> --------------------------------------
> -----SECTION 6
> --------------------------------------
> cygIPC
> 
> cygIPC can't be added to cygwin officially (for copyright reasons; I
> don't own the copyright, and the original authors have dropped off the
> net).  OTOH, cygwin-python relies on cygIPC  -- they just point people
> to the CygUtils site for it, and support the python users of CygIPC
> themselves.  (There's good news coming, though: work on including SysV
> IPC mechanisms into cygwin1.dll itself is ongoing...but it must be a
> "clean room" implementation.  Nobody who has looked at cygIPC code can
> contribute to that effort :-(  )
> 
> cygwin/xfree is much more important an application than is 
> python, IMO. 
> I'd hate to see usage and acceptance of cygwin/xfree slowed by
> unncessary and confusing-to-newbies reliance on an external dependency
> (cygIPC).
> 
> --Chuck Wilson
> cygwin zlib maintainer
> cygwin xpm maintainer (not for much longer...?)
> CygUtils site owner: 
http://www.neuro.gatech.edu/users/cwilson/cygutils/
CygIPC maintainer
extremely overworked, cycle-limited grad student.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]