Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Simplify build dependency management #356

Open
cmc333333 opened this issue Feb 11, 2017 · 0 comments
Open

Simplify build dependency management #356

cmc333333 opened this issue Feb 11, 2017 · 0 comments

Comments

@cmc333333
Copy link
Member

History

Originally, we had a single entry point to run the parser, and every action took place in memory. We then added a file-based caching system to speed this up, followed by splitting the steps into separate commands and preferring editable (and readable) files for intermediate output. This led to a rather complicated solution whereby output files formed a directed graph and downstream files would be invalidated when edits were made to upstream ones (similar to make), using the dagger and later, networkx libraries. Following that, we wanted to allow the parser to run on a web host, so we began to incorporate components of Django, including replacing the file-system-based intermediate output with database-backed versions.

Problem

The current solution combines many of the worst aspects of the steps that came before. Notably, understanding dependencies is very hard due to the layers of indirection. We've also lost the ability to easily inspect (and modify) intermediate output.

Solution

  • Given that we can now rely on a database, implement dependencies with foreign keys (note that this will require activating foreign keys in sqlite). This removes the need for networkx altogether.
  • Write a "view" command to inspect the intermediate output from the database.
  • Create different database models for the different types of intermediate data. This will be significantly easier to understand than the current, file-system-like "path" identifiers.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant