Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Minimum set of Delphi 2010 files to move to a SVN repository for compiling

We are using Subversion for SCC. We have a great deal of our build environment in our repository so that we can check a given version out and rebuild it fairly close to what was in use at that time. We have the following in there now:

  • InnoSetup binaries
  • Third Party Components
  • VCL (including Indy)
  • Our Source (of course)
  • Finalbuilder project files

The only thing missing is the binaries for Delphi itself - I am wondering if there is a minimum set of files that can be copied to the repository and run.

Thanks

like image 284
bcrooker Avatar asked Feb 27 '23 20:02

bcrooker


2 Answers

Ok - I think I have this working. I was able to compile our application under a VMware guest that didn't have any of our developer tools (RAD Studio, EurekaLog, etc.) installed. Basically I have a Compiler folder with these files:

Turns out you only need a few files. Basically these files:

02/05/2008  05:13 PM            89,088 BorDebug.dll  
11/02/2009  06:02 PM            57,344 Borland.Build.Tasks.Common.dll  
11/02/2009  06:02 PM           147,456 Borland.Build.Tasks.Delphi.dll  
11/02/2009  06:02 PM            49,152 Borland.Build.Tasks.Shared.dll  
11/02/2009  06:02 PM            20,480 Borland.Globalization.dll  
08/19/2009  05:00 PM            22,370 CodeGear.Common.Targets  
08/19/2009  05:00 PM            32,928 CodeGear.Delphi.Targets  
11/02/2009  06:02 PM         1,328,128 DCC32.EXE  
02/25/2010  08:17 AM           979,456 ecc32.exe  
11/02/2009  06:02 PM           314,368 lnkdfm140.dll  
02/25/2010  08:11 AM            40,960 Process.exe  
08/19/2009  05:00 PM            75,264 rlink32.dll  
06/15/2010  08:41 AM               185 rsvars.bat  

Maybe I could snip a few more of these files out as well. We also have a components folder that has all of the built-in VCL files (basically the lib and Indy10 folders) and our third-party components. In Delphi I made the Library path setting blank — this step is key. I then put that Library path setting in the specific project options. We used environment variables to specify where the built-in and third-party files were. These environment variables are set in RAD Studio, and then can be set via command line when performing the release compilation. So we have a BAT file like this:

SET BDS=C:\_Releases\Compiler
SET COREFILES=C:\_Components\D2010
SET COMPONENTS=C:\_Components
SET LANGDIR=EN

Our library path looks something like this:

$(COREFILES)\lib;$(COREFILES)\Indy10;$(COMPONENTS)\EurekaLog;$(COMPONENTS)\Jcl\source\common;$(COMPONENTS)\Jcl\source\windows

Now in our virgin VMware session that just has MSBuild and the raw files described above I can call these commands:

msbuild project.dproj -t:rebuild /p:config=Release  
ecc32 --el_alter_exe"project.dproj"

Which builds our application. Granted we are just using the Delphi32 personality which simplifies things, but for us I think this will work fantastic.

like image 66
bcrooker Avatar answered Apr 05 '23 22:04

bcrooker


If you want to create a build environment that can be replicated easily, you'd be better off setting up a virtual machine and hosting the image on a network share instead of trying to deal with thousands of individual files through an SVN server.

like image 29
Mason Wheeler Avatar answered Apr 05 '23 22:04

Mason Wheeler