0

We are in the way of upgrading to Delphi XE4 (from D2006). At this time our main development (trunk) should be done with D2006. But in a seperate branch we would like to prepare the step to XE4. What is the best way to organize third party libraries in this process?

Currently I have this structure

...\Delphi\Libs\Jcl
...\Delphi\Libs\Jvcl
...\Delphi\Libs\Other1
...

What I imagine right now is to have a separate subfolder for XE4 and reinstall every library, eg:

...\Delphi\Libs\XE4\Jcl
...\Delphi\Libs\XE4\Jvcl
...\Delphi\Libs\XE4\Other1
...

Is this a right approach or what would you recommend? Anything else to consider? My main concern is, that I do not accidently break our main build.

Edit: The libraries with design time packages are currently not under version control

Edit2: Edited to reflect that my main concern is about libs with design time packages

Alois Heimer
  • 1,772
  • 1
  • 18
  • 40
  • 2
    If it's a separate branch, why do you need to put a Delphi version in there? You can use the same paths, but there will be different files on the different branches. Or, are the third party libraries not part of your revision control, and not part of your build. If this is the case, then that's your problem. – David Heffernan Aug 06 '13 at 09:41
  • No currently the libraries are not part of our revision control. How can they? I always used the binary installers (if available) to install the libs in Delphi. For example the installer for JVCL. – Alois Heimer Aug 06 '13 at 09:59
  • @DavidHeffernan I edited the question to clarify, that the libs are not under version control – Alois Heimer Aug 06 '13 at 10:07
  • 1
    Well, I would put the third party libraries into your source control. That way you can be sure that all your developers are using the same code. – David Heffernan Aug 06 '13 at 10:08
  • @DavidHeffernan Currently we have the Installers for the libraries under version control (for example 29425_jedi_code_library_2.5.0.4572_binary_installer_for_xe4.ZIP). Then every developer is responsible to install the right library. I don't think it would be enough to put the obove directories under version control as the installers often modify the IDE? – Alois Heimer Aug 06 '13 at 10:16
  • On the design time side it's more awkward. We personally build multiple third party components into a single design time package. That's all under source control. The third party code is shared between the apps and the design time package. But that approach may not be suitable for you. I just have a mortal fear of code that is not controlled by an rcs. How do you know what the developer is really building into your app? – David Heffernan Aug 06 '13 at 10:20
  • @DavidHeffernan My question should have been formulated better (ed). We have that third party code under revision control, that does not install design time packages (and thus mostly does not come with an installer). But the other stuff? I too, don't like the idea of not having something under revision control, but for some packages it seemed unavoidable. We use for instance J(V)CL, VirtualTreeView, Abbrevia and several commercial libs. They all come with its own installer. I don't see how we could integrate this in our RCS? Maybe you could explain your approach as an answer to this question? – Alois Heimer Aug 06 '13 at 10:48
  • 1
    Those packages all come with source code. You simply include the source code in your project just as you do for your own code. – David Heffernan Aug 06 '13 at 10:52
  • @DavidHeffernan: OK, let's assume I integrate the source code of the packages into svn. But that's not enough. The installers do more than that. Take for example JVCL: The packages are installed, the experts are integrated into the IDE, perhaps more. For every installer I would have to find out, what it does and redo this code by my own - not elegant either? Every tag I check out from my repository would have a different library path, thus the need to uninstall the old packages in Delphi and install the new ones. Not practicable without automation. – Alois Heimer Aug 06 '13 at 13:21
  • Works for me. What is the JVCL installer doing that is so special? I know I can live without it. – David Heffernan Aug 06 '13 at 13:22
  • @DavidHeffernan Acknowledged. Then you uninstall / install your single design time package, you mentioned, by hand? But how can one compile the different packages into one big package - that does not seem to be straightforward either? – Alois Heimer Aug 06 '13 at 13:56
  • 1
    For very complex packages it's probably more work to do it my way. I'm using quite simple components, and not that many. I just add the source files to the package project and call RegisterComponents on the components that I want to use. For JVCL, say, which is a monster, I doubt my approach is very clever. But in that case you can put the design time .bpl files in some shared location (perhaps even the rcs) and let the devs install those packages. That's really all there is to design time installation. – David Heffernan Aug 06 '13 at 13:59
  • But I'm just giving you my take on how I solve it. What works for you very likely will differ. So I do think that this is probably not a great SO question because there are so many different possible approaches. – David Heffernan Aug 06 '13 at 14:00
  • @DavidHeffernan I very much appreciate your help. You sketched out two possible approaches. I do not think that it is a stupid question, as this should be a common problem and I could not find a really good solution. I think the problem is, that the system was invented, when version control was no topic at all. – Alois Heimer Aug 06 '13 at 16:47
  • The question [Setting up a large software system in Delphi](http://stackoverflow.com/questions/8957128/setting-up-a-large-software-system-in-delphi) and answers by myself and @DavidHeffernan may be of interest to you. – Marjan Venema Aug 06 '13 at 17:11
  • I don't think it's a stupid question. Just not a good fit for SO which works best for narrow questions with a single answer. – David Heffernan Aug 07 '13 at 06:58
  • @MarjanVenema Thank you, I missed that one out, when asking. I find [your approach](http://stackoverflow.com/a/8960422/2523663) of not relying on the Environment library path in the IDE very interesting. I think this would solve my problem. – Alois Heimer Aug 07 '13 at 08:18
  • [Package Magician by Uwe Raabe](http://www.uweraabe.de/Blog/?s=package+magician) tries to resolve some of the problems – Alois Heimer Jun 17 '16 at 11:27

0 Answers0