mini-buildd (1.9.110) experimental; urgency=medium More testing, doc updates and fixes: * [d4cc6cd] refactor(models/repository.py): Repository: Replace 'mbd_find_dsc_path' by much simpler 'mbd_dsc_pool_path' * [6e04339] feature(API): Add API call "debdiff" (&& place resp. buttons in 'show' for rollbacks) * [b1cbc36] fix(Ls.__init__): Only add to 'codenames' list if criteria is matched * [1ea772f] fix(show.html): Per-repo header: Don't repeat 'source', add codenames * [33886c3] doc(API): debdiff: Fix doc types & some minor code improvents * [de26cd5] html(show, events): Remove all extra "titles" from api calls (we rather want to have the doc displayed) * [36230ed] fix(migrate): (regression) Fix logic code error preventing rollbacks on migration * [4495b6a] refactor(reprepro.py): Ls: Simplify 'rollback' computation (fixes suite order on rollback-only) * [7bcdff7] refactor(reprepro.py): make match() private * [eae37d0] refactor(Ls.rollbacks): Add method needed for later refactoring * [543aaa4] refactor(Ls._filter): Add method needed for later refactoring * [eede872] refactor(reprepro.py): Proper filter() impl, temporary exists() impl via filter * [82503b1] Bump debhelper from old 12 to 13. * [8f1c1bc] Update renamed lintian tag names in lintian overrides. * [8d935eb] Update standards version to 4.4.1, no changes needed. * [2596a37] refactor(models/repository.py): Update all exists() calls not using values w/ filter() * [2fd5e29] refactor(models/repository.py): Update all exists() calls that do not really need to use values w/ filter() * [f640407] refactor(reprepro.py): filter(): Support raise if found * [16a2a23] refactor(reprepro, repository.py): Update remaining code to filter(), and remove exists() * [4d8be45] style(models/repository.py): pkg_show should be pkg_ls * [1df253a] fix/feature(rollbacks): Avoid having same source/version multiple times in rollbacks * [952d8c6] fix(mini-buildd.postinst): Use 'adduser' (not 'addgroup') to add group to user (fix for fix for Debian bug 664869) * [2246650] feature(setup/archs): Use 'arch-test' for list of native/available architectures when installed -- Stephan Sürken Sun, 17 Jul 2022 20:11:00 +0200 mini-buildd (1.9.109) experimental; urgency=medium More testing, doc updates and fixes: * [899fb29] devel(pylint): Use custom format to support 'severity' w/ generic parsers like emacs compilation mode (enables us to skip over 'locally-disabled') * [37416f8] doc(roadmap/2.2): Add note about python ``dataclasses`` * [69f32e0] debian/control: Update qemu-user-static dep >= 1:5.2 (available in buster bpo) * [8aba01a] doc(qemu): Update all qemu doc/hints * [54b85f6] html(events): Improve table again (make important things visible right away) * [bdd40ab] style(port code): Bulk-update for new var/argument naming conventions * [80504fd] style(API): Move setup code all down * [917f603] fix(API ls): Don't include empty repo results * [432954b] doc(python3-keyring): Pimp dep to >= 17 (buster) && update all notes/doc/examples * [2e09342] fix(api/show.html): Wrong DSC path * [ba3721c] fix(django DirView): Strip leading '/' from URL path (fixes: any system path would be delivered via ``//any/path`` URI appendix) * [1594426] devel(files.py): Add "find" including some alternate approaches * [9c94b44] reprepro.py (Ls.enrich): Scan and add (list of) changes files (convenience) (in output of API call 'show') * [ac0b2bb] api/show.html: Drop extra DSC link && add convenience link(s) to changes files * [170c561] html(django messages): Make extra include, and re-add again in base.html -- Stephan Sürken Sun, 19 Jun 2022 16:09:31 +0200 mini-buildd (1.9.108) experimental; urgency=medium Breaking and fixing some porcelain again to solve runtime issues around "ls && big repos", and misc other mostly 'user convenience' updates: * [c0ae68d] fix(call_with_retry): Retry log should be' warning', not 'error' * [6f96634] doc(keyring-packages): Add tip about urold ``apt-key add`` support (or the lack thereof) * [1a1367d] refactor(API): Add "show" (formerly "ls") and make "ls" simple (and fast) * [e9df3ae] fix(devel): Update to --log-level instead of deprecated --verbose * [f510245] refactor(API): Make 'Show' derive from 'Ls' * [4a87134] fix(api): ls: Move limiter options back * [6c4b0e2] feature(API): dput_conf: Add support for a local config snippet * [e4628be] feature(API): Distribution argument: Add support to get dist() * [2871749] style(pylint): Pimp up 'max-bool-expr' to 10 * [c08cb19] refactor(repository): Simplify mbd_parse_dist[str] methods/functions: Simply two, oo-class functions * [d42970c] refactor(reprepro): Add new class 'Ls' for (later) use (merge all needed code here, w/ some doctests) * [be3a608] refactor(reprepro): Add ls() method (new style, for later use), mark to-be obsoleted methods * [7a1ad8f] reafactor(API): Update to new reprepo/ls setup * [75544f5] reafactor(repository): Update (partly) to new reprepo/ls setup * [d93eae5] refactor(api/ls.html): Update to new reprepo/ls setup * [b3ac0d5] refactor(api/show.html): Update to new reprepo/ls setup * [48a97a7] refactor(reprepro): exists(): Allow context message string in 'raise_exception' arg * [8615d71] refactor(package, repository); Update all find[_in] to new reprepro/ls style * [6ac1569] refactor(reprepro): Drop find, find_in, ils (obsoleted) * [3c3b9e0] style(repository.py): Bulk fix internal vars to match conventions * [3f371cd] feature(api): Drop API calls "list" and "find" * [b9df5f3] style(mini_buildd.js): Fix wording 'API Call' -> 'API call' * [9505d5e] feature(ls, html): Gather codenames in Ls (as class var) && update ls.html to merely have 'codename links' to "show" * [a5afc44] feature(emacs example mini-buildd.el): Support new option "add-depends" * [2e0d6d7] fix(setup, py-argcomplete): Add compat for executable name change in 2.0.0 (fixes bash-completion bookworm+) * [d9ca421] devel(html-filter-icons): Add little tool to search for icons * [71c5285] fix(repositories/index.html): Add missing per repo "external doc" link * [b139586] refactor(guess_codename): Accept (vendor, codename, version) args, not release object * [31b6113] doc(API debmirror): Document debmirror bug/behavior not mirroring contents for *experimenal* suites * [ba11705] doc(API:debmirror): Fix typo in description * [112e649] refactor(distro info): Add abstract class, support mbd_codeversion * [5cc8706] refactor(dist): Add Codename class (fixes codename ordering) * [8920346] refactor(dist): Move guess_codeversion() to DistroInfo * [5a0af97] fix(DistroInfo.mbd_guess_codeversion): Make work for single- number "version"s * [ec64739] doc(devel): pylint: Fix hint to configuration * [e8bfaef] devel(pylint): Drop extra run with 'locally-disabled' only -- recent pylints seem to behave as expected (i.e., not fail and issue info logs) * [ae7ae45] refactor(dist.py): DistroInfo: Rename distro() -> mbd_vendor() (our naming && prefix) * [1b34f8d] doc(devel): Add note/issue (pydocstyle not parsable) * [158e0b6] devel(dist.py): List all codenames on __main__ * [bc9145e] fix(DebianDistroInfo.mbd_codeversion): Make only return str, not DebianVersion * [886aa39] refactor(codeversion): Merge/remove redundancy: from Release file / from DistroInfo * [0577578] feature(DistroInfo, Codename): Add "cmpversion support" (fixes Codename sorting for Debian unstable, testing) * [847699c] fix(Source): Don't fail if Release lacks a "Description" * [a472638] refactor: Put (optional) DISTRO_INFO into own global dict * [565f4ce] refactor: Update Codename for generic use && sort Source via Codeanme * [1cc3762] fix(Repository.mbd_sorted_distributions): Don't revert sort (in-sync with Codename sorting) * [6a36190] doc(Source): Sync __str__() w/ Codename * [74c33bb] doc/style(*): Rephrase "vendor" -> "origin" * [5d9de97] refactor(dist.py): Drop mbd_codeversion from DistroInfo * [2ae13d6] fix(Codename.__eq__): Should use origin,codename, not origin,version * [eb9c936] style(setup.cfg, pylint): Drop all 'issue 516 local workarounds' (in favor of 'good-names workaround' in setup.cfg) * [c6d3a5a] style(setup.cfg, pylint): [register, urlpatterns] Drop 'django invalid name local workarounds' (in favor of 'good-names workaround' in setup.cfg) * [813d77d] fix(builtins): mbd_model_stats: Avoid using "eval" * [9bb652a] setup.cfg(pylint): Handle 'no-member' false-positives from gpg && twisted like those from django * [a8efc7a] setup.cfg(pylint): Handle twisted naming oddity via 'good- names' in setup.cfg * [383cfdf] fix(api.py):Show.run: Iterate ls values directly (avoids pylint except) * [4c92e03] redactor(dist.py): Simplify/harden Codename * [2331ca1] refactor(dist.py): Simplify, only supply "codeversion" function * [347f78b] doc(devel): Clean up profiles; always add origin archives for dist selection profiles * [6f898d3] fix(Source): is_matching_release() -> check_matching_release(): Is only called once, and there we raise anyway (enables precise error message) * [5c55977] refactor(Source): Integrate check_matching_release() init ReleaseFile.match() * [c72016e] fix(API setup): Distribution, Chroot: 'archs' defaults value: Only use host archs actually supported by source * [11b9d49] fix(Source.Admin.mbd_filter_active_base_sources): Replace hardcoded 'known origin' list (rather use from setup) * [66bd4d1] doc(Source): Yet again improve error handling on "no archive found" (keep all failed w/ exceptions, construct longish exception on error) * [2820e06] refactor(base.py): Add pub tool func 'mbd_message' (django message from exception, special multiline support) * [2280a88] feature(ExceptionMiddleware): Try to deliver message on error as well * [ececb7d] doc(exception): No details: Rather phrase 'no public details' and add (HTML) hint to daemon log * [498674c] fix(HTTPError): Make "detail" available as class var * [a045166] refactor,fix(dist.py): Harden origin_from_setup, and rename guess_origin * [b2c43aa] style(dist.py): Fixup code ordering, name "codeversion" "guess_codeversion" again (as that's what it does, I guess) * [4b78367] style,doc(mbd_message): Update && 'renice' * [de954f2] fix(Archive.ReleaseFile): Should raise 404 not 503 if Release file can't be found * [eec880f] feature(chroot): Add support to add arbitrary debootstrap options (Closes: 797592) * [56355ce] refactor(Chroot.Admin): Remove unused method 'mbd_host_architecture' * [15bb900] fix(testsuite-packages/installed-options): deb_build_profiles: Only test for amd64,i386 as in changelog (fixes false-negative on other archs) * [49b277f] refactor(dist, source): "native arch(s)": Instead of several spread-out methods, use NATIVE_ARCH(S) globals in dist.py * [7e3927e] feature(API setup): Add --chroots-extra-architecture, --repositories-extra-architectures: Makes non-native archs available via setup * [74370af] feature(API setup): Add (limited) support for origin "PureOS" -- Stephan Sürken Sun, 12 Jun 2022 21:54:46 +0200 mini-buildd (1.9.107) experimental; urgency=medium This release converts mini-buildd to a "new style daemon" (omg). Besides, lot's of log consolidation, fixes for twisted/python/SSL -- plus the usual madness: * [bf0d5da] style(dist.py): Cleanup Ubuntu keys (reorder, rename "current" -> "2004") * [3c23f4b] style(dist.py): Cleanup all (non-broken) Ubuntu setups to have exactly the signatures as of today * [bb97c05] style(dist.py): Cleanup all (non-broken) Debian setups to have exactly the signatures as of today * [3262b09] fix(devel): browser: Update ca-certificates before calling browser, not 'once always' * [35fac88] fix(examples/ca-certificates2browser): Cope with multiple installed mozilla variants * [5e18d87] fix(twisted workarounds): Only run ssl/non-ssl workarounds when needed (fixes SSL static delivery) * [1e51b2f] fix(devel, setupcert): Only create (self-signed) when non- existent (i.e., drop recreating key every time) * [dbc20ad] fix(devel): Give DEBEMAIL a default value (else testsuite might fail on ``gbp dch``) * [beb5a53] fix/doc(systemcert_workaround): After re-check, enable workaround based on python using ``libssl3`` or ``libssl1`` * [3449e6c] refacture(systemcert_workaround): Only use where actually needed (Client.__init__) * [55b1d1d] fix(twisted): Add error handling for listen() (network) errors * [fb6d394] doc(devel): Update and improve usage help * [319ec53] doc(twisted,squeeze): Remove HTTP error note (tested to be fixed with "unregister workaround") * [249c9f7] style(pylint): Pimp up 'max-module-lines' to 2000 * [ec180de] feature(migrate, remove): Add _Ls mixin, and make migrate/remove re-run Ls (limited to codename) as result * [0a35844] feature(view): Update APIView.Snippets to support new CUSTOM_HTML_SNIPPET (migrate, remove) * [2e35129] feature(html): Make 'plain results' (usually json) available (for all API call's HTML results) * [c752c15] refactor(repository): mbd_package_migrate|remove: Purge all code support to return reprepro output (not needed any more) * [825cb75] devel(test suite): Add mbd_spamevents check (not run automatically for now) * [378aad5] doc(events): Some cosmetics on logging, code comments * [7680986] fix(twisted): Use own thread pool, adds ability to specify maxthreads (fixes strange random twisted stall on events spam) * [dec67d8] devel (spameventsqueue): Spec up, and add to test suite proper * [29d1594] refactor(Events): Switch to use twisted's 'errBack' to do the error handling * [b9f9968] feature(httpd): Add ability to set 'minthreads' as well * [13be79a] refactor(config): Add global configs 'MIN_HTTPD_THREADS', 'MAX_HTTPD_THREADS', 'MAX_EVENTS_QUEUE_CLIENTS' * [8463642] fix(config): Pimp up min/max threads && max events clients: 0,10,100->10,100,70 * [d8a386d] devel(bogus-ftp-upload): Workaround for pyftpd + openssl 3 * [5786f8c] feature(upload options): Add 'add-depends' (like ``sbuild --add-depends``) * [9ed1d9a] style(datatables): Pimp up length menu 5,10*,50,All -> All,10,20*,50 (*=default) * [070c5ae] doc(exception str repr): Details 1st (HTTP status 2nd) * [fa7192f] feature(events html): Also show 'retry' button on REJECTED * [29c810d] fix(logging): setup_console_logging: Drop adding "one char" log levels (just do it in format string) * [fd4494f] cli.py (logtest): Add function for internal debug purposes * [a718e27] fix(pydoctests): Use IGNORE_EXCEPTION_DETAIL f.a. exception expects (text may change, even externally) * [ceb9e31] style(pydoctests): Make more readable (call.py, dist.py) * [79a328c] refactor(mini-buildd): Drop command line option -l, --loggers * [48f814e] refactor(cli): Add -l, --log-level (in favor of --quiet, --verbose) * [337e25f] feature: Pimp default logging level to 'INFO' (omg) * [213ca3a] fix(cli): Use correct levels in logtest debug help * [6aa8ea8] feature(mini-buildd): Convert to "new style daemon" (omg) (drops ``--foreground`` command line option) * [dff7f42] feature(mini-buildd): Drop ``--pidfile`` (systemd: not needed, sysv: with s-s-d) (obsoletes ``python3-daemon`` dependency as well) * [10079c4] refactor(twisted): Drop reactor workaround (now we no longer daemonize) * [9850341] reafactor(logging): Drop 'setup_console_logging' (cli: must not use, pydoctests: no need) * [8778359] refactor(cli): Update and significantly simplify log handling * [8c54eaa] feature(cli, log): Drop 'debug addon' from pure console log * [8245272] refactor(mini-buildd): Drop shm pre-check (only needed (for better error handling) when daemonizing) * [5144675] style(log): *.py: Bulk-update all 'info' log messages that rather should be 'debug' * [f618420] refactor(log_clone): Move to cli.py (where the other log code is) * [58df17d] style(changes): Overwrite __str__() for changes (make one liner suitable for logging) * [067dd7f] style(ftpd logs): Only show level >= WARNING (pyftpd has too many 'info' logs) * [1ec6b74] fix(cli.py): SystemDHandler: Prefix should not have a space separator before actual message * [9db7618] fix(notify log): Skipping mail addresses is not a warning condition (->info) * [6054e42] fix(cli): Always log py.warnings (and some cleanups) -- Stephan Sürken Sat, 28 May 2022 13:13:55 +0200 mini-buildd (1.9.106) experimental; urgency=medium More real-life testing, more fixes, more documentation. Adds API call 'debmirror': * [c9a0dad] fix(mini-buildd-bootstrap-apt): Replace false hardcoded name * [21e0f52] feat(setup): Add bookworm (testing) * [f045bbc] devel (bash-completion): Rather use '*' for profile choices (shellcheck complaint) * [f164409] feat(devel): Implicitly use the OS (buster, bullseye, ..) profile * [f1a5e7a] doc(roadmap): Move debconf (ssl) update to 2.2 * [506a420] devel(mbd_installdeps): Do ``mk-build-deps`` last (needs devscripts, which was installed after) * [8b6b797] devel(codespell): Also check ./devel script * [53cd808] devel(codespell): Remove ignores referer,stati,ser (no longer needed) * [e3f941c] devel(codespell): Fix three wrong spellings * [4993292] refactor(*.py): mbd_get_distribution_string -> mbd_get_diststr (adhere to our recommended notation, see dist.py) * [0a3cb88] refactor(): Obsolete redundant mbd_distributions_strings() (merging with mbd_get_diststr) * [84eb832] style(css): Pimp up text input fields to 20em * [e356fce] rafactor(Endpoint): Add scheme() getter * [398416a] feature(api): Add initial implementation: debmirror * [4e9b92a] feature(api,debmirror): Add support for option '--suite' * [bafbdd8] feature(api, sources_list): Make '--rollbacks' behave like max option (never trigger "out of range" error), and support a notation for 'all rollbacks' (-1) * [9d8dd4f] refactor(Rollbacks): Add generic class for '--rollback' arg (we want to re-use it later for debmirror) * [08e396b] debian/control (Depends): Pimp debootstrap min version 1.0.126+nmu1~ (support newest 'Ubuntus') * [85633af] debian/control (Depends): Add 'zstd' (needed to debootstrap newer "Ubuntus") * [0cb47c7] devel: Add convenience support to start known browsers with predefined urls * [02f8efb] debian/control (Depends): Update reprepro min version to 5.3.0-1.4~ (support "newer Ubuntus" using zstd in packages) * [c650d21] doc(manual): Add error annotation about unsolved 'S.gpg- agent.extra-Problem' under buster * [194c460] refactor(models/repository.py): Reorder methods * [f16a03e] models/repository.py (mbd_get_diststrs): Add support for rollbacks * [3152ca5] api.py (Debmirror): Add support for rollbacks * [4e5cdb0] refactor(repository.py): get_diststr(): Update variable to self-imposed naming convention * [583b9f5] api(debmirror): Add 'Suggests' for 'debmirror' && error handling for executable existence * [f9a5eaa] doc(debmirror): Improve description * [dd790f0] models/repository.py (Repository): Add mbd_json() (simplified structural representation) * [c56f3ca] feature(API status): Add --with-repositories (optionally list repositories on status) * [d1676bb] rafactor(gnupg.py): Add dedicated exception class GpgmeVerifyFailed (cleans up some redundancy && osbsoletes indirect signature logging) * [78a184e] refactor(gnupg.py): verify_release -> gpgme_verify_release (be consistent - we already have gpgme_verify) * [c41830e] gnupg.py (GpgmeVerifyFailed.__init__): Allow signatures to be None * [e447afb] fix(gnupg.py): gpgme_verify*(): Make sure GpgmeVerifyFailed is raised for all gpgme exceptions * [c5643ce] refactor(models/source.py): New 'ReleaseFile' class replacing function 'mbd_get_matching_release' * [5136354] fix(models/source.py): ReleaseFile: raise: Always use our custom exceptions, not Exception * [97a597d] fix(models/source.py): Archive.ReleaseFile: Add 'contextlib.closing-support' (close tmp files) * [27ee2c5] fix(models/source.py): mbd_check(): Use 'closing' on ReleaseFile + catch only our exceptions for skipping + code cleanups * [f74587a] refactor(models/source.py): Archive.ReleaseFile.verify: Return results from gpgme_verify_release * [e9a1e56] refactor(models/source.py): Source.mbd_get_archive: Support extra_msg for better error handling * [7582c73] refactor(gnupg.py): GpgmeVerifyFailed: Add support to convert list of sigs && code cleanup * [0fdfaaf] doc(models/source.py): Source.mbd_check: Improve release file's signatures info and error handling * [92d1dca] doc(*.py): Fix up a bunch of info logs that should really rather be debug -- Stephan Sürken Sun, 22 May 2022 18:31:41 +0200 mini-buildd (1.9.105) experimental; urgency=medium More real-life testing, more fixes, more documentation: * [898c8aa] doc(upload): Upload failure should be an error level log (not warning) * [e2e1279] fix(compat): Add compat for old ':::' notation (eases upgrades, and we claim to fully support them anyway) * [452bd8b] test(packages): Add test package 'installed-non-free' (test install to non-main sections) * [0b45b58] Revert "models/daemon.py (Daemon.mbd_get_archive_origin): Simplify to 'Mini-Buildd '." * [4986451] apt url: Drop location '/static/repositories/', use '/repositories/' only (again) * [2621dbe] mini-buildd-apt-bootstrap: Add generic ask() function * [9a943b3] mini-buildd-apt-bootstrap (cleanup): Don't be interactive (and some cosmetics) * [8156a11] mini-buildd-apt-bootstrap: Beautify "check files" output * [b182f53] mini-buildd-apt-bootstrap: Be quiet on ``apt-get update`` * [2b09fe6] mini-buildd-apt-bootstrap: Support "auto" option (fully automatic operation) * [33c3f6b] devel (_test_install): Use m-b-apt-bootstrap in test suite * [4737ed0] mini-buildd-bootstrap-apt: Rename (from ``m-b-apt- bootstrap``) * [3b24937] doc(manual, roadmap): Add ccache expire todo (2.2) * [e257ad9] feat(setup): Add Ubuntu jammy (22.04) * [330ee25] fix(twisted): Add 'mbd_producer_workaround()' (fixes blocker apt update bug) * [80b23df] debian/control (Depends): gnupg >= 2.2.26 to avoid Debian bugs #972525 #868550 * [93bab88] fix(httpd.py, mbd_producer_workaround): Rather use loseConnection() * [e7d1197] doc(setup blocks): Rename apt-repair->apt-clear and straighten out doc * [4112636] feature(html, datatables): Add button to reset user state * [b6fd8e2] doc(manual/roadmap.rst): Add (raw for now) upgrade guide (after initial buster upgrade experience) -- Stephan Sürken Sun, 08 May 2022 21:15:19 +0200 mini-buildd (1.9.104) experimental; urgency=medium More real-life testing, more fixes, more documentation: * [8f11ee3] fix(mini-buildd-self-signed-certificate): remove: Don't fail if directory does not exist in the 1st place * [384ac10] fix(css): Move two admin-only values to admin.css (API button) * [1c0d906] fix(API power): Don't change Daemon's activation state, update docs accordingly * [3591edf] style(API doc): Bulk-remove all trailing periods from class doc titles * [c8b0e8a] feat(example ca-certificates2browser): Move code from devel to (example) script (this might be useful elsewhere, too) * [a8de340] doc(api): Lector/consolidate doc for all calls * [478045e] doc(api.py): Pointless endeavor * [5e6f0d6] refactor(api): Rather use name 'extra_doc' (Source, Distribution) to not confuse with 'doc' * [c0efaae] doc,style(api): Separate extra_doc by newlines * [01b6c7a] doc(doctest): Update doctest to new layout names (Test->test) * [04c9a12] fix(pysources): Protect against files with spaces * [ec13bdf] doc(api.py): Fixup class doc title notation to pointless && add additional doctest * [54e410b] refactor(api, client): Move http_args dict gen code (from Client) to Call * [d83a773] fix(call http_args): Only consider given args * [d8c1b6c] doc(manual, roadmap): Cleanup 2.2 section * [98d4dd0] doc(manual, roadmap): Clean up 2.0, Open Issues * [eb0b0f3] style(mini-buildd-backup): Minor notation/doc updates * [a840332] refactor(mbd_join): Allow more than two parts * [d7bb4ee] feature(dir HTML): Add direct static link (via icon) * [4302996] doc(portext): Better error handling when URL is not a DSC * [5a15d11] doc(portext): Better error handling when URL can't downloaded -- Stephan Sürken Sun, 01 May 2022 20:07:43 +0200 mini-buildd (1.9.103) experimental; urgency=medium More testing, more fixes, more documentation; updates "setup" html in django admin: * [1d9bebf] stlye(html): Misc css/html updates * [d72dacd] doc(api): --sources-from-vendor-with-all: Update/fix description * [181f32e] feat(css): Also setup default width for textarea (same as for url) * [838870e] style(css): Sanitize (both notation and values) form input width (height) setup * [ca75601] style(css): Use "condensed" notation on all one-liners and some others * [6198ded] doc(manual): Rechecked User/Uploader in admin, all seems file (removes bug admonition) * [0b38874] doc(manual): Rechecked "events dead lock bug", seems fine (removes bug admonition) * [23a8dde] doc(api:setup): --repositories: Fixup doc/names of repo presets, and make optional (default to "default") * [78187b1] refactor(api): Use import shortcuts from mini_buildd.dist * [555c4b0] refactor(html): setup: Don't have api call code twice, just twist the name * [016d8e1] doc(html): setup: Drop warning for running daemon (setup automatically stops daemon before running) * [f39eb73] html(setup): Show command line as detail only * [3316419] html(setup): Drop 'show command line' support (api call html already has this) * [71b60cf] html(admin css): Switch to external admin.css && fix width * [48301ec] fix(setup): Presets should nor save or create repositories * [217fa4a] doc(setup): Drop custom "title" from preset (html) -- else no doc * [5d6eda9] rafactor(api): setup: Add 'hr desc', not bool flag to saved preset getter (simplifies template) * [38a46bc] fix(api): make preset helper private * [853f85b] doc(html): Properly label presets in setup HTML * [703ee1c] doc(manual/roadmap): Add bug admonition: mbd-off on setup() run * [5088652] style(html): Update setup presets html in admin * [2320508] fix(devel): Update to new layout preset names -- Stephan Sürken Sun, 24 Apr 2022 22:06:34 +0200 mini-buildd (1.9.102) experimental; urgency=medium More testing, more fixes, more documentation; integrates "setup" html into django admin: * [e790961] refactor(sbuild): Use global for sbuild's "setup.d" * [3e472a6] doc(buildlog filter): Add (disabled) alternative to display setup scripts in buildlog TOC * [5daff34] feat(html, events): Show 'internal_error' of build results (on FAILED) * [7f460f4] refactor(thread debug): Move NoLock mock (unused) to threads * [a1c50f9] fix(events attach): Return events queue from *locked* scope * [17f023e] devel(testsuite-packages): Only run for one source if given as arg * [4f67264] doc(roadmap): Add bug: 'SSL: Sporadic errors reading event queue' * [8c62894] style(setup.cfg): Also ignore pydocstyle's 'D415' (omg#2) * [8a534f5] devel(__init__.py): Add (debug) helper log_stack() * [22ff691] refactor(gnupg): Move daemon's gnupg as instance to ``Daemon`` (avoids many superfluous gpg calls) * [1489890] refactor(gnupg): Set/keep 'pub_key[_id]' in GnuPG instances (avoids more superfluous gpg calls) * [d527feb] fix(error handling): Move badly placed ``log_exception`` (would strangely log s.th. like 'None: NoneType') * [22400fa] fix(error handling): Don't use ``log_exception`` in middleware * [e8403cd] fix(client login): Add "account null view" for (py) client login (avoids always triggering the (relative) expensive home view) * [c6fd575] refactor(html): Add separate include for distribution table * [7c4d373] fix(repositories view): Show distribution details on proper subpath only, overview w/ links only else (fixes long load times) * [10a2ccf] refactor(repositories html): Migrate include back in (not needed) * [f22b1b8] refactor(repositories view): Move 'mbd_parse_distribution' builtin tag's code to view class * [0c257ed] refactor(setup html): Move extra section ("setup") in admin oo-table * [e01a9d3] doc(admonition generator): Also include admonitions from html templates * [ea06581] html(setup): Move (html code) to admin * [35cb5bc] refactor(html): Common 'embed' template for manual && setup * [e539ddf] fix(js): Do clipboard (and other) init on DOM-ready (make immune against errors due to script order) * [c842c14] refactor(js): Move back to separate file * [88e1e05] Revert "feature(html): js: Add (global) helper variables for the client's (browser's) date" * [2309f04] refactor(html): Move popup (div) into separate include * [a2eebb7] fix(admin html): Use mini-buildd's js and popup (makes setup api calls functional) * [17e0a84] style(html, js): Use 'mbd'-prefix for popup ids (be more consistent) * [dccfb8f] style(css): For all "mbd-" prefixed classes, remove "body.mbd" restriction * [2bb3ea4] style(css): Remove 'mbd-listing" styles - not used * [84b8693] refactor(html head): Use common include for mbd and admin (css, js, etc) * [84361fb] style(css): Remove class "mbd" from body, and all restrictions in css * [20862e1] style(css): Notation (some doc) updates * [e8320ec] refactor(events load): Use itertools and make more efficient * [d017ab9] style(html): Fixup admin-embedded setup html code -- Stephan Sürken Mon, 18 Apr 2022 17:56:03 +0200 mini-buildd (1.9.101) experimental; urgency=medium More testing, more fixes, more documentation: * [c4a22a3] doc(admonitions): Update order && display. * [3d8d61a] doc(admonitions): Use "important", not "attention". * [331308f] doc(admonitions): Use "attention", not "note". * [a5d2376] doc(admonitions): Make auto-generator more auto and generate nicer output * [f223903] devel(prepare-system): Move sub-functions top-level (i.e., make accessible via ``./devel foo``) * [03d5b6a] devel(setupcert): Improve convenience code for firefox/chromium cert setup * [43daad9] devel(setupcert): Always regenerate self-signed cert * [3880b83] doc,http(source): Remove static "doc missing" extra 404 page (complacent, elaborate, false-positives ;) * [c0e6fe6] devel(pyscripts,pymodule,pysources): Avoid leading "./" in file names * [f299aae] doc(manual): Get python source files via ``./devel pysources`` (adds admonitions from scripts) * [51659ee] doc(source): Update three remaining "fixmes" (pylint) to admonitions * [117d34c] devel(pylint): Re-enable 'fixme' check && remove extra check 'pylint-fixme' * [37feca2] doc(manual): Integrate roadmap (from home page project) * [82a2c8f] doc(manual): Initial adaptions to roadmap: codespell, sections * [ff67440] doc(manual): roadmap.rst: Update all items to admonitions * [76a2396] doc(manual): roadmap.rst: Phase out various 'things' that are now obsolete * [de75d6c] doc(manual): roadmap.rst: Fix rendering f.a. items (needs space before 'admonition body') * [07f8b5c] doc(manual): Rather use OrderedDict for automated admonitions (in therory at least, dict could be unordered) * [de02d94] doc(manual): Reverse admonition order (most to least important) * [f95b8d7] doc(manual): roadmap: Update documentation issue * [8dac3b7] devel(pydoctests): Fix needed after pysources change * [f80f3a2] devel(pysources): Move to extra script && use in manual config (fixes FTBFS) * [75b042b] devel(debug): Replace conf var MBD_DEBUG by MBD_EXTRA_OPTIONS && add '_debug' profile * [fd219ba] doc(source): Update 'ssl workaround doc' to 'attention' * [a29b4e1] doc(source): Update 'SSL_CERT_FILE workaround doc' to 'attention' * [4308c75] doc(source): Update 'chroot sudo workaround doc' to 'attention' * [1cdeea2] doc(source): Adapt 'pycompat attention's notations * [3113c29] doc(manual,source): Move and update outdated "shm workaround doc' to compat 'attention' in-code * [d3b2c4f] doc(source): Add compat attention for 'apt-force-urold'. * [51b7086] doc(source): sbuild.py: Rather do 'attention' as comment in (shell) code * [aab0b9d] doc(source): sbuild.py: Mark 'auto-apt-keys' with compat attention * [bd5d01e] doc(source): gnupg.py: Mark 'mystery gnupg bug workaround doc' as compat error * [d73211c] doc(source): dist.py: Mark 'ddeb reprepro workaround doc' as compat error * [158d004] setup(dist): Re-add squeeze/lenny presets * [62c311d] setup(squeeze,lenny): Add sbuild blocks 'apt-disable-check- valid-until', 'apt-force-urold' * [82e0b8d] html(css): Add template to add mozilla (firefox) tweaks * [95eda18] fix(apt-force-urold): Fix to make this also work for lenny * [fc0a8cd] refactor(setup): get_codenames: Implement w/o dict comprehension - more readable (and faster) * [aff0556] feature(setup): Add "urold" flag: codenames can be used, but only if given explicitly. Flag lenny, squeeze * [fa6c513] refactor(setup): All sbuild blocks: Sync names of created 'apt.conf.d/ files' (use 'mini-buildd-') * [77525f3] doc(manual): General cleanup of '2.0 open issues' section * [d7dfef4] doc(source): Updat/fix attention docs * [c5f6a82] doc(manual): 2.0 issue done: "admonitions: check code comments for more candidates" * [47980df] doc(manual): 2.0 issue done: "Middleware exception: OrderedDict mutated during iteration" * [eb58898] refactor(setup): Rename urold -> broken. * [61e6804] refactor,fix(setup): Cleanup "codenames support" code. Make "broken" codenames accessible again. * [6dcd93a] refactor(dist,changes): Add constants for sbuild 'config paths' (removes redundancy cross sbuild+changes) * [aa27ab5] style(pydocstyle): Ignore D400 "First line should end with a period" (omg!) * [06d9bbe] doc(dist): Add (FAQ style) doc "internal meaning of 'LTS' per vendor" * [ab4f9a1] doc(setup): Update Ubuntu update note: Keep all LTS + 4 most recent * [b9041aa] setup(Ubuntu): Drop 'eoan' (older 2 years and not LTS), (re-)add 'trusty' LTS (as broken though) * [161de65] html(events): Show 'cancel' only when ongoing * [c8b3a32] html(events): Move 'Changes' to 'Version' (drops 'limit events' view) * [464ecc0] refactor(setup): Make all previously auto-generated internal sbuild blocks 'static' * [2191c2d] devel(pylint): Enable parallel (--jobs=0) * [86fa3e5] devel(profile): Accept only '_'-prefixed args as profiles, tunnel all other args (enables 'profiled multiarg calls') * [c485d8e] setup(absuild blocks): Diverse compat code from auto-apt- keys * [184e1f6] setup(sbuild blocks): Drop prefix 'auto-' in names for (formerly) dynamic scripts * [01741f9] refactor(setup): Updates for naming, order, diversification, documentation * [23c10c8] style(sbuild.py): Improve code readability, non-absolute imports from 'files' * [fa08521] devel(profile): Add profile for (currently) "broken" sources (squeeze, lenny, trusty) * [591bc9b] doc(manual): Add FAQ how to get search cancel button in firefox * [0f9c64c] fix(html,code): Events & Builds views: Filter by "before", and show latest by default * [9961d74] html(builds): Add direct link to browse corresponding build dir for buildogs * [5ea435a] html(index): Sync page 'design' w/ events, builds * [0d1414c] feature(static html): Upgrade PlainFilter and allow more file types to be displayed * [66a6adc] refactor(setup): Diversify sbuild config blocks * [73d5f7d] feature(html): Range: Use 'datetime-local' (adds time option for 'before') * [c8bc3a1] doc(html): js error alert: Add js exception error string * [87b4688] feature(html): js: Add (global) helper variables for the client's (browser's) date * [5808952] style(events): Reword 'since' to 'after' (since since is not unambiguous) * [589a059] refactor(dist): Generate && validate setup's "Sbuild-Setup- Block"-Lines (protect against typos) -- Stephan Sürken Sun, 10 Apr 2022 22:56:41 +0200 mini-buildd (1.9.100) experimental; urgency=medium More testing, more fixes, more documentation: * [fe2cb3d] files.py: Dir: Add "enumerate" support (makes setup.d/* work via run-parts oob). * [d41ed52] mini_buildd.css: Avoid user menu to go oo-view. * [c41fe82] base.html: Rm (non-existing) 'mbd-account' class for user menu. * [1eb74dd] devel (httpd-benchmark): Sanitize values (so it does not take ~7m on a full setup). * [a965216] devel (mbd_profile): Error handling for unexisting profiles * [24811c4] devel: Update/improve internal developer 'README'. * [d23c577] devel: Add profile for bullseye; skip upgrading pylint for buster, just skip. * [01b1641] examples/mini-buildd/web-mode.el: Add emacs config snippet example for web-mode. * [9d9ca6e] sbuild.py (auto-apt-update): Add old apt-key compat handling for Ubuntu xenial, yakketi. * [86a3278] testsuite-packages/rejected-malformed-diststr: Add new test for malformed diststr error handling. * [f886162] builtins.py: Add mbd_codename filter. * [bc4ee6e] includes/events.html: Per default, limit 'package ls' to event's codename. * [0df7c5e] events.py, events.html: Add human-readable semantics of all event types. * [0d6182f] files.py (Path.ifiles): Add support for until (time range). * [e8089a2] views.py (BuildsView.setup): Rm deprecated (doubled) call to collect build logs. * [546d193] views.py, html: Add 'until' (time range) for events/builds. * [c5e07b1] devel: New profiles, nicer profile names. * [2bb575b] devel: Consolidate order/enumeration of test cases. * [7e83dd9] devel: Merge "README part" into --help. * [af6d3f2] views.py, html: Add explicit HomeView; make 'home' show whole Events Queue (not just running). * [251ffe3] devel: static checks: Run codespell 1st. * [5c83cfc] devel: Update MBD_SKIP support: +Doc, allow short names (without numbering). * [7e0bf9a] views.py (BuildsView.setup): Actually support 'until'. * [861b0b7] events.py (Event): Add special class var "ongoing": Mark individual event objects. * [ec294d9] events.py (Queue.mbd_copy): Add thread-safe copy method. * [4d2ea33] views.py, html: Update home view to safe copy && ongoing flag. * [786c400] events.py, *: Update event wording: "running"->"ongoing". * [0754755] daemon.py, *: Update events wording: "events_queue"->"events". * [31d0493] models/daemon.py (Daemon): Use 'show_last_builds' for 'Event Queue View Size'. * [e9a6d6b] events.py (Queue.mbd_copy): Fix: Actually use latest partition, not oldest. * [ac2218a] sbuild.py (SBuild.run): Fix too-clever code, possibly writing unknown Sbuild-Status. * [6d135bb] events.py (Event.strerror): Don't use "OK" on no error, just empty string. * [d1222c5] includes/events.html: Put results into event details. * [d70ec21] models/repository.py (Repository._mbd_package_migrate): Per default, log events (not vice versa). * [bdabe15] includes/events.html: datatables, column Events: Explicit search text (type name) && make searchable. * [65c0f68] html: Localized dates when using js. * [ccb5422] views.py, html: Improve 'Event Queue' display: Show sizes, some explanatory texts. * [fde1b71] events.html: Add column "ongoing" (so ongoing event can be filtered via datatables search). * [e5b4157] builtins.py (mbd_datatable): Use "columns" instead of "columnsDef" * [26af7fe] views.py (AccountProfileView.setup): Fix error 500 when called logged out * [948b00b] events.html: Fixup "ongoing" column, make 'ongoing, then date' default ordering. * [20b9d82] tags/datatable.html: Don't use quoting for config dict keys * [89e5841] base.html, view.py: Add "max" for range form * [0d07801] files.py: ifiles(): Simply yield (scandir) entries (not tuple stamp, filename). * [79c517f] includes/range_menu.html: Move range menu from base.html to separate include. * [ef84535] views.py (mbd_get_range): Add more user-friendly validation error. * [0bd2a64] views.py (events, builds): Apply 'max' range parameter * [754fa4c] misc.py (Datetime): Add support to get aware (UTC) datetime from isoformat. * [78b66bb] views.py (TemplateView.mbd_get_range): Simplify (rm 'until') and fix handling of naive isoformat dates from HTML * [4a02ac3] devel(html-hack): Avoid running at all when active, offer removal. * [3cffc65] mini_buildd.css: Update min|max-width values for inputs. * [d5d3d76] base.html: Rename block 'page_title'->'titledup'. * [7d28a04] base.html: Rename block 'section'->'content'. * [6f27b89] base.html: Rename block 'subtitle'->'tooltip'. * [c66382f] views.py, html: Update builds view. * [81de135] base.html: Obsolete block 'menu_c', only using 'menu' now. * [daadcc2] events|builds/index.html: Update to in-content context menu. * [1ce02cb] datatable.html: Cosmetic: Re-indent with new web-mode defaults. * [e073c06] api/index.html: Fix: Remove stray 'onclick'. * [5060bfa] package.py (port_ext): Better error handling on non-working given URL. * [b0c3ad6] events.html: Re-style event summary. * [96d0298] events.html: Move built details from "menu" to "event details". * [3e40dec] events.py: Remove trailing '.' from type descriptions. * [cc20e5e] events.html: More display fixes. * [15807c3] devel: Rename hack-html -> html-hack. * [724de3f] datatable.html: initComplete(): Move 'class-setter post' here && add call to columns.adjust(). * [b56814a] html: Update all (data)tables that should be "fullscreen" with width=100% style. * [244bc6d] base.html: Add class mbd-nojs (body). * [7d0e11c] devel: Fix MBD_SKIP support. -- Stephan Sürken Sun, 03 Apr 2022 15:30:02 +0200 mini-buildd (1.9.99) experimental; urgency=medium More testing, more fixes, more documentation: * [be87836] api.py (List.iarguments): distributions: Default to all distributions. * [d238265] models/base.py: Better 'attention support'. * [b7ca178] daemon.py: Rather use "source" model for repository attention. * [7f5b26f] __init__.py: Add helper 'rrpes'. * [a746e1f] builtins.py (mbd_parse_distribution): Avoid crash/deliver hr error on build sources generation fail. * [e2c76cd] html: Merge "chroots" into "builders". * [d3dfa71] devel: Make MBD_PIPINSTALL conf'able via env. * [5953526] devel: Convert local pip helpers to "global" tooling. * [db322cd] devel: Embed 'profile scripts' into devel. * [f739669] debian/control ([Build-]Depends): Fix: Need to use epoch for py3-django. * [fef5dff] devel: Add option to skip tests via MBD_SKIP. * [c05974d] devel (mbd_prof_localhost_buster): Add profile for buster. * [e28b1d7] devel (mbd_supertestall): Update to new 'profiles'. * [349643e] devel: Update quickstart notes. * [6e672ea] builders/index.html: Move 'remake_chroots' to (remote) actions. * [536e2bd] builders/index.html: Simplify chroot table. * [cf789db] builders/index.html: Move status class (color) to remote columns only. * [e6662c6] builders/index.html: Simplify status column. * [bd692f7] builders/index.html: Simplify remote column. * [9f0b3d3] builders/index.html: Add 'status' to actions. * [d2bb83e] builders/index.html: Move chroots table into remotes table ("ourselves"). * [86cc724] builders/index.html: Mv remake_chroot (all) actiion to chroot table. * [ee81760] models/base.py, html: attention: Return list, not multiline str. * [82397e6] daemon.py: attention: Rm obsoleted "chroots", make builders use both chroot+remotes. * [b65147b] repositories/index.html: Use one datatable per dist. * [ce92e80] builders/index.html: Show 'attention' for chroots. * [523ea03] builders/index.html: Show 'attention' for remotes. * [23ead35] models/base.py (StatusModel.Admin.colored_status): Update to fstrings. * [be9cd87] models/base.py (StatusModel.Admin.colored_status): Show 'attention'. * [0d9c4be] builders/index.html: Remove extra chroots table (admin should suffice). * [720cfe6] builders/index.html: chroots: Add remake action && move jump to config (admin) here. * [5265905] builders/index.html: Fix chroot/remote attention. * [c3b73f2] repositories/index.html: Cosmetics, add (global) 'attention'. * [a53155f] gnupg.py: Fix: Rm some leftover html fragments from help text. * [0b638f5] manual/administrator.rst: Move auth/ssh wrapper section down. * [7f98a91] Internal crontab: Remove "days_until_recheck" workaround (obsoleted) && add doc section. (Closes: 892837) * [fee9b92] testsuite-packages/installed-options: Pimp up tests: Also test for arch-specific options. * [6ab5f34] Upload Options: Add specific "nocheck" upload test, and document setting via DEB_BUILD_OPTIONS as example. (Closes: 875920, 877083) * [74ab123] manual/*.rst: Update to more recent codenames in some examples. * [2bfbca8] manual/developer.rst: Add FAQ: Can I access built packages that have not been installed into the repository? (Closes: 906736) * [aae3b79] manual/administrator.rst: Refine wording on m-b-debug-build FAQ. (Closes: 796867) * [62f75b9] etc/schroot/mini-buildd/fstab-generic: Add note about special home setups. (Closes: 849544) * [c9642f4] devel (bash-completion): Rm obsoleted devel.hostname|localhost commands. * [ccdf795] sbuild.py (Blocks.extra_option): Fix fstring usage (cosmetic). * [9759575] sbuild.py: apt-disable-check-valid-until: Fix missing quoting && simplify. * [8578da2] models/base.py (Model.mbd_get_extra_options): Document that last entry wins. * [1bd5ee8] dist.py: setup: Update jessie+wheezy to use 'apt-disable- check-valid-until'. * [1a98f29] dist.py: setup dict: Drop "produces_ddebs", just go with extra_options. * [4afdfce] dist.py: setup dict: Add Ubuntu impish. * [c78263c] mini-buildd-debug-build: dpkg-source: Using '-x' not '-- extract' to be compatible with older dpkg. * [ee47126] config.py, html: Cosmetic restructure of main menu. * [feb3087] mini_buildd.css: Pimp h1 margin and padding. * [7aeebe3] __init__.py (HTTPError): Fix: Remove obsoleted "detail" class var, and fixup several wrong usages throughout code. * [13dece5] events.py (Event.strerror): Better name and simplify. * [e071f4d] devel: Change profile system (again). Make all bash- complete-able. * [97928e0] dist.py: Remove squeeze/lenny presets. -- Stephan Sürken Sun, 27 Mar 2022 18:57:41 +0200 mini-buildd (1.9.98) experimental; urgency=medium 'Lost in documentation' release. Focus on in-place model documentation: * [1fe17a0] mini_buildd.css: Fix margin/padding handling. * [0fa3ed2] tags/api_arg.html: Fix: Arg header workaround not adapted to new triple grid. * [dfeb740] mini_buildd.css: Further simplify and add note for padding/marging. * [b03174c] mini_buildd.js: Add user alert on (any) js error (which would otherwise fail silently for most users) * [d86de3a] repositories/index.html: Fix typo in snapshot datatables (fixes js error). * [4ef91c1] base.html: Embed js error alert code, as 1st js code (really catch all errors). * [9cda430] base.html: Embed Clipboard.js init. * [58b559c] base.html: Embed js cursor setup; obsoletes mbd_init(). * [c4984dc] base.html: Embed js functions. * [fe6844c] setup, html: Completely remove mini_buildd.js. * [b08debb] admin/base_site.html: Rather use HTML comment for CSS workaround note. * [daaa63d] models/daemon.py: "hostname": Rather use blank default (obsoleted). * [9bfa3f5] daemon.py (Daemon.get_title): Fix: Don't use obsoleted 'hostname' field. * [613d32e] models/daemon.py: Document all remaining fields that (inescapably) still need a Daemon restart. (Closes: 838393) * [768919b] models/daemon.py: Just (mis)use "show_last_packages" as event queue size && deprecate "show_last_builds". * [0a7101b] models/daemon.py: Re-label "build queue size" to "max parallel builds". * [3466ec8] devel (tidy): Update code to be more flexible setting '-- mute' arg (ignore) * [1caa404] devel (tidy): Add (sphinx) manual pages to tidy check. * [18150c0] repositories/index.html: Silly typo time again. * [3e20334] models/daemon.py, manual/developer.rst: Move && update note about parallel package building to (developer) manual. * [3c06ac6] daemon.py: Add internal note for deprecated 'custom_hooks_directory' field (doc for new custom event hooks is in the 'Administrator's Manual') (Closes: 790058) * [0006bb2] models/daemon.py: Config: Don't show any deprecated fields. * [6d6f8d2] models/daemon.py: Move key generation/removal note to 'gnupg_template' doc. * [32f083c] models/base.py: Support to automatically disable/reorder and get custom help for 'pickled_data' and 'extra_options'. * [b668148] models/daemon.py: Exclude unused fields "wait_for_build_results", "keep_build_results". * [3112a98] models/daemon.py: Add pickled_data help, drop custom fieldset. * [b9b5a34] models/base.py: Update/simplify extra_options generic help. * [5fac59a] models/daemon.py: Add help for extra options (X-Archive- Origin). * [1484e40] models/base.py: Auto-embed all field's help in 'pre'. * [cbcdf68] models/base.py: extra optios help text: may use <> now. * [bd8b8fe] models/daemon.py: Bulk-Update all help to be plain text. * [9bea732] ftpd.py: Update ftpd options usage to plaint text. * [a34103f] devel (pylint-fixme, pylint-locally-disabled): Rather run later (so we get 'real' errors 1st). * [0fa04b1] models/chroot.py: Bulk-update for plain text help and new extra options help. * [fda579d] models/base.py: Add guard to not update help_text multiple times (monkey-patch-style) * [92b474b] models/distribution.py: Bulk-update all help_texts to plain. * [8f8cdb5] models/distribution.py (Layout): Update to new extra options doc setup. * [34d0fc2] models/distribution.py (SuiteOptionInline): Should exclude extra_options, pickled_data. * [859b08e] models/distribution.py: Fix leftover in plain text. * [8e2e4e9] models/distribution.py (Distribution): Update extra options doc to new style. * [381c442] models/gnupg.py (GnuPGPublicKey.Admin): No longer need to exclude pickled_data, extra_options. * [7e3a61b] models/repository.py: Bulk-update to new plain help texts. * [eb3749a] models/source.py: Bulk-update to new plain text and extra options doc setup. * [f0bc781] accounts/profile/index.html: Fix subscriptions display (was not updated to 'class var view'). * [2a3f76e] mini_buildd/base.html: User Profile -> Profile (already in context 'user'). * [c9b31fa] models/chroot.py: Re-add empty Meta/Admin classes (they need to derive from superclass). -- Stephan Sürken Sun, 20 Mar 2022 19:10:05 +0100 mini-buildd (1.9.97) experimental; urgency=medium Adds tool 'mini-buildd-debug-build' && doc around manually repeating/debugging failed builds. Fixes "please consider adding a command to create the helper directory", thanks to Marc Haber (Closes: #797587). * [15af23f] sbuild.py: APT_GET: Remove '--option=APT::Install- Recommends=false' duplication. * [06b3555] src/mini-buildd-debug-build: Initial version of debug helper. * [95720ae] mini-buildd-debug-build: Also accept '-h' for help. * [868d435] mini-buildd-debug-build: Fix order, don't change anything before confirmation. * [c856d3e] mini-buildd-debug-build: Allow arg with trailing slash. * [738abc8] mini-buildd-debug-build: Do 'chmod +w' outside chroot. * [0f5c639] mini-buildd-debug-build: Print info before entering schroot interactively. * [8363b30] mini-buildd-debug-build: Rather use explicit DST directory (guessing from DSC is clumsy). * [a537ac8] mini-buildd-debug-build: MBD_CODENAME: Compute from breq, and make configurable via env. * [de17dd6] manual/developer.rst: Add tip for emacs changelog mode. * [f73de6e] mini-buildd-debug-build: Avoid build-time values in man (also for reproducibility). * [b9e8229] administrator.rst: Add tip for local debugging. -- Stephan Sürken Sun, 06 Mar 2022 15:59:34 +0100 mini-buildd (1.9.96) experimental; urgency=medium More doc updates, tests, fixes: * [1b4817f] reprepro.py: Remove "show_command" support, log reprepro calls (to daemon.log). * [2e49dc8] builtins.py: mbd_api: Use 'verbose' flag to set title/doc. * [120bbde] mini_buildd.css: Rm button styles for C/R/D (obsoleted -- now icons). * [3ea2a9f] tags/api_arg.html: On verbose, also add arg doc as pre. * [7ced168] manual/developer.rst: Replace (redundant) 'Upload Options' table by hint to apicall doc. * [ed71809] manual/developer.rst: Use not as UO modifier (there is no other use case). * [4c98813] manual/developer.rst (via): UO: Fixup deprecated formatingg && add extra section. * [05ecf62] manual/developer.rst: UO section: Move unrelated error to "Advanced Topics" && structure fixes. * [3851cda] api.py (Call): Add support to split a call's doc to title and body. * [f52c6dc] tags/api_arg.html: Use code, not pre (not allowed inside span). * [d6ac05f] devel: hack.html: Add icons path. * [0c42617] devel (mbd_installdeps): Use --yes for unrelated upgrades as well. * [1864924] api.py: Docfix: port, port_ext: Rm (wrong) manual JSON result help. * [cb84bd3] mini_buildd.css: API inputs: Pimp min/max width values, and also include types url,number. * [043e221] tags/api_arg.html: Emphasize api arg label texts. * [1e74262] tags/file.html: Rather use 'strong' for title, no 'h2'. * [2853efa] api.html: Fixup API doc-style again; new 'aaa-grid' && do mandatory/optional args in a generic way. * [1165bd2] manual/introduction.rst: Add "About this Manual". * [ba32489] manual: Rename Introduction->Abstract. * [424983f] manual/abstract.rst: Conventions: Limit/fix usage && context of admonitions (to four only). * [5ef0353] manual/abstract.rst: Add py code doc. * [acab802] manual: Hack to automate adminition index. * [6651833] manual/conf.py: admonitions: Sort to workaround reproducibility issue. * [2006550] manual/conf.py: admonition hack: Fix paths for subpackages && __init__.py. * [d797c7b] manual: Update path for pydoc: code/mini_buildd/ -> python/. * [5c908d5] manual/_templates/layout.html: Make logo path absolute (make always work when using embedded). * [69ef98e] manual/administrator.rst: Cleanup iteration over all admonitions. * [5e97417] manual/administrator.rst: Update disk space tip. * [a692f7f] manual/administrator.rst: Update installation section. * [3b698db] manual/*.rst: Bulk-update "tip" format. * [a827e86] manual/*.rst: Bulk-update "error" format. * [d508feb] manual/*.rst: Bulk-update "attention" format. * [ed6325e] manual/consumer.rst: Add tip: upgrade after main version fix. * [0ac19f4] debian/README.source: Add previously local "backports" notes. * [2079ef2] manual/consumer.rst: Add release2pin table. * [9f140f1] models/base.py: Fix wrong uri path in action error handling. * [90a4641] examples/mini-buildd-utils/mini-buildd.el: Initial emacs support example. * [f316216] examples/mini-buildd-utils/mini-buildd.el: Move all menu inside hook. * [7dc2a83] mini-buildd.el: Update notation. * [72893d6] mini-buildd.el: Move dist entries to mini-buildd menu; hack to make at least one entry work. * [6d2f7f4] mini-buildd.el: lintian: Update to mode. * [0a5eea8] mini-buildd.el: Call d-c-add-entry first. * [a977b18] mini-buildd.el: Add autopkgtest, piuparts (ignore). * [1a08dcc] mini-buildd.el: Update menu texts. * [8f1c529] mini-buildd.el: Add deb-build-options, deb-build-profiles. * [cfa9188] mini-buildd.el: Add header comments/doc. * [70ced70] mini-buildd.el: Get rid of easy-menu. * [cca2e01] mini-buildd.el: Add global MBD_DISTRIBUTIONS. * [953bf7b] mini-buildd.el: Get rid of ddist global. * [5f33121] mini-buildd.el: Extra func to set dist not needed. * [83d7694] mini-buildd.el: Bugfix: Actually display all dist menu items (not just the last). * [0a71879] mini-buildd.el: submenu for distributions. * [7b14624] mini-buildd.el: Make archives, codenames and suites configurable. * [52a1d5c] mini-buildd.el: Fixup handling of distributions global. * [049b1cc] mini-buildd.el: Update comments. -- Stephan Sürken Sun, 27 Feb 2022 13:46:50 +0100 mini-buildd (1.9.95) experimental; urgency=medium Documentation release: Revamp && update of the (sphinx) manual, and documentation in general: * [e72c108] setup.py: Simplify package_data computation && add some notes. * [9758377] Rename "doc" -> "manual" (file hierarchy && python). * [2d3ea00] manual/conf.py: Update to use '"' as primary quoting char (like the rest of the code). * [bed2afb] manual/conf.py: Disable sphinx' default 'body_max_width' limitation (i.e., use full width of display). * [d119487] manual/conf.py: Use 'html_logo|favicon' configs, drop custom template. * [e5979da] base.html: Move "sitemap" link to footer. * [abe9176] manual/index.html: Add "manual" view (embedded via iframe) && add to main menu. * [79db87c] base.html: Move "homepage" link to footer, "api" to main menu; drop extra "Documentation" menu. * [0c27076] setup/index.html: Embed 'admin' into setup view. * [8bb9ff0] *.py, *.html: Move all menus to "attention" menu (for now). Drop extra "admin" menu. * [a00350e] includes/main_menu_item.html: Add generic include for main menu items. * [c7eb908] config.py: Split "attention menu" to two "main menus" (left, right). * [689a481] setup/index.html: Move presets to menu && improve custom setup HTML. * [1a0058f] manual/roadmap.rst: Add roadmap (stub for now). * [e9605c8] devel: Fixup some forgotten doc->manual moves. * [06e5833] admin site: Remove dome customizations no longer needed when embedded. * [0233ea6] base.html: footer: sitemap/homepgae: Flip order. * [a83592b] manual/conf.py: Cleanup/reorder. * [98bfd74] manual/conf.py: Remove "htmlhelp_basename": htmlhelp not used (and default should be fine anyway). * [7809843] manual/conf.py: Remove "pygments_style": Default or theme default should really be fine. * [72be6c3] manual/conf.py: General updates, notation fixes. * [d1dbe9a] debian/rules, devel: Use 'sphinx-build' rather than 'python3 -m sphinx'. * [df0ac62] manual/user.rst: Rm "custom hooks" todo (we now have documented custom events hooks). * [62b1476] manual/admin.rst: Update apt key todo/FAQ: Only one apt-key now needed. * [0e8481e] schroot.py (Session.close): Update "stale session" comment to todo. * [3d38fe6] manual/conf.py: Use (builtin) theme 'bizstyle': Looks ok, has reasonable style support for admonitions. * [6b842f8] src/*.py: Update all "todo"s to admonitions. * [b2433ff] __init__.py: Add two new pycompat hints. * [644ca56] manual/admin.rst: Update all "todo"s to admonitions. * [520def3] manual/user.rst: Update all "todo"s to admonitions. * [08f55fc] manual/todo.rst,conf.py: Remove 'todo' extension completely. * [e1a94c4] admin/base_site.html: Re-add branding (else, no home link for login popups). * [c76ebe6] manual/Makefile: Remove, we don't use it. * [b412776] manual/08x.README: Add README to explain 08x directory. * [5b02187] manual/index.rst: Rm 'index', 'search': Already per default in nav bar or footer, resp. * [d975530] manual/index.rst: Drop "Special pages", go with only one TOC. * [b454525] manual/index.rst: Further simplifications && show depth 2. * [4e485e9] manual/quickstart.rst: Merge quickstart to admin, user, glossary. * [a9ff2bf] manual/glossary.rst: Add list of known admonitions (WIP). * [18ceb6e] manual: Rename glossary -> conventions. * [0b0c915] manual/conventions.rst: Add && apply convention for sections. * [fa09193] manual/*.rst: Bulk-update new section conventions. * [482040f] manual/conf.py: Enable extension 'autosectionlabel'. * [c079413] manual/*.rst: Bulk: Remove all explicit ref-labels && replace refs by autosectionlabel-generated. * [0e0523f] manual/introduction.rst: Update: httpd is now twisted, not cherrypy. * [5271281] manual/introduction.rst: Update tracker to tracker.debian.org. * [983ab96] manual/introduction.rst: Fix wording on API feature. * [7434010] manual/introduction.rst: Add note about wake support. * [daa221b] manual/admin.rst: Update abstract. * [ba1e7cf] manual/admin.rst: New main section "Installation", merging all relevant parts. * [db57ac7] manual/admin.rst: Installation: Updates, wording improvements. * [c882862] manual/admin.rst: Quite some bulk space-to-tab action. * [7f081a6] manual/admin.rst (using): Fix wrong section to quickstart. * [d48723f] manual/admin.rst: Add new "Setup" section. * [a63c317] config.py: Add 'homepage' as config.URI. * [d2fdff2] manual/conf.py: Add automatic support for ``_ links for all config.URIS with "view" URI. * [25a0743] devel (mbd_installdeps): Also automatically 'apt-upgrade' after 'update'. * [8a460c0] devel (mbd_installdeps): Do upgrades on extra installs automatically. * [bd96717] manual/user|admin.rst: Bulk-update all internal links to new automated ``_ -style. * [c79da8a] devel (codespell): Update to also check manual/*.rst. * [420dce3] manual/user|admin.rst: codespell: Fix handful of newly found wrong spellings. * [c4a5daa] manual/admin.rst: Fixup section categories (like in the original). * [369d451] manual/admin.rst: Put all individual "Model" docs under new section "Models". * [62540c4] manual/admin.rst: Move most of the "misc-like" sections to 'Odds & Ends'. * [483d5b3] manual/admin.rst: Move "Quickstart" -> "Setup/Bootstrap". * [bdafbeb] manual/admin.rst (using): Merge 'Configuration' section content into 'Models'. * [198dda5] manual/conf.py: Add "extlinks" extension && add "debbug" role. * [a2614a9] manual/admin,user.rst: Bulk-update all manual "debbug" refs by new "debbug" role from extlinks. * [ce9639c] manual/user.rst: Move keyring package bug 'inline'. * [8d7f0ed] manual/conf.py: Add "_static/custom.css" (empty for now). * [9a2e120] * manual/conventions.rst: Upodate for subsubsubsub ;). * [447d7d3] manual/_static/custom.css: Add CSS for root/mbd-styled code && add initial convention docs. * [0e1c6fa] manual/_static/custom.css: Make code hint texts opaque. * [ceabb4f] manual/user,admin.rst: Bulk-update code-parts (as per new convention). * [3329522] * manual/admin.rst: Add "Configuration" section for "Installation". * [781fcd7] manual/conf.py: Add role "mbd" for links to local mbd instance. * [24157f4] manual/admin.rst: Squeeze out old "wizard" stuff, merging content to Setup (and Models, where still applicable). * [7d0b4d1] base.html: [debug]: 'force_escape' seems no longer needed/worsening with current django. * [545e5c2] api/index.html: Add support to display one command only. * [d7a9ea3] tags/api.html: Simplify to use same code for 'unauthorized'. * [9603ec5] builtins.py: Add 'mbd_api_cls' as standalone tag && rather use BadRequest for 'unknown command'. * [29afe64] api.py (Command): Add method title(): Get 1st __doc__ line for doc purposes. * [e724b0c] api/index.html: Improve index && standalone HTML. * [1ee58c4] builtins.py: mbd_api: Add verbose option, use for API index/call doc. * [9e8eba7] builtins.py (mbd_api_popup): Simplify -- no need to redundantly copy all kwargs. * [2f4017c] manual/conf.py: Add "apicall" role (linking to new dynamic standalone API call doc page). * [119e679] manual/admin,user.rst: Bulk-update all mentions of "API call" to ne "apicall" role. * [3633f01] manual/conf.py: Rename role "mbd"->"mbdpage" (emebeds into text more naturally). * [f2d72d4] manual/user.rst: Save misc initial updates... * [d2d2dd5] manual: Split "user" manual into "consumer" and "developer" manuals. * [c11ac7c] manual/consumer,developer.rst: Initial raw content split. * [b06ddfc] manual/consumer.rst: Update abstract && structure. * [0743798] manual/developer.rst: Structural fixup. * [48ab685] base.html: Add 'sources_list' to footer. * [0e8aea4] Add util "mini-buildd-apt-bootstrap": Automates archive keyring bootstrapping. * [fb5fb4e] manual/conf.py: Add new role "reqdeb". * [90a8a61] manual/consumer.rst: Initial rewrite for "Setup". * [f058c89] manual/developer.rst: Move "installation" content to consumer. * [a113262] manual/consumer.rst: Updates. * [8373adf] mini-buildd-apt-bootstrap: Some cosmetic updates. * [15959fe] mini-buildd-apt-bootstrap: Allow overriding of MBD_CODENAME and MBD_IDENTITY. * [b630912] mini-buildd-apt-bootstrap: FIX: Actually use "$MBD_CODENAME", not sid :). * [359ebb0] mini-buildd-apt-bootstrap: Ask (with info) before actually doing it. * [f4fa927] mini-buildd-apt-bootstrap: Also make MBD_APT_LINE overwritable. * [98eef26] manual/consumer.rst: APT boostrap: Add 'insecure' alternative. * [045bcbc] mini-buildd-apt-bootstrap: Update scheme: Rather download/employ key manually 1st, then run safe apt calls. * [b7d31bd] mini-buildd-apt-bootstrap: Add some dirty compat for jessie/wheezy/squeeze where we need apt-key add still. * [e576cbd] mini-buildd-apt-bootstrap: wget: Use --quiet. * [e4344b3] mini-buildd-apt-bootstrap: Ask twice, give admin chance to verify files. * [0b9523f] manual/consumer.rst: APT bootstrap: sync with tool updates. * [da32c82] manual/consumer.rst: Fixup "Sources" section. * [a16b3c3] api.py: Add 'command_line_full' (for use in templates): Full call && 'intelligently' compute user. * [05d4280] api/base.html: Add "shell" menu item: Quickly grab same call for "shell" use. * [593f5b0] manual/developer.rst: dput: Stray note from consumer belongs here. * [d380234] manual/consumer.rst: Update Sources, User sections. * [a0caabd] manual/consumer.rst: Update default layout examples to bullseye. * [8b394d8] manual/developer.rst: Update dput section. * [b7746b1] manual/conf.py: Add support for static HTML manpages. * [5f5e58b] manual/conf.py: Add new role "mbdcommand". * [ba7d53d] manual/*.rst: Bulk-update to ":mbdcommand:". * [fd6b7fe] manual/conf.py: Add "index" of all commands. * [dc0ecd0] manual/conf.py: Role 'reqdeb' -> 'debpkg'. * [d9b0899] manual/developer.rst: Update "authorize" section. * [8c379ee] manual/administrator.rst: Add "ssh wrapper" pseudo section. * [381c885] manual/developer.rst: Merge 'user upload' to one section. * [88f4a0a] manual/developer.rst: Update section "Control package build result". * [871fd52] manual/developer.rst: Update "managing packages". * [6ecf6ff] manual/index.rst: Simplify pydoc doctree entry && put last. * [cb83da7] manual/introduction.rst: Merge conventions into introduction. * [ee104f5] manual/introduction.rst: Update main components to debpkg role. * [03b9830] manual/introduction.rst: Simplify core compenents. * [498e6cc] manual/introduction.rst: Update abstract. * [8cf5d4f] manual/conf.py: Overwrite layout template again, merge custom.css. * [bb764ee] manual: Add "commands" and "apicalls" as sidebar menus. * [805b823] manual/_templates/mbd-sidebar.html: jinja2 reproducibility workaround (random iteration order). * [7c417f5] manual/_templates/mbd-sidebar.html: API: Add link to index page. * [2fa5646] manual/introduction.rst: Section fixes. * [642e637] python-client example: Update to curent API and simplify. * [928e8eb] client.py: Fix missing explicit import of events. * [dda3020] manual/developer.rst: Update API section && also newly document Events here. * [e30a736] manual/consumer.rst: Fix section hierarchy to convention. * [234a1ce] manual/developer.rst: Move "API and Events" to consumer. * [7561ab1] manual/developer.rst: Move urold bootstrap bug note to appropriate bootstrap section. * [602ed4b] manual/developer.rst: Move aptitude note to (own section) in consumer. * [265bd73] manual/developer.rst: Move 'multiple version' note to (own section) in consumer. * [6eb6c14] manual/developer.rst: Update abstract && intro. * [03eabc2] daemon.py: Remove unneeded api import. * [cb2dd15] api.py: Update Command constructor to take (kw)args only. * [06faf8b] api.py (Command): Make unknown args lethal, use from_sloppy() for exceptions. * [eb5d891] Update wording (doc and code): api.Command -> api.Call. * [b7a5bc7] api.py: Move presets into Setup call class. * [cdfe35a] api html: Update clear, reset, paste (args) and doc link (index) to 'icon'. * [23529a0] builtins.py, html: Remove 'mbd_icon' templatetag. * [2814c0d] HTML: Properly support 'alt' for all 'imges'. * [525aea1] manual, api.py: Sync API and manual sections. * [c8f0818] api.py (Call): Add "category support" to help structuring docs. * [dfbf148] api.py: Add category exceptions (handshake, setuserkey). * [9da630a] api/index.html: Update to new API categories. * [94e744b] api.py: Remove all HEADERs (was workaround for categories only). * [872fb58] api.py: Consolidate wording for all API call descriptions. * [a2f81d5] api/ls.html: Add bg colors for suites. -- Stephan Sürken Sun, 20 Feb 2022 19:55:48 +0100 mini-buildd (1.9.94) experimental; urgency=medium (HTML) GUI fixups: Uses 'numix-icon-theme' for (most) icons && various other GUI updates and fixes. Details: * [5261c73] SVG: Remove unused (home, migrate, remove, wizard). * [a24ea0d] mini_buildd.css (@keyframes mbd_attention): Use bg colors only (fix readability/contrast). * [6d9cb54] setup.py: Prefer '"' for quoting. * [50ff4f9] setup.py: Use setuptools.find_packages(). * [ccce127] builtins.py: Add 'mbd_icon' tag for upcoming 'icon theme support' (&& helper in devel to list icon names). * [0559491] *.html: Bulk-replace 'mbd_img' by 'mbd_icon' -- use naming oriented on freedesktop's icon naming spec. * [7ba91df] debian/control|links: Depend on and use 'numix-icon-theme'. * [600a371] static/*.svg: Remove all custom icons now covered by icon- theme. * [6a34c15] events.html: Move version "filter" to version column. * [9ee4aa1] API html: Move html/page convenience links to 'includes/api/base' (i.e., make available for both, snippet and page views). * [4893876] events.html: Fix indenting. * [b4736b7] events.html: Make source name link to API call ls. * [aaba672] events.html: Add 'changes' link whenever available (not just on INSTALLED); drop extra 'ls'. * [32e1414] api/ls.html: Fix some icon paths && drop changes and buildlog links (only via events). * [8635934] builtins.py: Add tag mbd_join (os.path.join). * [77b3376] dir.html: Fix: Make links work no matter if page was called w/ trailing '/' or not. * [418d2b1] includes/events.html: Move json link to timestamp. * [8813841] base.html: Switch to standard view icon: Rather use mimetypes/text-html. * [d7c13e5] api/ls.html: Fix hrefs for DSC links. * [7f9026e] api/ls.html: Merge "Extra" column into "Menu". * [a8728de] api/ls.html: Add direct DSC download link (version). * [43c7ce7] builtins.py: Merge mbd_img to mbd_icon. * [b2f987a] base.html: Move up/down/switch menu to center. -- Stephan Sürken Sun, 16 Jan 2022 14:54:49 +0100 mini-buildd (1.9.93) experimental; urgency=medium Summary: * Add tool 'mini-buildd-internals' -- for now, for sbuild setup blocks only. * schroot.Session: Debug && fix intermittent schroot snapshot left-overs. * portext: Only download verified by default. * Various minor tests && fixes. * Code/setup updates for pylint 2.12.2. Details: * [dac35be] config.py: Remove (obsoleted) account URI "reset". * [13b1fa8] config.py: Remove not-needed account URIS logout, password_change, password_reset. * [e57362f] package.py (_port): dget: Deny unverified downloads by default && add allow_unauthenticated option to override. * [f0c69c5] api.py (PortExt): Add --allow-unauthenticated argument. * [c411dd5] mini-buildd-api: Fix description (which was still mentioning events). * [e61be9d] Add new CLI stub mini-buildd-utils. * [a3eb56d] files.py (File.run): Add ability to run (script) files. * [2987277] mini-buildd-utils: Add "sbuild" utility (sbuild setup blocks). * [766dbb4] files.py: Move File.run() to custom Script class in m-b- utils. * [ebad129] cli.py (CLI.run): Log run error with level=ERROR (not default=WARNING). * [6af196d] cli.py (CLI): Optionally allow unknown arguments. * [0db6c6c] mini-buildd-utils: Remove script run again (does not make much sense, really). * [49751f8] sbuild.py: Cleanup naming/descriptions of sbuild blocks. * [43a65a2] files.py (Script): Move run() and Script class to file.py after all. * [42b830d] files.py (File.__str__): Add __str__(). * [e63c5d4] mini-buildd-utils (sbuild): Add --cat && make printing description default. * [a334b1e] sbuild.py: apt-disable-check-valid-until: No need to exclude codenames in-script. * [af10297] sbuild.py: Some more description wording updates. * [efcf012] devel (MBD_PIPINSTALL): Skip pip user install of pylint (2.11.1 now in Debian). * [139f819] models/distribution.py: Fix: Properly (HTML) escape some usage() text used in help texts. * [6df6a27] mini-buildd-utils: sbuild: Print usage() when no sbuild name is provided. * [9a80851] Rename mini-buildd-utils -> mini-buildd-internals. * [2f916f0] mini-buildd-internals: 'sbuild' -> 'sbuild-setup-blocks'. * [bd592e9] sbuild.py (SetupBlocks.default): Fix: '[apt-]disable-check- valid-until' should not be default. * [a3a3330] sbuild.py: setup blocks: Update name/description for various blocks. * [43b9a5b] devel.hostname.lts: Helper ('./devel' pre-configured w/ Debian + LTS). * [072f80c] builder|changes|sbuild.py: Buildresults: Obsolete 'Sbuild- Retval' (use 'Sbuild-Status' only). * [92446ed] sbuild.py (SBuild): Buildresult: Add 'Build-Time', 'Package- Time', 'Space', 'Package-Space' from sbuild summary (informational only). * [8b44cc6] builder.py: Remove 'Runtime-Start', 'Runtime-Delta': Informational only, rather use new sbuild summary values. * [f732bf0] sbuild.py: Move untar to sbuild. * [b27fd30] builder.py: Move more 'sbuild context code' to sbuild.SBuild. * [3087f72] sbuild.py: Simplify. 'Harden' sbuild status when sbuild run itself fails. * [5f51ec3] daemon.py (Daemon): Make 'model' a property. * [c911ce9] models/repository.py (EmailAddress): Exclude 'pickled_data' from view. * [d5fa28e] daemon.py: Skip monkey-patching 'django.conf.settings.DEFAULT_FROM_EMAIL' (FROM is already set explicitly for all emails we sent). * [9ab82cf] models/daemon.py (Daemon): 'custom_hooks_directory': Mark "DEPRECATED", exclude from view (see new 'events hooks'). * [4ae5fce] changes.py [pylint]: Iterate some dicts w/o keys() (new pylint 2.12.2 warning). * [569162d] mini-buildd-ssh-uploader-command [pylint]: 'too-many- statements' no longer needs to be locally disabled. * [7d9b68f] mini-buildd [pylint]: Various local disablings around PEP3143 (daemon.py) no longer needed. * [391419a] src/* [cosmetic]: More consistently use one empty beauty line after initial top level script/module comments. * [4676b79] mini-buildd-import-08x [pylint]: Some local disablings (redefined-outer-name, too-many-branches) no longer needed. * [6182286] django_settings.py [pylint]: Remove two no longer needed "no-member" local disablings. * [48ed473] ftpd.py: [pylint]: Remove no longer needed "no-member" local disabling. * [4c731c4] files.py: Scripts: Drop pasting the whole script again && simplify banner methods. * [ea98b38] files.py [pylint]: Remove no longer needed local disabling (superfluous-parens). * [30e18fe] sbuild.py [pylint]: Remove no longer needed local disabling (no-member). * [11d0fd1] setup.cfg [pylint]: Update "generated-members" (django): Three no longer needed. * [e7dc8d1] src/*.py [pylint]: django: Handle various 'no-member' local disablings via generated-member. * [57580a1] src/* [pylint]: Avoid local disabling of 'bare-except' using explicit bare except via BaseException. * [6a5b66a] net.py (detect_apt_cacher_ng) [pylint]: Rm "broad-except" local disabling (we have a global exception anyway). * [10e18b1] misc.py [pylint]: Simplify 'skip_if_debug', avoid 'inconsistent-return-statements'. * [b4015c9] events.py [pylint]: Remove local disabling of 'too-many- boolean-expressions', no longer needed. * [1fff2fe] models/daemon.py [pylint]: Remove local disabling of 'arguments-differ', no longer needed (was false positive). * [63246d6] values.py: CURRENT_BUILDS: Add comment why we need the lambda here. * [2a1ba48] values.py (OnOff): Rather use "ON, OFF" (capitalized) as values. * [6a0992a] models/repository.py [pylint]: Remove another unneeded local disabling. * [8426db2] models/base.py (StatusModel.Admin.mbd_action_remove): Simplify code. * [5664b22] gnupg.py [pylint]: Remove another unneeded local disabling. * [30c35dc] __init__.py [pylint]: Rename Daemon() -> get_daemon(). * [ec77b8a] models/base.py (StatusModel.Admin.colored_status) [pylint]: May be a classmethod. * [725a078] *.py [pylint]: Convert various "no-self-use" methods to classmethods. * [b87046b] models/gnupg.py (Builders.add): Use "normal" mbd_check() method call. * [05260da] models/gnupg.py (Builders): Use all remote objects (again). * [1dcb119] call.py (call_with_retry): Fix: Use 'is None' idiom. * [6c15ef0] schroot.py (Session.close): Retry --end-session (fixes occasional build fails && session leftovers). * [628c4bb] builder.py (Build.run_deferred): Simplify, merge build(). * [cfb2cdc] builder.py (Build.run_deferred): Skip updating 'sources.list' in source chroots prior to build. * [7efb02c] schroot.py, models/chroot.py: Simplify code around sources.list update (only neded in mbd_check()). -- Stephan Sürken Fri, 17 Dec 2021 15:28:44 +0100 mini-buildd (1.9.92) experimental; urgency=medium Summary ("more things from the roadmap"): * ftp: Make passive ports configurable. * chroots: Use schroot sessions. * django: Internal impl. of (user) registration, drop p-d-registration. * internal: Create gnupg keyrings on-the fly (another step for #838393). Details: * [9812e2f] ftpd.py (FtpD.shutdown): Fix false idiom (use 'is not None'). * [ae91fa5] ftpd.py (FtpD): Add support to set handler options (supporting 'passive_ports' only for now). * [229292f] models/daemon.py (Daemon): Enable previously unsused ftpd_options for new handler options. * [970ee35] includes/error.html: Make actual error stick out (header not 'mbd-error', small http description). * [a63c050] devel (MBD_PIPINSTALL): For now, use pylint from pip (need 2.11.1). * [03d2aae] devel (mbd_installdeps): Remove obsoleted extra "binary dep installs" (install via apt already takes care). * [647c88a] devel (mbd_installdeps): build-deps: Drop updating to newest found version (via target-release='*'). * [b26cb46] devel (mbd_installdeps): Do build-deps first. * [8832642] devel (mbd_installdeps): Put all non-build-dep installs in one call && diff friendly. * [e0301fa] devel (prepare-system): Run installdeps here (first). * [9c5065d] devel: Move 'installdeps' code to 'prepare-system'. * [ec451f2] call.py (Call.log): Support (log) level to be given explicitly && now default to level "error" for failed runs. * [7652742] schroot.py: New module, now essentially providing schroot sessions (can avoid having auto-sessions for each call). * [d7290f6] call.py (Call.log|check): Run log() when check() fails (&& remove extra log line from check(), already in constructor). * [6297e53] builder.py: Move buildlog_file_path var to build() alone. * [bf06d9d] chroot.py (Chroot.mbd_set_debconf): Also set DEBIAN_FRONTEND=noninteractive for the config call itself. * [aae8b45] models/chroot.py: Update mbd_check to schroot.Session. * [f6f4354] builder.py (Build): Doc: Add note that constructor should not throw. * [d0471eb] builder.py (Build.build): Move apt line updater to build() && use schroot.Session. * [d3ae8d7] *.py: Bulk-replace log().check() by check(). * [f3d59cf] django: Add top-down top stub for internal "reset", "register". * [b315545] models/chroot.py (Chroot): Remove obsoleted _mbd_schroot_run() && mv set_debconf to check(), using new schroot.Session. * [988fa25] schroot.py (Session): Add raw "call()" method (complementing run()). * [77c259d] schroot.py (Session.set_debconf): Don't fail if config can't be set (workaround for debconf 1.5.78 / sid). * [7209b1e] devel (mbd_installdeps): Rm *.changes|buildinfo (new leftovers from mk-build-deps, see https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=989696). * [e375ad1] schroot.py (Session.set_debconf): Use run() again (i.e., re- enable error checking). * [b14dfe0] profile/index.html: Fix using "section" not "main" block. * [cef7625] __init__.py, error.html: Add 'HTTPOk' HTTP Error (as means to convey simple non-error messages). * [1031b5b] views.py (ExceptionMiddleware.error): Don't log if error is HTTP_OK. * [c7023b1] django_settings.py: Add password validators. * [6d33002] views.py: Implement AccountRegisterView, add && implement AccountActivateView. * [56303cb] views.py: Rm AccountResetView (not needed). * [b03c439] accounts/register/index.html: Fixup register template. * [80edec7] base.html, config.py: Update uris/names for new register/reset. * [b23c89f] debian/control: Remove p-d-registration dep, and remove all supporting code. * [205714e] templates: Remove bunch of now-uneeded templates (post p-d-r removal). * [7ac637b] call.py (Call.success): Add success() method. * [9846c93] schroot.py (Session.check_sudo_workaround): Implement using call() (avoid confusing error log). * [4e77d8b] api.py: Move 'upload_template_package' helper to package.py (fix one FIXME ;). * [7b048da] daemon.py: Keyrings: Add own classes for Remotes/Uploaders keyrings; move all code to daemon.py. * [81c9e69] daemon.py: Uploaders/RemotesKeyring classes: Remove (daemon) model from constructor. * [44b9c92] *.py: Generate gnupg verification keyrings (Remotes, Uploaders) on the fly. * [d888730] models/gnupg.py (Builders): Fix: Consider 'activatable' remotes only. * [2a4fc1d] models/source.py (Source.mbd_check): Simplify && fix logging when archive does not match. -- Stephan Sürken Mon, 01 Nov 2021 15:46:09 +0100 mini-buildd (1.9.91) experimental; urgency=medium Summary: * remotes: Stabilizing handshake/wake code. * chroots: - Add 'remake' convenience support. - Update base sources list prior to any build. - prepare: Configure debconf frontend to noninteractive. Details: * [588f5ef] api.py (Handshake.run): Add instance URL to handshake failure message. * [871a705] models/gnupg.py (Remote.mbd_check): Call status 1st (so wake is done before handshake) && some minor fixes. * [048d001] models/gnupg.py (Builders): Rather optionally 'check' (does wake implicitly) not 'wake'. * [bd0a1d9] api.py: Handshake: Move to pseudo section "Maintain". * [efb59f0] api.py: Fix code still using direct import from models. * [e7b7cd5] models/base.py (mbd_pca_all): Add 'request' arg && support for optional prior 'remove'. * [0b3a74d] models/gnupg.py: Simplify chroot key code. * [5d8d0f6] models/base.py (StatusModel.Admin): Add helper mbd_actions(). * [1764ecd] models/base.py (StatusModel.Admin): Use mbd_actions() for 'pc', 'pca' and 'pca_all'. * [54c9ea4] values.py: Add value 'ALL_CHROOTS'. * [5724077] api.py: Add "remake_chroots"; add resp. support to builders.html. * [b1c3023] builtins.py (Css): Add class mapping for django messages. * [91750d4] includes/api/*.html: (Re)introduce django messages displays for rendered API results. * [b6df55a] daemon.py (Stopped): Run code with daemon stopped. * [a597057] api.py (Setup.run): Use Stopped() on setup run. * [3268340] api.py (RemakeChroots.run): Use Stopped. * [4b90364] models/chroot.py (get): Add get() helper. * [e63c843] models/chroot.py (Chroot.mbd_update_sources_list): Add separate method to update base apt line. * [824338d] builder.py (Build.__init__): Always update base apt line in source chroot prior to build. * [775ce8c] models/chroot.py (Chroot._mbd_schroot_run): Remove DEBIAN_FRONTEND=interactive (as this does not actually end up in chroot call). * [d0ce548] models/chroot.py (prepare): Globally configure debconf frontend to noninteractive. * [cfc0fc6] sbuild.py, chroot.py: Use same apt-get base call. * [608b0ff] builder.py, sbuild.py: Update to more congruent use of breq.build_path. * [6684463] changes,sbuild,chroots.py: Consolidate schroot name generator. * [7dd06e2] error.html: Use phrase (not description) for title && other minor changes. * [b8084bb] models/gnupg.py (Remote.mbd_get_status): Error message: Add convenience hint when wake command is not configured. -- Stephan Sürken Sun, 17 Oct 2021 16:58:02 +0200 mini-buildd (1.9.90) experimental; urgency=medium Summary: * Make work for django 3.2 (now compatible 2.2-3.2). * New structure for internal store dirs "events" and "builds". * New "setup" API call (replacing "wizards"), now including some maintenance capabilities. * Quite a lot of testing && micro changes, especially for the WEB UI. Details: * [bf04c89] base.html: api, doc, admin links: complete via config. * [255261a] config.py: Mv all "accounts" uris to config. * [0c05fdd] config.py, fstab: Just use one directory ('var/shared': to be shared with chroots). Replaces "var/spool", "var/chroots-libdir". * [7a757d5] config.py: Update id "spool" to "builds" (under new 'var/share'). * [bc1c2f6] config.py: Renaming "chroots_lib"->"libdir". * [389745b] config.py: Fix some "acounts" uris: Should be relative. * [dfdc54d] urls.py: Fix: Use config for account profile, not hardcoded. * [0866407] httpd.py (HttpD._add_static_route): Support url hierarchy. * [63c3969] config.py: (Temporary) fix for static compat log. * [6650c4a] config.py: Cease using "home.html", always use "index.html" (as default template). * [67293a7] snippets/events.html: Fix event log links. * [c74a4fa] devel (restart): Give up after 5 tries to call status (don't loop forever on error). * [0e4c565] django_settings.py (configure): Fix: Don't hardcode STATIC_URL. * [41a248b] api_view/show.html: Fix wrong mbd_uri call. * [d4005a4] views.py (ExceptionMiddleware.__error): Log middleware exceptions (else no chance to debug template errors). * [7a2a02c] *.html: Various get -> getabs fixes ;(... * [8192ccc] config.py: Rename "events-log" "events" (uri && dir). * [de0bf01] events/log.html: Fix static link. * [b14448b] models/repository.py (Repository.mbd_get_apt_line): Fix: Use URIS config for repo url. * [dc3d34d] devel: Update tidy test. * [be14c68] config.py: Just use "attach" for event attach location. * [d6d4b7f] httpd.py (FileResource): Move "doc missing" support to FileResource. * [3d63fcd] httpd.py (HttpD): Generalize route support (so we can add events the same way). * [c318c12] changes.py: Add "timecode" support: Once generated in Upload, propagated through to buildrequest/result. * [1b4032b] builder.py: Don't remove build dir port-building. * [65d779e] packager.py (Packager): Fix: Log exception on unexpected fail. * [bc04a5b] views.py (API.dispatch): Fix: Log exception when api call fails. * [3cae7ec] events.py (Event.from_changes): Add timecode from changes to events. * [af570de] changes.py, packager.py: Fix "move_to_pkglog": Dump special treatment for rejected/installed && any purge action. * [e8c3699] builder.py (Build.run_deferred): With purging removed, dump clean() and just remove buildrequest directly. * [2f91ea4] changes.py: Upgrade LogPath implementation- * [e5ca5ca] changes.py (Changes.get_spool_dir): Now obsolete, removed. * [7c37202] changes.py (Changes): Remove "spool_hash" support: No longer needed. * [c83d629] net.py (reactor): Comment some debug logs (occur too often, even for debug). * [857fe6a] builder.py (Build.build): Remove safeguard code to remove "live buildlog" due to possibly same sha1sum (we use timecode now). * [6c4a0e0] config.py: Move 'static options' to config (and fully automate static routes). * [f6f04f1] config.py: Add Uris for "builds" (analog to "events"). * [52206aa] config.py (Home.__init__): STATIC, DOC global resources no longer needed. * [871c0ea] config.py: Resource, Home -> Route, Routes. * [bf92fdf] httpd.py: Add custom directory indexer: Home, "up", automated "view" link. * [ef42ff2] base.html: Main menu: Add events, repositories and builds (static) links. * [d9641b1] views.py: Rename "buildlog" view "plain". * [74e5350] views.py: New generic EventsView. * [5db086d] views.py: Update/fix PlainView to work w/ events. * [ab3f111] views.py: Rm obsoleted EventLog views. * [a0fa305] urls.py: builds: Add buildlog view. * [51d89b2] urls.py: Fix: Give route str ids only (ROUTES may not be configured at import time). * [79ea4ab] events|plain.html: block title should not have html tags. * [298d284] builder.py: Remove extra "live buildlog" support (we now just use 'builds' dir). * [7151b1a] httpd.py: Allow multiple static routes (for compat routes). * [570196f] config.py: Put all "static" routes (i.e., handled by httpd directly) below '/static/' (avoids uri pollution / possible conflicts with django apps). * [0309ee4] config.py: Introduce StaticUri: Fix repetition of static prefix && fix option handling. * [a558d53] httpd.py (DirectoryLister.mbd_header): Use StaticUri.uri2view to convert to view uri in directory listing hack. * [f5d849b] config.py: Remove obsoleted "buildlogs" route. * [b7ece38] packager.py (Package.auto_ports): Add log_exeptionif auto_port fails && protect erro handling.- * [c9e9ab9] config.py: Compat: Add "/repositories/" compatibility route. * [920ae0f] config.py: Add "log_v10x" compat URI. * [725da8c] changes.py (Changes): Get rid of extra properties: file_name, file_path. * [d04a3cf] changes.py: Get rid of superfluous is_new() method. * [51efe1b] changes.py: Create path only when needed && simplify save(). * [60ac468] changes.py (Changes): Make file_name + is_new properties (prepare for file_path to be None). * [a04eb8f] changes.py (Changes): Allow initialization via dict. * [dcd0c40] events.py: Log via logchanges() only, and with actual 'Changes' objects. * [54b136d] config.py (StaticUri): Make options with kwargs. * [e213198] httpd.py: Directory listing: Put "up" button before directory (so it does not move). * [6a335f9] snippets/repositories.html: Put old-style (per repo!) compat link to repositories, not events. * [535332b] snippets/repositories.html: Only one "browse repo" link (no need for separate dist/ and pool/ links). * [09ba836] config.py (StaticUri): Regex: Auto-prepend uri to regex && fix repository regex (i.e., allow conf/, db/ down in the tree). * [42f1c20] config|httpd.py: Compile regex early (StaticUri), and don't call at all if not given. * [181c14b] httpd.py (FileResource): Use (one) dict for options && put defaults & 'docs' to config. * [e69800e] config.py: Rename option "with_cache" -> "cache_ttl" (and support configuting the actual TTL (max-age) value). * [4f4bedf] includes/mbd_events.html: Don't display "migrate", "remove" on events page. * [a4171f9] includes/mbd_events.html: Always show events link. * [9379b09] templates/includes/mbd_sbuild_status.html: Remove newline at EOF (make mbd_sbuild_status tag really spaceless). * [85fbadf] templates/includes/mbd_events.html: Move crucial info to 'Details' only, remove redundancies. * [04c6634] events.py (Event): Simplify extra_info() -> error(): Not used any more. * [596bab4] events.html: Use "All" as title if path is empty && add "up" link. * [e951e93] changes.py (DebianFileName): New class -- upcoming one-stop for all debian file names. * [a5040a5] changes.py (Changes): New precondition: Any object must already have Source, Version, Distribution. * [f81a67c] changes.py (Changes): Add "dfn" (DebianFileName) class var (possible w/ new precondition). * [4e86187] changes.py: Obsolete gen_changes_file_name, gen_file_name, gen_dsc_file_name, dsc_name (all handled by DebianFileName now). * [26c7618] changes.py: Obsolete get_buildlog_name (handled by DebianFileName now). * [791b46d] changes.py (Changes): Rename dsc_file_name -> dsc_file_path, and un-property it. * [2bb9af9] includes/mbd_events.html: Add static (browse) Events link. * [40c1cab] changes.py (DebianFileName): Update to one generig generator method (gen), and fixup json type. * [15fb0b1] events.py (Event.save): Update to use DebianFileName. * [dae6ed0] changes.py (DebianFileName): Do apdxes w/o leading slash. * [e2d6884] devel: Add "fishy-words" test (just output, don't fail). * [6098b30] files.py: Add 'Tar' helper class. * [3136f94] changes.py (gen_buildrequests): Use DSC and its files for buildrequest tar (instead of excluding from uploaded changes). * [1732203] changes.py (Changes): Use files.Tar for tar, untar && remove obsoleted functionality. * [7a9a1f6] includes/mbd_events.html: Always show error in summary. * [bd9e08c] repository.py: Fix: Don't log MIGRATE event on error- rollback (due to failed binary install). * [fc6a109] changes.py (Changes): Add get_files_path helper. * [5bc9be0] config.py (Uri.getabs): Guess if uri is dir, and append "/" in that case. * [47c010c] mini_buildd.js: Add mbd_event (test code only). * [fcee1dd] mini_buildd.js: Add some missing 'EOL-semicolons'. * [7815d34] urls.py: api_view/, not api_view. * [24d1570] doc: Don't use mini-build.css, fix logo paths to use twisted static, and remove mini-buildd's static files. * [6c7f6d7] devel (MBD_CODEVERSION): Fix bullseye: ~BULLSEYE, not 11 (still not released yet). * [dabd18c] config.py: Rename 'static/events' -> 'static/events.attach' (better name, and marks it "non-dir" for uris). * [f2f0c66] events.py: Add new events: BUILDING and PACKAGING (to eventually replace packaging/building display support). * [78811e1] html: Remove 'packaging', 'building': Events only. * [8a61b77] base.html: 'Events' not needed in header menu. * [fd73331] *.html: Make all snippets (except events) normal templates. * [175f07f] index.html: 'Un-snippet' events. Events are just on the index page now (autoreload yourself if needed ;). * [3231c64] mini_buildd.js: Rm all snippet-related code. * [a6320be] includes/mbd_snippet.html: Rm, no longer used. * [87801ec] mini_buildd.css: Rm snippet-related css code. * [8b130fa] builtins.py: Rm mbd_snippet and mbd_next. * [5114e65] changes.py: Move DebianFileName to 'files' module. * [f63bdf9] changes.py: Mv *LogPath, Log to module "files". * [0cc2622] config.py: Mv "Path" to module "files". * [ae767e6] includes/mbd_events.html: POC: Try to prevent table 'changing design' after page/script load is complete. * [c28749d] builtins.py: Generalize/simplify datatables javascript code via template tag. * [a18df9e] devel: Add "compat.*only" to fishy words. * [ad3feae] files.py (Path): "merge" (sort-of) functionality of LogPath into Path. * [fb01495] files.py: Replace obsoleted "LogPath" by Path. * [2b45f65] setup.cfg (max_line_length): Sync w/ prospector value. * [2d5e6ad] changes.py (Changes): Temporary fix for temporary get_buildlog_uri. * [2418622] includes/mbd_events.html: Fix for events view uris: Use sub, not path. * [8805f2c] files.py: Update EventsPath to be used in events view. * [4e2f3bd] models/repository.py (Repository.mbd_get_dsc_path): Simplify code (after Path update). * [288294e] files.py (Log): Rm onsolete Log class (and temporarily comment/mark api call "retry"). * [e0af21d] devel: Help the elderly to better find errors by unasked-for ridiculous terminal log eye-candy. * [2a88e31] devel: Don't fail if tput fails. * [05ff676] events.py (Event.save): Fix file_path for type BUILDING (missing arch). * [b034454] packager.py: Log PACKAGING event _before_ uploading buildrequests -- else BUILDING events may be logged first if building is on the same instance. * [3eae9f5] events.py: Events: Add "running": Only PACKAGING/BUILDING events that have not finished. * [0c795da] mini_buildd/index.html: Only show "running" events on index page. * [743134f] misc.py (measure): Helper to log run time of functions (dev only). * [f851fe9] events.py (Events.log): Use only one method to log (events). * [49ec769] devel: fishy-words: Add "deprecated". * [17df869] mbd_events.html: Add microseconds to datatables timestamp 'data-order' (fixes sorting for events within same second). * [d73acf4] misc.py (load_json): Add helper. * [8d6aaee] files|daemon.py: Get events data on startup from events directory (making 'pickled_data' workaround now completely unused). * [3a68a91] files.py (Path.expire): Add "expire support" for Path. * [6038ff8] daemon.py: Use Path.expire for 'expire cronjobs', and use genrically expire 'builds' and 'events' paths. * [5e55e5e] config.py: Make "log" URIS non-depcrecated again (deprecate 1.0.x compat uri only). * [b33a2b6] httpd.py (HttpD._add_route): Use config.Uri (not plain str) as argument. * [f55e897] httpd.py (FileResource): Use Path, Uri objects as arguments. * [f805b66] httpd.py (FileResource): Set 'defaultType' per constructor. * [515f762] config.py (Route): Make 'uris' class var "never-none" (but empty dict). * [81ba6d4] httpd.py (HttpD.__init__): Actually loop over ROUTES to add routes (simplifes code). * [a08d027] config.py (StaticUri): Get rid of the implicit prefix (in the end, it does make things more confusing). * [d3533fd] config.py (Uri): Merge StaticUri into Uri (we want to use options for both later). * [6d19b38] config.py (Uri): Just use std pyway for options (no need for extra options dict any more). * [32872ca] config.py: Fix repositories compat path. * [be1382b] config.py (Auth): Mv "auth" support code here from api.py (so it can be used anywhere). * [8c87101] views.py (context): Add pydoc. * [f4ed52a] views.py: Update class based views to simply override get(), not get_context_data(). * [bbb73cc] config.py (Uri): Add "auth" to options. * [875f65b] config.py (Auth): Add check() (does throw on unauthorized). * [604705a] httpd.py (FileResource): Add "auth" support. * [2cd86e1] config.py (Auth.auth_err): Allow special case (user=None, auth=NONE). * [a3601e2] base.html: Generate all uri links from all routes to menu. * [5b655d5] config.py (Uri): Update methods to naming scheme similar to Path (mark compat methods). * [d60ed69] views.py (API.dispatch): Update to auth.check(). * [0ffef65] config.py: Route 'log': Add (staff-protected) uris. * [903e86a] httpd.py (FileResource.getChild): Add better (but still secure) regex-does-not-match error page. * [8052af2] config.py: Route "log": Rm 'static_v10x' compat uri (this does not really work w/ twisted routes, and is not really needed). * [c1b33ac] config.py: "repositories" uris: Use 'static_v10x', not 'static-v10x' (keep it accessible in templates). * [a683fcf] django_settings.py: Strip down context_processors to django (2.2.20) defaults. * [46046e0] base.html: Rather use URIS (not ROUTES) for "site map". * [2a3d338] config.py: Fixup URIS and ROUTES ordering. * [d4efd1b] files.py: Mv EventsPath.uri_static to Routes.static_uri. * [b554904] views.py (RouteView): New view (will eventually do all views for configured ROUTES). * [0435398] views.py: Switch to RouteView for builds and events (obsoletes PlainView, EventsView). * [d02faa8] views.py: RouteView: Add general tpl "route.html" (already replaceing "builds.html" and "events.html"; but prefering specific still). * [f6bb222] views.py (RouteView): Add dirs && files (browsing). * [3fec99b] views.py: RouteView: Rename "items"->"entries" (avoids hickup when django resolves to dict.items()). * [56e5e44] config.py (Uri.getabs): Update all code to new abs_join, and remove. * [7dd494c] config.py (Uri.url): Update all code to new url_join, and remove. * [e3b8603] mini_buildd/index.html: "running" include: Update to "entries". * [f8dc4d6] config.py (Uri.get): Update all code to new join, and remove. * [80d09bb] files.py (Path.get): Update all code to new join, and remove. * [01530bd] mini_buildd/route.html: Don't use "tiny" (tidy error, not html 5 (?)). * [99e3c7a] config.py: Add "menu" Uri option, add "sitemap" and auto- produce menu. * [cabba91] mini_buildd/plain.html: Rm, no longer needed. * [98090cf] views.py (RouteView): Add ".log" to extension list (to show "plain", for log/*). * [fa7a78c] includes/mbd_events.html: Rm extra (non-script) css include (was only needed for snippet support). * [54eb265] includes/mbd_datatable.html: Auto-hide table while setting up (avoids "table flicker"). * [3f5971a] *.html: Set mbd_datatables inside the table tag (i.e., avoid "table-flicker" w/o breaking non-javascript browsers). * [258618e] config.py: Minor menu re-order. * [31ded8b] views.py: "chroots": Update to generic "route.html". * [8a61f53] views.py: "repositories": Update to generic "route.html". * [4adf0a8] views.py: "remotes": Update to generic "route.html". * [1f96d77] urls.py: Fix: Special routes must come 1st. * [3a7204d] views.py: "crontab": Update to generic "route.html". * [c38b87c] sitemap.html: Upgrade design from utterly unreadable to ugly. * [d24e8d8] config.py: repositoreis, chroot, remotes, crontab: Update to dir-based uri. * [b965c30] devel (tidy): Mute TAG_NOT_ALLOWED_IN: Cries about "