-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Place url-scm download files in .bob-download #606
base: master
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #606 +/- ##
=======================================
Coverage 88.86% 88.86%
=======================================
Files 48 48
Lines 15474 15551 +77
=======================================
+ Hits 13751 13820 +69
- Misses 1723 1731 +8 ☔ View full report in Codecov by Sentry. |
e1ec2c1
to
bd6d56c
Compare
Uhh, changing the I would propose to have the downloaded file not in a magic hidden directory but instead completely outside of |
I also thought about this. The main reason for placing it inside was the attic logic for workspaces. I'm unsure how to thread the download-folder files if the recipe changes. Simply delete it? Or do we need some attic logic there as well? |
Good point. Indeed, this will require some extra logic to keep the
I think we can simply delete it. The "downloads" directory probably needs to have the same structure as the "workspace". This is required anyway because there might be multiple url SCMs in the same workspace. I guess adding a |
bd6d56c
to
81a55e9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Just some minor nits...
pym/bob/scm/url.py
Outdated
if self.__separateDownload: | ||
downloadDestination = os.path.abspath(os.path.join(workspace, "..", "download", self.__dir)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the os.path.abspath
really necessary? If true, then I would appreciate a comment why. It's somewhat unexpected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the reason for abspath
was, that os.path.exists
has some trouble if the path contains ..
:
>>> import os
>>> os.path.exists('foo/bar/../..')
False
however I think using os.path.normpath
instead of abspath
is the cleaner solution?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the trouble comes from the fact that it fails if some of the path elements does not exist. Like for example if the user removed workspace
from dev/[...]/1/workspace/../download
then the path really does not exist. So I think you're right, os.path.normpath
is more appropriate. Still, I would appreciate a comment because it's not obvious. 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sounds like a good explanation :) I looked into the documentation but couldn't find anything for os.path.exists
. But I found a note for os.makedirs
saying it's also confused by ..
. So I added normalize
there as well. And a comment ;)
d8004cb
to
3c2f057
Compare
Separate the downloaded files from the extracted files by downloading them into a `download` directory next to the workspace. Also the canary is generated there. The Gzip and XZ-Extractor always extract the files into the directory of the compressed file. Therefor the compressed files is copied into the workspace-directory first. By removing `-k`the compressed files are no longer kept. To trigger a attic move of old workspaces a version information is added to the url-scm spec.
Delete the download directory if the scm-workspace is moved to attic.
3c2f057
to
c619d27
Compare
Separate the compressed input files from the extracted files in the workspace in preparation of bundling the sources.