Re: [Monotone-devel] library build

2008-10-02 Thread Zbigniew Zagórski
2008/10/2 Jack Lloyd <[EMAIL PROTECTED]>:
> On Wed, Oct 01, 2008 at 07:34:20PM +0200, Markus Wanner wrote:
>
>> After just having upgraded (and now landed) monotone's included botan to
>> 1.7.12. Jack is already approaching 1.7.15 with yet another set of
>> renaming. I'm rather going to use the nvm.stripped branch than continue
>> to manually upgrade again.
>
> So if Botan 1.7.x is going to distros (AFAIK the only distro
> it is currently in is Debian) I would just as soon it be the future
> 1.7.15 rather than .14 since there are another slew of changes (in...

BTW, 1.7.15 has minor change of API that makes some things ugly in
monotone if we want to use system provided libraries.

In lookup.h there are few get_cipher functions than in 1.7.14 and
earlier versions where independent of Library_State and in 1.7.15 they
require LibraryState& as first parameter. ***

It's not big deal for monotone to change to this new interface but
_if_ we want use bundled system libraries that for some reason may be
older than 1.7.15 we would need some #ifdefs and wrappers in monotone
code.

I don't question your design decisions but LibraryState& is currently
a singleton obtained via (AFAIR) Botan::get_default() so i don't see
any reason for removing Botan::get_cipher overloads without
LibraryState& (correct me if I'm wrong).

Old overloads can be marked as deprecated but it is wise to leave them
for a while because current code base uses them.

If it's part of bigger design, ,than we'll just write some wrapper
functions with #ifdefs.


***

New get_cipher:

BOTAN_DLL Keyed_Filter* get_cipher(Library_State&, const std::string&, ...);

Old get_cipher:

BOTAN_DLL Keyed_Filter* get_cipher(const std::string&, ...);

Best regards,
-- 
Zbigniew Zagórski
/ software developer / geek / happy daddy /
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-10-01 Thread Jack Lloyd
On Wed, Oct 01, 2008 at 07:34:20PM +0200, Markus Wanner wrote:

> After just having upgraded (and now landed) monotone's included botan to
> 1.7.12. Jack is already approaching 1.7.15 with yet another set of
> renaming. I'm rather going to use the nvm.stripped branch than continue
> to manually upgrade again.

Please keep me updated on the timing of this. Despite the recent
string of releases, I actually expect the amount of time I'll have to
work on Botan will reduce pretty dramatically for a while in the neat
future. So if Botan 1.7.x is going to distros (AFAIK the only distro
it is currently in is Debian) I would just as soon it be the future
1.7.15 rather than .14 since there are another slew of changes (in
particular adding ECDSA). I don't have an ETA in particular planned
for the release (sometime this month, probably); if you need a fresh
1.7 release to accompany a new version of Monotone at a particular
time just let me know.

-Jack


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-10-01 Thread Derek Scherger
On Wed, Oct 1, 2008 at 11:34 AM, Markus Wanner <[EMAIL PROTECTED]> wrote:

>
> I've started such an effort in nvm.stripped. Beginning with:
>
>  * botan (because I know that from earlier upgrades)
>  * pcre (because it was so easy)
>  * lua (becasue I'm been afraid of the problems you mentioned)
>

That sounds great, I'll  give it a go on my system.


> The m4 scripts for botan and lua are stolen from the library-build build
> branch and adjusted. I'm not an m4 hacker, so if some m4 guru could
> check those that'd be great.


Me neither, but I'll have a look and see if I notice anything.


> I didn't do sha1 benchmarks, but those should now use the assembler
> optimized variants.
>

I'm curious to see how these go. I've been rattling emails off of Jack
trying to get both the sha1_ia32 and sha1_sse2 modules to properly configure
on my pentium-m and I think that's now working so I'll see how they perform
here. Initial tests with botan seem to show that ia32 asm is faster than
sse2 on pentium-m which seemed a bit odd.

After just having upgraded (and now landed) monotone's included botan to
> 1.7.12. Jack is already approaching 1.7.15 with yet another set of
> renaming. I'm rather going to use the nvm.stripped branch than continue
> to manually upgrade again.


I noticed that gentoo only has 1.6.5 or something so I'll see if I can
encourage someone in portage land to get the botan dev stuff in as unstable.

Cheers,
Derek
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-10-01 Thread Markus Wanner
Hi,

Zack Weinberg wrote:
> It might make sense to start a new project to rip out our bundled
> libraries altogether and then fix everything necessary to make it work
> with system libraries.

I've started such an effort in nvm.stripped. Beginning with:

 * botan (because I know that from earlier upgrades)
 * pcre (because it was so easy)
 * lua (becasue I'm been afraid of the problems you mentioned)

The m4 scripts for botan and lua are stolen from the library-build build
branch and adjusted. I'm not an m4 hacker, so if some m4 guru could
check those that'd be great.

The branch builds on my debian lenny against botan 1.7.8 (up to head),
pcre 7.6 and lua 5.1 as external libraries. It passes all tests of the
testsuite and weights 30 MiB (vs 37 MiB on mainline and Intel 32bit).

> It also became clear that there are still quite a few hacks that we
> rely on in our local copies of the libraries.  The big one was, we
> compile lua as C++ so its error handling turns into C++ exceptions.  A
> system-provided liblua won't do this.

That certainly needs to be investigated. I'm currently using lua.hpp,
thus including the system provided lua library as C code, yes.

> We don't do error propagation
> across the lua/C++ interface correctly anyway (errors in lua hooks
> have a bad way of just disappearing), so I would *like* to rip that
> out and go back to lua's C interface

Feel free... :-)

I didn't do sha1 benchmarks, but those should now use the assembler
optimized variants.

After just having upgraded (and now landed) monotone's included botan to
1.7.12. Jack is already approaching 1.7.15 with yet another set of
renaming. I'm rather going to use the nvm.stripped branch than continue
to manually upgrade again.

Regards

Markus Wanner



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Jack Lloyd
Hi Zack,

Thanks, this was very useful. I made these changes in
net.randombit.botan just after tagging 1.7.14:

On Tue, Sep 30, 2008 at 11:35:58AM -0700, Zack Weinberg wrote:

>   --no-foo -> --disable-foo, for all foo; also, accept --enable-foo
> for all foo, even if this has no effect
>   --debug -> --enable-debug (and accept --disable-debug)

Done: --(enable|disable)-(asm|autoconfig|shared|debug|modules)

>   --modules, --module-set=, --noauto   -> collapse into
> --(enable,disable)-modules

Renamed to --(enable|disable)-modules, but --module-set not yet combined.
And --noauto became --disable-autoconfig.

>   --build-dir=  -> --with-build-dir; also, if it doesn't already, this
> should default to the current working directory
>*even if* that's not the same as the directory
> containing configure.pl;

Renamed. It does support cwd, at least I think this is the behavior
you want?

(motoko ~/projects/botan)$ mkdir botan-build && cd botan-build
(motoko ~/projects/botan/botan-build)$ ../mainline/configure.pl
[snip configure output]

(motoko ~/projects/botan/botan-build)$ ls -l
total 56K
-rw--- 1 lloyd lloyd 50K Sep 30 15:10 Makefile
-rwxr-xr-x 1 lloyd lloyd 953 Sep 30 15:10 botan-config*
drwx-- 5 lloyd lloyd  57 Sep 30 15:09 build/

(motoko ~/projects/botan/botan-build)$ make check


(motoko ~/projects/botan/botan-build)$ ls -l
total 9.6M
-rw--- 1 lloyd lloyd  50K Sep 30 15:10 Makefile
-rwxr-xr-x 1 lloyd lloyd  953 Sep 30 15:10 botan-config*
drwx-- 5 lloyd lloyd   57 Sep 30 15:09 build/
-rwx-- 1 lloyd lloyd 286K Sep 30 15:11 check*
-rw--- 1 lloyd lloyd 6.8M Sep 30 15:11 libbotan.a
-rwx-- 1 lloyd lloyd 2.5M Sep 30 15:11 libbotan-1.7.14.so*
lrwxrwxrwx 1 lloyd lloyd   18 Sep 30 15:11 libbotan.so -> libbotan-1.7.14.so*

> also, support --srcdir=

I'm not sure I understand the semantics of this option (of course all
I know is what is in Monotone configure's --help outpout "find the
sources in DIR [configure dir or `..']")

>   DESTDIR= support for "make install", if not already present

Supported, but the variable is named INSTALLROOT. Is DESTDIR the
canonical name for this?

>   --cc= -> CC environment variable and/or "CC=compiler" on the command line
>   --os, --cpu -> --host=

Seems sane (but not yet done).

>   --endian=, --unaligned-mem=   should be spelled --with-endian,
> --with-unaligned-mem
>   --local-config= -> --with-local-config=

Done: renamed to --with-(endian|unaligned-mem|local-config)

>   also, it would be nice (but is not very important) to support
> --exec-prefix and as many of the --foodir installation options as
>   possible (accept them even if you don't have anything to put in that
> directory).

Added --exec-prefix and all of the --dirs that Monotone's
./configure --help printed under "Fine tuning..." - they are saved but
basically ignored (but some like includedir might make sense to use as
well).

> Note that you can include config.sub and config.guess in your
> project even if it doesn't use autoconf, and with no impact on
> licensing of anything else.  I don't know offhand what changes might
> be needed for the makefiles.

I did not know that. Thanks.

-Jack


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Zack Weinberg
On Tue, Sep 30, 2008 at 8:55 AM, Derek Scherger <[EMAIL PROTECTED]> wrote:
> Is the idea of the library build branch to have monotone to build all of the
> libraries it needs, but do this by using each library's own build system or
> is it to get monotone to a state where it requires and uses system installed
> libraries?

The original idea was to have it build all of the libraries it needs
using each library's own build system, with the option to use system
installed libraries if desired by the builder.  I got hideously stuck
on this because it really needs to be set up in a way that automake
and autoconf aren't designed for -- someone mentioned upthread that
it's bizarre to invoke subdirectory configure scripts from the
makefile, and yes it is, but if this is what we want, *there is no
alternative*, because AC_CONFIG_SUBDIRS does not allow you to modify
the command line options.

It also became clear that there are still quite a few hacks that we
rely on in our local copies of the libraries.  The big one was, we
compile lua as C++ so its error handling turns into C++ exceptions.  A
system-provided liblua won't do this.  We don't do error propagation
across the lua/C++ interface correctly anyway (errors in lua hooks
have a bad way of just disappearing), so I would *like* to rip that
out and go back to lua's C interface, but I haven't had time.

It might make sense to start a new project to rip out our bundled
libraries altogether and then fix everything necessary to make it work
with system libraries.  In fact, I think that might be a good stepping
stone to a more sane way of bundling libraries, even if we do want to
keep doing that.  If we do start that project, though, it should use a
different branch than library-build, because they're very different
schemes and they'll trip over each other no end.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Zack Weinberg
On Mon, Sep 29, 2008 at 9:27 AM, Jack Lloyd <[EMAIL PROTECTED]> wrote:
>> I know it's overkill sometimes but making > configuration script
>> names "configure" and supporting --prefix option > would be very
>> convienient for some ad-hoc builders.
>
> Just it being named configure instead of configure.pl is a major
> factor? :(

Supporting the same command line interface as GNU configure is a major
factor, because that means higher level scripts don't have to know
that botan is different. I'd recommend you do two things:

1) Create a shell script named "configure" and a DOS batch file named
"configure.bat" that wrap the existing configure.pl; they can be as
simple as

#! /bin/sh
exec perl -- "${0%/*}/configure.pl" "$@"

(I don't know the equivalent in dos batch language.)

2) Make the command line options supported by configure.pl match the
command line options supported by autoconf-generated configure scripts
as closely as possible, and make the generated Makefile use the same
targets and user-settable variables as automake-generated Makefiles.
Looking at configure.pl --help I would suggest:

  --no-foo -> --disable-foo, for all foo; also, accept --enable-foo
for all foo, even if this has no effect
  --debug -> --enable-debug (and accept --disable-debug)
  --modules, --module-set=, --noauto   -> collapse into
--(enable,disable)-modules
  --build-dir=  -> --with-build-dir; also, if it doesn't already, this
should default to the current working directory
   *even if* that's not the same as the directory
containing configure.pl; also, support --srcdir=
  DESTDIR= support for "make install", if not already present

  --cc= -> CC environment variable and/or "CC=compiler" on the command line
  --os, --cpu -> --host=
  --endian=, --unaligned-mem=   should be spelled --with-endian,
--with-unaligned-mem
  --local-config= -> --with-local-config=
  also, it would be nice (but is not very important) to support
--exec-prefix and as many of the --foodir installation options as
  possible (accept them even if you don't have anything to put in that
directory).

in roughly descending order of importance, with everything up to the
gap much more important than everything below.  Note that you can
include config.sub and config.guess in your project even if it doesn't
use autoconf, and with no impact on licensing of anything else.  I
don't know offhand what changes might be needed for the makefiles.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Derek Scherger
Is the idea of the library build branch to have monotone to build all of the
libraries it needs, but do this by using each library's own build system or
is it to get monotone to a state where it requires and uses system installed
libraries?

I was playing around with the idea of using my system installed botan the
other day and it wasn't very hard to get monotone to use what I have already
installed, although I haven't added any autoconf checks to see what version
of botan is available and whether it is suitable or not. I would expect
these would be simple enough to add for someone who has a clue about
autoconf.

Cheers,
Derek
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Jack Lloyd
On Tue, Sep 30, 2008 at 02:13:47PM +0200, Zbigniew Zag??rski wrote:
> 2008/9/29 Jack Lloyd <[EMAIL PROTECTED]>:
> > On Mon, Sep 29, 2008 at 12:01:50PM +0200, Zbigniew Zag??rski wrote:
> >
> >> Jack: are you interested in making botan compliant to standard
> >> "configure/make" scenario ?
> >
> > Um not particularly, TBH. I really really do not like autoconf.
> > And it is completely useless off Unix.
> 
> Have very similar feelings. However most liked feature for me is ability
> automagically detect cross-compiling environment.

That is an advantage, must admit.

Really, I just don't underststand m4 and most my dislike of
autoconf/automake stems from that probably. Well, some at least. ;)

> but now everything is fine. BTW, I've got patch that enables
> configure.pl to detect
> mingw/msys automagically.

Saw it, thanks!

-Jack


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Zbigniew Zagórski
2008/9/29 Jack Lloyd <[EMAIL PROTECTED]>:
> On Mon, Sep 29, 2008 at 12:01:50PM +0200, Zbigniew Zag??rski wrote:
>
>> Jack: are you interested in making botan compliant to standard
>> "configure/make" scenario ?
>
> Um not particularly, TBH. I really really do not like autoconf.
> And it is completely useless off Unix.

Have very similar feelings. However most liked feature for me is ability
automagically detect cross-compiling environment.

> That said if someone sent me a configure.in that worked and handled
> the same things configure.pl does I would certainly ship it at least
> as an option.
>
>> I know it's overkill sometimes but making > configuration script
>> names "configure" and supporting --prefix option > would be very
>> convienient for some ad-hoc builders.

Sorry I was misguided by fact that Makefile contained
hardocoded "C:\Botan" ... i didn't notice that it was generated.

> Just it being named configure instead of configure.pl is a major
> factor? :(

No, i was struggling with --os --cpu for a moment (wanting to build
asm versions)
but now everything is fine. BTW, I've got patch that enables
configure.pl to detect
mingw/msys automagically.

-- 
Zbigniew Zagórski
/ software developer / geek / happy daddy /
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-30 Thread Markus Wanner
Hi,

Zbigniew Zagórski wrote:
> From my recent tests it appears that:
>  - lua
>  - pcre
>  - botan
>  - sqlite3
> build without any problem on mingw/msys with simple
> ./configure --prefix=/mingw ; make ; make install

Cool, good to know.

> Jack: are you interested in making botan compliant to standard
> "configure/make" scenario ? I know it's overkill sometimes but making
> configuration script names "configure" and supporting --prefix option
> would be very convienient for some ad-hoc builders.

That's exactly the line of thinking I'd like to encourage: if our
dependent libraries don't build on other systems, help them with their
build system. That's much more in the open source spirit than coming up
with our own one - as we currently do. (Although I think botan is a bad
example here, because its build harness looks quite thought through and
tested on several platforms - certainly more than monotone currently has).

> PS. I would like to test this "library-build" branch on mingw, is it
> buildable at least on some common platform like linux ?

Checkout the branch net.venge.monotone.library-build. Expect having to
fiddle with autoconf et al. Corrections and improvements very welcome.

Regards

Markus Wanner



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-29 Thread Jack Lloyd
On Mon, Sep 29, 2008 at 12:01:50PM +0200, Zbigniew Zag??rski wrote:

> Jack: are you interested in making botan compliant to standard
> "configure/make" scenario ?

Um not particularly, TBH. I really really do not like autoconf.
And it is completely useless off Unix.

That said if someone sent me a configure.in that worked and handled
the same things configure.pl does I would certainly ship it at least
as an option.

> I know it's overkill sometimes but making > configuration script
> names "configure" and supporting --prefix option > would be very
> convienient for some ad-hoc builders.

Just it being named configure instead of configure.pl is a major
factor? :(

The --prefix option is supported BTW, though install on Windows IIRC
does not work.

-Jack


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-29 Thread Stephen Leake
"Zbigniew Zagórski" <[EMAIL PROTECTED]> writes:

> 2008/9/28 Stephen Leake <[EMAIL PROTECTED]>:
>> "Zbigniew Zagórski" <[EMAIL PROTECTED]> writes:
>>
>>> 2008/9/28 Stephen Leake <[EMAIL PROTECTED]>:
>> ...
 I agree this is a reasonable goal, at least on platforms that have
 decent package managers.

 MinGW doesn't have a decent package manager, and I don't know where to
 get pcre for MinGW; I looked for that a while ago. I haven't looked
 for the others.
>>>
>>> AFAIR, on properly configured mingw+msys
>>
>> "properly" is of course the issue.
>
> Well, the only changes i have is custom  m4, autoconf, automake a
> result of private battle in order to get recent versions of these.
> Rest is standard ... i think.

This monotone wiki page:

http://www.venge.net/mtn-wiki/BuildingOnWindows 

has instructions for installing the mingw tools needed to build mtn.
Can you test with a setup following those instructions, and add the
pcre etc instructions?

>> Where did you get the mingw pcre package from?
>
> I've used source found on http://pcre.org/, normal download no port
> needed - 7.7, 7.8 versions build.

Ok, that's good.

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-29 Thread Zbigniew Zagórski
2008/9/28 Zbigniew Zagórski <[EMAIL PROTECTED]>:
> 2008/9/28 Stephen Leake <[EMAIL PROTECTED]>:
...
>>
>> MinGW doesn't have a decent package manager, and I don't know where to
>> get pcre for MinGW; I looked for that a while ago. I haven't looked
>> for the others.
>
> AFAIR, on properly configured mingw+msys
>
> ./configure --prefix=/mingw && make install
>
> works like a charm for pcre-7.7.
>
> However, i don't know if botan & sqlite builds natively on mingw32 without
> tricks. I'll try to pefrorm some research on topic.

From my recent tests it appears that:
 - lua
 - pcre
 - botan
 - sqlite3
build without any problem on mingw/msys with simple
./configure --prefix=/mingw ; make ; make install

However, lua and botan need some custom configuration and makefile invocation.

I failed to build libidn on mingw and gave up after some strange
libtool+DLL linking errors.

Jack: are you interested in making botan compliant to standard
"configure/make" scenario ? I know it's overkill sometimes but making
configuration script names "configure" and supporting --prefix option
would be very convienient for some ad-hoc builders.

PS. I would like to test this "library-build" branch on mingw, is it
buildable at least on some common platform like linux ?

-- 
Zbigniew Zagórski
/ software developer / geek / happy daddy /
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-28 Thread Stephen Leake
"Zbigniew Zagórski" <[EMAIL PROTECTED]> writes:

> 2008/9/28 Stephen Leake <[EMAIL PROTECTED]>:
>> Markus Wanner <[EMAIL PROTECTED]> writes:
>>
>>> Instead we should IMO simply rip out the still-bundled stuff (pcre,
>>> sqlite, idna, botan) and adjust the Makefile cruft to build against
>>> system provided libraries - as the vast majority of other software
>>> does. Or how often did you encounter a 'configure' which doesn't
>>> configure anything but leaves that task for 'make', making you fiddle
>>> with aclocal in subdirectories if things don't work out as planned?
>>>
>>> Comments?
>>
>> I agree this is a reasonable goal, at least on platforms that have
>> decent package managers.
>>
>> MinGW doesn't have a decent package manager, and I don't know where to
>> get pcre for MinGW; I looked for that a while ago. I haven't looked
>> for the others.
>
> AFAIR, on properly configured mingw+msys

"properly" is of course the issue. 

Where did you get the mingw pcre package from?

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-28 Thread Jack Lloyd
On Sun, Sep 28, 2008 at 02:52:14PM +0200, Zbigniew Zag??rski wrote:
> However, i don't know if botan & sqlite builds natively on mingw32 without
> tricks. I'll try to pefrorm some research on topic.

Recent 1.7 releases has been tested on MinGW with GCC 3.4.5, no
problems. Let me know if you encounter any issues.

-Jack


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-28 Thread Zbigniew Zagórski
2008/9/28 Stephen Leake <[EMAIL PROTECTED]>:
> Markus Wanner <[EMAIL PROTECTED]> writes:
>
>> Instead we should IMO simply rip out the still-bundled stuff (pcre,
>> sqlite, idna, botan) and adjust the Makefile cruft to build against
>> system provided libraries - as the vast majority of other software
>> does. Or how often did you encounter a 'configure' which doesn't
>> configure anything but leaves that task for 'make', making you fiddle
>> with aclocal in subdirectories if things don't work out as planned?
>>
>> Comments?
>
> I agree this is a reasonable goal, at least on platforms that have
> decent package managers.
>
> MinGW doesn't have a decent package manager, and I don't know where to
> get pcre for MinGW; I looked for that a while ago. I haven't looked
> for the others.

AFAIR, on properly configured mingw+msys

./configure --prefix=/mingw && make install

works like a charm for pcre-7.7.

However, i don't know if botan & sqlite builds natively on mingw32 without
tricks. I'll try to pefrorm some research on topic.

> We need to continue to support MinGW

Absolutely.

PS.
Again why this list doesn't set Reply-To header!?
Stephen: sorry for duplicate.

--
Zbigniew Zagórski
/ software developer / geek / happy daddy /
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library build

2008-09-27 Thread Stephen Leake
Markus Wanner <[EMAIL PROTECTED]> writes:

> Instead we should IMO simply rip out the still-bundled stuff (pcre,
> sqlite, idna, botan) and adjust the Makefile cruft to build against
> system provided libraries - as the vast majority of other software
> does. Or how often did you encounter a 'configure' which doesn't
> configure anything but leaves that task for 'make', making you fiddle
> with aclocal in subdirectories if things don't work out as planned?
>
> Comments?

I agree this is a reasonable goal, at least on platforms that have
decent package managers.

MinGW doesn't have a decent package manager, and I don't know where to
get pcre for MinGW; I looked for that a while ago. I haven't looked
for the others.

Maybe the upstream sources are adequate for MinGW; I have not looked.
I guess that's where we get our bundled sources from, anyway.

We need to continue to support MinGW. If we can find sources of all
the required packages, we can just list those in INSTALL (and on the
wiki page). Maybe configure can suggest reading INSTALL if it doesn't
find the packages.

If we can't find sources for the packages, maybe we can have a simpler
MinGW-only build for bundled packages?

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-09 Thread Zack Weinberg
On Wed, Apr 9, 2008 at 1:02 PM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
>  Trying that setup, I've been puzzled about all the steps needed. I still
> don't get warm with the mixture of the configuration step and the actual
> building step. However, that might just be personal preference.

It is unusual, but I see no alternative, given that we must be able to
control the command line switches passed to subdirectory configure
scripts, and AC_CONFIG_SUBDIRS has no support for this.  (Also,
AC_CONFIG_SUBDIRS does not know how to run botan's configure.pl
correctly.)

I also think that the configure script for the monotone subdirectory
will be simpler if it is run after the (enabled subset of the) bundled
libraries are installed to the staging directory, but as I haven't yet
revised that script, I don't know for sure.

>   * I've spent some time to figure out that I needed to run aclocal for
> every subdir. Only later on, I've noticed that there's an autogen.sh script
> which does that for me. However, as INSTALL still recommends running aclocal
> manually, that might entrap other users as well.

I intended to edit INSTALL only after everything was done, but we can
certainly change it now if you think that's more useful.

(You mean autoreconf, right?)

>   * If pcre's configure script fails after having created pcre/Makefile (for
> example due to missing config.h.in), a subsequent 'make pcre/Makefile' won't
> restart configure for pcre, because the Makefile is up-to-date. Maybe simply
> add more of the files there as dependencies, so that make reruns pcre's
> configure.

I didn't do that only because I get a headache if I try to write down
the set of rules that would be necessary, and I thought I could get
away with not doing it yet.

>   * Botan's 'make install' complains about ownership problems:

Jack's fixed this upstream, but for now you can do 'make install
USER=u GROUP=g' where u and g are your username and primary group,
respectively.  I mean to put that into the top-level Makefile until a
new botan comes out.

>  Do we really need to run 'make install' for these 3rdparty libraries?

Yes.  If we instead use -I to pick up headers from the source tree,
builds with the bundled libraries will be able to see library-internal
headers, whereas builds with system libraries won't; this is asking
for trouble.  Also, running 'make install' means that the monotone
subdirectory doesn't have to know anything about the structure of the
bundled library subdirectories; it just does -I libinst/include -L
libinst/lib and it's happy.

> Having top-level 'make' recurse into all of subdirs running 'make install'
> every time seems expensive to me.

This is what libinst/*-stamp are for.  A second 'make' at top level
shouldn't recurse.  Of course, we need real dependencies for those so
that it does rebuild a subdirectory that's changed, but again, that is
something I thought I could get away with implementing later.

>  After having worked around these issues, I've been able to run 'make' and
> 'make install' in all of the subdirectories (lua, botan, pcre, netxx, idna
> and sqlite).

Cool beans.  Did you get the autoconf tests that are for sqlite's
benefit out of monotone/configure.ac and into the stub
sqlite/configure.ac, or did you drop in the upstream sqlite build
harness, or?  A nice next-action would be to get botan and sqlite's
internal testsuites imported and working.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-09 Thread Markus Schiltknecht

Hi,

I've finally got around playing with that branch again. Some remarks below.

Zack Weinberg wrote:

Monotone itself has been moved to
another subdirectory (currently named "monotone", but I could be
persuaded to rename it "src" or something like that).


+1 for naming it "src".


The top-level
configure script just saves all its arguments into a Makefile.  That
Makefile invokes the library configure scripts with --prefix set to a
subdirectory "libinst" of the build tree, then builds them and
installs them.  It then runs the monotone-subdirectory configure
script, telling it to look in "libinst" for its libraries.


Trying that setup, I've been puzzled about all the steps needed. I still 
don't get warm with the mixture of the configuration step and the actual 
building step. However, that might just be personal preference. Trying 
to build the whole thing, I've encountered the following problems:


 * I've spent some time to figure out that I needed to run aclocal for 
every subdir. Only later on, I've noticed that there's an autogen.sh 
script which does that for me. However, as INSTALL still recommends 
running aclocal manually, that might entrap other users as well.


 * If pcre's configure script fails after having created pcre/Makefile 
(for example due to missing config.h.in), a subsequent 'make 
pcre/Makefile' won't restart configure for pcre, because the Makefile is 
up-to-date. Maybe simply add more of the files there as dependencies, so 
that make reruns pcre's configure.


 * Botan's 'make install' complains about ownership problems:

install: cannot change ownership of 
`/home/markus/projects/monotone/build.nvm.library-build/libinst/share/doc/Botan-1.7.4/credits.txt': 
Operation not permitted


Do we really need to run 'make install' for these 3rdparty libraries? 
Having top-level 'make' recurse into all of subdirs running 'make 
install' every time seems expensive to me.


After having worked around these issues, I've been able to run 'make' 
and 'make install' in all of the subdirectories (lua, botan, pcre, 
netxx, idna and sqlite).




Don't even try building the monotone subdirectory yet.

People wanting to experiment may find the toplevel targets "make
/Makefile" and "make libinst/-stamp" of use.


Jup, even the -stamp targets are working.

Regards

Markus


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-06 Thread Zack Weinberg
On Sun, Apr 6, 2008 at 9:40 AM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
>  First of all, have you pulled from my server, nabagan.bluegap.ch? AFAICT
> that's the only place hosting the newest revisions of that branch. (As I
> couldn't push to the original server, nor monotone.ca).

Yes, I have.

>  If we stick to that special and troublesome stripped botan variant

For the record, I only want to do that for the initial work on this
branch.  After it's done and merged I think an update to a full copy
of botan should be very high on the priority list, and I'm good with
just using tarballs.

Thanks for the explanation of how to do the one-file addition.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-06 Thread Markus Schiltknecht

Hi,

Zack Weinberg wrote:

On Sat, Apr 5, 2008 at 12:37 PM, Zack Weinberg <[EMAIL PROTECTED]> wrote:

On Sat, Apr 5, 2008 at 6:41 AM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
 > I was trying to keep the current, stripped botan variant, so as to keep
 > changes to a minimum. That one gets propagated from ... uhm...
 > au...matthew.something.somewhere... see botan/README.monotone, I've updated
 > comments in there.

 I'll look at that.  I *think* the fix is simple - it appears to just
 want one more file - but I was a little scared of the merge process
 last night.


First of all, have you pulled from my server, nabagan.bluegap.ch? AFAICT 
that's the only place hosting the newest revisions of that branch. (As I 
couldn't push to the original server, nor monotone.ca).


If we stick to that special and troublesome stripped botan variant, we 
should first make sure we all have access to that branch. Richard, can 
you organize write permissions to "au.asn.ucc.matt.botan.monotone-2" for 
at least me and Zack on monotone.ac?  Or shall we better rename that 
branch to "nvm.something..."? OTOH, that would pull the whole botan 
repository into the monotone namespace (i.e. net.venge.monotone*) which 
is what Matthew was trying to avoid.



Ok, I've confirmed that the major problem with the botan subdirectory
is that readme.txt is missing, but I'm not 100% sure I understand how
to pull in things from au.asn.ucc.matt.botan.monotone-2 ... the file
is in the Attic there.  Before I do anything I would appreciate it if
someone could confirm that this is the right approach.


The Attic is to avoid die die die merge problems. Just move readme.txt 
from the Attic back to it's original location. That way, propagating 
from net.randombit.botan keeps working as expected.



1) in aaumb, mtn mv Attic/readme.txt readme.txt ; commit.
2) copy the file from the aaumb checkout to a nvm.botan checkout's
botan subdirectory, "mtn add" it, and add it to EXTRA_DIST in the
top-level makefile.  Commit.
3) Propagate from nvm.botan to nvm.
4) Propagate from nvm to nvm.library-build.  (I think the file will
just magically appear, because the "botan" subdirectory in
nvm.library-build has the same inode as the one in nvm... am I right?)


