Re: cache libboost (and more) for speeding up the build

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 6, 2018 at 4:06 AM Alfredo Deza <adeza@xxxxxxxxxx> wrote:
>
> On Tue, Sep 4, 2018 at 11:29 AM, kefu chai <tchaikov@xxxxxxxxx> wrote:
> > On Tue, Sep 4, 2018 at 10:20 PM Alfredo Deza <adeza@xxxxxxxxxx> wrote:
> >>
> >> On Tue, Sep 4, 2018 at 10:15 AM, kefu chai <tchaikov@xxxxxxxxx> wrote:
> >> > hi guys,
> >> >
> >> > we build boost every time when building ceph. i don't think it's
> >> > efficient, hence http://tracker.ceph.com/issues/25186 is filed to
> >> > track this issue.
> >> >
> >> > to cache the built libboost for xenial and bionic, we can setup a PPA
> >> > repo or host the repo by ourselves. if this approach works fine, we
> >> > can also build libboost for centos. and expand the coverage to other
> >> > dependencies, like dpdk, rocksdb and seastar.
> >> >
> >> > what do you think?
> >>
> >> I worry about the maintenance burden. Repositories are somewhat easy
> >> with our infrastructure. If we are able to HTTP POST the binary to
> >> chacra.ceph.com
> >>
> >> Who will be maintaining this package?
> >
> > i will. in the short-term, i will
> >
> > 1. setup repo(s) hosting the "debian/" directory. so the downstream
> > changes can be tracked.
> > 2. build the deb packages manually.
> > 3. upload the source/binary packages to chacra
>
> I think that you would need #2 and #3 only, the repos are "free" once
> they get to a chacra instance

please note, by "/debian" directory, i mean the downstream changes for
packaging, see https://github.com/tchaikov/boost/tree/master/debian ,
without which, we can hardly *package* upstream dist tarball properly.
unless you assume we already have read-to-use source packages.

>
> >
> > in long-term, i think i will try to setup a jenkins job to build and
> > upload the deb files for different branches when they gets updated.
> > for instance, we will have xenial, bionic branches for libboost 1.67,
> > once the xenial branch is updated, we should built the new recipe and
> > push the built packages to chacra.
>
> That makes sense
>
> >
> > my concern is, we might want to host different versions of dependency
> > packages, for instance,  rocksdb x.y.z adds a new API, and we picks it
> > up and uses it in master. apparently, we also bump up the version # of
> > it in install-deps.sh in master, where we will install the pre-built
> > packages. but the Ceph versions which use rocksdb version x.y.$(z-1)
> > should still build after this change in master. and their
> > install-deps.sh still point to rocksdb x.y.$(z-1). so if we cannot
> > support multiple versions in one repo. it's a no-go.
>
> you could make the version part of the url (although that would mean
> different repos). If that is not an option then
> we would need to figure out what to do about reprepro.

currently, i encode the version number in the package name, like
ceph-libboost-regex1.67-dev . so it's fine at this moment.

>
> It might not be that hard to swap reprepro for another thing, the
> commands/flags used are almost in a single function:
>
> https://github.com/ceph/chacra/blob/master/chacra/util.py#L270-L296
>
> >
> >>
> >> We have done something similar in the past, where Vagrant doesn't have
> >> a repository (but does have packages) and we've set them up at
> >> https://chacra.ceph.com/r/vagrant/latest/HEAD/
> >> so that our tooling can just consume from there.


Alfredo, is there any way i can upload the built packages to chacra?
i'd like to upload the xenial build of ceph-libboost-*.deb first and
update install-deps.sh locally. if this works fine. will push the
change to master. and then expand it to more distros.

> >>
> >>
> >> >
> >> > --
> >> > Regards
> >> > Kefu Chai
> >
> >
> >
> > --
> > Regards
> > Kefu Chai



-- 
Regards
Kefu Chai



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux