Comments (2)
I have several answers to this :)
- Depending on other files in the same directory is a bit of a problem for reproducible builds, which is why everything is copied to a clean build tree by default.
- If you switch over to the new Flow API, you will have built-in caching, which will only update files that have actually changed. Not all tools are yet available with the new API though (help wanted!)
- There is actually a hack that might help you. Any file that is specified using an absolute path name will not be copied. This is typically intended for things like simulation files that lives in your EDA tool's installation directory, but can be (ab)used for data files as well. It has the drawback that they will need to be in a fixed location though.
- Adding a "do not export" flag might still be an option, but I need to think of the implications of that.
from fusesoc.
Since I'm using an external IP, I can't change this behavior.
As this IP is installed at an absolute path solution three seems reasonable for my problem.
But that leads me to another problem with environment variables:
The IP's installation directory is defined by an environment variable.
Without the --resolve-env-vars-early argument, fusesoc cannot know if a path starting with $PATHTOIP is relative or absolute. This leads to two problems:
- The export function in the core.py currently tries to copy the files, which is impossible without resolving the environment variables. Leading into an RuntimeError. This should also apply when $PATHTOIP is an relative path.
- The "rel_root" gets prepended to $PATHTOIP while creating the EDAM file. Prepending a relative path to an absolute path breaks the path. The
os.path.join
function normally prevents this, but this is not possible when the absolute path is masked behind an environment variable.
A simple workaround would be to use the --resolve-env-vars-early argument, but I don't like the idea to be forced to use this argument.
I currently see multiple possible solutions:
- always resolve the environment variables to only check if the path is relative or absolute (bad idea)
- never export files that contain an environment variable
- add an flag or something similar to mark the path as absolute
But all this solution have their downsides.
I think this whole topic is somewhat related to the discussion in issue #641.
from fusesoc.
Related Issues (20)
- Builtin fusesoc parsing cores tree command HOT 1
- Feature request: ability to control arguments to Generators HOT 2
- Modelsim with Cocotb [new flow] HOT 2
- Question: Different cores from the same provider HOT 1
- Question: `env` section problem. HOT 3
- Invalid choice: 'migrate-capi1-to-capi2' HOT 1
- Setting vivado parameters using core file HOT 1
- Generator instance that depends on other cores HOT 8
- Bugs of flags only with numeric
- Librarys from git
- fusesoc is not working for tool=QuestaSim in Linux RedHat. HOT 2
- Reseting cache HOT 2
- script order with conditional statements
- Using multiple revisions of the same library in a project
- Is there any way to pass a *value* to an `Edatool`'s`tool_options` attribute via the command line HOT 2
- Fusesoc yosys target creates fusesoc error and a partially complete Makefile
- Variables in script arguments HOT 1
- Dependencies and target-specific files HOT 1
- provide schema as json
- What is the file_type for SDF file
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 fusesoc.