That looks correct. You could even skip propagating to nvm and instead 
propagate from nvm.botan to nvm.library-build directly.


This updating process is rather expensive in terms of work needed for an 
upgrade of the provided botan version. I was hoping that we can replace 
that process with simply dropping a tarball of the newest botan library 
into our botan/ subdirectory and automate the rest.


Of course, if the build process (configure.pl and make) would change, 
we'd still have to adapt. But that's much less work than having to 
manually add, replace or delete files around, as I had to do in the past.


So, opposed to the other subprojects, I'd now vote for removing our 
stripped botan variant, including that staging branch (the aaumb one) 
and land a (full) botan 1.7.4 there, for the sake of simplifying later 
upgrades.


Regards

Markus


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-06 Thread Ralf S. Engelschall
On Fri, Apr 04, 2008, Zack Weinberg wrote:

> nvm.library-build is my project to build all our bundled libraries in
> a way that more closely resembles how they're built upstream.  (This
> will also facilitate optional use of system-provided versions.)  It's
> intended to go like this: Each bundled library has its own
> subdirectory, just as they do now, but those subdirs have Makefiles
> and configure scripts of their own.  Monotone itself has been moved to
> another subdirectory (currently named "monotone", but I could be
> persuaded to rename it "src" or something like that).  The top-level
> configure script just saves all its arguments into a Makefile.  That
> Makefile invokes the library configure scripts with --prefix set to a
> subdirectory "libinst" of the build tree, then builds them and
> installs them.  It then runs the monotone-subdirectory configure
> script, telling it to look in "libinst" for its libraries.

