From ce8b42ed14953fa279c443d9075f51f31d4db7ab Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Feb 19 2017 02:29:34 +0000 Subject: Update links in CHANGELOG to point to PyPI Signed-off-by: Adam Williamson --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 48c4c77..31820bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### 2.1.10 - 2016-12-16 -* [wikitcms-2.1.10.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.10.tar.xz) +* [wikitcms-2.1.10.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.10.tar.gz) 1. Drop the page edit captcha solving code entirely, it's useless since MW 1.18 2. Drop downstream addition of `end` arg for `TcmsPageList` again (merged upstream in 0.8.2) @@ -10,7 +10,7 @@ ### 2.1.9 - 2016-12-16 -* [wikitcms-2.1.9.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.9.tar.xz) +* [wikitcms-2.1.9.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.9.tar.gz) This update addresses a security issue with potentially serious consequences but very limited scope. The issue could have been exploited by a malicious wiki @@ -22,59 +22,59 @@ wikitcms. It was not vulnerable to attack by anyone besides a wiki admin. ### 2.1.8 - 2016-12-08 -* [wikitcms-2.1.8.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.8.tar.xz) +* [wikitcms-2.1.8.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.8.tar.gz) 1. Update some fedfind usage (don't use `get_release_cid` any more) 2. Don't bother trying to find events for FedoraRespin, Fedora-Atomic etc. composes ### 2.1.7 - 2016-11-09 -* [wikitcms-2.1.7.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.7.tar.xz) +* [wikitcms-2.1.7.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.7.tar.gz) 1. Convert 'Final' to 'RC' when release is > 24 in `Wiki.get_validation_{event,page}` ### 2.1.6 - 2016-04-20 -* [wikitcms-2.1.6.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.6.tar.xz) +* [wikitcms-2.1.6.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.6.tar.gz) 1. **NEW** `Listing.TcmsPageList`: re-add `end` support 2. **NEW** `Wiki.alltestdays`, `Wiki.allresults`: re-add `end` support ### 2.1.5 - 2016-04-08 -* [wikitcms-2.1.5.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.5.tar.xz) +* [wikitcms-2.1.5.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.5.tar.gz) 1. `ValidationPage.find_resultrow`: handle rows that differ only by environment ### 2.1.4 - 2016-03-23 -* [wikitcms-2.1.4.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.4.tar.xz) +* [wikitcms-2.1.4.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.4.tar.gz) 1. Drop ability to pass `cid` to `ValidationEvent.create` (and `DownloadPage.__init__`) 2. Enable running tests from `setup.py` ### 2.1.3 - 2016-03-17 -* [wikitcms-2.1.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.3.tar.xz) +* [wikitcms-2.1.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.3.tar.gz) 1. Adjust `DownloadPage` download table generation to use `subvariant` rather than `payload` ### 2.1.2 - 2016-03-16 -* [wikitcms-2.1.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.2.tar.xz) +* [wikitcms-2.1.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.2.tar.gz) 1. Turn some `Event` instance attributes into properties to avoid unnecessary remote trips ### 2.1.1 - 2016-03-16 -* [wikitcms-2.1.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.1.tar.xz) +* [wikitcms-2.1.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.1.tar.gz) 1. Fix `creation_date` for `NightlyEvent`s that do not yet exist 2. Improve `triplet_sort` for new-style composes ### 2.1.0 - 2016-03-16 -* [wikitcms-2.1.0.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.1.0.tar.xz) +* [wikitcms-2.1.0.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.1.0.tar.gz) 1. **MAJOR**: not technically an API change, but pages now have more Pungi 4-like names with respin values 2. **API**: `Wiki.get_validation_event_url` (added in 2.0.0) is dropped again @@ -88,19 +88,19 @@ wikitcms. It was not vulnerable to attack by anyone besides a wiki admin. ### 2.0.2 - 2016-03-04 -* [wikitcms-2.0.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.0.2.tar.xz) +* [wikitcms-2.0.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.0.2.tar.gz) 1. Add missing 2.0.1 changelog ### 2.0.1 - 2016-03-04 -* [wikitcms-2.0.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.0.1.tar.xz) +* [wikitcms-2.0.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.0.1.tar.gz) 1. Move credential reading to helpers, add `/etc/fedora/credentials` as a system wide credentials file ### 2.0.0 - 2016-03-03 -* [wikitcms-2.0.0.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-2.0.0.tar.xz) +* [wikitcms-2.0.0.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-2.0.0.tar.gz) This is a major release of python-wikitcms. The most significant change is support for Python 3. To simplify this, and to match mwclient behaviour, python-wikitcms is now intended to always produce unicode strings even under Python 2. I recommend you do the same with any code that uses python-wikitcms: `from __future__ import unicode_literals`. Passing non-unicode literals to python-wikitcms constructors may possibly result in unicode decode errors in Python 2. Python 3 support requires python-mwclient 0.8.1 or higher. @@ -124,7 +124,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.13.3 - 2015-12-24 -* [wikitcms-1.13.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.13.3.tar.xz) +* [wikitcms-1.13.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.13.3.tar.gz) 1. Fix handling of similarly named resultrows like 'QA:Testcase_foo' and 'QA:Testcase_foo_bar' 2. Update and reorganize documentation @@ -132,19 +132,19 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.13.2 - 2015-10-27 -* [wikitcms-1.13.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.13.2.tar.xz) +* [wikitcms-1.13.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.13.2.tar.gz) 1. Fix a bug causing triplet_sort to crash in certain cases ### 1.13.1 - 2015-10-26 -* [wikitcms-1.13.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.13.1.tar.xz) +* [wikitcms-1.13.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.13.1.tar.gz) 1. Fix RC1 sorting as older than TC10 in sort functions ### 1.13 - 2015-10-20 -* [wikitcms-1.13.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.13.tar.xz) +* [wikitcms-1.13.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.13.tar.gz) 1. Add tests for sorting and find_bugs() functions 2. Fix a bug in triplet_unsort() where it would replace bits of dates with strings @@ -153,19 +153,19 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.12.3 - 2015-09-20 -* [wikitcms-1.12.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.12.3.tar.xz) +* [wikitcms-1.12.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.12.3.tar.gz) 1. Have image download table get image description from fedfind instead of producing it here ### 1.12.2 - 2015-09-17 -* [wikitcms-1.12.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.12.2.tar.xz) +* [wikitcms-1.12.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.12.2.tar.gz) 1. Refine image download table to use imagesubtype as well as imagetype ### 1.12.1 - 2015-08-29 -* [wikitcms-1.12.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.12.1.tar.xz) +* [wikitcms-1.12.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.12.1.tar.gz) 1. **API** (addition) Add an improved release sort helper, triplet_sort 2. **API** (addition) Add 'unsort' functions - fedora_release_unsort and triplet_unsort @@ -174,7 +174,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.12 - 2015-06-30 -* [wikitcms-1.12.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.12.tar.xz) +* [wikitcms-1.12.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.12.tar.gz) 1. **API**: `listing.TcmsCategory` renamed to `listing.ValidationCategory` (it's unlikely anyone was using this directly) 2. Added `listing.TestDayCategory` for Test Day category pages @@ -186,31 +186,31 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.11.4 - 2015-04-21 -* [wikitcms-1.11.4.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.11.4.tar.xz) +* [wikitcms-1.11.4.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.11.4.tar.gz) 1. Add support for new Wikitcms 'bot' feature to mark results from automated test systems: `bot` element added to the tuple used by `wiki.report_validation_results()`, `bot` argument added to `result.Result.__init__()` and `result.find_results()`. No BC break, but older python-wikitcms versions will not correctly parse `{{result` templates that use the bot parameter. ### 1.11.3 - 2015-04-17 -* [wikitcms-1.11.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.11.3.tar.xz) +* [wikitcms-1.11.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.11.3.tar.gz) 1. use system `cached_property`, not fedfind bundled one - fedfind's bundled copy was removed ### 1.11.2 - 2015-03-26 -* [wikitcms-1.11.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.11.2.tar.xz) +* [wikitcms-1.11.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.11.2.tar.gz) 1. bugfix: fix ResultRow() equivalence check - it was too strict, which broke reporting multiple results to one row in a single `report_validation_results()` / `add_results()` operation ### 1.11.1 - 2015-03-25 -* [wikitcms-1.11.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.11.1.tar.xz) +* [wikitcms-1.11.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.11.1.tar.gz) 1. python-wikitcms: handle `milestone=False` and `milestone=None` properly in `get_validation_page()` / `get_validation_event()` - this makes `relval size-check` work without explicitly setting the compose to check (as it's supposed to) ### 1.11 - 2015-03-25 -* [wikitcms-1.11.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.11.tar.xz) +* [wikitcms-1.11.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.11.tar.gz) 1. substantial enhancements to result reporting; new `ValidationPage.add_results()` and `Wiki.report_validation_results()` methods allow reporting multiple results in a single operation (with only one wiki edit operation per page), `report_validation_results()` accepts simple tuples and handles instantiation of `ValidationPage`, `ResultRow` and `Result` objects (no API incompatibility, `ValidationPage.add_result()` remains available) 2. implement equivalence check for `ResultRow` instances @@ -220,19 +220,19 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.10.2 - 2015-02-18 -* [wikitcms-1.10.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.10.2.tar.xz) +* [wikitcms-1.10.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.10.2.tar.gz) 1. Make the page object generator handle Branched nightly pages correctly (return a `NightlyPage` not a `ComposePage`) ### 1.10.1 - 2015-02-18 -* [wikitcms-1.10.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.10.1.tar.xz) +* [wikitcms-1.10.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.10.1.tar.gz) 1. Restore a refinement to the Rawhide/Branched logic which was lost in the transfer from `relval report-results` to `Wiki.get_validation_event()` ### 1.10 - 2015-02-18 -* [wikitcms-1.10.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.10.tar.xz) +* [wikitcms-1.10.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.10.tar.gz) 1. Adjustments for the attempt to consolidate versioning across fedfind, python-wikitcms and relval using `release`, `milestone`, `compose` attributes to identify all images/events 2. add `Wiki.get_validation_event()` and `Wiki.get_validation_page()` methods which consolidate heuristics for guessing at the desired event/page previously spread across different relval sub-commands and openqa_fedora_tools @@ -240,7 +240,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.9 - 2015-02-12 -* [wikitcms-1.9.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.9.tar.xz) +* [wikitcms-1.9.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.9.tar.gz) 1. add `Wiki.current_event property` (returns 'current' `ValidationEvent` object) 2. use abstract base classes to enforce class inheritance in event.py @@ -252,20 +252,20 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.8.4 - 2015-01-07 -* [wikitcms-1.8.4.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.8.4.tar.xz) +* [wikitcms-1.8.4.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.8.4.tar.gz) 1. Fix a bug in page writing (broke any page write which didn't use wikitcms' oldtext/newtext comparison, which is most of them) ### 1.8.3 - 2015-01-02 -* [wikitcms-1.8.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.8.3.tar.xz) +* [wikitcms-1.8.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.8.3.tar.gz) 1. Fix result row test case / name detection for cells like `[[QA:Testcase_foo|QA:Testcase_bar]]` (use foo as testcase and bar as name, instead of bar as both) 2. Note in README that wikitcms data retrieved from wiki should be treated as untrusted input ### 1.8 - 2014-12-22 -* [wikitcms-1.8.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.8.tar.xz) +* [wikitcms-1.8.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.8.tar.gz) 1. **API** `matrices` and `testtypes` properties moved from the Event class to the Wiki class, as they are really properties of the wiki, not of a specific event 2. **API** (minor) `has_bootiso` property moved from NightlyEvent to ValidationEvent as it's valid and potentially useful for all validation events, not just nightlies (should not affect consumers as ValidationEvent is the parent class) @@ -274,7 +274,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.7 - 2014-12-19 -* [wikitcms-1.7.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.7.tar.xz) +* [wikitcms-1.7.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.7.tar.gz) 1. **API** major design overhaul, wikitcms now acts as an extension to mwclient. Too many API changes to list, mainly to Page and Event classes 2. improvements to page name regexes, now handles more unusual older release page names and F21 monthly pages @@ -282,7 +282,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.6.1 - 2014-12-16 -* [wikitcms-1.6.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.6.1.tar.xz) +* [wikitcms-1.6.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.6.1.tar.gz) 1. revert change to `category_walk()` method used when finding result pages, it caused duplicates to show up sometimes 2. have `ValidationPage.get_resultrows()` strip comments from result text like `results_wikitext` does @@ -290,40 +290,40 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.6 - 2014-12-16 -* [wikitcms-1.6.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.6.tar.xz) +* [wikitcms-1.6.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.6.tar.gz) 1. **API** Revise nightly compose handling: changes to required arguments for `page.ComposePage` and `event.ComposeEvent`, `from_wikipage` method moves from `page.ComposePage` to new `page.ValidationPage`, introduction of `page.NightlyPage`, `page.ValidationPage` (parent to `ComposePage` and `NightlyPage`), `event.NightlyEvent` and `event.ValidationEvent` (parent to `ComposeEvent` and `NightlyEvent`). New class methods `page.ComposePage.compose_from_wikipage` and `page.NightlyPage.nightly_from_wikipage`. This is a cleaner and more robust approach, and will scale to other types of compose if necessary 2. `ValidationPage` from_wikipage methods now check if wikipage exists (returning None if not) before doing anything else ### 1.5 - 2014-12-08 -* [wikitcms-1.5.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.5.tar.xz) +* [wikitcms-1.5.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.5.tar.gz) 1. Support for nightly build testing ### 1.4.1 - 2014-10-31 -* [wikitcms-1.4.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.4.1.tar.xz) +* [wikitcms-1.4.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.4.1.tar.gz) 1. wikitcms now requires python-mwclient 0.7 (result reporting messes up result pages with 0.6.5) 2. Fix URL in bug report links in testcase-stats detail pages ### 1.4 - 2014-10-25 -* [wikitcms-1.4.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.4.tar.xz) +* [wikitcms-1.4.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.4.tar.gz) 1. Refactored result parsing to be less tied to wiki text parsing and more extensible 2. Small improvements to display of things like section names and environments in relval (produced by better parsing in wikitcms) ### 1.3.1 - 2014-10-24 -* [wikitcms-1.3.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.3.1.tar.xz) +* [wikitcms-1.3.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.3.1.tar.gz) 1. Add a string representation of Result objects (relval report-results uses this to display existing results) ### 1.3 - 2014-10-21 -* [wikitcms-1.3.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.3.tar.xz) +* [wikitcms-1.3.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.3.tar.gz) 1. Various tweaks in wikitcms to make result submission viable, including overhaul of section parsing / handling 2. helpers.next_compose() to find the likely candidates for the next compose after any given current one @@ -331,7 +331,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.2 - 2014-10-16 -* [wikitcms-1.2.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.2.tar.xz) +* [wikitcms-1.2.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.2.tar.gz) 1. fix walk_category() not to return duplicates 2. strip comment blocks from results wikitext @@ -339,7 +339,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.1 - 2014-10-14 -* [wikitcms-1.1.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.1.tar.xz) +* [wikitcms-1.1.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.1.tar.gz) 1. Parsing of existing test result pages in wikitcms 2. Added the 'Release' class to wikitcms, providing properties of releases @@ -348,7 +348,7 @@ There is also work to adjust to Fedora's new Pungi 4-based compose process. For ### 1.0 - 2014-10-06 -* [wikitcms-1.0.tar.xz](https://www.happyassassin.net/wikitcms/releases/wikitcms-1.0.tar.xz) +* [wikitcms-1.0.tar.gz](https://files.pythonhosted.org/packages/source/w/wikitcms/wikitcms-1.0.tar.gz) 1. Initial release 2. Supports writing individual result pages and summary pages, correctly handling category membership and category page content, and optionally updating Current redirect pages, for TC and RC builds