Hi Marc, Here are two Apache projects using C++:
Impala: https://github.com/cloudera/Impala <https://github.com/cloudera/Impala> Kudu: https://github.com/cloudera/kudu <https://github.com/cloudera/kudu> Kudu has a download script for dependencies in third_party folder. It seems to be a good example for our case. > On Jan 8, 2017, at 2:17 PM, Marc Spehlmann <spehl.apa...@gmail.com> wrote: > > Regarding the IWYU script. It sounds safe then. If anything, maybe it > belongs in another folder. ("tools/" ?) > > On Thu, Jan 5, 2017 at 3:07 PM, Julian Hyde <jh...@apache.org> wrote: > >> Better still, make a release depend only releases. Snapshots and even >> commit IDs can disappear. >> >> And consider the state of the IP. In Apache and many other open source >> projects, the IP is only guaranteed "clean" when it has been formally >> released. >> >> Sorry this is all painful. But conversely, this is the value-add of >> making a release. >> >> On Thu, Jan 5, 2017 at 11:57 AM, Harshad Deshmukh <hars...@cs.wisc.edu> >> wrote: >>>> Also, since you’re relying on the latest googletest, protobuf and re2 >> your >>>> release will work today and will break at some point in the future. >> That’s >>>> not OK. A release can depend only on releases, not snapshots or live >>>> repositories. >>> >>> Thanks for pointing that. It is possible to fetch a particular release >>> (based on its commit ID) of the submodule. We will add the release >> commit ID >>> to the git submodule file. >>> >>> >>> >>> On 01/05/2017 01:44 PM, Julian Hyde wrote: >>>> >>>> Git sub-modules are useful, I agree. But for a source release, the goal >> is >>>> that someone should be able to download the source tar-ball and go: >>>> >>>> $ curl -O …/apache-quickstep-x.x-incubating.tar.gz >>>> $ tar xvfz apache-quickstep-x.x-incubating.tar.gz >>>> $ cd apache-quickstep-x.x-incubating/build >>>> $ ./download-thirdparty.sh >>>> $ cmake etc. >>>> >>>> I tried to find other Apache projects that use git submodules and see >> what >>>> they do for source releases. Not much luck. Maybe someone else can find >>>> something. >>>> >>>> Also, since you’re relying on the latest googletest, protobuf and re2 >> your >>>> release will work today and will break at some point in the future. >> That’s >>>> not OK. A release can depend only on releases, not snapshots or live >>>> repositories. >>>> >>>> Julian >>>> >>>> >>>> >>>>> On Jan 5, 2017, at 11:03 AM, Harshad Deshmukh <hars...@cs.wisc.edu> >>>>> wrote: >>>>> >>>>> Thanks for the review Julian. >>>>> >>>>> For some of the third party libraries used in Quickstep (e.g. >> googletest, >>>>> protobuf and re2) we use the submodules feature of git. For such >> libraries, >>>>> the developer has to initialize the submodule only once, which pulls >> code >>>>> from the third party repo to the Quickstep third party directory. >>>>> >>>>> I don't know of a centralized repo for C++ projects. Does the git >>>>> submodule method sound similar to the maven central approach you >> mentioned? >>>>> >>>>> On 01/05/2017 12:43 PM, Julian Hyde wrote: >>>>>> >>>>>> I took a quick look at third_party and there don’t seem to be any >>>>>> binaries in there. That’s good. You definitely cannot include >> binaries in a >>>>>> source release. >>>>>> >>>>>> The more you can remove from third_party, the better. It doesn’t have >> to >>>>>> be done this release, but the less IP there is to review, the easier >> for >>>>>> everyone. >>>>>> >>>>>> Consider pulling from an external source the first time the developer >>>>>> builds in a sandbox, then apply patches. The patches will be the only >> thing >>>>>> checked in to quickstep. (My expertise is in Java projects, which >> these days >>>>>> get their dependencies from a Maven repo such as Maven central; I >> don’t know >>>>>> whether there is an equivalent place to pull C and C++ source code. >> Might be >>>>>> worth a review of what other C and C++ based Apache projects do for >> their >>>>>> third-party dependencies.) >>>>>> >>>>>> Julian >>>>>> >>>>>> >>>>>>> On Jan 5, 2017, at 9:43 AM, Marc Spehlmann <spehl.apa...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>> That seems to be the repo with the LLVM code for implementing IWYU. I >>>>>>> think >>>>>>> what we have in our repo is scripts ontop of that library. I'm >>>>>>> wondering >>>>>>> where the scripts came from. >>>>>>> >>>>>>> Thanks, >>>>>>> Marc >>>>>>> >>>>>>> On Thu, Jan 5, 2017 at 10:50 AM, Harshad Deshmukh < >> hars...@cs.wisc.edu> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Marc, >>>>>>>> >>>>>>>> How about this one for IWYU? >>>>>>>> >>>>>>>> https://github.com/include-what-you-use/include-what-you-use >>>>>>>> /blob/master/LICENSE.TXT >>>>>>>> >>>>>>>> >>>>>>>> On 01/05/2017 10:43 AM, Marc Spehlmann wrote: >>>>>>>> >>>>>>>>> I double checked the libraries in thirdy_party. They adhere to >>>>>>>>> Apache's >>>>>>>>> 3rd >>>>>>>>> party requirement as they are all apache 2 or opensourced by >> Google. >>>>>>>>> The >>>>>>>>> only issue I saw was that IWYU has no documentation. Anyone know of >>>>>>>>> its >>>>>>>>> source? >>>>>>>>> >>>>>>>>> Library >>>>>>>>> >>>>>>>>> Ver >>>>>>>>> >>>>>>>>> License >>>>>>>>> >>>>>>>>> Notes >>>>>>>>> >>>>>>>>> benchmark >>>>>>>>> >>>>>>>>> Apache 2.0 >>>>>>>>> >>>>>>>>> cpplint >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> Header states that reuse is unconditional so long as the copyright >>>>>>>>> header >>>>>>>>> stays intact. >>>>>>>>> >>>>>>>>> Farmhash >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as COPYING file is preserved. See COPYING >>>>>>>>> >>>>>>>>> gflags >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as COPYING file is preserved. See COPYING >>>>>>>>> >>>>>>>>> glog >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as COPYING file is preserved. See COPYING >>>>>>>>> >>>>>>>>> gtest >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as COPYING file is preserved. See COPYING >> in >>>>>>>>> subprojects. >>>>>>>>> >>>>>>>>> gperftools >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as COPYING file is preserved. >>>>>>>>> >>>>>>>>> iwyu >>>>>>>>> >>>>>>>>> >>>>>>>>> No license present >>>>>>>>> >>>>>>>>> linenoise >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as LICENSE file is preserved. >>>>>>>>> >>>>>>>>> protobuf >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as LICENSE file is preserved. >>>>>>>>> >>>>>>>>> RE2 >>>>>>>>> >>>>>>>>> Google >>>>>>>>> >>>>>>>>> No restrictions so long as LICENSE file is preserved. >>>>>>>>> >>>>>>>>> tmb >>>>>>>>> >>>>>>>>> Apache 2.0 >>>>>>>>> >>>>>>>>> README: TMB is part of the Quickstep project (copyright Pivotal >>>>>>>>> Software, >>>>>>>>> Inc.) and is distributed under the same license terms. >>>>>>>>> >>>>>>>>> >>>>>>>> -- >>>>>>>> Thanks, >>>>>>>> Harshad >>>>>>>> >>>>>>>> >>>>> -- >>>>> Thanks, >>>>> Harshad >>>>> >>> >>> -- >>> Thanks, >>> Harshad >>> >>