-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 1.8 Date: Sun, 30 Aug 2020 16:49:17 +0200 Source: mini-buildd Architecture: source Version: 1.9.0 Distribution: experimental Urgency: medium Maintainer: Stephan Sürken <absurd@debian.org> Changed-By: Stephan Sürken <absurd@debian.org> Closes: 790056 Changes: mini-buildd (1.9.0) experimental; urgency=medium . ** 1.9.x are _development_ releases, use for testing only. ** . Issue Soup, plate VII: Armageddon This release updates to 1.9.x versioning scheme (indicating that next stable will be 2.0.x, and we are getting closer;). It addresses various mixed issues -- some of which demanded severe internal refactoring. . Let's try to summarize what's user-visible: . - Further improves 'events' format and handling; merges 'notify' (E-Mail). - REJECT on uploads with unfinalized changelog. - testsuite now tests far more use cases. - threads: Faster shutdown (remove polling). - Builds may now be killed manually (via API call). - Removes SIGHUP capability (there really is no use case). - Command line args syntax for lists is now '--list a b' (was '--list a --list b'). - API 'getsourceslist' overhauled, added ability to set apt line options. - Simplify default apt 'archive id' (origin), and add ability to customize. . [ Stephan Sürken ] * [c5d4f48] builder.py (Build.mbd_run): Indent fixes. * [0d76cc0] repository.py: Minor formal code improvements around package install. * [4b4ee21] builder.py: More reasonable debug logs on live logs expiration. * [0ac756d] builder.py: No need to use django timezone util for UTC (any more). * [6f3062c] repository.py (Repository.mbd_package_install): On binary package install failure, revert to rollback0 (Fixes possibly partially installed packages). * [9497ba3] changes.py (Upload.__init__): Forbid 'unfinalized' changelog entries. * [bab4bc9] changes.py: With dedicated 'Upload' class, Options parser can now be initialised in constructor. * [0c45875] daemon.py: Re-order code. * [6621224] daemon.py (DaemonThread.mbd_run): Simplify code. * [50d211a] daemon.py: Rename start, stop, restart: Prefix _mbd (prepare class Daemon to be Thread itself). * [d07dd94] misc.py: Alternative Thread impl Thread1. * [8268706] httpd.py: Update to Thread1. * [a3d3a6c] ftpd.py (FtpD): Update to Thread1. * [8eeb43f] daemon.py (DaemonThread): Update to Thread1. * [235cbda] cron.py (Tab): Update to Thread1. * [42a7f0c] builder.py (Build): Update to Thread1. * [f1b1e99] builder.py (Builder): Update to Thread1. * [2b44add] Merge Thread1 -> Thread. * [98b91c6] daemon.py: Merging DaemonThread w/ Daemon (sort of carnage atm; not all works again). * [192dba8] misc.py: Add (commented) debug log for temp use. * [1a15833] misc.py: Add Singleton class (following metaclass template). * [a8a6c88] daemon.py: Use Singelton class (instead of using globals). * [d2b00ce] daemon.py: Daemon: Treat Daemon class naturally as Thread; start/join in mini-buildd, mbd_start/mbd_stop now only handles incoming (most things continue to work ;) * [10383a4] packager.py: Fix stray build result error wording: Rather "not packaging" than "not building". * [a29cad9] builder.py: Fix: Don't use event Thread class for building. * [6e4418e] daemon.py: Thread: Make *most* class vars '__init__ only'. * [28e9329] ftpd.py: Instead of (mis)using __del__, properly overwrite join(). * [7ed555d] misc.py (Singleton.destroy): Add destroy method. * [f11c6ed] daemon.py (Daemon): Get rid of extra mbd_start(), mbd_stop(). * [b422c70] daemon.py (Daemon): Get rid of extra is_running() (just use thread's is_alive()). * [2c546b3] daemon.py (Daemon): Remove (now no-op) is_busy(). * [b63b8ae] daemon.py: Move model getter to models.daemon. * [b37dfac] daemon.py: Don't start subthreads in __init__ -- rather overwrite start(). * [22451d0] daemon.py (Daemon): Use dict for subthreads. * [1f8e521] daemon.py/cron.py: Switch to nicer notation for tab.add(). * [4c1023e] builder.py: Convert _expire_live_buildlogs() hack to weekly daemon cronjob. * [48d9558] daemon.py: Rather use list for threads. * [a93a508] debian/control: Need twisted >=20 to make events work. * [19a4ad5] daemon.py: Daemon class: Order methods. . [ Stephan Suerken ] * [10e797e] devel: Use auto codename ${MBD_CODENAME} consistently (Fix: sid/buster still occasionally hardoded). . [ Stephan Sürken ] * [23c2a0d] misc.py: Rename Thread -> EventThread. * [c67714a] misc.py (EventThread.__init__): Get rid of explicit daemon arg. * [f71d297] misc.py: Call task_done from EventThread. * [4d28e32] builder.py: Get rid of extra func build_close() (used only once, here). * [627baab] misc.py: Add PollerThread. * [c2e09d8] builder.py: Use Daemon singleton. * [3ecd267] packager.py: Use Daemon singleton. * [33bebbd] daemon.py: Remove get() in favour of Daemon() (singleton call). * [5ce9211] models/daemon.py: Re-fix Daemon save (we still need extra update_model() method). * [1e6ce79] models/daemon.py: Remove two unneeded calls to mbd_daemon(). * [6a6ce3d] daemon.py (Daemon.get_active_remotes): Remove, not used. * [4f924d1] daemon.py: Fix in-code wording: builds -> building, packages -> packaging. * [2350749] Revert "misc.py: Call task_done from EventThread." * [3b52472] Web home.html: Move crontab && toolbox down. * [e987cf7] builder.py (Build): Add support to kill() sbuild run. * [6ff3a5b] builder.py (Build): Add event log 'info'. * [bd88cf5] builder.py: Move 'building' dict to Builder. * [d578bbb] packager.py, daemon.py: Make 'Packager' its own thread (analogous to 'Builder'). * [366abac] builder.py: build_queue: Feed with Changes instance directly (no need to init Changes again). * [4a60b21] builder.py: Conformly rename "build_queue"->"builder_queue". * [f6dea7a] src: Bulk-remove some unnecessary f-strings (new pyflakes warning). * [a6f0c58] call.py: Fix pyflakes warning. * [61e97a8] mini-buildd-super-portext: Fix is_satisfied() method calling (triggered by pylint 2.5.3 warnings). * [70ba415] pylint: repository.py, source.py: Fix four invalid-str- returned warnings for __str__(). * [daf6cfe] daemon.py: Workaround for pylint crash (https://github.com/PyCQA/pylint/issues/3742). * [67fbbb0] API: New command "kill": Stop ongoing build arbitrarily. * [c99fa9a] HTML: mbd_building.html: Add "kill" API call to 'currently building' table. * [4475b53] builder.py: sbuild: Retrieve retval from wait() directly. * [d9eb58b] builder.py: Make Build thread non-daemon, and properly join(). * [e0f90e0] daemon.py: Fix thread order; do shutdown()+join() both at once. * [97fa94e] builder.py: Remove the (historic) extra status of a Build object. * [cf55e06] packager.py: Remove the (historic) extra status of a Package object (some compat still). * [e51fb96] misc.py: Rm (now unused) class Status. * [c8507f6] builder.py: Some structural changes (obsoletes extra BuildQueue class, and stops fiddling with 'globals' in Build class). * [b69c486] packager.py: Move packager queue to Packager class. * [e1b8c85] builder.py: Drop sleep(), use maxsize queue to limit parallel builds. * [621994e] packager.py: Fix/regression: Make new class vars not conflict w/ heritage. * [f202a84] .prospector.yaml: Sanitize pylint 'max-public-methods' (after Changes refac). * [b1d5110] events.py: Event: Support additional fields: 'maintainer', 'changed_by' and 'urls'. * [4aade81] .prospector.yaml: pylint: Adapt max-public-methods, max-args to more worldly values. * [e81e76d] changes.py (Changes.get_pkglog_url): New method to get pkg log URL (currently manually assembled in template only). * [bfab77a] models/daemon.py (Daemon.mbd_notify_event): New method (currently wrapping mbd_notify()). * [e3a101c] events.py (Events.logchanges): New convenience method (to get most fields from changes automatically). * [b2b8d58] config.py: Add HTTP_PATH_LOG constant. * [6dd5917] events.py (Events.logevent): Enable (email) notify for events. * [22d5d86] Event: Update all (but) one event log call. * [99e817e] devel: Adapt testsuite (MIGRATE will now show the "from" distribution). * [0b94bb7] packager.py (Package.install): Move INSTALLED event log to packager. * [2f9d2c8] packager.py (Package.autoports): Give automatic ports it's own method. * [16b1c62] devel: Add convenience shortcuts to build one test/keyring package. * [99b904d] packager.py: Install: Slightly re-design to make hacky EventException workaround obsolete. * [5c67bd8] packager.py: Improve logic of 'installer part' (avoids double package_close()). * [a4bd40b] packager.py (Packager.run_event): Rather check explicitly for 'Upload' type. * [abe61cf] models/repository.py (Repository._mbd_package_migrate): Switch back to deliver destination dist on MIGRATE event. * [909b5c8] models/repository.py: Rm mbd_package_notify() (and calls for events MIGRATE and REMOVE). * [c376b1f] devel: package build shortcuts: Add support for additional arguments. * [b595605] daemon.py (TestPackage): Add support to test auto-ports. * [8696254] api.py (TestPackages): Support auto-ports. * [584f27f] devel: Add auto-ports test to test suite. * [0ca7af9] packager.py: Code cleanup: Puts event logs at same "level" and makes 'port report' available in events. * [226293c] packager.py: Remove extra (email) notify code. * [cc59d75] daemon.py: Remove extra (email) notify code (for 'invalid changes'). * [7387a73] models/daemon.py: Rm all "msglog" code from mbd_notify(). * [f4ebed4] models/daemon.py: Merge mbd_notify() into mbd_notify_event(). * [ff6a8eb] models/daemon.py (Daemon.mbd_notify_event): Make this never fail, just log on error. * [8e69056] models/chroot,repository.py: mbd_reprepro, mbd_path: Rather use class vars than method. * [8ca24f3] src/*: Bulk-replace misleading field name "sourceversion" by "version". * [8ebc233] misc.py: Add commmon Thread class, Mandates shutdown() method only. * [41a94b3] ftpd.py: Update to new basic Thread class w/ shutdown() method (eliminates polling). * [6633b09] httpd.py: Update to new basic Thread class w/ shutdown() method (eliminates polling; actually call reactor.stop()). * [a7fc2d3] config.py: Add global "SHUTDOWN" object (so it may be used outside Thread context as well). * [b26daff] config.py: SHUTDOWN: Use str object (just more handy for logging) && fix Thread to always use object comparison ("is"). * [ee0945c] events.py: Send SHUTDOWN to clients (fixes httpd shutdown when event clients are connected). * [4fe4296] httpd.py (Events._render): On SHUTDOWN, issue resp. error via HTTP status. * [0e3b45f] Add debug logs when threads are finished. * [fbda719] cron.py: Decrease polling timeout from 5 to 3 seconds (improves shutdown delay). * [6c91093] mini-buildd: Properly start(), shutdown() and join() httpd thread. * [f15b321] mini-buildd: Remove support for SIGHUP (reload) (no real- world use case, proper service restart is nearly the same). * [ba9e084] devel: Add helper 'signal'. * [978c1e8] mini-buildd: Simplify signal handling: Overwrite TERM, INT, HUP: Proper shutdown, everything else default. * [f836ba0] mini-buildd: Merge run_daemon() into runcli(). * [f964c35] misc.py (Thread.__init__): Add subthreads support. * [3860a50] daemon.py (Daemon): Use subthreads. * [5aab9ad] httpd.py (HttpD): Don't run as daemon thread. * [21d47c9] devel: Add 'pid' helper shortcut. * [525f213] src: Remove two left-over task_done() calls (we don't join any queues). * [2e6f37c] packager.py (Package.extra): Merge changes.extra(). * [0d191bb] events.py: Fix: Event log replay should be reversed. * [1f9a93b] events.py (Event): Remove field "urls": Now in extra. * [cf8ab03] src/*: Bulk update wording: "package"->"source" for all uses of "package(s)" as "source package(s)". * [459f9bb] events.py: Move position for timestamp arg. * [85e0e2a] events.py (Event): Move all non-mandatory fields to field "extra". * [9c175b3] events.py: Harden event code. * [b4caa83] misc.py (PollerThread.get_event): Renice implementation. * [a4b8bad] devel: signal: Make work for multiple pids. * [5974c3b] misc.py (PollerThread): Return w/o delay on shutdown() (fixes (idle) daemon stop delay due to crontab). * [cdc280f] misc.py (DeferredThread): Adopted from builder.Build. * [3365be9] threads.py: Grant 'threads' their own module. * [21a01dd] builder.py (Build): Simplify upload code. * [71d3a6b] Fix three forgotten spots for the package->source renaming. * [a8d691d] Bulk-update naming convention for 'changes' vars: Use "upload", "buildrequest", "buildresult" where appropriate. * [b7f53e8] packager.py (Package.precheck): Move "Changed-By empty?" check here (for now, this is the correct place). * [a31bb0e] daemon.py..: Queue incoming events (changes file names) only, construct Changes objects later. * [9323c86] changes.py (Upload.__init__): Move "Changed-By empty?" check back here now (and let m-b-dput profit from early error). * [4375757] builder.py (Build): Make buildrequest class var "public". * [a4c9a81] events.py: Cosmetics: Put (automated) timestamp field last. * [beb2ade] changes.py (Changes.key): Bulk-replace confusing 'get_pkg_id' method by 'key' property. * [18c7b13] packager.py: Don't use extra var for key. * [6020729] devel: extra-packages: Don't fail if m-b-dput fails (as we now catch 'unfinalized' in user space already). * [e98e3f3] Add 'share/testsuite-packages' (static packages for testsuite): Add inital package 'unfinalized-changelog'. * [f9e4d81] devel: Add support for testsuite-packages. * [2d3785c] events.py: Add 'REJECTED' log event. * [b4fa1c8] packager.py: Let master exception handler try to add changes data to log. * [31ebe64] packager.py: Use new type REJECTED for master handler fail. * [2dd0efa] devel: testsuite: unfinalzed-changelog: Automatically test for correct behaviour. * [91ad5b8] .gitignore: Update for new testsuite dir. * [9d6694f] share/testsuite-packages: New package test 'unknown- repository'. * [e80d7fc] devel: testsuite: Auto checking 'unknown-repository'. * [d7f2ca0] share/testsuite-packages: Make package name prefix with event to expect. * [86e4bdc] devel: testsuite: Fully automate (albeit exception cases handling) package tests. * [9456466] packager.py: Initial fix for FAILED, REJECTED separation. * [d3d110d] packager.py (Package): Make Package construct from event directly. * [2e1d96e] packager.py: Deletion from packaging dict must be in Packager itself. * [1ee20d4] packager.py (Package.__init__): Remove superfluous 'pid' class var. * [f7f764b] packager.py (Package.__init__): Merge validate() into constructor. * [9591991] packager.py: Get rid of package_close(). * [a757dfa] views.py: API: Don't 'weblog' json results line by line. * [3ea4d57] builder.py: BUILT event: Use "architecture" (like in changes), not "arch". * [6765e3a] mini_buildd_tags.py (mbd_get): Add 'arbitrary key getter'. * [f4267ef] builder.py: Remove all buildrequest shortcuts via properties (superflous, code more concise when access directly via buildrequest changes). * [5cefefc] templates: Match include file names with internal names and use singular: 'package', 'build', 'event'. * [88213ff] builder.py(Build): Make misc.Distribution class var (prepare mv/merge Compat). * [84f4017] misc.py (Distribution): Merge Compat class from builder here. * [5e4e32f] distribution.py: New module. * [fba2a7f] events.py: Rather always expect proper Type enums internally (i.e., remove implicit 'str' conversion). * [128ec34] distribution.py: Add "Codename" class. * [e1ed176] distribution.py (Distribution): Simplify code (use class vars, not properties). * [d98ae5e] distribution.py (Distribution): Make self.codename of class Codename. * [ff34b6f] distribution.py (Distribution.has_lintian_suppress): Remove, superfluous (this is already in Codename). * [32a068d] devel: Fix dput call (-v is --version only, not --verbose). * [2d583a4] mini-buildd-events: Fix behaviour when no type is given. * [87e0564] mini-buildd-events: Rather use '--type', not '--types' (arg needs to be given mult. times for a list). * [b35f520] distribution.py: Import apt_transport_,.. compat into Codename. * [5486721] misc.py (datetime_stamp): Add shortcut for all interal UTC stamps. * [abfd715] devel (mbd_testpackage): General func for testpackages (fixes redundancy). * [b582efe] misc.py (StopWatch): New class (for later use in builder/packager). * [b34c037] threads.py (DeferredThread): Use StopWatch() (as self.running) to control and measure deferred_run(). * [0d7af06] packager.py (Package): Use StopWatch (as self.running) to measure and control packager run. * [31a71c0] changes.py (Changes): Add generic "distribution" property, and a mapping variant for 'Upload'. * [ac1c1d4] builder|changes.py: Use new 'distribution' property. * [cac5833] models/repository.py (parse_distribution): Move here (from daemon.py). * [bfc7d2a] packager.py (Package): Obsolete extra self.distribution_string. * [adadb2e] misc.py (StopWatch): Add to_json(); replace "took" by this. * [b37122b] packager.py: Better names for internal class vars (installed, rejected, failed). * [2363681] builder.py: Rm obsoleted started+built stamps. * [ffcedb7] builder.py (Build): Mv auth to constructor. * [e1ac3a1] builder.py (Build): Drop extra _build_dir class var. * [077a191] builder.py: Rename some class vars (like in packager). * [7d4beb2] builder.py: Rm compat status, and simplify __str__(). * [a333def] builder.py (Build.__init__): key: Remove cruft '$' before arch. * [4db3da1] misc.py (StopWatch.__str__): Renice output. * [e6ed492] changes.py: Renice key format (@distribution). * [0c9492b] builder.py (Build.__str__): Drop. We will only need .key. * [d16d741] packager.py (Package.__str__): Drop (we will only need .key). Also drop superfluous status property. * [be14870] templates/includes/mbd_build|package.html: Simplify. * [b3fc66b] gnupg.py: Fix import order (cosmetic). * [52e32de] modesl/gnupg.py: Fix missing import (mini_buildd.client). * [2e9e6ac] config.py: Put constant for HTTP_MESSAGE_PREFIX here. Also add generic "field" prefix for later use in 'changes'. * [6ff6feb] daemon.py: Fix missing explicit import (config). * [9ba92c0] daemon|events.py: Use new global for X-*-Originally-Changed- By. * [32cf3b8] packager.py: Fix missing import. * [3c5fad7] models/repository.py: Three overlooked updates for 'distrinution.py/codename compat merger'. * [d44d7c6] api.py: logcat: Fix wrong bulk-update (from introducing 'events'). * [a44c385] api.py (Find): Fix one forgotten bulk-update ("package"->"source" update). * [84dd604] api.py (GetUploaders): Trigger keyring update. * [d250957] devel: testsuite: apicalls->api-getters: Test _all_ getter calls and move below build-port-migrate. * [a4a4ece] devel: testsuite: Add "portext" test. * [f3ff300] package.py: New modules for package classes. * [80141ec] changes.py: Add config.cfield(), changes.cget|set(): Helper for custom fields. * [6fb4569] devel (mbd_pythonkeyringtestconfig): Fix for python3-keyring 21.3.0. * [cbcfc9f] builder.py: Make all custom fields (for buildresult, buildrequest) actually use our custom prefix. * [12bc11a] builder.py (Build.build): Update "Arch-All" to custom getter. * [9c7dc46] misc.py (apt_line[p]): Add generic tool functions to generate an apt line (see man sources.list). * [d38c1a0] mini_buildd_tags.py: Log stack on error. * [31d588d] models/source.py (Component): Make class Component 'python- sortable' (skip extra compare function, just use sorted() on iterables). * [c6e26ab] models/source.py (Source.mbd_get_apt_line): Only one getter function, use general formatter function from misc. * [f310a52] models/repository.py: Update to new Source.mbd_get_apt_line && sorted(components). * [311b9e6] models/chroot.py (Chroot.mbd_check): Update to new Source.mbd_get_apt_line(). * [88b06bf] mini_buildd/daemon.py: Update to new Souces.mbd_get_apt_line(). * [70434b2] misc.py (apt_line): Fix unit tests (we no longer sort here). * [f04a5aa] models/repository.py (Distribution.mbd_get_apt_line): Use generic formatter function. * [ca9f47d] models/repository.py (Distribution.mbd_get_apt_sources_list): Update result to be a list of tuples (internally only for now). * [ca8483e] daemon.py (Daemon.mbd_get_sources_list): Use list of tuples internally. * [ea03a42] misc.py (AptLine): Upgrade apt_line() func to class (this will need to do more). * [4122442] misc.py (SourcesList): Fixes for AptLine class, add SourcesList class. * [0423e15] package.py: Fix apt_line usage. * [bda2692] models/chroot.py: Fix apt_line usage. * [c96ecc3] api.py (GetSourcesList): Rather use '--types' list than '-- with-deb-src'. * [5fbe8d6] models/repository.py (SuiteOption): Move all tool methods needing 'repository' to class Repository. * [a09604f] models/repository.py (Layout): Move all tool methods needing 'repository' to class Repository. * [66fdd0a] models/repository.py (Distribution): Move all tool methods needing 'repository' to class Repository. * [1a714ea] models/repository.py (Repository): Better name mbd_get_apt_sources_list->mbd_get_apt_build_sources_list. * [0a8ce7a] models/distribution.py: Move Suite, Architecture, Layout, Distribution to separate module. * [a51bf79] models/daemon.py (Daemon): Move (non-build) get_sources_list() to model. * [395bfa9] api.py (MultiSelectArgument): Add 'choices' argparse args (fixes argparse-completion). * [9175da8] api.py (MultiSelectArgument): Make this argparse 'append' type. * [37a423d] api.py (AutoSetup): Update for new MultiSelect. * [738df91] api.py (KeyringPackages): Update for new MultiSelect. * [d06c9b4] api.py (TestPackages): Update for new MultiSelect. * [be09c0d] api.py (GetSourcesList): Update for new MultiSelect. * [2349b3b] api.py (Find): Update for new MultiSelect. * [d031801] api.py (Port): Update for new MultiSelect. * [a9eaaba] api.py (PortExt): Update for new MultiSelect. * [952bd63] devel: Update to latest API changes. * [a09ba0c] api.py, mini-buildd-api: Add dedicated api_args() function, move to api.py. * [5215d5f] api.py (GetSourcesList): Add --options. * [227d8fd] api.py (GetSourcesList): --with-rollbacks -> rollbacks (this is just the number of rollbacks, not bool). * [20e10d5] api.py (GetSourcesList): --with-extra-sources -> --with- extra (we already are in "sources context'). * [d8e6aa7] api.py (GetSourcesList): Add --with-comment. * [d7fa569] api.py (GetSourcesList): Mv least important flags down (with-comment, with-extra). * [1bfb910] api.py (TestPackages): PACKAGES->TEMPLATES (naming in line with package.py). * [c74f183] api.py (MultiSelectArgument): argparse/non-positionals: Drop 'append', instead go for 'store' + 'nargs=+'. * [6cd2ade] misc.py (AptLine): Add 'mirror' support. * [2fa2c9e] mini-buildd, mini-buildd-events: Convert two 'append' args to 'store nargs=+' (to be consistent across all tools). * [cd66d08] misc.py (AptLine): 'options' and 'mirrors' via getter only. * [f81a8e8] models/source.py (Source.mbd_get_apt_line): 'uri' no (longer) needed. * [64fd7f4] models/source.py (Source.mbd_get_apt_line): Autogeneration of 'comment'; components->limit_components. * [44cbef1] mini_buildd_tags.py (mbd_distribution_apt_sources_list): Display 'with_comment'. * [b31b900] misc.py (AptLine): Disallow components as str, and do compnents sorting once, here. * [a7ff70f] models/repository.py (Repository.mbd_get_apt_line): Auto- generate comment. * [4a3c870] api.py (GetSourcesList): Move impl. here ('getsourceslist' is special and will not be further generalized). * [e72fe43] models/daemon.py (Daemon.mbd_get_archive_origin): Simplify to 'Mini-Buildd <identity>'. * [33f989e] models/daemon.py (Daemon): Make archive 'Origin' configurable via extra option. (Closes: 790056) * [b1b4a7c] devel (auto-setup): Fix for new --vendor arg syntax. * [d9a19e4] misc.py (AptLine.get): Add "no component" apt line support. * [5b518ec] devel: apt-tofu-bootstrap: Update to use apt line w/ 'trusted=yes' (this also moves the snapshot test code to a separate test case). * [077a8ac] mini_buildd_tags.py (mbd_cget): Analogous to mbd_get(), but for custom fields. * [1343117] changes.py: buildrequests: Better name for custom field: "Upload-Result-To" -> "Client". * [e7e28b1] changes.py (Buildrequest): Obsolete custom field "Base- Distribution". * [e69b2f6] changes.py (Buildrequest.upload_buildrequest.add_builder): Rename remote(s) -> builder(s). * [1837fde] changes.py (Buildrequest.upload_buildrequest): Remove live- buildlog monkey-patch of status (we now just can use new "http" field of status). * [dd87886] changes.py (Buildrequest): Move all 'live buildlog' code here; add new custom field "Builder", replacing class var hacks. * [572e18c] mbd_package|builds.html: Update to new live buildlog setup. * [4acdfc2] builder.py (Build): Remove extra live_buildlog class var (now obsolete). * [09dc48f] mini_buildd/home.html: Merge build.html, event.html, package.html. * [dd58364] mini_buildd/home.html: Update/simplify live building, packaging. * [729a402] changes.py (Buildresult.buildresult_stat): Merge this unsused method to into __str__() (and use as build.info). * [fe664c7] builder.py (Build): Make 'buildrequest' class var public. * [5ce0bfa] config.py: Add HTTP_PATH_LOG_RENDER (Fixes: HTTP_PATH_LOG set twice, overwriting). * [300549f] events.py (Events.logchanges): Also set "architecture" automagically. * [7b4aad9] packager.py (Package.extra): Remove obsoleted stuff. * [4564579] builder.py: BUILT event: Complete 'extra' part. * [9a35454] home.html: events display: Show depending on type. * [8cb944a] home.html: Remove bad "Go to" wording. * [49c61f5] mini_buildd_tags.py (mbd_cget): Now obsolete. * [374610e] events.py (Events.logchanges): Can't use cget() here (needs to work for dicts also). * [d536eb7] devel (mbd_supertestall): Test for all vendors. * [7c5c6e5] devel (mbd_supertestall): Make non-interactive. * [3ea53e4] home.html: BUILT event: Show sbuild result. * [ba9a45a] Revert "api.py (AutoSetup): Update for new MultiSelect." * [726e450] Revert "api.py (KeyringPackages): Update for new MultiSelect." * [ca1183e] Revert "api.py (TestPackages): Update for new MultiSelect." * [a5aff4e] Revert "api.py (GetSourcesList): Update for new MultiSelect." * [80c4b6c] Revert "api.py (Find): Update for new MultiSelect." * [75c7c3f] Revert "api.py (Port): Update for new MultiSelect." * [5cb7bff] Revert "api.py (PortExt): Update for new MultiSelect." * [a379809] Revert "devel: Update to latest API changes." * [b4fe608] api.py: MultiSelect: Fix several default values. * [4a17521] home.html: Renice extra raw view. * [d5c6d34] home.html: Extra view: Use 'details summary'. * [9937387] home.html: Add summary for MIGRATED, REMOVED, FAILED, REJECTED. * [4803926] mini-buildd.css: minor tab/spaces fix. * [d7994e4] mini-buildd.css: Add general error class. * [49c6b53] Events: extra.info -> extra.error: This is only used for (human readable) *error* strings. * [1dae21b] mini_buildd_tags.py (mbd_jsonpp): Add filter to json pretty- print objects. * [557042a] home.html: Events view: Make "extra" content full jso pretty-printed event. * [e45ec38] view.py, log.html: 'Brute-force fix' package logs (but that code should not stand ;). * [1972965] packager.py (Package.extra()): Simplify. * [c9e720b] packager.py (Package): Replace 'is_installed', 'was_rejected', 'has_failed' by (event) status. * [9afd168] packager.py (Package.extra): No need for 'installed' arg any more. * [228eaff] packager.py (Package.extra): Add error class var -- obsoletes redundant log event call. * [a2353db] packager.py (Packager.run_event): Get rid of superflous context exception handler && go with one run_event() method again. * [b018bca] changes.py (load): Rm obsolete load() and simplify file match functions. * [2c1047b] changes.py: Move build key here (as "bkey" property). * [b7c76ac] packager.py (run_event): Mv package internal code back to add_buildresult. * [358ce74] devel (build-port-migrate): Add failing port to check error handling (manually) * [e9d7b07] packager.py: Add 'extra' class var; drop "port_report", doing extra port reporting via "auto_ports". * [3f0b637] packager.py (Package.auto_ports): Use tuple <success, result|error> for extra info. * [28b6d08] packager.py: Mv error to self.extra. * [b00aa08] packager.py (Package): Get rid of obsolete _extra() method. * [140453d] packager.py (Package.auto_ports): Minor doc wording update. * [814e827] devel (mbd_supertestall): Rather do non-SSL profile last. Checksums-Sha1: 907e2d2a808cfce36797c9cf0b27d7e7d6ff9cf6 2259 mini-buildd_1.9.0.dsc c1aba946fe5f6f4b9526e6fa5bf4fadfa6604e0c 546116 mini-buildd_1.9.0.tar.xz 4a219462a70f4211a4d2f42dfe8444816c06885f 10132 mini-buildd_1.9.0_source.buildinfo Checksums-Sha256: 3fdb71b484ac5b74e3e41539f6890cdc1ff9205b4ddd61b49eff24477ac102d7 2259 mini-buildd_1.9.0.dsc 599fa437411793fa02fa6c9617663036e869e6ceee2582910c75291664111258 546116 mini-buildd_1.9.0.tar.xz 5224fa0f6030717ef02678c0a97510fcd9dfa793c6096e4a47aef32ca9decf37 10132 mini-buildd_1.9.0_source.buildinfo Files: 6f8551ab5c87bc11bf1d822d08ffc375 2259 devel optional mini-buildd_1.9.0.dsc e560f575ec8f0f156df41b36f424511f 546116 devel optional mini-buildd_1.9.0.tar.xz 21651f0d04cd16e3b82c2c3701dd475b 10132 devel optional mini-buildd_1.9.0_source.buildinfo -----BEGIN PGP SIGNATURE----- iQJGBAEBCgAwFiEEVOttCJ+jfBmmRZCzBm3oAX4rYdkFAl9LxXISHGFic3VyZEBk ZWJpYW4ub3JnAAoJEAZt6AF+K2HZRZ4QAKIlKdsmOKLH1ylFCMJl9oqVrzUdmt7S H5XdGYlVG4vMa37sgWM71yT2F0+4cr6+8LjdGqCKSyrdj5Dd69XXxB5J6BO//3by zCXCoSrN+2UVSmiBWQUl/FOEr3KaygQlYF08VIqbTpCdhpZfbtUgsf9oA53hiuBH GYSU2a6qNOouf9Fpza7Mzspt128cRtBcDS6LgKw0ccynp9fyloAk/WcGqgtpFuxr CxGzdmjlee019Iavf6tltq7sN82jp80NpZNUnjdUJvtnbts/tIuG3TilNvD2uYFQ Yz8n+eMGbeF6gZyE9A8Lj7Pb3e4YnEu46pENzw7NDjqEinSGHDQjyglD5n51t75P jHkFAtlEZ44Oje9epgusTN1lELQn9q6Q+z/zU9Nnd7rAIV/cDS4A5cEjjD9mRUDR QOtP9arcWH76IUVFcVTWDaBTOYMZl2dtBOskMkUUDU9n0SKXGcn55OPYu6e5Bwt2 IuJu/s+k/tGO7LrTJIKB36ALmEMjZbwIL1byRlpJItnaCjctKVt8NDf+2V8CSIle EAmBPJfiSklKLTX143+YwAvWtJJ6JRA45lNqov6EyPdvM8K++boilt5XZEkvpuNO Oie6Sp++X5xU+jFNaQnWXQn8Fhcqt2APcSdkU0M91bFL8zmYYzjHq9F+R+DIx2I2 7uUbXcP/hltk =/RaB -----END PGP SIGNATURE-----