From owner-soc-status@FreeBSD.ORG Sun Jul 28 22:50:35 2013 Return-Path: Delivered-To: soc-status@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 74A87CF0 for ; Sun, 28 Jul 2013 22:50:35 +0000 (UTC) (envelope-from mbw500@york.ac.uk) Received: from mail-ob0-f175.google.com (mail-ob0-f175.google.com [209.85.214.175]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 416C12E99 for ; Sun, 28 Jul 2013 22:50:34 +0000 (UTC) Received: by mail-ob0-f175.google.com with SMTP id xn12so7829839obc.6 for ; Sun, 28 Jul 2013 15:50:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=IWjHZcOCz1OI0J9PEfJ1SP7Erlu5Hrd9oK78TyDknd8=; b=J5Lbdc7KrF5PEZd48th+F365CkHCQhloI0A3AKh+DVh/iiza+NB4N7AdUnTF3bUgcE zaPM8ko2a12ehguK/Wtxy8HNBgtpLJSxrmPGUCX3VghMXKT/vPVhSwzBrWzQug8yjEw3 meBQwL5LGuAA5HEQVR2WtXeg9AB5Zkg+aVMNMyj4YmiL1yKslLdAK2AhlWnmSTZh7XB/ XfuLRL5tmkR6Avk796RTS2ot84DPdiuZO2BfgMvp6cOaF4zAqxYHExPHqdfijHNd6My7 6VOXLIBPFqEjvaCiyBChnguzIOqgxfZsnoSbd3799/Z9T/fBDMFAFYtSjkbD5aJXOcvG LoKg== MIME-Version: 1.0 X-Received: by 10.50.225.66 with SMTP id ri2mr729316igc.55.1375051828631; Sun, 28 Jul 2013 15:50:28 -0700 (PDT) Received: by 10.42.209.70 with HTTP; Sun, 28 Jul 2013 15:50:28 -0700 (PDT) Date: Sun, 28 Jul 2013 22:50:28 +0000 Message-ID: Subject: GSoC Status: Week 6 and Half-Term Summary From: Matthew Windsor To: soc-status@freebsd.org X-Gm-Message-State: ALoCoQn5/xbMxtpEcvMvSLdgeSi26QbWK7cd4RygrcepDdc0jevVBIlu/3rUQNh5Fy0oGakgmAdQ Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Justin Edward Muniz , Eitan Adler X-BeenThere: soc-status@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Summer of Code Status Reports and Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jul 2013 22:50:35 -0000 Hi there, The last soc-status report of the half-term and before I go on a slightly badly timed but pre-warned-in-proposal holiday is here. Most of the changes brought in this week are sorely untested and the last few might have broken off a few features that worked previously; as I said in the last commit I did, I'll have a look on Monday to see if anything can be quickfixed before the mid-term evaluation is up. Null-pointer asserts have been added into most of the existing code (r255055, r255056, r255077, r255099); obviously these aren't major improvements but hopefully they've instilled me with a more proactive outlook to adding in assertions in future and might trap some of the more stupid bugs I'm introducing as I go along. I wrote a very quick shell-script test for SearchFile (r255100) that compares its output to that of pkgng. More comprehensive testing is long overdue and something I definitely want to touch on in the next term. In r255152 I started working on UpdatePackages, but due to a misinterpretation of the pkgng API what I actually implemented here was UpdateSystem... which I then got confused with UpgradeSystem which is a different PackageKit action involving distribution releases. (Argh!) r255153, r255127, r255231 and r255240 continue this confusion. UpdateSystem hasn't been tested much (mainly because of it failing and the events system not picking up the error to report it correctly), but in previous pseudo-UpdatePackage issues it did seem at least to be solving correctly. At r255231 I finally started using full-length commit messages, as I realised while looking at svnweb that mine were below average in terms length and detail. >From r255264 and including r255265, r255266 and 255285, I've been working on replacing the query-based job resolution (as in, each action ending in a job goes through query/rquery first and then pours the resulting packages into their own jobs) with a system based on making one job and then checking its solution for PackageID failures. In the process, I've redone the current job-based actions (InstallPackages/UpdateSystem/RemovePackages) to use the new job system and also created UpdatePackages. This is the source of quite a bit of breakage in the current system, I fear, as it has been slightly rushed in order to have it done for this status update. I intend to give it a once-over tomorrow and do some informal fix-ups. Unfortunately I didn't get around to making the backend reject PackageIDs with no version, but this will probably be done tomorrow. So, at the end of the half-term, the backend has a lot of code implemented covering the core features of install/update/remove/search-by-name/get-details-of-package, and many of the common patterns (query-based actions, job-based actions, package manipulation, packageID manipulation) have been identified and abstracted. What remains really for the next half-term is to squish bugs (and there are *many* bugs, some of them show-stopping), round out the remaining functions, polish the code and ready it for a ports release with pushing to PackageKit as a possibility once it's ready. Finally, here is what I think will be the rough, minimal outline of work for next term (I'll have a more detailed overview before I head off on Tuesday): (Week: Goal) 6: Quickfixes on week 5 implementation 7: Remove query-based jobs; improve events system to provide correct errors on job failure; more in-depth checking for any issues remaining from the jobs change. 8: GetDepends, SearchDetails and GetRequires; at this stage with the exception of Cancel the backend should be at feature parity with ports. In-depth attempts to fix the install crash bug. 9: Try implementing Cancel, RepoEnable (text file hackery probably), and WhatProvides. Otherwise, tests. 10: Tests for each idempotent action. 11: Tests, where possible, for non-idempotent actions, jail/VM if possible. 12: Create a port and upload to ports tree. Also, final call for updating PackageKit: if possible, updating; if not, contingency and cleanup. Between soft and hard deadline: Contingency ~ Matt