I'm not convinced whether the "install" step here is really necessary
here. About a year ago, for RPM 5 I've implemented a rather
sophisticated reusable Autoconf macro RPM_CHECK_LIB (see attachment)
which allows us to build against the dozen third-party libraries RPM
requires in both internal/embedded and external variant. We put really
lots of efforts into this scheme in 2007 and it showed up that it works
very good in practice. And we do not require the library to be really
installed here (as this usually increases the disk space requirements
during build-time even more). Perhaps this approach could be also useful
for Monotone here.

> Right now what works is building idna, lua, netxx, and pcre.  My
> original intent was to have these be verbatim upstream tarballs but
> that proved impractical, I've pretty much written my own Makefiles and
> configure.ac's for all of them.  [Only idna and pcre have upstream
> build harnesses that are any use, and they both have tons of unrelated
> junk that we don't want cluttering up the repository.]

I think if you don't have to install the libraries you usually can use
the Makefile's out-of-the-box and really keep the stuff fully verbatim.

> botan builds but does not install, because we are using the upstream
> build harness for that, and it wants files that were left out of the
> original import.  I would appreciate help from people who've done
> upstream botan imports on that front.  sqlite doesn't build - I just
> haven't gotten to that one yet.  I'd like to know, though, whether we
> want to move to sqlite 3.5.7 separately or as part of this project
> (looking at the big picture, my inclination is to say "separately",
> but doing it as part of this project might make this project a wee
> easier - you'll note that I updated the idna directory, where the
> tradeoff is clearer).

