Coder Social home page Coder Social logo

Comments (2)

olofk avatar olofk commented on July 2, 2024

I have several answers to this :)

  1. 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.
  2. 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!)
  3. 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.
  4. Adding a "do not export" flag might still be an option, but I need to think of the implications of that.

from fusesoc.

nicorum avatar nicorum commented on July 2, 2024

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:

  1. 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.
  2. 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:

  1. always resolve the environment variables to only check if the path is relative or absolute (bad idea)
  2. never export files that contain an environment variable
  3. 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.