Open mithro opened 2 years ago
@mithro : Driver error? "-local" simply changes all of the references in the files to point to the indicated path. The files are still installed in "target". The "local" option is meant to handle what I do on the efabless platform, which is to set "target" to the git repo that holds the PDK, which is something like ~/gits/skywater-pdk, and set "local" to the /ef/ tree location /ef/tech/SW.2/. Then when I push the git repo, there's a server that distributes it to all the hosts, where it gets installed in /ef/tech/SW.2/. So all the path references need to be set to the final install location, not the target. Possibly you have "local" and "target" reversed?
I'm not calling ../common/staging_install.py
directly, so it seems like an issue in your ./configure
and Makefile
?
The line ./configure --enable-sky130-pdk=/host/skywater-pdk --enable-alpha-sky130 --enable-xschem-sky130 --prefix=/usr/local
should mean I'm generating output which will eventually be installed under /usr/local
The line make DESTDIR=/host/out/pdk install
is suppose to put the files under the directory /host/output/pdk
in a form they can eventually be installed under /usr/local
through a packaging system or similar.
This is described in https://github.com/RTimothyEdwards/open_pdks/pull/127
Also, according to the documentation at the top of staging_install.py
,
-target
should be final resting place of the PDK-local
should be the actual file system location where the files get written too. -target <path> Final install path in system file system.
Normally, '$(prefix)/pdks/<unique pdk name>'.
If -local is not given, this will be the top level
directory location the files are installed too.
-local <path> Actual file system location to write the files too.
The result can then be packaged and distributed.
For usage with things like package managers and other
administrator installation tooling. The resulting
files still need to be installed at '-target' on the
final system.
Think 'DESTDIR', see
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
@mithro : Driver error? "-local" simply changes all of the references in the files to point to the indicated path. The files are still installed in "target". The "local" option is meant to handle what I do on the efabless platform, which is to set "target" to the git repo that holds the PDK, which is something like ~/gits/skywater-pdk, and set "local" to the /ef/ tree location /ef/tech/SW.2/. Then when I push the git repo, there's a server that distributes it to all the hosts, where it gets installed in /ef/tech/SW.2/. So all the path references need to be set to the final install location, not the target. Possibly you have "local" and "target" reversed?
What you are doing in the text described above is pretty similar to what I'm trying to do.
What you describe would be done with ./configure --prefix=/ef/tech/SW.2/
(the final "on system" destination is /ef/tech/SW.2
) and make DESTDIR=~/gits/skywater-pdk install
(the location to write the files for future distribution to systems is ~/gits/skywater-pdk
).
@mithro: All the stuff in the Makefile related to DESTDIR is the stuff that you put there.
How are you currently getting your "efabless behaviour"?
Mostly "efabless behavior" just swaps the library and file-type directories (e.g., "sky130_fd_sc_hd/lef" vs. "lef/sky130_fd_sc_hd"), adds an extra directory "current" after "libs.tech/magic", and a few other idiosyncrasies that keep backwards compatibility with the scripts and file system on the efabless platform.
I meant how are you doing the efabless install procedure?
I was able to get it to work by doing make DESTDIR=/ef/tech/SW.2 SHARED_PDKS_PATH=/home/tim/gits/ef-skywater-sky130 install
That installs the PDK into my own local git repo where I can then push it to trigger the system update, but all the references in the files point to the final destination in the /ef/tech/ path.
To fix this, do you want me to modify the python script of the Makefiles?
Whichever one makes the most sense. My impression was that DESTDIR and SHARED_PDKS_PATH should be swapped, which would indicate that the solution should be in the Makefile or configure script. As long as the default behavior is to install in /usr/local/share/pdk and there is some way to specify the install so that it works the way I need it to on the efabless platform, I'm okay with it.
I believe I have a fix in #175.
I see #175 has been merged. Can we close this?
Seems like
-local
argument to../common/staging_install.py
doesn't work.