Skip to content

Commit

Permalink
Merge branch 'release/2.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
djha-skin committed Nov 1, 2019
2 parents d18b913 + fbbb709 commit f4aabcd
Show file tree
Hide file tree
Showing 34 changed files with 1,209 additions and 1,553 deletions.
44 changes: 42 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
- checkout
- run: cp -af /tmp/workspace/target ./
- run:
name: "Package debian for CentOS 7"
name: "Package rpm for CentOS 7"
command: buildutils/package rpm
no_output_timeout: 30m
- run: mv target/package target/package_c7
Expand All @@ -104,6 +104,28 @@ jobs:
path: target/package_c7/
destination: package_c7/

package_centos8:
docker:
- image: djhaskin987/graal-lein-fpm:centos8
version: 2
steps:
- attach_workspace:
at: /tmp/workspace
- checkout
- run: cp -af /tmp/workspace/target ./
- run:
name: "Package rpm for CentOS 8"
command: buildutils/package rpm
no_output_timeout: 30m
- run: mv target/package target/package_c8
- persist_to_workspace:
root: .
paths:
- target/package_c8/*.rpm
- store_artifacts:
path: target/package_c8/
destination: package_c8/

test_ubuntu16_package:
docker:
- image: djhaskin987/test-ubuntu-installer:ubuntu16
Expand All @@ -130,7 +152,7 @@ jobs:

test_centos7_package:
docker:
- image: bzohdy/centos-sudo:latest
- image: djhaskin987/test-centos-installers:centos7
version: 2
steps:
- attach_workspace:
Expand All @@ -140,6 +162,18 @@ jobs:
- run: mv target/package_c7 target/package
- run: buildutils/test-install-package-centos

test_centos8_package:
docker:
- image: djhaskin987/test-centos-installers:centos8
version: 2
steps:
- attach_workspace:
at: /tmp/workspace
- checkout
- run: cp -af /tmp/workspace/target ./
- run: mv target/package_c8 target/package
- run: buildutils/test-install-package-centos

workflows:
version: 2
build_and_test:
Expand All @@ -155,6 +189,9 @@ workflows:
- package_centos7:
requires:
- lein_tests
- package_centos8:
requires:
- lein_tests
- test_ubuntu16_package:
requires:
- package_ubuntu16
Expand All @@ -164,3 +201,6 @@ workflows:
- test_centos7_package:
requires:
- package_centos7
- test_centos8_package:
requires:
- package_centos8
10 changes: 6 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/target
.cpcache
/pkg/
/presentation/target/
/presentation/auto/
Expand All @@ -19,13 +20,14 @@
/test-data/
/test/resources/data/grill/
/test/resources/data/meta/
/test/resources/data/test-index-sort-order/
/test/resources/data/test-json-config/
/test/resources/data/test-list-strat/
/test/resources/data/test-option-packs/
/test/resources/data/test-query-output-format/
/test/resources/data/test-search-strat/
/test/resources/data/test-version-comparison/
/test/resources/test-data/
/test/resources/data/test-option-packs/
/test/resources/data/test-json-config/
/test/resources/data/test-query-output-format/
/test/resources/data/test-list-strat/
/buildutils/boot
/degasolv-*-standalone
/*.dscard
Expand Down
3 changes: 0 additions & 3 deletions TODO

This file was deleted.

6 changes: 6 additions & 0 deletions bisect.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/sh

set -ex
rm -rf target/
lein uberjar
test/resources/scripts/test-list-strat
368 changes: 0 additions & 368 deletions docs/3rd-party-licenses.rst

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions docs/architecture.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
.. _Code of Conduct:

Architecture
============

This article describes the overarching architecture of Degasolv, together with
some explanation about some of the design decisions.

Background
----------

At one of my previous jobs, I was a Build Engineer -- a person who built the
code that the developers wrote and made it available. I had *lots* of
dependency problems coming at me from all different sides:

* One module in language A depending on another from language B
* Developers working with a language (at the time) with no clear package
manager ecosystem (**cough** C++ **cough**)
* Package manager developers breaking builds with backwards-incompatible
behavior
* A dependency graph that looked like a dream catcher

So I decided to build a tool that would do these things:

* Resolve dependencies the right way, safely
* Even resolve dependency chains for different package systems (apt, pip,
java)
* Be super versatile and generic, able to be plugged into an arbitrary build
script

Core Resolver
-------------

At the core of Degasolv is a monster method called `resolve-dependencies`_. It
is a rather large method with a backtracking SAT-solver-ish design. Originally
it was written to have a :ref:`conflict-strat<conflict-strat>` of ``exclusive``
and a :ref:`resolve-strat<resolve-strat>` of ``thorough`` hard-coded. In other
words, the "first class" original use case of Degasolv was a SAT-solver-class
depedency resolver that only allowed a single version of any dependency, and
ensured that all parties depending on that dependency had a chance to agree on
what was chosen. These options were later added to allow Degasolv to act more
like maven and give any Building Engineer using Degasolv useful "handbreaks" to
change how resolution was being done in-house so that it could be modified to
conform to business needs. Other options, such as `list-strat<list-strat>` and
`search-strat<search-strat>` were added as time progressed as well for similar
reasons, and also, frankly, to fix bugs (behaviors that were never originally
intended).

.. _resolve-dependencies: https://github.com/djhaskin987/degasolv/blob/develop/src/degasolv/resolver_core.clj#L519
53 changes: 48 additions & 5 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,48 @@ and this project adheres to `Semantic Versioning`_.
Added
+++++

- Added "version suggestion", a performance enhancement allowing for minimum
version selection

- Added the ``:index-sort-order`` option to ``generate-repo-index``,
allowing users to specify ``ascending`` or ``descending``. Previously
only ``descending`` was supported. With this new option,
users will be able to use Degasolv in a minimum version selection
configuration.

- If the reason for failure in the ``resolve-dependencies`` function
is ``:present-package-conflict``, add a key ``:package-present-by`` with
value as either ``:found`` meaning the package was in conflict with a package
found during resolution, or with value as ``:given`` meaning the package
was in conflict with a package given via the parameter ``present-packages``.

Changed
+++++++

- Removed the deprecated functions ``->requirement``, ``->package``, and
``->version-predicate`` from usage in the code base.

- Removed ``dbg2`` macro in favor of keeping ``dbg``

Fixed
+++++

- Standardized capitalization of the word "Degasolv" to be title case for
consistency in the documentation unless it is in a code snippet.

- Fix #16

- Fix spec for package id's. This should have the effect of enforcing that
names should not have ``>``, ``<``, ``!``, ``=``, ``,``, ``;``, or ``|``
characters in them. This simply has the effect of changing the error message,
as this was never allowed but handled poorly.

`2.0.0`_
--------

Added
+++++

- Documentation saying what return codes are given and what they mean.

- For #15, added ability to specify output format for ``display-config``.
Expand All @@ -41,7 +83,7 @@ Changed
<list-strategy>` set to ``lazy``, a much saner default.

- Option pack ``v1`` :ref:`added <option-pack>` to help administrators
keep compatibility with version 1 of degasolv if required.
keep compatibility with version 1 of Degasolv if required.

- Default for the ``--version-comparison`` option when ``--package-system``
is ``degasolv`` set to ``semver`` for
Expand Down Expand Up @@ -69,7 +111,7 @@ Fixed
- Fixed #9, "Heading for 'Specifying Subproc Executable' is wrong in docs"

- Fixed #10, "How do you specify requirements of a package (deps) in the output
of a subproc to degasolv?"
of a subproc to Degasolv?"

`1.12.1`_
---------
Expand Down Expand Up @@ -249,7 +291,7 @@ Added
Fixed
+++++

- While using the apt data and package system to profile degasolv, I
- While using the apt data and package system to profile Degasolv, I
found some rather nasty bugs. This release fixes them. This tool is
now ready for prime time.

Expand All @@ -271,7 +313,7 @@ Added
- Added the ``--present-package`` :ref:`option <present-package>` and
the ``--package-system`` :ref:`option <package-system>` to the
:ref:`resolve-locations <resolve-locations>` subcommand. This was so
that degasolv could be profiled using apt package repos
that Degasolv could be profiled using apt package repos
(real-world data) and thereby have its performance optimized.

`1.3.0`_
Expand Down Expand Up @@ -308,7 +350,8 @@ Added

- This isn't the first release, but for the purposes of these docs, it is :D

.. _Unreleased: https://github.com/djhaskin987/degasolv/compare/1.12.1...HEAD
.. _Unreleased: https://github.com/djhaskin987/degasolv/compare/2.0.0...HEAD
.. _2.0.0: https://github.com/djhaskin987/degasolv/compare/1.12.1...2.0.0
.. _1.12.1: https://github.com/djhaskin987/degasolv/compare/1.12.0...1.12.1
.. _1.12.0: https://github.com/djhaskin987/degasolv/compare/1.11.0...1.12.0
.. _1.11.0: https://github.com/djhaskin987/degasolv/compare/1.10.0...1.11.0
Expand Down
Loading

0 comments on commit f4aabcd

Please sign in to comment.