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