Dan Liew
2015-Jul-06 19:45 UTC
[LLVMdev] [cfe-dev] 3.6.2-rc1 has been tagged. Testers needed.
On 6 July 2015 at 10:34, Ben Pope <benpope81 at gmail.com> wrote:> On 7 July 2015 at 01:12, Dan Liew <dan at su-root.co.uk> wrote: >> >> >> @Ben Pope: Your uploaded binary tarball is the odd one out. Any idea >> as to why the CMake files are missing and why the root directory name >> inside the tarball is not consistent with the uploaded tarballs for >> other platforms? >> >> [1] >> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150629/285597.html > > > Well, I rename the tarball to include the distro, should I be attacking that > by passing an argument to the test-release script?AFAICT from reading ``test-release.sh`` the value passed to the ``-triple`` option controls the tarball name **ONLY**, ``-build-triple`` actually controls the target triple passed to the configure script. I think that's kind of confusing, ``-triple`` probably ought to be called something like ``-tarballsuffix``. So I guess when you run ``test-release.sh`` you should pass ``-triple x86_64-linux-gnu-ubuntu-14.04`` instead of ``-triple x86_64-linux-gnu``.> No idea why the cmake files aren't being packaged, I build in a pretty basic > chroot, should cmake be installed there?It's not necessary for CMake to be installed when building with the Autoconf/Makefile build system. If you look in the build directory after a build has been performed you should see in cmake/modules ``` LLVMBuildExports.cmake LLVMConfig.cmake LLVMConfigVersion.cmake LLVMExports.cmake Makefile ```` The ``LLVMConfig.cmake`` and ``LLVMConfigExports.cmake`` file are generated by the build in this directory and are later installed (along with a bunch of other files). When I do a build of LLVM on Arch Linux and install it in the install directory there is a ``share/llvm/cmake/`` directory and it contains the following files (this is LLVM trunk rather than 3.6.2 but it should be very similar). ``` AddLLVM.cmake AddOCaml.cmake ChooseMSVCCRT.cmake FindOCaml.cmake GetSVN.cmake HandleLLVMStdlib.cmake LLVMConfig.cmake LLVMExports.cmake TableGen.cmake AddLLVMDefinitions.cmake AddSphinxTarget.cmake CrossCompile.cmake FindSphinx.cmake HandleLLVMOptions.cmake LLVM-Config.cmake LLVMConfigVersion.cmake LLVMProcessSources.cmake ``` You're going to have to do some debugging on your end because I cannot reproduce what ends up your tarball. I guess a first step would be to try building LLVM in your chroot but outside of the test-release.sh script. You could then try... 1. After doing a complete build have the ``cmake/modules/LLVMConfig.cmake`` and ``cmake/modules/LLVMExports.cmake`` files been generated in the build directory? If the CMake files are missing if you run ``make`` in the ``cmake/modules/`` directory the files should be generated. Running this manually should not be necessary though, it should happen automatically. SIDENOTE: After doing an initial configure the ``cmake/modules`` directory (and it's corresponding Makefile) will not exist if the build is out of source. The directory and the makefile will exist after doing a successful build. 2. Assuming the ``cmake/modules/LLVMConfig.cmake`` and ``cmake/modules/LLVMExports.cmake`` files were generated in the previous step, what happens when you run ``make install`` in the ``cmake/modules`` directory? Do the files actually get installed? Thanks, Dan.
Ben Pope
2015-Jul-07 02:09 UTC
[LLVMdev] [cfe-dev] 3.6.2-rc1 has been tagged. Testers needed.
On Tuesday, July 07, 2015 03:45 AM, Dan Liew wrote:> On 6 July 2015 at 10:34, Ben Pope <benpope81 at gmail.com> wrote: >> On 7 July 2015 at 01:12, Dan Liew <dan at su-root.co.uk> wrote: >>> >>> @Ben Pope: Your uploaded binary tarball is the odd one out. Any idea >>> as to why the CMake files are missing and why the root directory name >>> inside the tarball is not consistent with the uploaded tarballs for >>> other platforms? >>> >>> [1] >>> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150629/285597.html >> >> Well, I rename the tarball to include the distro, should I be attacking that >> by passing an argument to the test-release script? > AFAICT from reading ``test-release.sh`` the value passed to the > ``-triple`` option controls the tarball name **ONLY**, > ``-build-triple`` actually controls the target triple passed to the > configure script. I think that's kind of confusing, ``-triple`` > probably ought to be called something like ``-tarballsuffix``. > > So I guess when you run ``test-release.sh`` you should pass ``-triple > x86_64-linux-gnu-ubuntu-14.04`` instead of ``-triple > x86_64-linux-gnu``.OK, thanks, I'll do that.>> No idea why the cmake files aren't being packaged, I build in a pretty basic >> chroot, should cmake be installed there? > It's not necessary for CMake to be installed when building with the > Autoconf/Makefile build system. If you look in the build directory > after a build has been performed you should see in cmake/modules > > ``` > LLVMBuildExports.cmake LLVMConfig.cmake LLVMConfigVersion.cmake > LLVMExports.cmake Makefile > ````I have these for the test-release build, but only in the *.obj directory, not the install directory.> The ``LLVMConfig.cmake`` and ``LLVMConfigExports.cmake`` file are > generated by the build in this directory and are later installed > (along with a bunch of other files). When I do a build of LLVM on Arch > Linux and install it in the install directory there is a > ``share/llvm/cmake/`` directory and it contains the following files > (this is LLVM trunk rather than 3.6.2 but it should be very similar). > > ``` > AddLLVM.cmake AddOCaml.cmake ChooseMSVCCRT.cmake > FindOCaml.cmake GetSVN.cmake HandleLLVMStdlib.cmake > LLVMConfig.cmake LLVMExports.cmake TableGen.cmake > AddLLVMDefinitions.cmake AddSphinxTarget.cmake CrossCompile.cmake > FindSphinx.cmake HandleLLVMOptions.cmake LLVM-Config.cmake > LLVMConfigVersion.cmake LLVMProcessSources.cmake > ```I have these in the install directory of my cmake based trunk build.> You're going to have to do some debugging on your end because I cannot > reproduce what ends up your tarball. I guess a first step would be to > try building LLVM in your chroot but outside of the test-release.sh > script. You could then try... > > 1. After doing a complete build have the > ``cmake/modules/LLVMConfig.cmake`` and > ``cmake/modules/LLVMExports.cmake`` files been generated in the build > directory? If the CMake files are missing if you run ``make`` in the > ``cmake/modules/`` directory the files should be generated. Running > this manually should not be necessary though, it should happen > automatically. > SIDENOTE: After doing an initial configure the ``cmake/modules`` > directory (and it's corresponding Makefile) will not exist if the > build is out of source. The directory and the makefile will exist > after doing a successful build.Yeah, I have those.> 2. Assuming the ``cmake/modules/LLVMConfig.cmake`` and > ``cmake/modules/LLVMExports.cmake`` files were generated in the > previous step, what happens when you run ``make install`` in the > ``cmake/modules`` directory? Do the files actually get installed?Now I have the share/llvm/cmake directory with 18 files. In fact, I ran install from the root of the build directory and not a load of .a and a few .so files appeared in *.install/lib Ben
Dan Liew
2015-Jul-07 03:35 UTC
[LLVMdev] [cfe-dev] 3.6.2-rc1 has been tagged. Testers needed.
Hi Ben, Thanks for taking the time to look at this.>> It's not necessary for CMake to be installed when building with the >> Autoconf/Makefile build system. If you look in the build directory >> after a build has been performed you should see in cmake/modules >> >> ``` >> LLVMBuildExports.cmake LLVMConfig.cmake LLVMConfigVersion.cmake >> LLVMExports.cmake Makefile >> ```` > > > I have these for the test-release build, but only in the *.obj directory, > not the install directory.Okay. So that means the files are being generated during the build but not installed for some reason>> The ``LLVMConfig.cmake`` and ``LLVMConfigExports.cmake`` file are >> generated by the build in this directory and are later installed >> (along with a bunch of other files). When I do a build of LLVM on Arch >> Linux and install it in the install directory there is a >> ``share/llvm/cmake/`` directory and it contains the following files >> (this is LLVM trunk rather than 3.6.2 but it should be very similar). >> >> ``` >> AddLLVM.cmake AddOCaml.cmake ChooseMSVCCRT.cmake >> FindOCaml.cmake GetSVN.cmake HandleLLVMStdlib.cmake >> LLVMConfig.cmake LLVMExports.cmake TableGen.cmake >> AddLLVMDefinitions.cmake AddSphinxTarget.cmake CrossCompile.cmake >> FindSphinx.cmake HandleLLVMOptions.cmake LLVM-Config.cmake >> LLVMConfigVersion.cmake LLVMProcessSources.cmake >> ``` > > I have these in the install directory of my cmake based trunk build.Yes those will definitely existing if you build LLVM using the CMake build system but since LLVM 3.5 the Autoconf/Makefile build system also generates and installs CMake files into the LLVM install tree. Perhaps you could do a clean build of LLVM using the Autoconf/Makefile build system outside of your chroot to see if there's something about your chroot environment causing the problem?>> You're going to have to do some debugging on your end because I cannot >> reproduce what ends up your tarball. I guess a first step would be to >> try building LLVM in your chroot but outside of the test-release.sh >> script. You could then try... >> >> 1. After doing a complete build have the >> ``cmake/modules/LLVMConfig.cmake`` and >> ``cmake/modules/LLVMExports.cmake`` files been generated in the build >> directory? If the CMake files are missing if you run ``make`` in the >> ``cmake/modules/`` directory the files should be generated. Running >> this manually should not be necessary though, it should happen >> automatically. >> SIDENOTE: After doing an initial configure the ``cmake/modules`` >> directory (and it's corresponding Makefile) will not exist if the >> build is out of source. The directory and the makefile will exist >> after doing a successful build. > > Yeah, I have those.Okay and those existed after a build without you needing to run ``make`` inside the ``cmake/modules/`` directory in the build tree?>> 2. Assuming the ``cmake/modules/LLVMConfig.cmake`` and >> ``cmake/modules/LLVMExports.cmake`` files were generated in the >> previous step, what happens when you run ``make install`` in the >> ``cmake/modules`` directory? Do the files actually get installed? > > Now I have the share/llvm/cmake directory with 18 files.Okay so I am right in understanding that after completing a build... - When you ran ``make install`` from the root of the build tree the CMake files are not installed into ``share/llvm/cmake``. - After trying the above you ran ``make install`` in the ``cmake/modules`` directory in the build tree and the CMake files were installed to ``share/llvm/cmake`` ?> In fact, I ran install from the root of the build directory and not a load > of .a and a few .so files appeared in *.install/libI don't quite understand what you mean. Could you explain that again? Are you saying that you ran ``make install`` again in the root of the build tree and additional libraries were installed? If so that doesn't good. Sounds like a bug. @Eric : Have you ever seen anything like this before? Thanks, Dan.
Apparently Analagous Threads
- [LLVMdev] [cfe-dev] 3.6.2-rc1 has been tagged. Testers needed.
- [LLVMdev] [cfe-dev] 3.6.2-rc1 has been tagged. Testers needed.
- [LLVMdev] [RFC] Improving the testing of exported LLVM CMake targets
- [LLVMdev] Can't build against LLVM-3.5 with CMake: CMakeExports.cmake broken?
- [LLVMdev] [CMake] Generated LLVMConfig.cmake and LLVMExports.cmake broken under Visual Studio 2015