As the package spec will be available to all, there's no reason there
couldn't be multiple tools to do the same job. I'm already thinking about a
tool to package Python programs for MSI/CoApp.

On Tue, Apr 13, 2010 at 2:48 PM, Andrew Fenn <[email protected]> wrote:

> Is there a reason to collect all the data using this scantool other then to
> make a build file? Surely it would be less work to just manually setup VS
> project files, cmake, etc then it would be to build a tool that auto
> generates them? I admit I'm a big fan of CMake and I know CPack exists that
> makes packages out of your programs.
>
> What I am wondering is if you could save a lot of development time by using
> cmake? You would not need to make the ScanTool and mkSpec programs. If you
> contributed to CPack then you could make it generate an MSI installers and
> that would mean you wouldn't need to make a mkPackage program either.
>
> I'd hate to see you put in a lot of development time when the tools you
> need already exist, or perhaps I'm not understanding the whole picture of
> package building correctly?
>
> On Tue, Apr 13, 2010 at 1:23 AM, Garrett Serack <[email protected]>wrote:
>
>> So,
>>
>>
>>
>> I’ve been taking questions as to how CoApp packages get built.
>>
>>
>>
>> Lemme see if I can sketch out the vision for you, so that you get an idea
>> of where it’s going. This isn’t set in stone, but I’ve actually validated
>> this is a workable solution.
>>
>>
>>
>> Let’s say I want to create a library package for zlib.
>>
>>
>>
>> First, I’m going to import the zlib source code into a Bazaar in a new
>> CoApp sub-project on Launchpad.
>>
>>
>>
>> Checking out from there, I’ll first see if the project can be compiled at
>> all using MSVC (any version).  If it has an older project file, I’ll load it
>> up in Visual Studio 10, and let it upgrade the project, and I’ll save it.
>>
>>
>>
>> Drop back to the command line.**
>>
>>
>>
>> The SCANTOOL file can be pointed to the source directory to scan thru all
>> the source files and build files to generate some intelligence about the
>> project as a whole. It gets a list of all source files (C,C++,.H, etc),
>> potential conditional defines present in the source (#define FOO …) and
>> identifies what additional files are present in the project (for which we’ll
>> have to determine what to do with them (delete, include in final as
>> resources, ???). SCANTOOL dumps all of this data into an XML intelligence
>> file for the project.
>>
>>
>>
>> Build the project (either by the makefile, the vcprojx file, or whatever
>> means necessary). When doing so however,  use the TRACE tool to watch the
>> library get built. TRACE creates an XML file with every file access, write,
>> read, delete and every command line for the build process and all its child
>> processes.
>>
>>
>>
>> At this point the developer can create a hand-made intelligence file as
>> well for things that are known about the project (what targets are desired,
>> etc).
>>
>>
>>
>> The intelligence files and the trace data are fed into another tool
>> MKSPEC, which creates a set of .spec files, each of which describes a binary
>> output desired from the project (a .LIB , .DLL, .EXE, etc) and lists the
>> files needed, conditional #defines, and other options. (this is essentially
>> a compiler-neutral way of representing what is needed to build a particular
>> output)
>>
>>
>>
>> Each .spec file is then fed into MKPROJECT which will generate a VC10
>> project file. Plugins for MKPROJECT can trivially build other types of
>> project files for things like VC9, make files for MinGW or CMake files for
>> the CMake faithful. MKProject also ties together a collection of project
>> files into a .SLN file for Visual Studio. Outputs are normalized for naming
>> conventions.
>>
>>
>>
>> The .SLN file is fed into Visual Studio (or MSBuild, the command line
>> tool) and it compiles up the binaries.  (I’ve got a plan for PGO as well,
>> [profile guided optimization], but I’m going to ignore that right now)
>>
>>
>>
>> The binaries are fed into a tool called SMARTMANIFEST which creates
>> .manifest and policy files for the library and binds them to any .DLLs and
>> .EXEs created.
>>
>>
>>
>> The binaries (and manifest data) along with the project source code and
>> build files are fed into MKPACKAGE which uses WiX to build MSI files for
>> each binary, along with a source MSI with just the necessary files to
>> rebuild the binaries (source, vcxproj, sln).
>>
>>
>>
>> At that point the developer can identify what files can be trimmed from
>> the source tree, and the whole thing can be updated in Bazaar.
>>
>>
>>
>> http://twitpic.com/rqmo5 -- a flowchart of what I just described. Well,
>> without TRACE.
>>
>>
>>
>> (there’s a lot more detail to be found, but that’s the gist of it)
>>
>>
>>
>>
>>
>> [image: Description: fearthecowboy] <http://fearthecowboy.com/>
>>
>> *Garrett* *Serack* | Microsoft's Open Source Software Developer | *Microsoft
>> Corporation
>> Office*:(425)706-7939                                       *email*/*
>> messenger*: [email protected]
>> *blog*: http://fearthecowboy.com                                      *
>> twitter*: @fearthecowboy <http://twitter.com/fearthecowboy>
>>
>> *I don't make the software you use; I make the software you use better on
>> Windows.***
>>
>>
>>
>>
>>
>> _______________________________________________
>> Mailing list: 
>> https://launchpad.net/~coapp-developers<https://launchpad.net/%7Ecoapp-developers>
>> Post to     : [email protected]
>> Unsubscribe : 
>> https://launchpad.net/~coapp-developers<https://launchpad.net/%7Ecoapp-developers>
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
> _______________________________________________
> Mailing list: 
> https://launchpad.net/~coapp-developers<https://launchpad.net/%7Ecoapp-developers>
> Post to     : [email protected]
> Unsubscribe : 
> https://launchpad.net/~coapp-developers<https://launchpad.net/%7Ecoapp-developers>
> More help   : https://help.launchpad.net/ListHelp
>
>
_______________________________________________
Mailing list: https://launchpad.net/~coapp-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~coapp-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to