[CMake] Package installation conundrum

Dave Abrahams dave at boostpro.com
Tue May 8 17:13:40 EDT 2012


on Tue May 08 2012, Alexander Neundorf <a.neundorf-work-hi6Y0CQ0nG0-AT-public.gmane.org> wrote:

> On Tuesday 08 May 2012, Dave Abrahams wrote:
>
>> Here's another one!
>>
>> Scenario:
>>
>> * I am running CMake under 0install to build and install libraries
>>
>> * Each library builds a package SomePackage for the library binaries
>> and another package SomePackage-dev for the library headers (and
>> import libraries on Windows)
>>
>> * The FindSomePackage.cmake file is part of the -dev package
>>
>> * After building, 0install moves each package's build products into a
>> mostly-unpredictable subdirectory of its otherwise-read-only "cache"
>> (~/.cache/0install.net/). The subdirectory's name is determined by a
>> hash of the files.
>>
>> * To get this working, I followed the scheme discussed here:
>>
>> http://news.gmane.org/find-root.php?message_id=%3cm2lil6s8jq.fsf%40pluto.l
>> uannocracy.com%3e
>>
>> Summary:
>>
>> 1. Create a 0install "SomePackage-preinstall" package. Building this
>> package involves CMake building and installing both SomePackage and
>> SomePackage-dev into separate subdirectories (main/ and dev/) of
>> some prefix. 0install thereafter moves the whole directory tree
>> into its cache in a directory called sha1=someuglyhash
>>
>> 2. SomePackage's 0installation procedure is to copy
>> sha1=someuglyhash/main/ into its distribution directory (which then ends
>> up in
>> ~/.cache/0install.net/sha1=otheruglyhash)
>>
>> 3. SomePackage-dev's 0installation procedure is to copy
>> sha1=someuglyhash/dev/ into its distribution directory
>>
>> Problem: FindSomePackageConfig.cmake now has the wrong path to the
>> library binaries.
>>
>> Any help most appreciated.
>
> Can you please summarize what you actually want to achieve ?

Well, I tried to, above.

In short, I want to create separate main and -dev packages without
building twice, under the constraints imposed by 0install.

> Do you say that libFoo installs a FindFoo.cmake as part of libFoo-devel ?
>
> If that's the case, then this is wrong.

I'm sorry, that *is* wrong.  It installs a FooConfig.cmake as part of libFoo.devel

> FindFoo.cmake must be part of the using software, not of the software to be
> searched.
>
> Why do you have to find the installed library in this cache directory
> ?

Because, in a 0install world, that's where things go when you "install"
them.

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com



More information about the CMake mailing list