Current status of my evaluation "SQLite 3.5.x for Monotone" is:

| Current branch: net.venge.monotone
| Changes against parent 36b6cb016019e675bc24a2fa97d4eb19fa4919af
|   dropped  sqlite
|   dropped  sqlite/alter.c
|   dropped  sqlite/analyze.c
|   dropped  sqlite/attach.c
|   dropped  sqlite/auth.c
|   dropped  sqlite/btree.c
|   dropped  sqlite/btree.h
|   dropped  sqlite/btreeInt.h
|   dropped  sqlite/build.c
|   dropped  sqlite/callback.c
|   dropped  sqlite/complete.c
|   dropped  sqlite/date.c
|   dropped  sqlite/delete.c
|   dropped  sqlite/expr.c
|   dropped  sqlite/func.c
|   dropped  sqlite/hash.c
|   dropped  sqlite/hash.h
|   dropped  sqlite/insert.c
|   dropped  sqlite/keywordhash.h
|   dropped  sqlite/legacy.c
|   dropped  sqlite/loadext.c
|   dropped  sqlite/main.c
|   dropped  sqlite/malloc.c
|   dropped  sqlite/opcodes.c
|   dropped  sqlite/opcodes.h
|   dropped  sqlite/os.c
|   dropped  sqlite/os.h
|   dropped  sqlite/os_common.h
|   dropped  sqlite/os_os2.c
|   dropped  sqlite/os_os2.h
|   dropped  sqlite/os_unix.c
|   dropped  sqlite/os_win.c
|   dropped  sqlite/pager.c
|   dropped  sqlite/pager.h
|   dropped  sqlite/parse.c
|   dropped  sqlite/parse.h
|   dropped  sqlite/pragma.c
|   dropped  sqlite/prepare.c
|   dropped  sqlite/printf.c
|   dropped  sqlite/random.c
|   dropped  sqlite/select.c
|   dropped  sqlite/sqlite3.h
|   dropped  sqlite/sqlite3ext.h
|   dropped  sqlite/sqliteInt.h
|   dropped  sqlite/sqliteLimit.h
|   dropped  sqlite/table.c
|   dropped  sqlite/tokenize.c
|   dropped  sqlite/trigger.c
|   dropped  sqlite/update.c
|   dropped  sqlite/utf.c
|   dropped  sqlite/util.c
|   dropped  sqlite/vacuum.c
|   dropped  sqlite/vdbe.c
|   dropped  sqlite/vdbe.h
|   dropped  sqlite/vdbeInt.h
|   dropped  sqlite/vdbeapi.c
|   dropped  sqlite/vdbeaux.c
|   dropped  sqlite/vdbeblob.c
|   dropped  sqlite/vdbefifo.c
|   dropped  sqlite/vdbemem.c
|   dropped  sqlite/vtab.c
|   dropped  sqlite/where.c
|   addedsqlite3.c
|   addedsqlite3.h
|   patched  Makefile.am
|   patched  database.cc
|   patched  m4/sqlite.m4
|   patched  schema_migration.cc
|   patched  tests/fail_cleanly_on_unreadable_db/__driver__.lua

