Building and installing processes

Ivan Shapovalov intelfx100 at gmail.com
Fri Aug 24 11:48:43 UTC 2012


On 24 Aug 2012 13:39:37 Aleix Pol wrote:
> On Fri, Aug 24, 2012 at 1:24 PM, Andreas Pakulat <apaku at gmx.de> wrote:
> > Hi,
> > 
> > On Fri, Aug 24, 2012 at 12:51 PM, Aleix Pol <aleixpol at kde.org> wrote:
> >> On Fri, Aug 24, 2012 at 7:38 AM, Andreas Pakulat <apaku at gmx.de> wrote:
> >>> On Fri, Aug 24, 2012 at 12:28 AM, Aleix Pol <aleixpol at kde.org> wrote:
> >>>> Hi co-kdevelopers,
> >>>> Right now our IProjectBuilders have an IPB::build and an IPB::install.
> >>>> It works great, but it has some small integration problems for us
> >>>> (cmake).
> >>>> 
> >>>> When you install, you first build then install, but cmake does first
> >>>> the build then build+install. So the first part can be omitted. Also
> >>>> this generates 2 output views so you don't get to see the warnings.
> >>> 
> >>> Why? I just looked at the code and CMakeBuilder::install only calls
> >>> MakeBuilder::install which merely runs "make install".
> >>> CMakeBuilder::install may also run cmake first and that would be a
> >>> possibly separate outputview, but thats a different thing already
> >>> IMHO.
> >>> 
> >>> So are you saying that the "install" action first runs
> >>> IProjectBuilder::build and then IProjectBuilder::install? Maybe thats
> >>> a bit too much dependency-management on our side and we should simply
> >>> drop it? After all a build-system is called a build-system because it
> >>> should take care of first building what needs to be built before
> >>> installing it anyway. I'd consider any buildsystem not doing this to
> >>> be broken.
> >> 
> >> What I mean is that "install" itself is building already, so the build
> >> step is redundant, for cmake. We could call install/fast otherwise
> >> (with the make builder).
> > 
> > Yes, I got that much. I'm merely wondering which code is running
> > IProjectBuilder::build and then IProjectBuilder::install. I couldn't
> > find any actually and I'd say if there is such code it should be
> > reduced to calling just ::install.
> > 
> > A buildsystem (ninja, make, whatever-your-custom-one-is) should always
> > allow to setup dependencies between the install rules and the stuff
> > thats needed to build before it can be installed. A buildsystem that
> > requires a human user to always run make before make install is just
> > broken and not supported by kdevelop. IMHO thats a reasonable
> > restriction to have.
> > 
> > Hence KDevelop can simply always issue just IProjectBuilder::install()
> > and the CMake Builder implementation should then just issue "make
> > install".
> > 
> > Andreas
> > 
> > --
> > KDevelop-devel mailing list
> > KDevelop-devel at kdevelop.org
> > https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel
> 
> Yes, it's in executeplugin.cpp:144.
> Ok so we can just drop the ::Build line there and be happy? Works for me :)
> 
> Aleix

How about custom buildsystems? While using one, "install" does not necessary 
imply "build"...

Regards,
Ivan Shapovalov




More information about the KDevelop-devel mailing list