summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS26
-rw-r--r--devel/management/commands/reporead.py8
-rw-r--r--mirrors/views/api.py1
-rw-r--r--packages/migrations/0002_auto_20160731_0556.py20
-rw-r--r--packages/models.py2
-rw-r--r--releng/urls.py6
-rw-r--r--releng/views.py24
-rw-r--r--settings.py3
-rw-r--r--sitestatic/airvm_button.pngbin4931 -> 0 bytes
-rw-r--r--sitestatic/netboot/ipxe.efibin0 -> 937248 bytes
-rw-r--r--sitestatic/netboot/ipxe.efi.sigbin0 -> 565 bytes
-rw-r--r--sitestatic/netboot/ipxe.lkrnbin0 -> 339041 bytes
-rw-r--r--sitestatic/netboot/ipxe.lkrn.sigbin0 -> 565 bytes
-rw-r--r--sitestatic/netboot/ipxe.pxebin0 -> 339737 bytes
-rw-r--r--sitestatic/netboot/ipxe.pxe.sigbin0 -> 565 bytes
-rw-r--r--templates/releng/archlinux.ipxe157
-rw-r--r--templates/releng/netboot.html54
17 files changed, 292 insertions, 9 deletions
diff --git a/AUTHORS b/AUTHORS
index 5ab816b3..7343fb5f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,12 +1,32 @@
-# CURRENT MAINTAINER
+# CURRENT MAINTAINERS
+Angel Velasquez <angvp@archlinux.org>
Dan McGee <dan@archlinux.org>
# OTHER AUTHORS
+Aaron Griffin <aaronmgriffin@gmail.com>
+Andrea Scarpino <andrea@archlinux.org>
+Angel Velasquez <angvp@archlinux.org>
+Dan McGee <dan@archlinux.org>
+Dario Giovannetti <dariogiova@gmail.com>
+Dieter Plaetinck <dieter@plaetinck.be>
+Dusty Phillips <dusty@archlinux.org>
+Eliott <eliott@cactuswax.net>
+Evangelos Foutras <evangelos@foutrelis.com>
+Florian Pritz <bluewind@xinu.at>
+Ismael Carnales <icarnales@gmail.com>
+Jakub Klinkovský <j.l.k@gmx.com>
+Jelle van der Waa <jelle@vdwaa.nl>
+Johannes Löthberg <johannes@kyriasis.com>
Judd Vinet <judd@archlinux.org>
+Lukas Fleischer <archlinux@cryptocrack.de>
+Olivier Keun <olivier.keun@gmail.com>
+Pierre Schmitz <pierre@archlinux.de>
+PyroPeter <abi1789@googlemail.com>
+Sergej Pupykin <sergej@home.sergej.pp.ru>
Simo Leone <simo@archlinux.org>
-eliott <eliott@cactuswax.net>
Thayer Williams <thayer@archlinux.org>
-Dusty Phillips <dusty@archlinux.org>
+Thomas Bächler <thomas@archlinux.org>
+Tom Willemsen <tom.willemsen@archlinux.us>
# PARABOLAWEB AUTHORS
Konstantinos Karantias <kostis@gtklocker.com>
diff --git a/devel/management/commands/reporead.py b/devel/management/commands/reporead.py
index c76b5011..7b963c28 100644
--- a/devel/management/commands/reporead.py
+++ b/devel/management/commands/reporead.py
@@ -33,7 +33,7 @@ from django.utils.timezone import now
from devel.utils import UserFinder
from main.models import Arch, Package, PackageFile, Repo
-from packages.models import Depend, Conflict, Provision, Replacement, Update
+from packages.models import Depend, Conflict, Provision, Replacement, Update, PackageRelation
from packages.utils import parse_version
@@ -401,6 +401,12 @@ def db_update(archname, reponame, pkgs, force=False):
with transaction.atomic():
populate_pkg(dbpkg, pkg, timestamp=timestamp)
Update.objects.log_update(None, dbpkg)
+ prel = PackageRelation(pkgbase=dbpkg.pkgbase,
+ user=dbpkg.packager,
+ type=PackageRelation.MAINTAINER)
+ prel.save()
+
+
except IntegrityError:
if architecture.agnostic:
logger.warning("Could not add package %s; "
diff --git a/mirrors/views/api.py b/mirrors/views/api.py
index b72585e6..581a0d5e 100644
--- a/mirrors/views/api.py
+++ b/mirrors/views/api.py
@@ -26,6 +26,7 @@ class MirrorStatusJSONEncoder(DjangoJSONEncoder):
country = obj.country
data['country'] = unicode(country.name)
data['country_code'] = country.code
+ data['isos'] = obj.mirror.isos
return data
if isinstance(obj, MirrorProtocol):
return unicode(obj)
diff --git a/packages/migrations/0002_auto_20160731_0556.py b/packages/migrations/0002_auto_20160731_0556.py
new file mode 100644
index 00000000..feaa8b97
--- /dev/null
+++ b/packages/migrations/0002_auto_20160731_0556.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('packages', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='signoffspecification',
+ name='known_bad',
+ field=models.BooleanField(default=False, help_text=b'Is this package known to be broken in some way?'),
+ preserve_default=True,
+ ),
+ ]
diff --git a/packages/models.py b/packages/models.py
index 03f03422..83cc7cb7 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -86,7 +86,7 @@ class SignoffSpecification(models.Model):
enabled = models.BooleanField(default=True,
help_text="Is this package eligible for signoffs?")
known_bad = models.BooleanField(default=False,
- help_text="Is package is known to be broken in some way?")
+ help_text="Is this package known to be broken in some way?")
comments = models.TextField(null=True, blank=True)
objects = SignoffSpecificationManager()
diff --git a/releng/urls.py b/releng/urls.py
index ca76eb25..57013291 100644
--- a/releng/urls.py
+++ b/releng/urls.py
@@ -22,9 +22,15 @@ releases_patterns = patterns('releng.views',
'release_torrent', {}, 'releng-release-torrent'),
)
+netboot_patterns = patterns('releng.views',
+ (r'^archlinux\.ipxe$', 'netboot_config', {}, 'releng-netboot-config'),
+ (r'^$', 'netboot_info', {}, 'releng-netboot-info')
+)
+
urlpatterns = patterns('',
(r'^feedback/', include(feedback_patterns)),
(r'^releases/', include(releases_patterns)),
+ (r'^netboot/', include(netboot_patterns)),
)
# vim: set ts=4 sw=4 et:
diff --git a/releng/views.py b/releng/views.py
index 0fb55b29..03ea8a86 100644
--- a/releng/views.py
+++ b/releng/views.py
@@ -13,7 +13,7 @@ from django.views.generic import DetailView, ListView
from .models import (Architecture, BootType, Bootloader, ClockChoice,
Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source,
Test, Release)
-
+from mirrors.models import (Mirror, MirrorUrl, MirrorProtocol)
def standard_field(model, empty_label=None, help_text=None, required=True):
return forms.ModelChoiceField(queryset=model.objects.all(),
@@ -280,4 +280,26 @@ def releases_json(request):
response = HttpResponse(to_json, content_type='application/json')
return response
+def netboot_config(request):
+ release_qs = Release.objects.filter(available=True).order_by('-release_date')
+ releases = [ release.version for release in release_qs ]
+ mirrorurls = MirrorUrl.objects.filter(protocol__protocol='http',
+ active=True,
+ mirror__public=True,
+ mirror__active=True,
+ mirror__isos=True)
+ mirrorurls = sorted( mirrorurls,
+ key=lambda x: x.mirror.name)
+ mirrorurls = sorted( mirrorurls,
+ key=lambda x: x.country.name)
+ context = {
+ 'archs': [ 'i686', 'x86_64' ],
+ 'releases': releases,
+ 'mirrorurls': mirrorurls,
+ }
+ return render(request, "releng/archlinux.ipxe", context, content_type='text/plain')
+
+def netboot_info(request):
+ return render(request, "releng/netboot.html", None)
+
# vim: set ts=4 sw=4 et:
diff --git a/settings.py b/settings.py
index 071735cf..57454f15 100644
--- a/settings.py
+++ b/settings.py
@@ -163,9 +163,6 @@ PGP_SERVER_SECURE = True
# URL to fetch a current list of available ISOs
ISO_LIST_URL = 'https://repo.parabola.nu/iso/'
-# URL to the PXE netboot instructions
-PXEBOOT_URL = 'https://repo.parabola.nu/pxeboot/'
-
# URL for SVN access for fetching commit messages (note absence of packages or
# community bit on the end, repo.svn_root is appended)
#SVN_BASE_URL = 'svn://svn.archlinux.org/'
diff --git a/sitestatic/airvm_button.png b/sitestatic/airvm_button.png
deleted file mode 100644
index 0acadc9c..00000000
--- a/sitestatic/airvm_button.png
+++ /dev/null
Binary files differ
diff --git a/sitestatic/netboot/ipxe.efi b/sitestatic/netboot/ipxe.efi
new file mode 100644
index 00000000..e491dc38
--- /dev/null
+++ b/sitestatic/netboot/ipxe.efi
Binary files differ
diff --git a/sitestatic/netboot/ipxe.efi.sig b/sitestatic/netboot/ipxe.efi.sig
new file mode 100644
index 00000000..65f652c9
--- /dev/null
+++ b/sitestatic/netboot/ipxe.efi.sig
Binary files differ
diff --git a/sitestatic/netboot/ipxe.lkrn b/sitestatic/netboot/ipxe.lkrn
new file mode 100644
index 00000000..a55ee8d1
--- /dev/null
+++ b/sitestatic/netboot/ipxe.lkrn
Binary files differ
diff --git a/sitestatic/netboot/ipxe.lkrn.sig b/sitestatic/netboot/ipxe.lkrn.sig
new file mode 100644
index 00000000..b7852f5c
--- /dev/null
+++ b/sitestatic/netboot/ipxe.lkrn.sig
Binary files differ
diff --git a/sitestatic/netboot/ipxe.pxe b/sitestatic/netboot/ipxe.pxe
new file mode 100644
index 00000000..d1cad8f5
--- /dev/null
+++ b/sitestatic/netboot/ipxe.pxe
Binary files differ
diff --git a/sitestatic/netboot/ipxe.pxe.sig b/sitestatic/netboot/ipxe.pxe.sig
new file mode 100644
index 00000000..deecc79e
--- /dev/null
+++ b/sitestatic/netboot/ipxe.pxe.sig
Binary files differ
diff --git a/templates/releng/archlinux.ipxe b/templates/releng/archlinux.ipxe
new file mode 100644
index 00000000..4945868c
--- /dev/null
+++ b/templates/releng/archlinux.ipxe
@@ -0,0 +1,157 @@
+#!ipxe
+{% regroup mirrorurls by country as mirrors_by_country %}
+
+# Figure out if client is 64-bit capable
+cpuid --ext 29 && set cpuarch x86_64 || set cpuarch i686
+
+# allow only trusted images
+imgtrust
+
+# initial options
+set bootarch ${cpuarch}
+set release {{ releases.0 }}
+set mirrorurl
+set extrabootoptions ip=dhcp net.ifnames=0
+set countrycode
+
+:main
+menu Arch Linux Netboot
+item --gap Settings
+item set_architecture Architecture: ${bootarch}
+item set_release Release: ${release}
+isset ${mirrorurl} && item set_mirror Mirror: ${mirrorurl} || item set_mirror Choose a mirror
+item set_options Boot options: ${extrabootoptions}
+item
+isset ${mirrorurl} && item boot Boot Arch Linux || item --gap Boot Arch Linux
+item shell Drop to iPXE shell
+item reboot Reboot
+item exit Exit iPXE
+isset ${mirrorurl} && choose --default set_options selected || choose --default set_mirror selected || goto shell
+goto ${selected} || goto main
+
+:shell
+echo Type 'exit' to get the back to the menu
+shell
+goto main
+
+:reboot
+reboot
+
+:exit
+exit
+
+:set_architecture
+menu Arch Linux Netboot: Select Architecture
+item back back
+item
+item --gap Available architectures:
+iseq ${cpuarch} x86_64 && item x86_64 x64_64 ||
+item i686 i686
+choose selected || goto main
+iseq ${selected} back && goto main ||
+set bootarch ${selected}
+goto main
+
+:set_release
+menu Arch Linux Netboot: Select Release
+item back back
+item
+item --gap Available releases:
+{% for release in releases %}item {{ release }} {{ release }}
+{% endfor %}
+choose selected || goto main
+iseq ${selected} back && goto main ||
+set release ${selected}
+goto main
+
+:set_mirror
+goto select_mirror_country
+
+:select_mirror_country
+menu Arch Linux Netboot: Select Mirror
+item back back
+item
+item --gap Custom Configuration:
+item custom Enter mirror URL
+item
+item --gap Select Mirror By Country:
+{% for mirrorgroup in mirrors_by_country %}
+{% if mirrorgroup.grouper == '' %}
+item 00 Global
+{% else %}
+item {{ mirrorgroup.grouper }} {{ mirrorgroup.grouper.name }}
+{% endif %}
+{% endfor %}
+isset ${countrycode} && choose --default ${countrycode} selected || choose selected || goto main
+iseq ${selected} back && goto main ||
+iseq ${selected} custom && goto enter_mirror_url ||
+set countrycode ${selected}
+goto select_mirror_url
+
+:enter_mirror_url
+set countrycode
+echo Enter the mirror URL including the trailing slash.
+echo Example: http://some.host/archlinux/
+echo
+echo -n Mirror URL: ${} && read mirrorurl || goto select_mirror_country
+goto main
+
+:select_mirror_url
+goto select_mirror_url_${countrycode} || goto select_mirror_country
+
+{% for mirrorgroup in mirrors_by_country %}
+{% if mirrorgroup.grouper == '' %}
+:select_mirror_url_00
+set countryname Global
+{% else %}
+:select_mirror_url_{{ mirrorgroup.grouper }}
+set countryname {{ mirrorgroup.grouper.name }}
+{% endif %}
+menu Arch Linux Netboot: Select Mirror
+item back back
+item
+item --gap Available mirrors in ${countryname}
+{% for mirror in mirrorgroup.list %}item {{ mirror.url }} {{ mirror.mirror.name }}
+{% endfor %}
+choose selected || goto select_mirror_country
+iseq ${selected} back && goto select_mirror_country ||
+set mirrorurl ${selected}
+goto main
+{% endfor %}
+
+:set_options
+echo -n Boot options: ${} && read extrabootoptions ||
+goto main
+
+:boot
+echo Booting Arch Linux ${bootarch} ${release} from ${mirrorurl}
+echo
+kernel ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz || goto failed_download
+imgverify vmlinuz ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz.ipxe.sig || goto failed_verify
+initrd ${mirrorurl}iso/${release}/arch/boot/intel_ucode.img || goto failed_download
+imgverify intel_ucode.img ${mirrorurl}iso/${release}/arch/boot/intel_ucode.img.ipxe.sig || goto failed_verify
+initrd ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img || goto failed_download
+imgverify archiso.img ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img.ipxe.sig || goto failed_verify
+imgargs vmlinuz initrd=intel_ucode.img initrd=archiso.img archiso_http_srv=${mirrorurl}iso/${release}/ archisobasedir=arch verify=y ${extrabootoptions}
+boot || goto failed_boot
+
+:failed_download
+echo
+echo Failed to download a file.
+goto failed
+
+:failed_verify
+echo
+echo Failed to verify a file.
+goto failed
+
+:failed_boot
+echo
+echo Boot failed.
+goto failed
+
+:failed
+echo Press a key to return to the menu.
+prompt
+imgfree
+goto main
diff --git a/templates/releng/netboot.html b/templates/releng/netboot.html
new file mode 100644
index 00000000..36404588
--- /dev/null
+++ b/templates/releng/netboot.html
@@ -0,0 +1,54 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block title %}Arch Linux - Netboot{% endblock %}
+
+{% block content %}
+<div id="arch-netboot" class="box">
+
+<h2>Arch Linux Netboot</h2>
+
+<h3>About Netboot</h3>
+
+<p>Netboot images are small (&lt;1MB) images that can be used to download the latest Arch Linux release on the fly upon system boot.
+It is unnecessary to update the netboot image, the newest release will be available automatically.</p>
+
+<p>Netboot uses customized <a href="http://ipxe.org">iPXE</a> builds.
+The Linux kernel, initramfs and squashfs files for the live system are downloaded from an Arch Linux mirror.
+The integrity of all downloaded files is verified with cryptographic signatures.</p>
+
+<h3>Requirements</h3>
+
+<p>To use netboot, the following requirements must be met:
+
+<ul>
+<li>Wired (ethernet) internet connection with DHCP autoconfiguration</li>
+<li>Sufficient memory to store and run the live system</li>
+</ul>
+
+</p>
+
+<h3>Download</h3>
+
+<h4>BIOS</h4>
+
+<ul>
+<li><a href="{% static "netboot/ipxe.lkrn" %}">ipxe.lkrn</a> (<a href="{% static "netboot/ipxe.lkrn.sig" %}">PGP signature</a>) - Linux kernel-like image that can be started with any Linux bootloader</li>
+<li><a href="{% static "netboot/ipxe.pxe" %}">ipxe.pxe</a> (<a href="{% static "netboot/ipxe.pxe.sig" %}">PGP signature</a>) - PXE image for chainloading from a PXE environment</li>
+</ul>
+
+<h4>UEFI</h4>
+
+<ul>
+<li><a href="{% static "netboot/ipxe.efi" %}">ipxe.efi</a> (<a href="{% static "netboot/ipxe.efi.sig" %}">PGP signature</a>) - x86_64 UEFI executable</li>
+</ul>
+
+<p>You can build your own iPXE images compatible with netboot.
+For details, check out the <a href="https://aur.archlinux.org/packages/ipxe-netboot">ipxe-netboot AUR package</a>.</p>
+
+<h3>More information</h3>
+
+<p>For detailed usage instructions, check out the <a href="https://wiki.archlinux.org/index.php/Netboot">netboot wiki page</a>.
+
+</div>
+{% endblock %}