As you see, I've replaced the s

Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-05 Thread Zack Weinberg
On Sat, Apr 5, 2008 at 12:37 PM, Zack Weinberg <[EMAIL PROTECTED]> wrote:
> On Sat, Apr 5, 2008 at 6:41 AM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
>  > I was trying to keep the current, stripped botan variant, so as to keep
>  > changes to a minimum. That one gets propagated from ... uhm...
>  > au...matthew.something.somewhere... see botan/README.monotone, I've updated
>  > comments in there.
>
>  I'll look at that.  I *think* the fix is simple - it appears to just
>  want one more file - but I was a little scared of the merge process
>  last night.

Ok, I've confirmed that the major problem with the botan subdirectory
is that readme.txt is missing, but I'm not 100% sure I understand how
to pull in things from au.asn.ucc.matt.botan.monotone-2 ... the file
is in the Attic there.  Before I do anything I would appreciate it if
someone could confirm that this is the right approach.

1) in aaumb, mtn mv Attic/readme.txt readme.txt ; commit.
2) copy the file from the aaumb checkout to a nvm.botan checkout's
botan subdirectory, "mtn add" it, and add it to EXTRA_DIST in the
top-level makefile.  Commit.
3) Propagate from nvm.botan to nvm.
4) Propagate from nvm to nvm.library-build.  (I think the file will
just magically appear, because the "botan" subdirectory in
nvm.library-build has the same inode as the one in nvm... am I right?)

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-05 Thread Zack Weinberg
On Sat, Apr 5, 2008 at 6:41 AM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
>  Well, if cluttering up the repository is the only counter argument, I'd say
> better use their build harnesses, because maintenance and upgrading becomes
> much simpler. Otherwise, we will have to maintain our own build harness for
> that, which is about as bad as it is today.
>
>  But it sounds like you hit other problems as well. I'm just pointing out
> the maintenance aspect again...

