On Fri, Oct 16, 2009 at 1:43 PM, Doug Cutting <[email protected]> wrote:
> Matt Massie wrote: > >> People who want to modify and develop the C code, could use 'src/c' in the >> tarball or use svn directly. However, people who just want to simply >> use/consumer the C implementation without any hassle would use the >> avro-c-x.x.x.tar.gz package. Package maintainers would also use this >> pristine tarball as a basis for packaging as well. >> > > Could avro-c-x.x.x.tar.gz be created by the following? > > tar xzf avro-x.x.x.tar.gz src/c > cd src/c > tar czf ../../avro-c-x.x.x.tar.gz > > I don't see why it shouldn't be, and, if it can be, I don't see why we > needthe nested tarball: we ship a single pristine tarball, and folks can > re-package parts of it as needed. What am I missing? > Autotools builds file templates (*.in) and /bin/sh scripts to create a complete build environment for compiling C source. It also checks to make sure that all files and tests in the projects are accounted for. It's bad practice to checkin the templates and /bin/sh scripts to svn that autotools generates. All that is currently checked into Avro svn is the ' configure.in' and 'Makefile.am' files needed by autotools to create the build environment. It makes sense to put them under version control since they are created and managed by maintainers. *** If we just tar'd up 'src/c' as you show above... We would be requiring Avro C consumers to have all the autotools installed (aclocal, autoconf, automake, libtool, etc) beyond gcc and make. Users would have to run `autoreconf -f -i` to bootstrap the build environment and create a 'configure' script. In a sense, we force users/consumers to be developers/packagers whether they like it or not. They may find they need to upgrade their autotools to generate an Avro build environment. Moreover, we have no control over other people autotools environments. For bug reports, we would have to ask users about what versions of the autotools they used to compile instead of focusing more strictly on bugs in the source itself. *** If we run 'make distcheck' in 'src/c' to create a pristine tarball... We would be requiring Avro C consumers to have '/bin/sh', gcc and make installed to build. They don't need autotools installed on the machine to compile. We're also guaranteeing that the tarball package obeys the GNU packaging conventions (like proper cleanup of files, unit tests defined and pass, correctfile locations, etc). Users only need to extract the tarball and `./configure; make`. We're also guaranteeing that all bugs reports have a common build environment since we're packaging the build environment as well as the source. -Matt
