| #!/usr/bin/perl |
| |
| use strict; |
| use warnings; |
| |
| use File::Basename; |
| use lib File::Basename::dirname($0); |
| use LinuxStableQueue qw(quilt_dir_from_git_dir next_update); |
| use FileHandle; |
| |
| my $quilt_dir = quilt_dir_from_git_dir('.') |
| or die "couldn't find patch queue"; |
| |
| # Init quilt status if not yet done |
| if (! -d '.pc') { |
| mkdir('.pc') or die "mkdir: $!"; |
| my $fh = new FileHandle('.pc/.quilt_patches', 'w') or die "open: $!"; |
| $fh->print("$quilt_dir\n"); |
| $fh->close or die "close: $!"; |
| $fh = new FileHandle('.pc/.quilt_series', 'w') or die "open: $!"; |
| $fh->print("series\n"); |
| $fh->close or die "close: $!"; |
| $fh = new FileHandle('.pc/.version', 'w') or die "open: $!"; |
| $fh->print("2\n"); |
| $fh->close; |
| } |
| |
| # Bump version in Makefile if not yet done |
| my $version = `make kernelversion`; |
| chomp $version; |
| if ($version !~ /-rc\d+$/) { |
| $version = next_update($version); |
| $version =~ /^\d+\.\d+\.(\d+)(.*)/; |
| my ($sublevel, $extraversion) = ($1, $2 . '-rc1'); |
| my $old = new FileHandle('Makefile', 'r') or die "Makefile: $!"; |
| my $new = new FileHandle('Makefile.new', 'w') or die "Makefile.new: $!"; |
| while (<$old>) { |
| s/^SUBLEVEL =.*/SUBLEVEL = $sublevel/; |
| s/^EXTRAVERSION =.*/EXTRAVERSION = $extraversion/; |
| $new->print($_); |
| } |
| $old->close; |
| $new->close or die "close: $!"; |
| rename('Makefile.new', 'Makefile') or die "rename: $!"; |
| } |
| |
| # Push, refresh and build until we fail or hit the end of the queue |
| my $nproc = (`nproc` || 1) + 0; # POSIX::sysconf sucks |
| while (1) { |
| system('quilt', 'push', '--fuzz=0') == 0 or die; |
| system('quilt', 'refresh') == 0 or die; |
| system('make', "-j$nproc") == 0 or die; |
| } |