Closed Bug 98811 Opened 24 years ago Closed 22 years ago

Remove GPL and LGPLed libIDL code from tree

Categories

(Core :: XPCOM, defect, P4)

PowerPC
All
defect

Tracking

()

VERIFIED FIXED
mozilla1.5alpha

People

(Reporter: gerv, Assigned: dbradley)

References

Details

Attachments

(3 files, 1 obsolete file)

As part of a licensing cleanup, we would like to remove the GPLed and LGPLed libIDL stuff from the tree and just make it an external dependency on Mac, like it is on Linux. Gerv
Patrick will know better, but AFAIK the libIDL changes needed by Mac never got merged back into the 'real' libIDL. We either need to figure out how to make that happen - and get a new round of distributions for Mac made available, distributed, and installed. Or, we need to set up hosting for the bits ourselves. An alternative that was discussed back in the day was to 'simply' fork libIDL and maintain within mozilla the code that will work for all platforms. This looked especially inviting when we contemplated making significant changes to libIDL for our own purposes. Last I heard the ownership of libIDL was doubtful. But that was some time ago. A complication here was the fact that the whole thing did not seem to be natively buildable on Win32. Apparently the owner was doing lex/yacc code generation stuff on Linux and then feeding that output into the Win32 build to make the binary distributions. This whole mess had mccabe stalled out on making any changes to the scheme. Maybe it is now time to resolve this.
I think we'd gain a good bit if we could build from the .y and .l files. This would allow us to address certain errors and states that we currently cannot detect just using the back-end modules. Take the orphan #endif issue that came up recently as an example. I did a little investigating just to figure out where we stand currently. Basically I'm able to generate and compile the files using flex and bison on Win32. The build built ok, but I encountered an assert with the typeindex being negative. So there is still some work and testing that would need to be done.
Quick update, I think xpidl.exe didn't get recompiled and caused the probem with typeIndex. Everything seems to be working fine now.
Status: NEW → ASSIGNED
Priority: -- → P3
Target Milestone: --- → mozilla1.0
So, I'm slightly confused. dbradley: what's the status here?
Well we have two options. 1. Is the "easy" method remove the libIDL stuff and make it an external dependency for the Mac. 2. Fork libIDL and make it part of the build. I've been able to build it on Win32 using the .y and .l files. This has an additional advantage to allowing us to make changes to the grammar not just the back-ends. Option 2 is probably the best long-term solution, if we can afford the wait. I'll need someone to back me up on the Mac. I can do the Windows and Linux build mods and test, but I don't have a Mac. I'm thinking we're probably looking at a week and a half to get it in. I've got the basics done for Windows, I'd need to finish it up and then do the same for Linux. Then get all the reviews. If you need something quick then option 1 is probably the best solution.
I like option 1 a lot better. It's what we do on _all_ other platforms, and I don't think we've been constrained by the inability to alter the grammar. Also, I don't like needing bison/yacc as part of the build, which I don't believe we currently do.
The security/PSM module appears to use bison/flex -> mozilla\security\nss\cmd\modutil\installparse.y (Didn't quickly see any optional build of this, other than the normal PSM switch). So that just leaves the potential benefit of modifying the grammar or the .y file. I'm more concerned with changing the code inside the grammar than with the grammar itself. There are probably just a handful of bugs that could be adressed by changing the .y file. I'm fine with either option. I can't say I see an immediate large payoff for bringing libIDL into our tree. So less work would seem to be the overriding advantage of option 1. To get 1. done, we just need someone with a Mac to make the project adjustments and then make available a version of the library.
Bugs that could be addressed by forking libIDL - bug 103495, bug 13424, maybe bug 94650. I just wanted to get these recorded here.
If we fork libIDL, we really want to get it under our triple license. I don't think that the GNOME project is still actively developing libIDL, so I could carry some water to them and see if the authors are willing to do that.
Target Milestone: mozilla1.0 → mozilla0.9.7
Priority: P3 → P4
Moving to 0.9.8
Target Milestone: mozilla0.9.7 → mozilla0.9.8
Moving to 0.9.9
Target Milestone: mozilla0.9.8 → mozilla0.9.9
This is my first time modifying a Mac XML project file. I think this is correct, but I need someone to test it on the Mac. My intent with the patch is to remove the libidl project from the build and to add in references to a prebuilt library. I'll need to get a build engineer to give me a hand in getting a prebuilt libIDL in the proper place.
Retargetting. This may get moved back after reassessing, and is currently under evaluation for MachV
Target Milestone: mozilla0.9.9 → mozilla1.2
As input to that reevaluation, please be aware that sorting out licensing issues is a top priority for mozilla.org and we'd very much like to have this done before 1.0. Gerv
Keywords: mozilla1.0+
> The security/PSM module appears to use bison/flex -> > mozilla\security\nss\cmd\modutil\installparse.y We don't build any of the command line utilities of NSS. We just build the libraries. I'm all for removing the 3rd party libraries from the tree.
cls: how do we get to a stage where we can do that? Gerv
Gerv, first, I think we need buy-in from the build team that this is collectively what we want to do. From there, I think dbradley's patch is a good start though someone probably needs to test it. Do the mac hacks to libIDL require any other mozilla modules to be built...like NSPR? How would one add the prebuilt library & header to their build?
[CCing scc, who's been involved with this issue.] Gerv
I am unclear on the implications of the bug but I suspect it is very important to embedding users who are looking for cross-platform solutions. libIDL is linked with Mozilla and would need to be distributed with the Mac code of any embedding project, right? If so, a GPL or LGPL license would be highly problematic for certain embedding developers. For that reason -- if I'm understanding correctly, and apologies if I'm not -- this bug should be marked topembed.
libIDL is not linked with Mozilla; it's used to build the IDL files which are part of Mozilla. So there are no distribution issues. Still, we need to make progress on this bug. cls: did you ever find answers to your questions? Gerv
Thanks for the clarification, Gerv. I was thinking libIDL was used at run time by XPCOM, not just build time. Also I did not realize that Mozilla uses LGPL libraries. On looking at the mozilla 1.0 source tree, I found three files named COPYING, a GPL/LGPL signature. They bear on libIDL (as noted in this bug) and on glib. It looks like glib is in the same situation as libIDL. The README.mac file in glib says: This directory contains a snapshot of glib 1.2.1 slightly modified for building on the Macintosh only. When these changes are folded back into the main distribution of glib, this directory will go away. So, I wonder, how is glib used? Is it run time or build time? Thanks for any help.
I crashed the macdev meeting and basically, all we need to do is come up with some place to put the pre-built package and instructions on how to integrate it with the build. The first is easy; we can put it up on ftp.m.o with the win32 prebuilt tools. The second is going to require someone familiar with the cfm system to determine the best way to automate the install process if possible. Or at the very least, make the libIDL install not be a per-tree process. Tim, libIDL requires glib to build and creates a runtime dependency upon glib. The only program that uses libIDL is xpidl and that is primarily used at build time to create headers from the .idl files. It is not used by the browser at runtime and is only packaged for development purposes.
This patch adds project files for glib & libIDL in a macbuild subdir in the respective package directories. This will allow us to build libIDL & glib w/o having to reintegrate them into our build system. The libIDL & glib srcs were removed from the xpidl project file. Right now, xpidl expects to find the glib/libIDL headers & static libraries inside the CodeWarrior installation. I arbitrarily chose the directory '3rd Party Libraries' and created it in the root of the toplevel CodeWarrior directory. The additional search paths look like {Compiler}:::3rd Party Libraries:glib: & {Compiler}:::3rd Party Libraries:libIDL: .
Attachment #70124 - Attachment is obsolete: true
I've been trying to verify this, in somewhat of an emperical manner. I thought everything was good, but when I pulled down a new development environment and tried to rebuild xpidl my build is not building it. I'm trying to figure out if this is just a bungling on my part or a problem in the patch.
We'll I've built with both release and debug, and Code Warrior stops unexpectedly, at least that's the message box I get. It's in the _xpcomidl.mcp project. xpidl has been built along with the linker and prefs. If I just try and compile a single IDL file it bombs. So something's not quite right. I thought there might have been a miss match between debug/release but I've tried both from scratch and they both crash. Is there possibly some other miss match? I'm using version 7 of Code Warrior, that I got of the MacDev server. And one last thing. I initially didn't reset my build environment and it built. Presumeably because it didn't actually rebuild xpidl. So that's when I reset the build environment and tried building and got this crash. I'll see if I can come up with more info, but that's all I've got at the moment.
After another round of builds here's what I've been able to determine. If I use the attached glib and libidl libraries CW dies. However if I build them myself and use the attached patch, it builds fine. So I think the patch is probably ok. What I don't know is what the difference is between Christopher's system and mine that would cause this. I tried building release as well and still had the same crash. This kind of worries me, as if this is going to crash on trivial version issues, this could be a bit of a headache. Any Mac guru's know what might be going on?
FWIW, those libs were built using CW 7.2 from the macdev server. I'm guessing that we're hitting a backwards compatibility problem. I upgraded because CW7.0 stopped building ppembed. Are you not seeing that problem?
Comment on attachment 89153 [details] [diff] [review] Add project files for glib & libIDL as well as remove them from xpidl I'm going to give the patch an r=, as I think it's fine. It looks like we may just have to provide version specific libs. Given that it worked fine when I built my own libs and installed in the same location. I was building on a PowerBook Mac running OSX and a build environment that I copyed from the Mac dev server, I think 7.0. I'm still rather new to the Mac dev environment. Anyone know if there are any other factors that would cause us to need other flavors of these libs, such as carbon builds vs non-carbon builds.
Attachment #89153 - Flags: review+
To satisfy my curiousity I pulled down the Codewarrior 7.2 image and built with the posted libs and it works fine. Do we need to support 7.0? I assume we'll need to come up with 8.0 built lib's at least.
7.2 is the currently supported build system.
Comment on attachment 89213 [details] glib-1.2.1-mac.sit r=dbradley This worked for 7.2 so they're fine
Attachment #89213 - Flags: review+
Comment on attachment 89214 [details] libIDL-0.6.5-mac.sit r=dbradley This worked for 7.2 so they're fine
Attachment #89214 - Flags: review+
Can someone summarize how Mac builds work with these changes? Would I have to go and download something, or do we just check built libs into the tree?
Currently the Windows builds expects them to be downloaded manually before the build. I "assumed" this is how the Mac would work. But if it's easier to put the binaries in the tree for Mac users I would think that could be done.
Per comment 23, 1) download the files (eventually from ftp) 2) create the '3rd Party Libraries' subdir at the top of your CodeWarrior installation 3) create glib & libIDL subdirs under '3rd Party Libraries' 4) unsit the packages into the respective glib & libIDL subdirs so that the headers & libs are found as ':3rd Party Libraries:glib:glib.h' etc. I'd like to avoid the COOL situation that we have in the commercial tree. We don't check in any of these binaries for other platforms and I think that it'd be a bad precedent to start.
Hi guys. I haven't had time to read this bug in detail, but libIDL is currently actively maintained in GNOME CVS (by me :-). No real development is going on apart from pretty minor portability fixes. I'd be very interested in working to see your work merged back upstream rather than having a fork ... one blocker for you might be that libIDL HEAD (0.8.0) requires glib 2.0 ... Anyway, just an FYI
Moving out to 1.3. If this needs to be in before 1.3 please comment.
Target Milestone: mozilla1.2alpha → mozilla1.3alpha
Moving to 1.4 Alpha
Target Milestone: mozilla1.3alpha → mozilla1.4alpha
Moving out
Target Milestone: mozilla1.4alpha → mozilla1.5alpha
xpcom/typelib/xpidl/glib & xpcom/typelib/xpidl/libidl have been cvs removed from the trunk. You can repull them using the CFM_LAST_RITES tag if need be.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Marking Verified -
Status: RESOLVED → VERIFIED
Component: xpidl → XPCOM
QA Contact: pschwartau → xpcom
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: