I get this note after building:Detected hard-coded path in text file bin/....for a numb erof top level scripts. And indeed, the hardd-coded path to my miniconda installation is in there. They seem to work fine on my machine, but of course, these packages are not relocatable.
has_prefix_files: - bin/file1 - lib/file2
--Good Luck!
Bradley Kreider
You received this message because you are subscribed to the Google Groups "conda - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to conda+un...@continuum.io.
To post to this group, send email to co...@continuum.io.
Visit this group at http://groups.google.com/a/continuum.io/group/conda/.
I've got a gcc package, and there is a pretty good chance we will move
it to the official channels. We could also build automake, etc. as
well I suppose. They aren't as important because nothing dynamically
links against them, so there is no problem using a system version when
building a package.
On Wed, Mar 4, 2015 at 1:21 PM, Chris Barker <chris....@noaa.gov> wrote:
> I'm working on making some conda packages for standard ./configure && make
> && make install type builds. (on OS-X at the moment).
>
> I get this note after building:
>
> Detected hard-coded path in text file bin/....
> but of course, these packages are not relocatable.
Yes they are.
I guess the message printed to the terminal here is confusing.
Unless you have hard-coded paths in binary files, you don't need to
worry. If you do have hard-coded paths in binary files, you have to
enable the binary prefix replacement manually (typically
"detect_binary_files_with_prefix: true" in the build section is
enough).
I've got a gcc package, and there is a pretty good chance we will move
it to the official channels. We could also build automake, etc. as
well I suppose.
They aren't as important because nothing dynamically
links against them, so there is no problem using a system version when
building a package.
Unless you have hard-coded paths in binary files, you don't need to
worry. If you do have hard-coded paths in binary files, you have to
enable the binary prefix replacement manually (typically
"detect_binary_files_with_prefix: true" in the build section is
enough).I've got some of these too -- but I take it the message:Detected hard-coded path in binary file bin/udunits2means that they've been fixed.
build: | |
detect_binary_files_with_prefix: true |
Which, now I look at it is the libgcc_s that presumable came with the anaconda gcc package (I got from Aaron's channel). But it actually duplicates the system libgcc. So not sure what will happen there....OR is this all nothing to worry about?Note that the libudunits2.la file has:# Directory that this library needs to be installed in:libdir='/opt/anaconda1anaconda2anaconda3/lib'which looks like a placeholder to me
.
$ otool -L libudunits2.dyliblibudunits2.dylib:libudunits2.0.dylib (compatibility version 2.0.0, current version 2.0.0)/usr/lib/libexpat.1.dylib (compatibility version 7.0.0, current version 7.2.0)/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1669.0.0)/Users/chris.barker/miniconda/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)Note the "Users/chris.barker..." dylib.Only paths from the build prefix are going to be replaced. This suggests that you have gcc installed in your root environment but not in your build environment (not in requirements/build), but the package is linking against libgcc_s.1.dylib, using the one from the gcc that it was compiled with.
Also, you don't have to worry about absolute paths for linking, because install_name_tool on OS X or patchelf on Linux are used to change those to relative paths.
> conda list shows it as installed:
>
> # packages in environment at /Users/chris.barker/miniconda:
> ...
> gcc 4.8.2 5
> similarly,l if I add it as a build requirement, I get:
>
> $ conda build conda-recipes/udunits2/
> BUILD START: udunits2-2.2.17-0
> Fetching package metadata: ........
> Error: No packages found in current osx-64 channels matching: gcc
>
> I'm not sure why it can't find it in the root environment - isn't it
> supposed to?
It's only in my channel. But we are in the process of moving it to the
official channels now.
> But I don't want to specify it as a build requirement anyway -- other folks
> building this package may want to use whatever gcc they have installed.
But your library is linking to libgcc. So you may want to see if you
can get it to link statically. Otherwise, it's a good idea to have it
link to the same library it was built with.
> got that -- but I don't get why it can't find a package that's installed in
> root.
If you used the -c flag to install it from my channel, it won't know
where to find it thereafter unless you use -c again, or add the
channel to your condarc.
> In fact, I have the same problem with packages I build and install myself,
> on my machine -- I can't use them as a dependency in new builds.
You should be able to if they are in the conda-bld directory.
> available in Anaconda.
We will put it in the Continuum repos, but the next step will be to
split out a libgcc for linking, since the gcc packages are quite
large.
On Wed, Mar 4, 2015 at 6:13 PM, Chris Barker <chris....@noaa.gov> wrote:
We will put it in the Continuum repos, but the next step will be to
split out a libgcc for linking, since the gcc packages are quite
large.