-
-
Notifications
You must be signed in to change notification settings - Fork 31
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
add '-Dusethreads' to perl build Configure #6
add '-Dusethreads' to perl build Configure #6
Conversation
The synchronization overhead of perl with threading support is minimal. Single-threaded perl programs will not see a significant performance penalty from being run on perl supporting threads (at most about 5%), however without threading support, multi-threaded programs cannot run. It would be a sane default to include ‘-Dusethreads’ in the perl build script, so any packages that depend on ‘perl’ will run, whether they are single- or multi-threaded. It may make sense to add a second feedstock for something like ‘perl-singlethreaded’ for those who need the absolute best efficiency for their single-threaded perl applications.
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
@@ -1,5 +1,5 @@ | |||
#!/bin/bash | |||
sh Configure -de -Dprefix=$PREFIX -Duserelocatableinc | |||
sh Configure -Dusethreads -Duserelocatableinc -Dprefix=$PREFIX -de |
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.
So I believe there was something special about how these needed to be ordered. See issue ( #4 ). If you could explain a bit why this order is better, that would be very helpful.
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.
Also please see PR ( #5 ) where I was trying to do the same thing.
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.
Yes, I placed -de
at the end for that reason (saw your pull request).
It looks like the build failed with errors such as this one:
Any ideas how to correct it? |
@tomkinsc no idea from my side :( |
@tomkinsc maybe the trick mentioned at the end of the error report helps?
|
Moreover, this |
If there are few Bioconda people interested in helping maintain Perl, that would be great. I think you guys use Perl more often than I or others do. So you probably have a better idea of how best to get it to work. |
@jakirkham we are here to help :) |
@tomkinsc I cancelled the previous builds so that the last one is faster :) |
@bgruening: Yes, the changes were needed since I had to update the CircleCI-related files, and Travis had a shared dependency. Thanks for cancelling the previous builds! :) |
Not sure about the AppVeyor failure. |
It seems that the appveyor config also needs some updates? Other feedstocks have a different config. |
So we have a webservice that re-renders a random subset of feedstocks daily. However, the number of feedstocks has really grown and that approach is proving itself insufficient for this scale. We have been discussing an asynchronous webservice that PRs re-renderings against feedstocks/PRs when they get updated. ( conda-forge/conda-forge-webservices#74 ) That should do a better job going forward. In the near term, I have put a fair bit of effort into just making |
@jakirkham I guess this is fair enough. We should just know that smithy is not taking care of it :) |
Also the Windows build didn't/doesn't actually build Perl. Instead it installed a pre-built binary of Perl. This is what @msarahan found to work at the time. Hence why it didn't/shouldn't have a Python matrix on AppVeyor. |
So |
Uh, sorry, I think the wires got crossed. What I mean is there is a Windows build, but it just copies StrawberryPerl over into the conda build prefix. We just don't need the typical |
I don't have time to address this, so I'm closing this PR; feel free to fork my branch. Setting up various tokens and "re-rendering" the automation infrastructure is a silly amount of overhead when I simply wanted to add a flag to the conda build script. |
Hi! This is the friendly automated conda-forge-linting service. I was trying to look for recipes to lint for you, but it appears we have a merge conflict. Please ping the 'conda-forge/core' team (using the @ notation in a comment) if you believe this is a bug. |
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Thanks for re-rendering the feedstock. I've merged the updated master into this branch. |
Of course, glad to help. It seems there are some subtle differences on some of the CI files. Could you please click the Allow edits from maintainers box and I can push a fix to clean those up directly to your PR? |
Done. |
Thanks. |
old_ld_library_path="$LD_LIBRARY_PATH" | ||
fi | ||
|
||
export LD_LIBRARY_PATH=$(pwd) |
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.
Could you please explain why this change was needed?
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.
Suggested by prior perl test failures.
export LD_LIBRARY_PATH=$(pwd) | ||
|
||
# world-writable files are not allowed | ||
chmod -R o-w $SRC_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.
Also would be good to get a bit more knowledge on why the permissions are off.
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.
Incorrect as built by perl?
sh Configure -de -Dprefix=$PREFIX -Duserelocatableinc | ||
make | ||
|
||
# change permissions again after building | ||
chmod -R o-w $SRC_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.
...and how they become wrong again.
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.
Built files may have incorrect permissions, so the script corrects before building and again after. Tests were previously failing because various files were world-writable.
|
||
# world-writable files are not allowed | ||
chmod -R o-w $SRC_DIR | ||
|
||
sh Configure -de -Dprefix=$PREFIX -Duserelocatableinc |
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.
Are we still planning to add -Dusethreads
?
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.
Not sure how it was lost in this PR, but yes.
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.
Ok, I guess this is needed before we can ask for a merge :)
|
||
if [ ! -z "$old_ld_library_path" ]; then | ||
export LD_LIBRARY_PATH="$old_ld_library_path" | ||
fi |
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.
Why do we need to set it back? Doesn't conda-build
override this anyways?
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.
If conda-build will restore it, then this can be removed.
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 agree, this can be removed.
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 guess with these two changes we can ask for merging it.
Thanks @tomkinsc.
|
||
# world-writable files are not allowed | ||
chmod -R o-w $SRC_DIR | ||
|
||
sh Configure -de -Dprefix=$PREFIX -Duserelocatableinc |
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.
Ok, I guess this is needed before we can ask for a merge :)
|
||
if [ ! -z "$old_ld_library_path" ]; then | ||
export LD_LIBRARY_PATH="$old_ld_library_path" | ||
fi |
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 agree, this can be removed.
@tomkinsc do you have time to finishe this one? |
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
@jakirkham ready to be merged? :) |
Any idea if these changes would make perl relocatable (ie fix #4)? I've been trying to re-build the conda-forge I'll move this topic to it's own issue this is unrelated to the current changes. |
Please ignore my last comment. The failure I was seeing is unrelated to the perl package. Sorry for any confusion. |
Ready to merge! |
make test | ||
make install | ||
make install |
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.
Note: Fixed to a terminal EOF again.
Closes #5
Fixes #4 ?
The synchronization overhead of perl with threading support is minimal. Single-threaded perl programs will not see a significant performance penalty from being run on perl supporting threads (at most about 5%), however without threading support, multi-threaded programs cannot run.
It would be a sane default to include ‘-Dusethreads’ in the perl build script, so any packages that depend on ‘perl’ will run, whether they are single- or multi-threaded. It may make sense to add a second feedstock for something like ‘perl-singlethreaded’ for those who need the absolute best efficiency for their single-threaded perl applications.
This includes the flag ordering change present in #5 where
-de
is added at the end, since apparently the order matters.Edit by @jakirkham : Added closes/fixes lines above.