Wednesday 17 February 2016

Server windoze build commands, package build history and proper build syntax


Good looking package DLL file:
PackageType=F
RunType=N
DLLName=CCUSTOM
PackageSource=C:\JDEdwards\E900\DDP\packages\PY900TMP\source\CCUSTOM
PackageInclude=C:\JDEdwards\E900\DDP\packages\PY900TMP\include\
PackageObjects=C:\JDEdwards\E900\DDP\packages\PY900TMP\obj\CCUSTOM
ParentObjLocation=
PackageBin32=C:\JDEdwards\E900\DDP\packages\PY900TMP\bin32\
PackageLib32=C:\JDEdwards\E900\DDP\packages\PY900TMP\lib32\
ParentSourceLocation=
ParentBin32Location=
ParentLibLocation=
ParentInclude=
JDESystemInclude=C:\JDEdwards\E900\DDP\system\include
JDESystemIncludeV=C:\JDEdwards\E900\DDP\system\includev
ParentLocation=
NTLibraryLocation=C:\JDEdwards\E900\DDP\system\lib32
BuildArea=C:\JDEdwards\E900\DDP\packages\
LogFile=CCUSTOM.log
LinkFile=CCUSTOM.log
StatusFile=C:\JDEdwards\E900\DDP\packages\PY900TMP\text\CCUSTOM.sts
CompileOutput=
DebugFlags=
OptimizationFlags=/FD /Gz /O2 /Zi /MD /W4 /EHsc /Gy /Oy-
Inlining=
TargetReleaseLevel=5.0
#define=/D "WIN32" /D "_WINDOWS" /D "IAMASERVER" /D "KERNEL" /D "UNICODE" /D "_UNICODE" /D "USESPECIALGPA4BB" /D "USETABLEHEADERFROMINCLUDEA"
CompilerOptions=/nologo /c
LinkOptions=/LIBPATH:C:\JDEdwards\E900\DDP\system\lib32 /DLL /DEBUG /SUBSYSTEM:windows /FORCE:MULTIPLE /FORCE:UNRESOLVED /INCREMENTAL:YES /VERBOSE /WARN:3
LinkObjects=jdekrnl.lib jdel.lib jdenet.lib jdeipc.lib owver.lib jdeunicode.lib v_verify.lib xerceswrapper.lib xmlpublisher.lib
StopOnError=N
UserName=JDE
PackageName=PY900TMP
SystemEnvInclude=include;atlmfc\include;PlatformSDK\Include;$(SYSTEM)\INCLUDE;$(SYSTEM)\INCLUDEV;$(SYSTEM)\CG;$(APP)\INCLUDE;
SystemEnvLib=lib;atlmfc\lib;PlatformSDK\lib;$(SYSTEM)\LIB32;$(SYSTEM)\LIBV32;$(APP)\LIB32;
SystemEnvPath=Tools;Tools\bin;bin;IDE
jdertdll
b5500095
b5500110
b5500160
b5500190
b5500200
Bad looking file
PackageType=F
RunType=N
DLLName=CCUSTOM
PackageSource=C:\JDEdwards\E900\DDP\packages\PY900TMP\source\CCUSTOM
PackageInclude=C:\JDEdwards\E900\DDP\packages\PY900TMP\include\
PackageObjects=C:\JDEdwards\E900\DDP\packages\PY900TMP\obj\CCUSTOM
ParentObjLocation=
PackageBin32=C:\JDEdwards\E900\DDP\packages\PY900TMP\bin32\
PackageLib32=C:\JDEdwards\E900\DDP\packages\PY900TMP\lib32\
ParentSourceLocation=
ParentBin32Location=
ParentLibLocation=
ParentInclude=
JDESystemInclude=C:\JDEdwards\E900\DDP\system\include
JDESystemIncludeV=C:\JDEdwards\E900\DDP\system\includev
ParentLocation=
NTLibraryLocation=C:\JDEdwards\E900\DDP\system\lib32
BuildArea=C:\JDEdwards\E900\DDP\packages\
LogFile=CCUSTOM.log
LinkFile=CCUSTOM.log
StatusFile=C:\JDEdwards\E900\DDP\packages\PY900TMP\text\CCUSTOM.sts
CompileOutput=
DebugFlags=
OptimizationFlags=/FD /Gz /O2 /Zi /MD /W4 /EHsc /Gy /Oy-
Inlining=
TargetReleaseLevel=5.0
#define=/D "WIN32" /D "_WINDOWS" /D "IAMASERVER" /D "KERNEL" /D "UNICODE" /D "_UNICODE" /D "USESPECIALGPA4BB" /D "USETABLEHEADERFROMINCLUDEA"
CompilerOptions=/nologo /c
LinkOptions=/LIBPATH:C:\JDEdwards\E900\DDP\system\lib32 /DLL /DEBUG /SUBSYSTEM:windows /FORCE:MULTIPLE /FORCE:UNRESOLVED /INCREMENTAL:YES /VERBOSE /WARN:3
LinkObjects=jdekrnl.lib jdel.lib jdenet.lib jdeipc.lib owver.lib jdeunicode.lib v_verify.lib xerceswrapper.lib xmlpublisher.lib
StopOnError=N
UserName=JDE
PackageName=PY900TMP
SystemEnvInclude=include;atlmfc\include;PlatformSDK\Include;$(SYSTEM)\INCLUDE;$(SYSTEM)\INCLUDEV;$(SYSTEM)\CG;$(APP)\INCLUDE;
SystemEnvLib=lib;atlmfc\lib;PlatformSDK\lib;$(SYSTEM)\LIB32;$(SYSTEM)\LIBV32;$(APP)\LIB32;
SystemEnvPath=Tools;Tools\bin;bin;IDE  <--- wrong!
jdertdll
b5500095
b5500110
b5500160
b5500190
b5500200

Note that you cannot just run the following command to build the DLL if you’ve changed the paths, as the package build process actually creates the text files reference with a kernel. 

C:\JDEdwards\E900\DDP\system\bin32\
builddll.exe C:\JDEdwards\E900\DDP\packages\PY900ODB\text\CCUSTOM.txt


So, despite the fact that you might have fixed all of the directories and you can run cl in your command window, the build is not going to kick off manually until you run it again.
You’ll see a line like this in the svrpkgbuild.log file in your packges\packagename\ dir, a line like the following

Tue Feb 16 18:08:14  -  Transferring File(s) to this enterprise server.
Tue Feb 16 18:10:11  -  Creating detail file for object CALLBSFN in package PY900ODB.
Tue Feb 16 18:10:11  -  Source and obj directories created for the DLL CALLBSFN successfully
Tue Feb 16 18:10:11  -  Creating text file for CALLBSFN
Tue Feb 16 18:10:11  -  Created detail file C:\JDEdwards\E900\DDP\packages\PY900ODB\text\CALLBSFN.txt successfully.
Tue Feb 16 18:10:11  -  Detail file created successfully.


Means that you can check that file – you’ll see that it’s been created again and the path is looking much better.  The build is not from "package build history", this does not always recreate the files, you might actually need to resubmit the build.

What I've seen is numerous builds is that some settings are not moved from the JDE.INI to the DLLNAME.txt file when a build is submitted with package build history.  You might need to resubmit the build officially.

A quick edit to this post.  If you want to get to the start of the start of the start (you cannot).  It seems that the txt files for the DLL builds are only created once.  Therefore if you change the LIB entries in your JDE.INI in the[JDE_CG] stanza, these are probably not going to be written to the DLL build instructions file.

Sometimes you don't have time to resubmit another build...  So here's a work around for some wrong JDE.INI file settings.  I've had to previous use the visual studio "replace in files" functionality (as below) to change the LIB path in all of the DLLNAME.txt files.  Reason I do this is that you need visual studio on your enterprise server, so you can easily drive this.  I forget all of the sed commands to do the same.


So this command has fixed all of my DLLNAME.txt files, so I can now manually test the build of a single DLL



cd C:\JDEdwards\E900\DDP\system\bin32\
buildmstr.exe C:\JDEdwards\E900\DDP\packages\PY900ODB\text CCUSTOM

note that I'm using the buildmstr command, not builddll.  You can just list your DLL's after the directory name and buildmstr will launch builddll's in the concurrency that is specified in the JDE.INI in [BSFN BUILD] SimultaneousBuilds=5

That is cool. ie

cd C:\JDEdwards\E900\DDP\system\bin32\
buildmstr.exe C:\JDEdwards\E900\DDP\packages\PY900ODB\text CCUSTOM CDIST CFIN 






No comments: