SHA256
1
0
forked from pool/elilo

- elilo.efi

* update to elilo-3.16 to fix OBS download check.
    Essentially "white-space" changes, plus bumping version number,
    minus Debian idiosyncrasies.
- elilo.spec
  * Remove date string from 'eliloalt'.
  * Avoid duplication of 'elilo.txt'.
- elilo.pl
  * Support for 'UUID=' and 'LABEL=' to specify root file-system.
- Update openSUSE to elilo-3.14 from SLE11.
  * Avoid crash caused by EFI memory map changes.  (bnc#800035)

OBS-URL: https://build.opensuse.org/package/show/Base:System/elilo?expand=0&rev=12
This commit is contained in:
Raymund Will 2013-10-25 14:33:44 +00:00 committed by Git OBS Bridge
parent a2cc45afea
commit 3f8af3bf30
12 changed files with 159 additions and 96 deletions

View File

@ -1,44 +1,47 @@
3 . 1 4 R E L E A S E N O T E S 3 . 1 6 R E L E A S E N O T E S
=================================== ===================================
QUICK CHANGE SUMMARY QUICK CHANGE SUMMARY
==================== ====================
* Fixes for newly emerging x86_64 UEFI-2 boxes where long standing old * Adds native x86x crossbuild functionality
assumptions are borked. build 32bit or 64bit versions from either environment via
* Uptake of SUSE and community patches make ARCH=ia32|x86_64 (the ARCH IS case sensitive).
- add sysfs support for efi vars (formerly /proc/efi/vars) make by itself will default to the native host arch.
- fix strncpy overflow * Add console reset call during initialization. thanks A. Steinmetz
- fix bzimage alloc * simplify output of no GOP warning text so it no longer looks like an error.
- cleanups * MAJOR: Fixed Fault crash when EFI memory map changes from under elilo.
- support longer command line (from an outside interrupt in this case). When the EFI Memory map
- yet some more mac fixes changes after elilo has already built boot params to pass to the
- align elilo with latest kernel boot protocol format. kernel the EFI call to ExitBootSvcs just prior to boot will fail
- new memory management strategy for initrd and kernel image loading. because elilo has the old map key. This is valid EFI behavior, elilo
* add text-mode command line option, force text-mode (bypass graphics probes). retries to pick up the new memory map and key but had already freed
* replace error output on GOP handle failed, downgraded to normal the start params portion of boot params resulting in a NULL DEREF
print status with more informative output. crash reset once it hands the now bogus boot params to the kernel on
* Fix ia32 build issue with new gcc due to stack protector enforcement. the 2nd successful call to exit efi and boot.
Thanks to Jerry Hoemann @ HP for reporting this bug.
* minor bugfix, fixed -m option broken. thanks Allan-lsk.
BUILD NOTES BUILD NOTES
==================== ====================
You will need the following toolchain to build elilo-3.14 from source You will need the following toolchain to build elilo-3.14 from source
the elilo build environment is optimized for Debian and Debian based distros. the elilo build environment is optimized for Debian and Debian based distros.
elilo-3.14 was built in the Debian Lenny (Ubuntu 10.04) build environment. elilo-3.16 was built in the squeeze+(ubuntu 11.x) build environments except
for itanium which is unchanged to best support legacy enterprise configs.
Toolchain versions for this release were: Toolchain versions for this release were:
x86x(32 &64) x86x(32 & 64bit versions)
* gnu-efi --> 3.0i-2ubuntu1 * gnu-efi --> 3.0i-3
* gcc ------> 4.4.3-1ubuntu1 * gcc ------> 4:4.4.4-1ubuntu2
* binutils -> 2.20.1-3ubuntu7 * binutils -> 2.20.51.20100908-0ubuntu2
ia64 ia64
* gnu-efi --> 3.0e-2 * gnu-efi --> 3.0e-2
* gcc ------> 4.3.2-2 * gcc ------> 4.3.2-2
* binutils -> 2.18.1~cvs20080103-7 * binutils -> 2.18.1~cvs20080103-7
* if you use a debian based (lenny)build environment you will have no problems * if you use a debian based build environment you will have no problems
and setting it up is simple. you will be able to build elilo in 3 steps: and setting it up is simple. you will be able to build elilo in 3 steps:
1. apt-get install gnu-efi, gcc, binutils 1. apt-get install gnu-efi, gcc, binutils
2. apt-get source elilo (or download elilo-3.14.tar.gz from SourceForge.) 2. apt-get source elilo (or download elilo-3.16 source from SourceForge.)
3. extract source tarball and cd ./elilo-3.14 and type $> make 3. extract source tarball and cd to ./$your-elilo-source and type $> make
** If you use the upstream toolchain tarballs(i.e. pre distro) you will need ** If you use the upstream toolchain tarballs(i.e. pre distro) you will need

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:93fb9f9ec22763c3071a19422b3a8073cd020e5d6cca5762a0ff35871f17a4b0
size 219473

3
elilo-3.16-source.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4c0b247d96cfa9067e6728ebc95d511ffda9f47af4831c2ec7c19dfa2ea5f9a0
size 147468

View File

@ -7,7 +7,7 @@
--- a/x86_64/system.c --- a/x86_64/system.c
+++ b/x86_64/system.c +++ b/x86_64/system.c
@@ -957,6 +957,11 @@ do_memmap: @@ -953,6 +953,11 @@ do_memmap:
#endif #endif
if (e820_map_overflow && !e820_map_overflow_warned) { if (e820_map_overflow && !e820_map_overflow_warned) {
CHAR8 *aem = (CHAR8 *)"add_efi_memmap"; CHAR8 *aem = (CHAR8 *)"add_efi_memmap";
@ -19,7 +19,7 @@
e820_map_overflow_warned++; e820_map_overflow_warned++;
#if DEBUG_CREATE_BOOT_PARAMS #if DEBUG_CREATE_BOOT_PARAMS
@@ -968,11 +973,26 @@ do_memmap: @@ -964,11 +969,26 @@ do_memmap:
goto do_memmap; goto do_memmap;
} }
@ -121,7 +121,7 @@
#endif /* __ELILO_SYSDEPS_X86_64_H__ */ #endif /* __ELILO_SYSDEPS_X86_64_H__ */
--- a/bootparams.c --- a/bootparams.c
+++ b/bootparams.c +++ b/bootparams.c
@@ -96,21 +96,14 @@ create_boot_params(CHAR16 *args, memdesc @@ -93,21 +93,14 @@ create_boot_params(CHAR16 *args, memdesc
*/ */
Memset(bp, 0, BOOT_PARAM_MEMSIZE); Memset(bp, 0, BOOT_PARAM_MEMSIZE);

View File

@ -44,7 +44,7 @@
--- a/fs/netfs.c --- a/fs/netfs.c
+++ b/fs/netfs.c +++ b/fs/netfs.c
@@ -522,7 +522,8 @@ netfs_open(netfs_interface_t *this, CHAR @@ -517,7 +517,8 @@ netfs_open(netfs_interface_t *this, CHAR
netfs_fd_t *f; netfs_fd_t *f;
EFI_STATUS status; EFI_STATUS status;
CHAR8 ascii_name[FILENAME_MAXLEN]; CHAR8 ascii_name[FILENAME_MAXLEN];

View File

@ -1,16 +0,0 @@
---
elilo.c | 3 +++
1 file changed, 3 insertions(+)
--- a/elilo.c
+++ b/elilo.c
@@ -483,6 +483,9 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_T
*/
uefi_call_wrapper(BS->SetWatchdogTimer, 4, 0, 0x0, 0, NULL);
+ /* start a clean console */
+ uefi_call_wrapper(systab->ConOut->Reset, 2, systab->ConOut, FALSE);
+
/* initialize memory allocator */
if (alloc_init() == -1) return EFI_LOAD_ERROR;

42
elilo-de-debianify.diff Normal file
View File

@ -0,0 +1,42 @@
---
Make.defaults | 5 +++--
ia32/Makefile | 2 +-
x86_64/Makefile | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
--- a/Make.defaults
+++ b/Make.defaults
@@ -63,8 +63,9 @@ CDIR := $(shell if [ "$$PWD" != "" ];
TOPDIR =
ALLSUBDIRS = ia32 ia64 x86_64 fs choosers devschemes tools
-HOSTARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, )
-ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, )
+HOSTARCH := $(shell if ! dpkg-architecture -qDEB_BUILD_ARCH 2>/dev/null; then \
+ uname -m; fi | sed -e s,i[3456789]86,ia32, -e s,amd64,x86_64, )
+ARCH := $(HOSTARCH)
INCDIR = -I. -I$(TOPDIR) -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol -I$(TOPDIR)/efi110
CPPFLAGS = -DCONFIG_$(ARCH)
--- a/x86_64/Makefile
+++ b/x86_64/Makefile
@@ -43,7 +43,7 @@ all: $(TARGET)
system.o: rmswitch.h
rmswitch.h: bin_to_h.c rmswitch.S
- $(CC) -o bin_to_h $(SRCDIR)/bin_to_h.c
+ $(CC) $(OPTIMFLAGS) -o bin_to_h $(SRCDIR)/bin_to_h.c
$(AS) -o rmswitch.o $(SRCDIR)/rmswitch.S
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
./bin_to_h <rmswitch >rmswitch.h
--- a/ia32/Makefile
+++ b/ia32/Makefile
@@ -42,7 +42,7 @@ all: $(TARGET)
system.o: rmswitch.h
rmswitch.h: bin_to_h.c rmswitch.S
- $(CC) -o bin_to_h $(SRCDIR)/bin_to_h.c
+ $(CC) $(OPTIMFLAGS) -o bin_to_h $(SRCDIR)/bin_to_h.c
$(AS) -o rmswitch.o $(SRCDIR)/rmswitch.S
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
./bin_to_h <rmswitch >rmswitch.h

View File

@ -1,19 +0,0 @@
---
x86_64/system.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/x86_64/system.c
+++ b/x86_64/system.c
@@ -641,9 +641,9 @@ sysdeps_create_boot_params(
*/
if (param_start != NULL) {
CopyMem(bp, param_start, 0x2000);
- free(param_start);
- param_start = NULL;
- param_size = 0;
+ /* keeping param_start might lose some RAM,
+ * but doesn't crash...
+ */
}
/*
* Save off our header revision information.

View File

@ -1,9 +1,22 @@
-------------------------------------------------------------------
Fri Oct 25 13:37:55 UTC 2013 - rw@suse.de
- elilo.efi
* update to elilo-3.16 to fix OBS download check.
Essentially "white-space" changes, plus bumping version number,
minus Debian idiosyncrasies.
- elilo.spec
* Remove date string from 'eliloalt'.
* Avoid duplication of 'elilo.txt'.
- elilo.pl
* Support for 'UUID=' and 'LABEL=' to specify root file-system.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Oct 24 17:18:48 UTC 2013 - rw@suse.de Thu Oct 24 17:18:48 UTC 2013 - rw@suse.de
- elilo.spec - elilo.spec
* Add perl modules to 'PreReq'. (bnc#842183) * Add perl modules to 'PreReq'. (bnc#842183)
- Update to elilo-3.14 from SLE11. - Update openSUSE to elilo-3.14 from SLE11.
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Aug 16 12:01:42 UTC 2013 - rw@suse.de Fri Aug 16 12:01:42 UTC 2013 - rw@suse.de
@ -32,7 +45,7 @@ Fri Apr 19 13:28:08 UTC 2013 - rw@suse.com
- elilo.efi - elilo.efi
* Clear console on startup. (bnc#812799) * Clear console on startup. (bnc#812799)
* Avoid crash caused by EFI memory map changes. * Avoid crash caused by EFI memory map changes. (bnc#800035)
- elilo.pl - elilo.pl
* Work around chainloading issue with XEN. (bnc#812109) * Work around chainloading issue with XEN. (bnc#812109)
@ -153,7 +166,7 @@ Fri Jun 17 12:54:53 UTC 2011 - rw@suse.de
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Dec 17 10:51:23 UTC 2010 - coolo@novell.com Fri Dec 17 10:51:23 UTC 2010 - coolo@novell.com
- Update to elilo-3.12 from SLE11 to fix EFI boot (bnc#659368) - Update openSUSE to elilo-3.12 from SLE11 to fix EFI boot (bnc#659368)
(see ChangeLog for a detailed log) (see ChangeLog for a detailed log)
------------------------------------------------------------------- -------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
# $Id: elilo.pl,v 0.85 2013/08/15 17:38:03 rw Exp $ # $Id: elilo.pl,v 0.86 2013/10/25 14:22:33 rw Exp $
use strict; use strict;
my $C = $0; $C =~ s{^.*/}{}; my $C = $0; $C =~ s{^.*/}{};
@ -57,7 +57,7 @@ EoD
$| = 1; $| = 1;
sub Version() { sub Version() {
my $v = q($Revision: 0.85 $ ); my $v = q($Revision: 0.86 $ );
$v =~ s/^\$ Rev.*:\ ([0-9.]+)\ \$\ /$1/x; $v =~ s/^\$ Rev.*:\ ([0-9.]+)\ \$\ /$1/x;
$v .= " (part of elilo-$Edition)" if ( $Edition ne "\@EDITION\@" ); $v .= " (part of elilo-$Edition)" if ( $Edition ne "\@EDITION\@" );
print "$C version $v\n"; print "$C version $v\n";
@ -524,10 +524,19 @@ sub readLink($) {
sub GconfProbeFSuuid($) { sub GconfProbeFSuuid($) {
my( $dev) = @_; my( $dev) = @_;
my $udir = "/dev/disk/by-uuid"; my $udir = "/dev/disk/by-uuid";
my $ldir = "/dev/disk/by-label";
my $uuid = ""; my $uuid = "";
my $tgt = ""; my $tgt = "";
Info( 5, "GconfProbeFSuuid($dev): \n"); Info( 5, "GconfProbeFSuuid($dev): \n");
if ( ! -b $dev ) {
if ( $dev =~ m{^UUID=([0-9A-Fa-f-]+)$} ) {
return ( (-b "$udir/$1") ? $1 : "" );
} elsif ( $dev =~ m{^LABEL=([0-9A-Fa-f-]+)$} ) {
$dev = readLink( "$ldir/$1");
return ( "" ) unless ( defined( $dev) );
}
}
while ( -l $dev ) { while ( -l $dev ) {
$_ = readLink( $dev); $_ = readLink( $dev);
return ( "" ) unless ( defined( $_) ); return ( "" ) unless ( defined( $_) );
@ -553,23 +562,24 @@ sub GconfProbeFSuuid($) {
return ( $uuid ); return ( $uuid );
} }
sub GconfFSuuid($) { sub GconfFSuuid($) {
my( $rdev) = @_; my( $spec) = @_;
return ( "" ) unless ( $Sconf{SB} ) ; return ( "" ) unless ( $Sconf{SB} );
return ( $GconfFSuuid{$rdev} ) if ( exists( $GconfFSuuid{$rdev}) ); return ( $GconfFSuuid{$spec} ) if ( exists( $GconfFSuuid{$spec}) );
my $ruuid = ""; my $uuid = "";
my $cmd = "/usr/sbin/grub2-probe"; my $cmd = "/usr/sbin/grub2-probe";
if ( -x $cmd ) { if ( -x $cmd ) {
chomp( $ruuid = qx{$cmd --device "$rdev" --target=fs_uuid}) if ( -x $cmd ); my $dop = (-b $spec) ? "--device" : "";
chomp( $uuid = qx{$cmd --target=fs_uuid $dop "$spec"});
} else { } else {
$ruuid = GconfProbeFSuuid( $rdev); $uuid = GconfProbeFSuuid( $spec);
} }
if ( ! $ruuid ) { if ( ! defined( $uuid) || ! $uuid ) {
Panic( 3, "couldn't determine fs_uuid -- skip Secure Boot (grub) config!\n"); Panic( 3, "couldn't determine fs_uuid -- skip SecureBoot/grub2 config!\n");
$Sconf{SB} = ""; $Sconf{SB} = "";
} }
$GconfFSuuid{$rdev} = $ruuid; $GconfFSuuid{$spec} = $uuid;
return ( $ruuid ); return ( $uuid );
} }
sub Gconf() { sub Gconf() {
my @parts = ("pre", "Econf", "Xconf", "post"); my @parts = ("pre", "Econf", "Xconf", "post");
@ -621,7 +631,7 @@ sub Gconf() {
$Gconf{$k} = $Econf{$lbl}{$k} if (exists( $Econf{$lbl}{$k})); $Gconf{$k} = $Econf{$lbl}{$k} if (exists( $Econf{$lbl}{$k}));
} }
$Gconf{rootfsuuid} = GconfFSuuid( $Econf{$lbl}{root}); $Gconf{rootfsuuid} = GconfFSuuid( $Econf{$lbl}{root});
#TODO: $Gconf{bootfsuuid} = GconfFSuuid( GconfFSdev( "/boot")); #TODO: $Gconf{bootfsuuid} = GconfFSuuid( "/boot");
} elsif ( $ns eq "Xconf" ) { } elsif ( $ns eq "Xconf" ) {
foreach my $k ( "vmm", "kernel", "cfg", "description") { foreach my $k ( "vmm", "kernel", "cfg", "description") {
$Gconf{$k} = $Xconf{$lbl}{$k} if (exists( $Xconf{$lbl}{$k})); $Gconf{$k} = $Xconf{$lbl}{$k} if (exists( $Xconf{$lbl}{$k}));
@ -932,7 +942,7 @@ sub ebm($$$$$) {
next unless ( hwpEqual( $hwp, $3) ); next unless ( hwpEqual( $hwp, $3) );
if ( $file eq $4 ) { if ( $file eq $4 ) {
my $c = hex($1); my $c = hex($1);
# This effort below to elliminate holes in the boot entry list voids # This effort below to elliminate holes in the boot enry list voids
# the attempt to order EBM entries by simply calling '--refresh-EBM'. # the attempt to order EBM entries by simply calling '--refresh-EBM'.
# The full solution would require adding an interface to 'efibootmgr -o', # The full solution would require adding an interface to 'efibootmgr -o',
# which is unfortunately not feasable this late in the release cycle. # which is unfortunately not feasable this late in the release cycle.

View File

@ -29,18 +29,22 @@ Name: elilo
Summary: EFI Linux Loader Summary: EFI Linux Loader
License: GPL-2.0+ License: GPL-2.0+
Group: System/Boot Group: System/Boot
Version: 3.14 Version: 3.16
Release: 0 Release: 0
ExclusiveArch: ia64 %ix86 x86_64 ExclusiveArch: ia64 %ix86 x86_64
PreReq: /usr/bin/perl perl(Pod::Usage) perl(Getopt::Long) PreReq: /usr/bin/perl perl(Pod::Usage) perl(Getopt::Long)
# "perl" must be in place *before* any package's 'pre' or 'post' section # "perl" must be in place *before* any package's 'pre' or 'post' section
# can (directly or indirectly) run '/sbin/elilo'! (bnc#842183) # can (directly or indirectly) run '/sbin/elilo'! (bnc#842183)
%ifarch ia64
PreReq: perl(File::Compare)
%endif
Url: http://elilo.sourceforge.net/ Url: http://elilo.sourceforge.net/
Source: http://dl.sourceforge.net/elilo/elilo-3.14-source.tar.gz #ource: http://downloads.sourceforge.net/elilo/elilo-3.16-all.tar.gz
Source: elilo-%{version}-source.tar.xz
Source1: elilo.pl Source1: elilo.pl
Source2: debian.eliloalt.man8 Source2: debian.eliloalt.man8
Source3: elilo.conf.man5 Source3: elilo.conf.man5
Source4: 3.14-release-notes.txt Source4: http://downloads.sourceforge.net/elilo/%{version}-release-notes.txt
Source9: rpmlintrc Source9: rpmlintrc
Patch0: elilo-ipv6.diff Patch0: elilo-ipv6.diff
Patch1: elilo-max-conf.diff Patch1: elilo-max-conf.diff
@ -48,8 +52,8 @@ Patch2: elilo-mac-conf.diff
Patch3: elilo-auto-add_efi_memmap.diff Patch3: elilo-auto-add_efi_memmap.diff
Patch4: elilo-blocksize.diff Patch4: elilo-blocksize.diff
Patch5: elilo-text-mode.diff Patch5: elilo-text-mode.diff
Patch6: elilo-clean-console.diff Patch10: elilo-de-debianify.diff
Patch7: elilo-keep-start-params.diff Patch11: eliloalt-no-date.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -57,22 +61,22 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
The EFI Linux boot loader. The EFI Linux boot loader.
%prep %prep
%setup -q -n elilo %setup -q -n %{name}-%{version}-source
%patch0 -p1 %patch0 -p1
%patch1 -p1 %patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1 %patch5 -p1
%patch6 -p1 %patch10 -p1
%patch7 -p1 %patch11 -p1
%build %build
perl -pi -e 's{/usr/lib}{%{_libdir}}' Make.defaults perl -pi -e 's{/usr/lib}{%{_libdir}}' Make.defaults
################################################################## ##################################################################
## DO NOT ADD RPM OPT FLAGS! THIS DOES NOT BUILD AGAINST GLIBC. ## ## DO NOT ADD RPM OPT FLAGS! THIS DOES NOT BUILD AGAINST GLIBC. ##
################################################################## ##################################################################
make OPTIMFLAGS="-fno-strict-aliasing -fno-stack-protector" make OPTIMFLAGS="-fmessage-length=0"
perl -pe 's{\@EDITION\@}{%{version}-%{release}}; perl -pe 's{\@EDITION\@}{%{version}-%{release}};
s{\@LIBDIR\@}{%{_libdir}}; s{\@LIBDIR\@}{%{_libdir}};
s{\@ARCH\@}{%{_target_cpu}}; s{\@ARCH\@}{%{_target_cpu}};
@ -92,10 +96,15 @@ install -D -p -m 644 elilo.8 $RPM_BUILD_ROOT/usr/share/man/man8/elilo.8
install -D -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/usr/share/man/man8/eliloalt.8 install -D -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/usr/share/man/man8/eliloalt.8
install -D -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT/usr/share/man/man5/elilo.conf.5 install -D -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT/usr/share/man/man5/elilo.conf.5
install -p -m 644 %{SOURCE4} RELEASE-NOTES install -p -m 644 %{SOURCE4} RELEASE-NOTES
diff -q docs/README.txt docs/elilo.txt && rm -f docs/README.txt
%post %post
#/sbin/elilo -v || : if [ -r /etc/sysconfig/bootloader ]; then
echo "Please run /sbin/elilo!" . /etc/sysconfig/bootloader
if [ "$LOADER_TYPE" = "elilo" -a -r /etc/elilo.conf ]; then
/sbin/elilo -v || :
fi
fi
%files %files
%defattr(-, root, root) %defattr(-, root, root)

21
eliloalt-no-date.diff Normal file
View File

@ -0,0 +1,21 @@
---
tools/eliloalt.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/tools/eliloalt.c
+++ b/tools/eliloalt.c
@@ -282,7 +282,13 @@ main(int argc, char **argv)
switch(c) {
case 0: continue; /* fast path for options */
case 1:
- printf("Version %s Date: %s\n", ELILOALT_VERSION, __DATE__);
+ printf("Version %s\n", ELILOALT_VERSION);
+ /* Don't use __DATE__ here, as it causes
+ * excessive rebuilds, which seems very
+ * wasteful for a tool that did not change
+ * in a very long time, and probably won't
+ * any more...
+ */
exit(0);
case 2:
case 'h':