Hello everyone.

> > Hi,
> > with the recent replacement of awk build scripts with tclsh ones, a
> > problem has risen. The tcl is not commonly available when building the
> > environment/distribution from ground up (bootstrap), and as a
> > consequence, SQLite can no longer be built in these early stages.
> >
> > Would it be possible to bring back the awk-based build scripts?
> >
> 
> No tclsh dependency has been added as there has always been a tclsh
> dependency.

Unfortunately that is not true in our case. The distribution bootstrap
always configured the sqlite sources with the --disable-tcl switch.
There was never a need for tcl during the first 2 stages of bootstrap.


>  What we have done is remove the awk dependency by
> converting all awk scripts into tclsh scripts.
> 
> Dependencies before the change:  C-compiler, make/nmake, awk, tclsh

Not true for the distro bootstrap (we only have C, make and gawk).
Awk is one of the basic tools that is available since the first
stage of bootstrap and it's integrated in busybox. Tcl is not
and never was.


> Dependencies after the change:  C-compiler, make/nmake, tclsh
> 
> The driver for this change was Windows users, who now only have to
> install VC++ and ActiveState TCL in order to compile SQLite from
> canonical sources, whereas before they also had to locate and install
> awk.exe.

Getting free awk is not that difficult and depending on the license
you could even bundle the latest binary with your sources. But we
don't want to force you to switch from tcl back to awk. We'd like
to ask you to support both ways of building if that doesn't mean
a lot of extra maintenance work. The tcl and awk scripts could
co-exist, couldn't they?

> The fact that SQLite is a TCL extension that has "escaped
> into the wild" is also a consideration.
> 
> Hmmm...  It appears that there used to be a some build targets that
> only used awk and not tclsh in the older makefiles for unix.  So if
> you were only using the build targets that constructed SQLite from
> individual source files, and not the amalgamation, you could get by
> with just awk and without tclsh.   I see your point.  However, the
> amalgamation builds are faster (faster in the sense that the resulting
> libsqlite3.a file uses about 7% fewer CPU cycles).
> 
> I think it is better for us to try to make life easier for the
> millions and millions of Windows users than for the handful of people
> who are bootstrapping Linux.  Is it really that difficult to build
> tclsh first?

This is not about being difficult. It just goes against the trend
of striping unnecessary dependencies from the first stages.
The thing is, that how time goes, upstream devels of critical
components often create hardcoded loops in the dependencies
or introduce deps pulling huge trees of other deps and this happens
so often that we end-up patching the sources of basic components
with each new release in order to be able to build the distro
from scratch. It's a nasty and dirty work. Devels always forget
about bootstrap and that causes complications. What we're trying
to do is to scream earlier than too late. Second stage runs
natively on the hw with no ssh connection and it's usually very
difficult to troubleshoot anything during that stage. That's why
we're trying to minimize the number of components to be built
in stage2. Since sqlite is required for rpm and rpmbuild,
we would have to build tcl twice in order to get a sane build.
And of course we're scared of future. One day someone could
introduce a nasty dependency in tcl and we would end-up
building a ton of unnecessary stuff in order to satisfy that.

So, if there's still just a small chance of the awk support
resurrection, I would say 'please, help us to keep the
bootstrap procedure simple and reliable'.

Thanks in advance.

Regards,
Jaromir.

--
Jaromir Capik
Red Hat Czech, s.r.o.
Software Engineer / Secondary Arch

Email: jcapik at redhat.com
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purkynova 99/71, 612 45, Brno, Czech Republic
IC: 27690016 

Reply via email to