There's a bit more to it than that; we'd wind up having to modify
their build harnesses anyway for things like ensuring that we only
have one copy of config.guess/config.sub in the tree, idna has pieces
that are GPLv3, autopoint was not cooperating with me when run in a
subdirectory, etc. etc. etc.

I rather *want* to have each subdirectory be just as it was in the
original, but right now I don't think that's going to work.

> I was trying to keep the current, stripped botan variant, so as to keep
> changes to a minimum. That one gets propagated from ... uhm...
> au...matthew.something.somewhere... see botan/README.monotone, I've updated
> comments in there.

I'll look at that.  I *think* the fix is simple - it appears to just
want one more file - but I was a little scared of the merge process
last night.

>  It's the same 'cluttering' vs 'simple maintenance' decision: we currently
> have a sleek and stripped botan for monotone. I didn't dare giving that up
> for simpler maintenance, yet. But in the long run, we *should* replace it
> with the tarball, I think. Cluttering the repository is much less expensive
> for us, than having to clean up our own test harness for every botan
> release.

I definitely think we want to go that way in the long run, but I'd
rather do that as a separate change than this.


>  I'd certainly vote for decoupling these changes, because it might actually
> be *less* work in the end, due to simpler testing and debugging.

Ok.

> > People wanting to experiment may find the toplevel targets "make
> > /Makefile" and "make libinst/-stamp" of use.
>
>  This sounds like you've displaced autoconf somewhat. I've thought it would
> be clearer if ./configure would also configure the sub directories. What
> were the reasons for doing that from make?

The subdirectory configures must be run from make so we can mess with
their arguments.  There is no way to do that from the top-level
configure script.  Also, this lets me configure the monotone
subdirectory *after* all the libraries are built and installed -- then
it doesn't have to know anything about user selection of bundled
versus system libraries.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build progress report and request for help with botan

2008-04-05 Thread Markus Schiltknecht

Hi,

Zack Weinberg wrote:

Right now what works is building idna, lua, netxx, and pcre.  My
original intent was to have these be verbatim upstream tarballs but
that proved impractical, I've pretty much written my own Makefiles and
configure.ac's for all of them.  [Only idna and pcre have upstream
build harnesses that are any use, and they both have tons of unrelated
junk that we don't want cluttering up the repository.]


Well, if cluttering up the repository is the only counter argument, I'd 
say better use their build harnesses, because maintenance and upgrading 
becomes much simpler. Otherwise, we will have to maintain our own build 
harness for that, which is about as bad as it is today.


But it sounds like you hit other problems as well. I'm just pointing out 
the maintenance aspect again...



botan builds but does not install, because we are using the upstream
build harness for that, and it wants files that were left out of the
original import.  I would appreciate help from people who've done
upstream botan imports on that front.


I was trying to keep the current, stripped botan variant, so as to keep 
changes to a minimum. That one gets propagated from ... uhm... 
au...matthew.something.somewhere... see botan/README.monotone, I've 
updated comments in there.


