Ticket #1066 (assigned defect)

Opened 10 years ago

Last modified 7 years ago

athena-dist has bitrotted; it's not 1995 anymore

Reported by: jdreed Owned by: achernya
Priority: normal Milestone: The Distant Future
Component: -- Keywords:
Cc: Fixed in version:
Upstream bug:

Description

In addition to #1064, I think a lot of athena-dist is actively harmful these days. We should consider cleaning it up and or moving it to HTTP served out of a locker somewhere? There are probably Historical Reasons(tm) that need to be considered.

Change History

comment:1 Changed 9 years ago by achernya

Since #1064 has now been fixed by uploading a new hesiod to athena-dist, I think the right solution is for us to figure out how to release tarballs for our various bits of code.

Hesiod was released with a brand-new build system based on both autoconf and automake, which worked great. In the process of doing this (admittedly difficult) conversion, I found a lot of things the previous-generation configure scripts failed to check.

The first step to making a new configure is to run autoscan. This generates a configure.scan, which can be moved to configure.ac and then edited appropriately. This would require pulling in the various specific tests the package may have that autoscan can't detect.

Switching from Makefile.in to automake is fairly straightforward, hesiod can serve as a template.

Unfortunately, this packaging scheme is partially blocked by #334. It would be nice if all packages could be built with "--with autoreconf", so that we don't have to do a strange dance with autoreconf -iv in checkouts, and can instead run debuild, but that will fail on machines that don't have debathena-aclocal. This sucks for users that want to build our packages outside of our environment, and is not suitable for upstream releases anyway.

From looking at debathena-aclocal, most of the macros appear to be bitrotted. The hesiod macro is now useless, as hesiod ships a pkg-config file. Zephyr will soon ship a pkg-config file as well. For kerberos, detection, we should instead use Russ Allbery's excellent  krb5-config.m4. For anything else, we should provide pkg-config files whenever possible.

As for the distribution of these macros, it's reasonable for them to be in a centralized location and then copied into the m4/ folder of each package. I suppose we could do this with symlinks in svn, although I don't know how make dist will react. In the future where we've moved to git the m4/ directory could be a git submodule in each package.

comment:2 follow-up: ↓ 3 Changed 9 years ago by andersk

aclocal automatically copies the necessary macros into the m4/ directory, so I’m not sure it’s necessary or appropriate to version-control that in some other way (for the same reasons that our giant aclocal.m4 was Wrong).

We just need to make sure that the macros are installed on the system (either by the corresponding upstream library packages, or by debathena-aclocal) at the time that autoreconf is to be run (whether that’s package build time or tarball generation time).

comment:3 in reply to: ↑ 2 Changed 9 years ago by andersk

Replying to andersk:

aclocal automatically copies the necessary macros into the m4/ directory,

Oh, I forgot, this only happens with ACLOCAL_AMFLAGS = --install -I m4 in Makefile.am, which requires automake ≥ 1.10.

comment:4 Changed 9 years ago by achernya

That sounds fine, because the oldest releases we should still be targeting going forward are squeeze and lucid, both of which have automake 1.11.

Are you sure you need those flags? I appear to have gotten them automatically with AC_CONFIG_MACRO_DIR([m4]).

comment:5 Changed 9 years ago by andersk

hesiod/Makefile.am does have ACLOCAL_AMFLAGS = -I m4, which you probably added at the suggestion of

libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

The AC_CONFIG_MACRO_DIR([m4]) is enough for libtool to install itself into m4/, but libtool is a special case here; other macros won’t do that automatically without --install.

comment:6 follow-up: ↓ 7 Changed 9 years ago by jdreed

I'm fine flipping out and providing pkg-config for everything we're upstream for. Why isn't /usr/bin/krb5-config the right answer? Won't using another m4 file merely change the problem rather than fix it?

comment:7 in reply to: ↑ 6 Changed 9 years ago by kaduk

Replying to jdreed:

I'm fine flipping out and providing pkg-config for everything we're upstream for. Why isn't /usr/bin/krb5-config the right answer? Won't using another m4 file merely change the problem rather than fix it?

krb5-config still requires some amount of "manual" handling, in that it is a krb5-specific utility.
krb5 1.12 will ship a pkg-config file, but that's still a ways off (I thought it had made it into 1.11, but it looks like it did not.)

comment:8 Changed 7 years ago by jdreed

  • Status changed from new to assigned
  • Owner set to achernya

jweiss says to send ops-help mail with a list of what we want uploaded to athena-dist.

Note: See TracTickets for help on using tickets.