diff options
-rw-r--r-- | AUTHORS | 26 | ||||
-rw-r--r-- | devel/management/commands/reporead.py | 8 | ||||
-rw-r--r-- | mirrors/views/api.py | 1 | ||||
-rw-r--r-- | packages/migrations/0002_auto_20160731_0556.py | 20 | ||||
-rw-r--r-- | packages/models.py | 2 | ||||
-rw-r--r-- | releng/urls.py | 6 | ||||
-rw-r--r-- | releng/views.py | 24 | ||||
-rw-r--r-- | settings.py | 3 | ||||
-rw-r--r-- | sitestatic/airvm_button.png | bin | 4931 -> 0 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.efi | bin | 0 -> 937248 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.efi.sig | bin | 0 -> 565 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.lkrn | bin | 0 -> 339041 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.lkrn.sig | bin | 0 -> 565 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.pxe | bin | 0 -> 339737 bytes | |||
-rw-r--r-- | sitestatic/netboot/ipxe.pxe.sig | bin | 0 -> 565 bytes | |||
-rw-r--r-- | templates/releng/archlinux.ipxe | 157 | ||||
-rw-r--r-- | templates/releng/netboot.html | 54 |
17 files changed, 292 insertions, 9 deletions
@@ -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 Binary files differdeleted file mode 100644 index 0acadc9c..00000000 --- a/sitestatic/airvm_button.png +++ /dev/null diff --git a/sitestatic/netboot/ipxe.efi b/sitestatic/netboot/ipxe.efi Binary files differnew file mode 100644 index 00000000..e491dc38 --- /dev/null +++ b/sitestatic/netboot/ipxe.efi diff --git a/sitestatic/netboot/ipxe.efi.sig b/sitestatic/netboot/ipxe.efi.sig Binary files differnew file mode 100644 index 00000000..65f652c9 --- /dev/null +++ b/sitestatic/netboot/ipxe.efi.sig diff --git a/sitestatic/netboot/ipxe.lkrn b/sitestatic/netboot/ipxe.lkrn Binary files differnew file mode 100644 index 00000000..a55ee8d1 --- /dev/null +++ b/sitestatic/netboot/ipxe.lkrn diff --git a/sitestatic/netboot/ipxe.lkrn.sig b/sitestatic/netboot/ipxe.lkrn.sig Binary files differnew file mode 100644 index 00000000..b7852f5c --- /dev/null +++ b/sitestatic/netboot/ipxe.lkrn.sig diff --git a/sitestatic/netboot/ipxe.pxe b/sitestatic/netboot/ipxe.pxe Binary files differnew file mode 100644 index 00000000..d1cad8f5 --- /dev/null +++ b/sitestatic/netboot/ipxe.pxe diff --git a/sitestatic/netboot/ipxe.pxe.sig b/sitestatic/netboot/ipxe.pxe.sig Binary files differnew file mode 100644 index 00000000..deecc79e --- /dev/null +++ b/sitestatic/netboot/ipxe.pxe.sig 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 (<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 %} |