Comments (2)
I think I'm seeing a similar issue in my own project right now. It seems to be pulling in and adding all the subdependencies as dependencies.
For example, I was using PathKit, which uses Spectre to do testing. After running a couple of times I start getting complaints about XCTest not being available (which Spectre uses). Spectre has nothing to do with PathKit other than during tests though.
Hoping to investigate this more myself too. I suspect it is related to the way pinned packages work, but can not yet confirm that. Marathon attempts to avoid duplicate dependencies from different scripts, but I wonder if something in either the Swift language or Marathon has changed recently that is causing this.
from marathon.
Okay, I can confirm the problem is consistent with mine and provide some more info now. It's all about what's going on in the cache. I'll try to keep it short and to the point:
- Marathon caches a bunch of data inside of
~/.marathon
. - Marathon creates a "master" at
~/.marathon/Packages/Generated/Package.swift
file that it uses as the template for generating thePackage.swift
file of each respective script which live at locations using this pattern:~/.marathon/-Users-name-and-path-to-script-slug-script-name/Package.swift
- After updating twice, all dependencies and their children get listed in the
Generated/Package.swift
which is used as a template.
See evidence below. I used your terminal.swift code in the example for consistency.
~/.marathon/Packages/Generated/Package.swift
after initial install of terminal.swift
~/.marathon/...terminal/Package.swift
after initial install
~/.marathon/Packages/Generated/Package.swift
after marathon update
~/.marathon/...terminal/Package.swift
after update/run
If you have multiple scripts with dependencies, their dependencies likely start to intermingle also, and all future compilations fail. It also could increase the compilation time of very basic scripts.
Seems to me that the template Package.swift pattern probably needs revising. I'm currently investigating support for multiple dependencies from the same Package, which has been surfacing this problem too. See #191
from marathon.
Related Issues (20)
- Build into executable HOT 1
- 'make uninstall' doesn't work
- Support Swift 4.2 HOT 4
- `marathon add RecativeSwift` fails because there's no official v4 release yet HOT 1
- Script Manager Allow Remote
- "illegal hardware instruction" error message when try to edit a script
- Marathon + CLI - any ideas? HOT 1
- Swift 4.2 PM Support HOT 1
- Add package which name contains dot will break most things
- Marathon script uses all available memory HOT 3
- Marathon only works with dependencies named the same as the Package HOT 3
- Command Line user input HOT 1
- Execution time on VM, Logging level HOT 2
- Unable to use when installing with Mint HOT 2
- URLSession dataTask does not get called HOT 1
- Unable to install using Xcode 10.2 and macOS 10.14.4 HOT 6
- Marathon install fails to find module on Linux HOT 2
- Running Marathon on macOS Catalina does not work HOT 5
- ⚠️ Heads-up: Deprecation HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from marathon.