Closed
Bug 178798
Opened 22 years ago
Closed 22 years ago
Fix libical integration
Categories
(SeaMonkey :: Build Config, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.3beta
People
(Reporter: bugzilla, Assigned: netscape)
References
Details
Attachments
(3 files, 6 obsolete files)
(deleted),
patch
|
blizzard
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
blizzard
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
blizzard
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021107
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021107
mozilla/configure does not detect a libical that was built from the Visual
Studio Environment from mozilla/other-licences/libical/src/libical.dsw in
mozilla/other (VS6 SP5, Debug build) and placed in a LIB directory that it
should be able to find because it is being passed the wrong command line to
compile the detection routine. (cl -o conftest -W3 -nologo -Gy -Fd$(PDBFILE)
conftest.c -lical kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib
advapi32.lib 1>&5 at line 10844)
I run a script in order to do the build, and commenting out the
--enable-calendar line in .mozconfig allows a successful build.
Source from 5 Nov 2002 tarball.
Reproducible: Always
Steps to Reproduce:
1. Compile libical and place as noted.
2. Compile mozilla under cygwin bash with script and .mozconfig as noted.
3.
Actual Results:
Error message as displayed under $ configure in the "extra information"
attachment, and config.log created with contents in the same attachment.
Expected Results:
A successful build, with the calendar included.
Reporter | ||
Comment 1•22 years ago
|
||
This is the "extra information" mentioned earlier - the contents of the
config.log file, the contents of the build script, and output of uname and
configure, as well as showing the location of the libical library.
Comment 2•22 years ago
|
||
->mostafa
Assignee: mikep → mostafah
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 3•22 years ago
|
||
The .dsw file is not really supported and updated regularly. I suggest you use
the same cygwin bash shell and gmake to compile libical for windows. This will
solve your problem.
Reporter: Is there any special reason you compiled with the Visual Studio
Environment and not from command line?
Reporter | ||
Comment 4•22 years ago
|
||
I used Visual Studio because no other way to build the provided libical worked
for me.
make = gmake 3.79.1, so that's correct. (I assume mozilla would not build
otherwise.)
Here's the current contents of that directory (I deleted the tree and re-
extracted the tarball.)
Curtis@FAMILY-WMGNLMMU /src/mozilla/other-licenses/libical
$ ls
AUTHORS LICENSE README autogen.sh examples zoneinfo
COPYING Makefile TEST config.h makefile.win
CVS Makefile.am THANKS configure.in scripts
ChangeLog Makefile.in TODO design-data src
INSTALL NEWS acconfig.h doc test-data
Here's what happens when I try to use make in that directory on Makefile on
makefile.win - Am I using the right command lines? (didn't do a configure step
because I didn't see a script in that directory - should I have run autogen.sh
first? The makefile that doing that and running configure created ended it's
build with a build error, too!)
$ make
Makefile:27: ../..//config/autoconf.mk: No such file or directory
../..//config/config.mk:38: ../..//config/autoconf.mk: No such file or director
make: *** No rule to make target `../..//config/autoconf.mk'. Stop.
Curtis@FAMILY-WMGNLMMU /src/mozilla/other-licenses/libical
$ make -f makefile.win
makefile.win:25: *** missing separator. Stop.
Also note that part of the reported problem is with configure generating an
incorrect command line for cl.exe - it needs to say "libical.lib" and not "-
lical", if I understand what cl /? is telling me.
Reporter | ||
Comment 5•22 years ago
|
||
OK. Found the directions in
http://www.mozilla.org/projects/calendar/installation.html and made a script
to do them: (sorry about earlier)
#!/bin/tcsh
setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org/:cvsroot
cd /src/mozilla
setenv MOZ_TOOLS /cygdrive/c/moztools
setenv MOZCONFIG ~/.mozconfig
setenv PATH ...
setenv LIB ...
cd other-licenses/libical
./autogen.sh --prefix=/usr --disable-python-bindings
make
make install
setenv MOZ_CALENDAR 1
cd /src/mozilla
make -f client.mk build_all_depend
Here's what happened...
$ ./moztest
WARNING: aclocal's directory is /usr/autotool/devel/share/aclocal, but...
no file /usr/autotool/devel/share/aclocal/glib.m4
You may see fatal macro warnings below.
If these files are installed in /some/dir, set the ACLOCAL_FLAGS
environment variable to "-I /some/dir", or install
/usr/autotool/devel/share/aclocal/glib.m4.
WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot'
WARNING: and `config.h.top', to define templates for `config.h.in'
WARNING: is deprecated and discouraged.
WARNING: Using the third argument of `AC_DEFINE' and
WARNING: `AC_DEFINE_UNQUOTED' allows to define a template without
WARNING: `acconfig.h':
WARNING: AC_DEFINE([NEED_MAIN], 1,
WARNING: [Define if a function `main' is needed.])
WARNING: More sophisticated templates can also be produced, see the
WARNING: documentation.
autoheader: `config.h.in' is created
configure.in: installing `./install-sh'
configure.in: installing `./mkinstalldirs'
configure.in: installing `./missing'
examples/Makefile.am: installing `./depcomp'
src/libical/Makefile.am:227: CLEANFILES must be set with `=' before using `+='
configure.in: installing `./ylwrap'
automake: processing Makefiles another time to fix them up.
src/libical/Makefile.am:227: CLEANFILES must be set with `=' before using `+='
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets ${MAKE}... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for bison... no
checking for byacc... no
checking for gcc... gcc
checking for C compiler default output... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc
checking for flex... flex
checking for yywrap in -lfl... yes
checking lex output file root... lex.yy
checking whether yytext is a pointer... yes
checking whether ln -s works... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking build system type... ./config.guess: unable to guess system type
This script, last modified 2002-01-02, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
ftp://ftp.gnu.org/pub/gnu/config/
If the version you run (./config.guess) is already up to date, please
send the following data and any information you think might be
pertinent to <config-patches@gnu.org> in order to provide the needed
information to handle your system.
config.guess timestamp = 2002-01-02
uname -m = xx
uname -r = 5.1
uname -s = WINNT
uname -v = 2600
/usr/bin/uname -p = unknown
/bin/uname -X =
hostinfo =
/bin/universe =
/usr/bin/arch -k =
/bin/arch =
/usr/bin/oslevel =
/usr/convex/getsysinfo =
UNAME_MACHINE = xx
UNAME_RELEASE = 5.1
UNAME_SYSTEM = WINNT
UNAME_VERSION = 2600
configure: error: cannot guess build type; you must specify one
Now type 'make' to compile libical.
Makefile:27: ../..//config/autoconf.mk: No such file or directory
../..//config/config.mk:38: ../..//config/autoconf.mk: No such file or
directory
make: *** No rule to make target `../..//config/autoconf.mk'. Stop.
Makefile:27: ../..//config/autoconf.mk: No such file or directory
../..//config/config.mk:38: ../..//config/autoconf.mk: No such file or
directory
make: *** No rule to make target `../..//config/autoconf.mk'. Stop.
cd /src/mozilla
/src/mozilla/configure
Adding configure options from /home/Curtis/.mozconfig:
--enable-calendar
--disable-mailnews
--enable-crypto
--disable-composer
loading cache ./config.cache
checking host system type... i586-pc-msvc
checking target system type... i586-pc-msvc
checking build system type... i586-pc-msvc
checking for cl... cl
checking how to run the C preprocessor... /lib/cpp
checking for mmintrin.h... grep: conftest.out: No such file or directory
yes
checking for icalproperty_new_location in -lical... no
configure: error: Calendar requires libical
*** Fix above errors and then restart with "make -f client.mk build"
make: *** [/src/mozilla/Makefile] Error 1
Reporter | ||
Comment 6•22 years ago
|
||
I've actually got a patch that's "almost ready for prime-time"... the problem
I'm having is still how to build libical using the "in-tree" version! (the
patch currently has a /NODEFAULTLIBS [/NOD] being passed to the linker that I'd
like to get rid of [since the libical.lib I have was a debug version being
linked against a non-debug program], but it got me through the test.)
Reporter | ||
Comment 7•22 years ago
|
||
Comment on attachment 106236 [details] [diff] [review]
Patch to configure.in, version 0.8
New patch will be put up in 30 mins to an hour.
Attachment #106236 -
Attachment is obsolete: true
Reporter | ||
Comment 8•22 years ago
|
||
Instead of detecting libical on Win32 systems, this patch makes it build
libical instead... so all that has to be done to get a Win32 calendar build is
turn on --enable-calendar in the .mozconfig and build once. It seemed like this
was the best way to handle things.
I'm obsoleting the extra info file now.
Attachment #105424 -
Attachment is obsolete: true
Comment 9•22 years ago
|
||
This has to be fixed in the toplevel configure.in file.
->Seawood@netscape.com
From comment #14 of bug 158528:
-----------------------------------
There is a test to make sure the libical library is installed for building
calendar at:
http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&file=configure.in&root=/cvsroot&subdir=mozilla&command=DIFF_FRAMESET&rev1=1.947&rev2=1.948
This test is not a valid test on a windows machine. So building using
--enable-calendar with gmake in windows stops at that test.
Note: ical can now be built on windows with gmake which will then provide
ical.lib for calendar to link against
------------------------
Please see the patch and comments #14 to #16 of bug 158528
Assignee: mostafah → seawood
Assignee | ||
Comment 10•22 years ago
|
||
What is the deal with libical? At one point, an external version was required,
hence the configure test. Now, you're saying that an in-tree version is
required. Is that the permanent solution or are we going to swing back to
requiring the external version?
Assignee | ||
Comment 11•22 years ago
|
||
Comment on attachment 107100 [details] [diff] [review]
Patch to build libical automatically on Win32 systems.
The libical check should be consistent across platforms. Either everyone uses
the internal version by default or everyone uses the external version by
default.
MOZ_INTERNAL_LIBICAL should not be set by configure.in. If we're going to use
that variable at all, then it should follow the precedent set by libart and
require the variable to be set externally since the license on libical differs
from the rest of the tree.
Attachment #107100 -
Flags: first-review-
Assignee | ||
Comment 12•22 years ago
|
||
-> Browser:Build Config
Component: Calendar General → Build Config
Product: Calendar → Browser
QA Contact: colint → granrose
Version: unspecified → Trunk
Reporter | ||
Comment 13•22 years ago
|
||
This was my first attempt at hacking Mozilla at all (I have never been accused
of diving in with both feet)... and only because I was having difficulty
building this and couldn't believe how inaccurate the directions were.
I'd like to see Mozilla+Calendar easier to build, hence, this bug. (I'm out in
GMT+9 [.jp], so while an IRC chat might be in order, it's not the easiest for
me as far as timing is concerned.)
AFAIK, here's the situation: (mostafa, can you correct me?)
Right now, we're on a snapshotted libical (beyond the 0.23 that's currently
available on libical's site) so we pretty much have to build from the mozilla
tree's version.
For Linux, eventually libical could be external again, but for Win32, with
the /NODEFAULTLIBRARY problems I was having creating the test that's in the
0.8 patch (which we COULD incorporate in as the test for an external Win32
libical), I assume it'd be a lot easier staying in the tree (that and the "out-
of-tree" version would build a) from a .dsw and b) with the wrong name and c)
How would you use debug instead of release versions of the library? You
get "nodefaultlibrary" pains when you go to link!)
I only have a Win32 system here, so I wasn't willing to change Linux/Unix
build proceedures much. Who would I ask who would be willing to test any Linux
changes?
Let me make sure what you'd want for a positive review on the next suggested
patch: You'd like MOZ_INTERNAL_LIBICAL to 1) be a switch that's externally
turned on rather than internally detected, and 2) to work on all systems,
correct?
I can do that, although #2 would be stepping where I can't test. Get back to
me, OK?
Reporter | ||
Comment 14•22 years ago
|
||
This patch catches debug/release inconsistency on Win32 with
MOZ_INTERNAL_LIBICAL off [if it's not caught here, the build will break when
libxpical is linked] as well as implementing (what I thought were) the
requested changes.
Attachment #107100 -
Attachment is obsolete: true
Reporter | ||
Updated•22 years ago
|
Attachment #107254 -
Flags: review?(seawood)
Comment 15•22 years ago
|
||
Currently libical can be simply built by typing make in other-licenses/libical
and it just creates static libraries. Calendar will link to it statically
eliminating the need to provide extra shared libraries.This is now happening
both on linux and windows.
The only thing needed now is to actually make libical when MOZ_CALENDAR is set.
This patch is a simplified version of the previous patch including some tweaks
from patch1 in bug 117682, which will take care of this.
Licensewise, libical is LGPL so there is no harm including and using their code
internally in Mozilla. We will post an announcement to the libical group as
well.
Assignee | ||
Updated•22 years ago
|
Attachment #107254 -
Flags: review?(seawood) → review-
Assignee | ||
Comment 16•22 years ago
|
||
Comment on attachment 108222 [details] [diff] [review]
Patch to build libical internally if MOZ_CALENDAR is set
Shouldn't libical be built before calendar is built? Libical doesn't look like
it will built properly in an objdir build. I think I've mentioned that before.
Attachment #108222 -
Flags: review-
Assignee | ||
Updated•22 years ago
|
Summary: "configure" Can't detect libical when building using cygwin bash as command shell. → Fix libical integration
Assignee | ||
Comment 17•22 years ago
|
||
*** Bug 117682 has been marked as a duplicate of this bug. ***
Assignee | ||
Comment 18•22 years ago
|
||
> Licensewise, libical is LGPL so there is no harm including and using their code
> internally in Mozilla.
Actually, because calendar currently statically links against libical, I think
that will cause a problem. I was under the impression that for the LGPL'd
library to be safe to use, it had to be dynamically linked or have the ability
to be relinked via a separate object file.
Comment 19•22 years ago
|
||
Yeah, that's going to be a problem. We need to make sure that we ship a
seperate .so for the ical library.
Assignee | ||
Comment 20•22 years ago
|
||
This patch:
- Causes calendar & libical to be pulled by default
- Builds the internal version of libical & calendar if --enable-calendar is
specified
- Renames libical & libicalss to libmozical & libmozicalss, respectively
- Forces the above libraries to always be shared since they are LGPL. (Do we
need to take the extra step and add the _lgpl suffix like we did for libart?
- Added small changes to build on Darwin
Attachment #107254 -
Attachment is obsolete: true
Attachment #108222 -
Attachment is obsolete: true
Assignee | ||
Updated•22 years ago
|
Attachment #108805 -
Flags: review?(blizzard)
Comment 21•22 years ago
|
||
Comment on attachment 108805 [details] [diff] [review]
int v1.0
r=blizzard
Attachment #108805 -
Flags: review?(blizzard) → review+
Assignee | ||
Updated•22 years ago
|
Flags: blocking1.3a?
Assignee | ||
Comment 22•22 years ago
|
||
The patch was checked in though I still have the question about the _lgpl suffix.
Assignee | ||
Updated•22 years ago
|
Flags: blocking1.3a?
Target Milestone: --- → mozilla1.3beta
Comment 23•22 years ago
|
||
As a result of changing the static link to a dynamic link, some symbols have to
be added to the .def files otherwise link will be broken on windows.
This patch adds the missing symbols.
Assignee | ||
Comment 24•22 years ago
|
||
Attachment #109020 -
Attachment is obsolete: true
Comment 25•22 years ago
|
||
libical fails to build if cygwin perl is used , because the makefiles -I
$(ICALSCRIPTS)
which is
ICALSCRIPTS = $(srcdir)/../../scripts
which is
srcdir = d:/mozbuild/mozilla/other-licenses/libical/src/libical
which perl does not understand
perl sets INC to
( D /mozbuild........., xx, xx, xx) note the missing seperator after "D"
i think cygwin perl needs cygwin paths not dos paths
Assignee | ||
Comment 26•22 years ago
|
||
That problem should have been fixed with the last patch. Perl is detected at
configure time and we use the cygwin-wrapper script to modify the arguments as
necessary to work for cygwin or AS perl. The problem in this particular case
was the extra space between the -I and the $(ICALSCRIPTS) which broke the script.
Assignee | ||
Updated•22 years ago
|
Attachment #109059 -
Flags: review?(blizzard)
Comment 27•22 years ago
|
||
Comment on attachment 109059 [details] [diff] [review]
append _lgpl to library name as well
r=blizzard
Attachment #109059 -
Flags: review?(blizzard) → review+
Assignee | ||
Comment 28•22 years ago
|
||
Patch has been checked in. There's still a small problem with building in the
objdir on win32 but there's a patch in bug 171753 that will fix that.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Comment 29•22 years ago
|
||
FYI: libical seems to be dual licensed with MPL and LGPL.
see http://www.softwarestudio.org/libical/UsingLibical/node4.html
Doesn't this mean that we don't need the "other licenses" and the _lgpl stuff???
Comment 30•22 years ago
|
||
So it is. If it can be used under the MPL, then the dynamic libs aren't needed
neither is the _lgpl suffix. Why was it checked in under other-licenses to
begin with or was the license change a recent event?
Assignee | ||
Comment 31•22 years ago
|
||
Assignee | ||
Updated•22 years ago
|
Attachment #109568 -
Flags: review?(blizzard)
Comment 32•22 years ago
|
||
Comment on attachment 109568 [details] [diff] [review]
Revert naming to moz prefix & static libs
r=blizzard
Attachment #109568 -
Flags: review?(blizzard) → review+
Assignee | ||
Comment 33•22 years ago
|
||
Patch has been checked in.
Comment 34•22 years ago
|
||
Just a note: libical is in other-licenses because it is not tri-licensed. In
this particular case, you can use the LGPL's conversion clause to make it GPL
also, so the licensing issue is not complicated. But our policy is
non-tri-licensed stuff goes in other-licenses, so there it is.
Gerv
Updated•20 years ago
|
Product: Browser → Seamonkey
You need to log in
before you can comment on or make changes to this bug.
Description
•