#! /usr/bin/perl # Check out the Autoconf sources and prepare them for building. # A copy of Automake must already be available in $PATH. # Takes one optional command line argument, which identifies the # commit to be checked out (this is passed directly to git clone's # --branch option: anything acceptable to that option may be used). # Copyright (C) 2021 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . use v5.14; # implicit use strict, use feature ':5.14' use warnings FATAL => 'all'; use utf8; use open qw(:utf8); use Cwd qw(getcwd); use FindBin (); use lib $FindBin::Bin; use BuildCommon qw( ensure_C_locale ensure_empty_stdin error run ); # FIXME these should be either specified on the command line # or in some kind of config file. use constant { AUTOCONF_REPO => 'https://git.savannah.gnu.org/git/autoconf.git', AUTOCONF_LAST_RELEASE => 'v2.71' }; sub main { my @branch; if (@_ == 0) { # If we are checking out the default branch, we can use # --shallow-exclude to save some # bandwidth (as of 2.72a.22-6027, roughly 1.5 MB with this, # vs 11.5 MBwith just --single-branch). We can't just use # --depth 1 because then git-version-gen will fail. @branch = ('--shallow-exclude', AUTOCONF_LAST_RELEASE); } elsif (@_ == 1) { # If we are not checking out the default branch, we don't # know where to cut off the history without breaking # git-version-gen. @branch = ('--branch', shift); } else { error("usage: $FindBin::Script [commit]"); } ensure_empty_stdin(); ensure_C_locale(); my $wd = getcwd(); run(qw(git clone --single-branch), @branch, AUTOCONF_REPO, 's-autoconf'); chdir('s-autoconf') or error("cd s-autoconf"); run('./bootstrap', '-v'); chdir('..') or error('cd ..'); mkdir('b-autoconf') or error('mkdir b-autoconf'); chdir('b-autoconf') or error('cd b-autoconf'); run('../s-autoconf/configure', '--prefix='.$wd.'/i-autoconf'); run(qw(make distcheck)); run(qw(make)); run(qw(make install)); } eval { main(@ARGV); exit(0); }; error("$@");