But maybe it's not worth maintaining that upgrading strategy. Instead, 
let's just replace it with the original tarball.


It's the same 'cluttering' vs 'simple maintenance' decision: we 
currently have a sleek and stripped botan for monotone. I didn't dare 
giving that up for simpler maintenance, yet. But in the long run, we 
*should* replace it with the tarball, I think. Cluttering the repository 
is much less expensive for us, than having to clean up our own test 
harness for every botan release.



sqlite doesn't build - I just
haven't gotten to that one yet.  I'd like to know, though, whether we
want to move to sqlite 3.5.7 separately or as part of this project
(looking at the big picture, my inclination is to say "separately",
but doing it as part of this project might make this project a wee
easier - you'll note that I updated the idna directory, where the
tradeoff is clearer).


I'd certainly vote for decoupling these changes, because it might 
actually be *less* work in the end, due to simpler testing and debugging.



Don't even try building the monotone subdirectory yet.

People wanting to experiment may find the toplevel targets "make
/Makefile" and "make libinst/-stamp" of use.


This sounds like you've displaced autoconf somewhat. I've thought it 
would be clearer if ./configure would also configure the sub 
directories. What were the reasons for doing that from make?


Regards

Markus


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] library-build branch

2008-03-26 Thread Zack Weinberg
On Wed, Mar 26, 2008 at 7:02 PM, Markus Schiltknecht <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  to get into autoconf et al, I've played around with the library-build
>  branch. Hope Zack doesn't mind...  :-)

cool.  I had gotten seriously stuck on that, so I'm glad to see you
picking up on it.  I've not got much time for monotone in the next few
days but when I do I'll lookat it.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel