pfmaptst.gms : Checks files in distribution

Description

Compares the list of existing files with the list of expected files.

Contributor: Lutz

 For changes on all platforms


Small Model of Type : GAMS


Category : GAMS Test library


Main file : pfmaptst.gms

$title 'Checks files in distribution' (GMSPFMAPTEST,SEQ=352)

$ontext
Compares the list of existing files with the list of expected files.

Contributor: Lutz
$offtext

$offlisting
$if not set GOLD $set GOLD 0
*For changes on all platforms
$set ALLPF (AIX,DEG,LEG,SOX,VS8,WEI)
$set JAVPF (    DEG,LEG,SOX,VS8,WEI)
$set ALLNX (                VS8,WEI)
$set ALLUX (AIX,DEG,LEG,SOX        )

alias (*,prd,prda,dir,fil);
set ppp                                Possible platforms /aix,bgp,lnx,sig,sol,sox,vs8,deg,dei,dig,leg,wei/;

*Sets containing input data
set curfil(prd,dir,fil)                Files of current version
    lstall(ppp,prd,dir,fil)            Files of last version containing all platforms
    lstfil(prd,dir,fil)                Files of last version
    curprd(prd)                        All products contained in current version
    lstprd(prd)                        All products contained in last version
*Sets containing expected products/files
    expprd(prd)                        Expected products
    expfil(prd,dir,fil)                Expected files
*Sets containing errors
    nexprd(prd)                        Products being not expected but contained in current version
    misprd(prd)                        Products missing in current version
    drwprd(prd)                        Products dropped wrongly (dropped but not in previous version)
    adwprd(prd)                        Products added wrongly (added but already in previous version)
    nexfil(prd,dir,fil)                Files per product and directory being not expected but contained in current version
    misfil(prd,dir,fil)                Files per product and directory missing in current version
    drwfil(prd,dir,fil)                Files per product and directory dropped wrongly (dropped but not in previous version)
    adwfil(prd,dir,fil)                Files per product and directory added wrongly (added but already in previous version)
    nexfila(prd,dir,fil)               Files per product and directory being not expected but contained in current version (for solver aliases)
    misfila(prd,dir,fil)               Files per product and directory missing in current version (for solver aliases)
    wronga(prd)                        Alias entered for a product which does not exist
*Sets containing expected changes
$onempty
    newprd(ppp,prd)             New products
                                /
                                /
    drpprd(ppp,prd)             Dropped products
                                /
                                /

*$onecho > modlib.txt
*$offecho

$onecho > tstlib.txt
'embpy05.804', 'embpy06.805', 'load12.806', 'idc01.807', 'gurobi05.808', 'studio01.809'
$offecho

*$onecho > emplib.txt
*$offecho

$onecho > datalib.txt
'pickstock.gms', 'dowjones2016.csv', 'transport.gms'
$offecho

*$onecho > apilib.txt
*$offecho

$onEchoV > wrapperlib.inc
                               (AIX,LEG,SOX).(%1 . '%2'           .('lib%3lib64.so'))
                                DEG         .(%1 . '%2'           .('lib%3lib64.dll'))
                                VS8         .(%1 . '%2'           .('%3lib.dll'))
                                WEI         .(%1 . '%2'           .('%3lib64.dll'))
$offEcho

$onEchoV > api.inc
                                %ALLPF% . %1     .('./apifiles/C/api'    .('%2cc.c','%2cc.h')
                                                          './apifiles/Java/api' .('%2.java','%2jni.c')
                                                          './apifiles/Python/api'.('%2cc.i','%2cc.py','%2cc_wrap.c','%2setup.py')
                                                          './apifiles/CSharp/api'.'%2cs.cs'
                                                          './apifiles/Delphi/api'.('%2dcpdef.pas','%2docpdef.pas','%2dopdef.pas','%2dpdef.pas')
                                                          './apifiles/Fortran/api'.('%2f9def.f90','%2f9glu.c','%2f9glu.h','%2ifort32def.def','%2ifort32def.f90','%2ifort32deflib.f90','%2ifort64def.def','%2ifort64def.f90','%2ifort64deflib.f90','%2lfdef.def','%2lfdef.f90','%2lfdeflib.f90')
                                                          './apifiles/VBA/api'  . '%2vba.bas'
                                                          './apifiles/VBnet/api'. '%2vbnet.vb'
                                                          './docs/apis/expert-level'.'%2qdrep.html')
                                %ALLNX% . %1     . './apifiles/Python/api'.'_%2cc.pyd'
                                    LEG . %1     . './apifiles/Python/api'.'_%2cc.so'
                                    DEG . %1     . './apifiles/Python/api'.'_%2cc.so'
                                    VS8 . %1     . './apifiles/Java/api'                              .'%2jni.dll'
                                    WEI . %1     . './apifiles/Java/api'                              .'%2jni64.dll'
                          (AIX,LEG,SOX) . %1     . './apifiles/Java/api'                              .'lib%2jni64.so'
                                    DEG . %1     . './apifiles/Java/api'                              .'lib%2jni64.dll'
$offEcho

    newfil(ppp,prd,dir,fil)     New files per product and directory /

                                 %ALLPF% .(
*                                          ModelLibrary  . './gamslib_ml'.(
*$include modlib.txt
*)
                                          TestLibrary   . './testlib_ml'.(
$include tstlib.txt
)
                                          DataLibrary   . './datalib_ml'.(
$include datalib.txt
)
*                                          EmpLibrary    . './emplib_ml'.(
*$include emplib.txt
*)
*                                          APILibrary    . './apilib_ml'.(
*$include apilib.txt
*)
                                         )
*                                 %ALLNX%.(
*                                         )
*                                 %ALLUX%.(
*                                         )
                                AIX     .(
                                           GAMS        . '.'                        .  'libembidccclib64.so'
                                           'cplex'     . '.'                        . ('libcplex12100remote.a', 'libcplex12100tcpiptransport.a')
                                         )
                                DEG     .(
                                           GAMS        . '.'                        .  'libembidccclib64.dylib'
                                           'gdxAPI'    . './apifiles/Python/api_38' . ('_gdxcc.so',  'gdxcc.py'  )
                                           'gmdAPI'    . './apifiles/Python/api_38' . ('_gmdcc.so',  'gmdcc.py'  )
                                           'optionAPI' . './apifiles/Python/api_38' . ('_optcc.so',  'optcc.py'  )
                                           'gamsAPI'   . './apifiles/Python/api_38' . ('_gamsxcc.so','gamsxcc.py')
                                           'idxgdxAPI' . './apifiles/Python/api_38' . ('_idxcc.so',  'idxcc.py'  )
                                           'joatAPI'   . './apifiles/Python/api_38' . (
                                                                                       '_cfgmcc.so','cfgmcc.py'
                                                                                       '_dctmcc.so','dctmcc.py'
                                                                                       '_gevmcc.so','gevmcc.py'
                                                                                       '_gmomcc.so','gmomcc.py'
                                                                                      )
                                           'gamsPython'. './apifiles/Python/api_38' . ('database.so', 'execution.so', 'options.so', 'workspace.so', '__init__.py')
                                           GUROBI.'.'.'libgurobi90.dylib'
                                           'baron'.      '.'                        . 'libcplex12100.dylib', 
                                           'cplexd'.     '.'                        . ('libcplex12100remote.dylib', 'libcplex12100tcpiptransport.dylib')
BONMIN   .'.'.'libboncclib64.dylib',    CBC      .'.'.'libcbccclib64.dylib',    COUENNE  .'.'.'libcoucclib64.dylib'
IPOPT    .'.'.'libipocclib64.dylib',    SCIP     .'.'.'libscpcclib64.dylib',    OSISOPLEX.'.'.'libospcclib64.dylib'
OsiCplex .'.'.'libosicclib64.dylib',    OsiGurobi.'.'.'libosicclib64.dylib',    OsiMosek .'.'.'libosicclib64.dylib'
OsiXpress.'.'.'libosicclib64.dylib'
                                         )
                                LEG     .(
                                           GAMS        . '.'                        .  'libembidccclib64.so'
                                           'gdxAPI'    . './apifiles/Python/api_38' . ('_gdxcc.so',  'gdxcc.py'  )
                                           'gmdAPI'    . './apifiles/Python/api_38' . ('_gmdcc.so',  'gmdcc.py'  )
                                           'optionAPI' . './apifiles/Python/api_38' . ('_optcc.so',  'optcc.py'  )
                                           'gamsAPI'   . './apifiles/Python/api_38' . ('_gamsxcc.so','gamsxcc.py')
                                           'idxgdxAPI' . './apifiles/Python/api_38' . ('_idxcc.so',  'idxcc.py'  )
                                           'joatAPI'   . './apifiles/Python/api_38' . (
                                                                                       '_cfgmcc.so','cfgmcc.py'
                                                                                       '_dctmcc.so','dctmcc.py'
                                                                                       '_gevmcc.so','gevmcc.py'
                                                                                       '_gmomcc.so','gmomcc.py'
                                                                                      )
                                           'gamsPython'. './apifiles/Python/api_38' . ('database.so', 'execution.so', 'options.so', 'workspace.so', '__init__.py')
                                           'cplexd'    . '.'                        . ('libcplex12100.so','libcplex12100remote.so','libcplex12100tcpiptransport.so') 
                                           ODHCPLEX    . '.'                        .'libheuristic432.so'
                                           GUROBI.'.'.'libgurobi.so.9.0.0'
BONMIN   .'.'.'libboncclib64.so',    CBC      .'.'.'libcbccclib64.so',    COUENNE  .'.'.'libcoucclib64.so'
IPOPT    .'.'.'libipocclib64.so',    SCIP     .'.'.'libscpcclib64.so',    OSISOPLEX.'.'.'libospcclib64.so'
OsiCplex .'.'.'libosicclib64.so',    OsiGurobi.'.'.'libosicclib64.so',    OsiMosek .'.'.'libosicclib64.so'
OsiXpress.'.'.'libosicclib64.so'
                                          gurobi    . '.'                   . 'libgurobi.so.9.0.1'
                                         )
                                SOX     .(
                                           GAMS        . '.'                        .  'libembidccclib64.so'
                                         )
                                VS8     .(
                                          GAMS        . '.'                        .  'embidccclib.dll'
                                          GAMS        . './apifiles/C/api'         .  'embpyoo.def'
BONMIN   .'.'.'boncclib.dll',    CBC      .'.'.'cbccclib.dll',    COUENNE  .'.'.'coucclib.dll'
IPOPT    .'.'.'ipocclib.dll',    SCIP     .'.'.'scpcclib.dll',    OSISOPLEX.'.'.'ospcclib.dll'
OsiCplex .'.'.'osicclib.dll',    OsiGurobi.'.'.'osicclib.dll',    OsiMosek .'.'.'osicclib.dll'
OsiXpress.'.'.'osicclib.dll'
                                         )
                                WEI     .(
                                          GAMS        . '.'                        .  'embidccclib64.dll'
                                          'gdxAPI'    . './apifiles/Python/api_38' . ('_gdxcc.pyd',  'gdxcc.py'  )
                                          'gmdAPI'    . './apifiles/Python/api_38' . ('_gmdcc.pyd',  'gmdcc.py'  )
                                          'optionAPI' . './apifiles/Python/api_38' . ('_optcc.pyd',  'optcc.py'  )
                                          'gamsAPI'   . './apifiles/Python/api_38' . ('_gamsxcc.pyd','gamsxcc.py')
                                          'idxgdxAPI' . './apifiles/Python/api_38' . ('_idxcc.pyd',  'idxcc.py'  )
                                          'joatAPI'   . './apifiles/Python/api_38' . (
                                                                                      '_cfgmcc.pyd','cfgmcc.py'
                                                                                      '_dctmcc.pyd','dctmcc.py'
                                                                                      '_gevmcc.pyd','gevmcc.py'
                                                                                      '_gmomcc.pyd','gmomcc.py'
                                                                                     )
                                          ('baron','cplex','decisc','cplexd'). '.' . 'cplex12100.dll'
                                          'cplexd'.     '.'                        . ('cplex12100remote.dll','cplex12100tcpiptransport.dll')
                                          'gamsPython'. './apifiles/Python/api_38' . ('database.pyd', 'execution.pyd', 'options.pyd', 'workspace.pyd', '__init__.py')
                                           ODHCPLEX    . '.'                        .'heuristic432.dll'
                                           GUROBI.'.'.'gurobi90.dll'
BONMIN   .'.'.'boncclib64.dll',    CBC      .'.'.'cbccclib64.dll',    COUENNE  .'.'.'coucclib64.dll'
IPOPT    .'.'.'ipocclib64.dll',    SCIP     .'.'.'scpcclib64.dll',    OSISOPLEX.'.'.'ospcclib64.dll'
OsiCplex .'.'.'osicclib64.dll',    OsiGurobi.'.'.'osicclib64.dll',    OsiMosek .'.'.'osicclib64.dll'
OsiXpress.'.'.'osicclib64.dll'
                                         )
*                       (WEI,VS8,LEG,DEG).(
*                                         )
                                /

    drpfil(ppp,prd,dir,fil)     Dropped files per product and directory /
                                %ALLPF% .('gamsAPI'    . './apifiles/Java/Eclipse/.settings' . 'org.eclipse.jdt.core.prefs'
                                         )
*                                %ALLNX% .(
*                                         )
                                AIX     .(
                                           'cplex'     . '.'                        . ('libcplex1290remote.a', 'libcplex1290tcpiptransport.a')
                                         )
                                DEG     .( 'gdxAPI'    . './apifiles/Python/api_34' . ('_gdxcc.so',  'gdxcc.py'  )
                                           'gmdAPI'    . './apifiles/Python/api_34' . ('_gmdcc.so',  'gmdcc.py'  )
                                           'optionAPI' . './apifiles/Python/api_34' . ('_optcc.so',  'optcc.py'  )
                                           'gamsAPI'   . './apifiles/Python/api_34' . ('_gamsxcc.so','gamsxcc.py')
                                           'idxgdxAPI' . './apifiles/Python/api_34' . ('_idxcc.so',  'idxcc.py'  )
                                           'joatAPI'   . './apifiles/Python/api_34' . (
                                                                                       '_cfgmcc.so','cfgmcc.py'
                                                                                       '_dctmcc.so','dctmcc.py'
                                                                                       '_gevmcc.so','gevmcc.py'
                                                                                       '_gmomcc.so','gmomcc.py'
                                                                                      )
                                           'baron'.      '.'                        . 'libcplex1290.dylib', 
                                           'cplexd'.     '.'                        . ('libcplex1290remote.dylib', 'libcplex1290tcpiptransport.dylib')
                                           'gamsPython'. './apifiles/Python/api_34' . ('database.so', 'execution.so', 'options.so', 'workspace.so', '__init__.py')
                                           GUROBI.'.'.'libgurobi81.dylib'
BONMIN   .'.'.'libgmsbliss.dylib'   ,    BONMIN   .'.'.'optipopt.def'     ,    BONMIN   .'.'.'optcbc.def'       
BONMIN   .'.'.'optcouenne.def'   ,    BONMIN   .'.'.'libcoincclib64.dylib',    CBC      .'.'.'libgmsbliss.dylib'   
CBC      .'.'.'optipopt.def'     ,    CBC      .'.'.'optbonmin.def'    ,    CBC      .'.'.'optcouenne.def'   
CBC      .'.'.'libcoincclib64.dylib',    COUENNE  .'.'.'libgmsbliss.dylib'   ,    COUENNE  .'.'.'optipopt.def'     
COUENNE  .'.'.'optbonmin.def'    ,    COUENNE  .'.'.'optcbc.def'       ,    COUENNE  .'.'.'libcoincclib64.dylib'
IPOPT    .'.'.'optbonmin.def'    ,    IPOPT    .'.'.'optcbc.def'       ,    IPOPT    .'.'.'optcouenne.def'   
IPOPT    .'.'.'libcoincclib64.dylib',    SCIP     .'.'.'libgmsbliss.dylib'   ,    SCIP     .'.'.'optipopt.def'     
SCIP     .'.'.'optbonmin.def'    ,    SCIP     .'.'.'optcbc.def'       ,    SCIP     .'.'.'optcouenne.def'   
SCIP     .'.'.'libcoincclib64.dylib',    OSISOPLEX.'.'.'libgmsbliss.dylib'   ,    OSISOPLEX.'.'.'optipopt.def'     
OSISOPLEX.'.'.'optbonmin.def'    ,    OSISOPLEX.'.'.'optcbc.def'       ,    OSISOPLEX.'.'.'optcouenne.def'   
OSISOPLEX.'.'.'libcoincclib64.dylib',    OsiCplex .'.'.'libgmsbliss.dylib'   ,    OsiCplex .'.'.'optipopt.def'     
OsiCplex .'.'.'optbonmin.def'    ,    OsiCplex .'.'.'optcbc.def'       ,    OsiCplex .'.'.'optcouenne.def'   
OsiCplex .'.'.'libcoincclib64.dylib',    OsiGurobi.'.'.'libgmsbliss.dylib'   ,    OsiGurobi.'.'.'optipopt.def'     
OsiGurobi.'.'.'optbonmin.def'    ,    OsiGurobi.'.'.'optcbc.def'       ,    OsiGurobi.'.'.'optcouenne.def'   
OsiGurobi.'.'.'libcoincclib64.dylib',    OsiMosek .'.'.'libgmsbliss.dylib'   ,    OsiMosek .'.'.'optipopt.def'     
OsiMosek .'.'.'optbonmin.def'    ,    OsiMosek .'.'.'optcbc.def'       ,    OsiMosek .'.'.'optcouenne.def'   
OsiMosek .'.'.'libcoincclib64.dylib',    OsiXpress.'.'.'libgmsbliss.dylib'   ,    OsiXpress.'.'.'optipopt.def'     
OsiXpress.'.'.'optbonmin.def'    ,    OsiXpress.'.'.'optcbc.def'       ,    OsiXpress.'.'.'optcouenne.def'   
OsiXpress.'.'.'libcoincclib64.dylib'
                                         )
                                LEG     .( 'gdxAPI'    . './apifiles/Python/api_34' . ('_gdxcc.so',  'gdxcc.py'  )
                                           'gmdAPI'    . './apifiles/Python/api_34' . ('_gmdcc.so',  'gmdcc.py'  )
                                           'optionAPI' . './apifiles/Python/api_34' . ('_optcc.so',  'optcc.py'  )
                                           'gamsAPI'   . './apifiles/Python/api_34' . ('_gamsxcc.so','gamsxcc.py')
                                           'idxgdxAPI' . './apifiles/Python/api_34' . ('_idxcc.so',  'idxcc.py'  )
                                           'joatAPI'   . './apifiles/Python/api_34' . (
                                                                                       '_cfgmcc.so','cfgmcc.py'
                                                                                       '_dctmcc.so','dctmcc.py'
                                                                                       '_gevmcc.so','gevmcc.py'
                                                                                       '_gmomcc.so','gmomcc.py'
                                                                                      )
                                           'gamsPython'. './apifiles/Python/api_34' . ('database.so', 'execution.so', 'options.so', 'workspace.so', '__init__.py')
                                           'cplexd'    . '.'                        . ('libcplex1290.so','libcplex1290remote.so','libcplex1290tcpiptransport.so') 
                                          ODHCPLEX .'.'.'libheuristic426.so'
                                          GUROBI.'.'.'libgurobi.so.8.1.1'
BONMIN   .'.'.'libgmsbliss.so'   ,    BONMIN   .'.'.'optipopt.def'     ,    BONMIN   .'.'.'optcbc.def'       
BONMIN   .'.'.'optcouenne.def'   ,    BONMIN   .'.'.'libcoincclib64.so',    CBC      .'.'.'libgmsbliss.so'   
CBC      .'.'.'optipopt.def'     ,    CBC      .'.'.'optbonmin.def'    ,    CBC      .'.'.'optcouenne.def'   
CBC      .'.'.'libcoincclib64.so',    COUENNE  .'.'.'libgmsbliss.so'   ,    COUENNE  .'.'.'optipopt.def'     
COUENNE  .'.'.'optbonmin.def'    ,    COUENNE  .'.'.'optcbc.def'       ,    COUENNE  .'.'.'libcoincclib64.so'
IPOPT    .'.'.'optbonmin.def'    ,    IPOPT    .'.'.'optcbc.def'       ,    IPOPT    .'.'.'optcouenne.def'   
IPOPT    .'.'.'libcoincclib64.so',    SCIP     .'.'.'libgmsbliss.so'   ,    SCIP     .'.'.'optipopt.def'     
SCIP     .'.'.'optbonmin.def'    ,    SCIP     .'.'.'optcbc.def'       ,    SCIP     .'.'.'optcouenne.def'   
SCIP     .'.'.'libcoincclib64.so',    OSISOPLEX.'.'.'libgmsbliss.so'   ,    OSISOPLEX.'.'.'optipopt.def'     
OSISOPLEX.'.'.'optbonmin.def'    ,    OSISOPLEX.'.'.'optcbc.def'       ,    OSISOPLEX.'.'.'optcouenne.def'   
OSISOPLEX.'.'.'libcoincclib64.so',    OsiCplex .'.'.'libgmsbliss.so'   ,    OsiCplex .'.'.'optipopt.def'     
OsiCplex .'.'.'optbonmin.def'    ,    OsiCplex .'.'.'optcbc.def'       ,    OsiCplex .'.'.'optcouenne.def'   
OsiCplex .'.'.'libcoincclib64.so',    OsiGurobi.'.'.'libgmsbliss.so'   ,    OsiGurobi.'.'.'optipopt.def'     
OsiGurobi.'.'.'optbonmin.def'    ,    OsiGurobi.'.'.'optcbc.def'       ,    OsiGurobi.'.'.'optcouenne.def'   
OsiGurobi.'.'.'libcoincclib64.so',    OsiMosek .'.'.'libgmsbliss.so'   ,    OsiMosek .'.'.'optipopt.def'     
OsiMosek .'.'.'optbonmin.def'    ,    OsiMosek .'.'.'optcbc.def'       ,    OsiMosek .'.'.'optcouenne.def'   
OsiMosek .'.'.'libcoincclib64.so',    OsiXpress.'.'.'libgmsbliss.so'   ,    OsiXpress.'.'.'optipopt.def'     
OsiXpress.'.'.'optbonmin.def'    ,    OsiXpress.'.'.'optcbc.def'       ,    OsiXpress.'.'.'optcouenne.def'   
OsiXpress.'.'.'libcoincclib64.so'
                                          gurobi    . '.'                                       . 'libgurobi.so.9.0.0'
                                         )
*                                SOX     .(
*                                         )
                                VS8     .('gdxAPI'    . './apifiles/Python/api_34' . ('_gdxcc.pyd',  'gdxcc.py'  )
                                          'gmdAPI'    . './apifiles/Python/api_34' . ('_gmdcc.pyd',  'gmdcc.py'  )
                                          'optionAPI' . './apifiles/Python/api_34' . ('_optcc.pyd',  'optcc.py'  )
                                          'gamsAPI'   . './apifiles/Python/api_34' . ('_gamsxcc.pyd','gamsxcc.py')
                                          'idxgdxAPI' . './apifiles/Python/api_34' . ('_idxcc.pyd',  'idxcc.py'  )
                                          'joatAPI'   . './apifiles/Python/api_34' . (
                                                                                      '_cfgmcc.pyd','cfgmcc.py'
                                                                                      '_dctmcc.pyd','dctmcc.py'
                                                                                      '_gevmcc.pyd','gevmcc.py'
                                                                                      '_gmomcc.pyd','gmomcc.py'
                                                                                     )
                                          'gamsPython'. './apifiles/Python/api_34' . ('database.pyd', 'execution.pyd', 'options.pyd', 'workspace.pyd', '__init__.py')
                                          GAMS        . './apifiles/C/api'         .  'emblib.def'
BONMIN   .'.'.'optipopt.def'     ,    BONMIN   .'.'.'optcbc.def'       
BONMIN   .'.'.'optcouenne.def'   ,    BONMIN   .'.'.'coincclib.dll'
CBC      .'.'.'optipopt.def'     ,    CBC      .'.'.'optbonmin.def'    ,    CBC      .'.'.'optcouenne.def'   
CBC      .'.'.'coincclib.dll',        COUENNE  .'.'.'optipopt.def'     
COUENNE  .'.'.'optbonmin.def'    ,    COUENNE  .'.'.'optcbc.def'       ,    COUENNE  .'.'.'coincclib.dll'
IPOPT    .'.'.'optbonmin.def'    ,    IPOPT    .'.'.'optcbc.def'       ,    IPOPT    .'.'.'optcouenne.def'   
IPOPT    .'.'.'coincclib.dll',        SCIP     .'.'.'optipopt.def'     
SCIP     .'.'.'optbonmin.def'    ,    SCIP     .'.'.'optcbc.def'       ,    SCIP     .'.'.'optcouenne.def'   
SCIP     .'.'.'coincclib.dll',        OSISOPLEX.'.'.'optipopt.def'     
OSISOPLEX.'.'.'optbonmin.def'    ,    OSISOPLEX.'.'.'optcbc.def'       ,    OSISOPLEX.'.'.'optcouenne.def'   
OSISOPLEX.'.'.'coincclib.dll',        OsiCplex .'.'.'optipopt.def'     
OsiCplex .'.'.'optbonmin.def'    ,    OsiCplex .'.'.'optcbc.def'       ,    OsiCplex .'.'.'optcouenne.def'   
OsiCplex .'.'.'coincclib.dll',        OsiGurobi.'.'.'optipopt.def'     
OsiGurobi.'.'.'optbonmin.def'    ,    OsiGurobi.'.'.'optcbc.def'       ,    OsiGurobi.'.'.'optcouenne.def'   
OsiGurobi.'.'.'coincclib.dll',        OsiMosek .'.'.'optipopt.def'     
OsiMosek .'.'.'optbonmin.def'    ,    OsiMosek .'.'.'optcbc.def'       ,    OsiMosek .'.'.'optcouenne.def'   
OsiMosek .'.'.'coincclib.dll',        OsiXpress.'.'.'optipopt.def'     
OsiXpress.'.'.'optbonmin.def'    ,    OsiXpress.'.'.'optcbc.def'       ,    OsiXpress.'.'.'optcouenne.def'   
OsiXpress.'.'.'coincclib.dll'
                                         )
                                WEI     .('gdxAPI'    . './apifiles/Python/api_34' . ('_gdxcc.pyd',  'gdxcc.py'  )
                                          'gmdAPI'    . './apifiles/Python/api_34' . ('_gmdcc.pyd',  'gmdcc.py'  )
                                          'optionAPI' . './apifiles/Python/api_34' . ('_optcc.pyd',  'optcc.py'  )
                                          'gamsAPI'   . './apifiles/Python/api_34' . ('_gamsxcc.pyd','gamsxcc.py')
                                          'idxgdxAPI' . './apifiles/Python/api_34' . ('_idxcc.pyd',  'idxcc.py'  )
                                          'joatAPI'   . './apifiles/Python/api_34' . (
                                                                                      '_cfgmcc.pyd','cfgmcc.py'
                                                                                      '_dctmcc.pyd','dctmcc.py'
                                                                                      '_gevmcc.pyd','gevmcc.py'
                                                                                      '_gmomcc.pyd','gmomcc.py'
                                                                                     )
                                          gamsCPP   .('./apifiles/C++/lib/vs2015/sqldrivers'    . 'qsqlmysql.dll'
                                                      './apifiles/C++/lib/vs2017/sqldrivers'    . 'qsqlmysql.dll')
                                          'gamsPython'. './apifiles/Python/api_34' . ('database.pyd', 'execution.pyd', 'options.pyd', 'workspace.pyd', '__init__.py')
                                          ('baron','cplex','decisc','cplexd'). '.' . 'cplex1290.dll'
                                          'cplexd'.     '.'                        . ('cplex1290remote.dll','cplex1290tcpiptransport.dll')
                                          ODHCPLEX .'.'.'heuristic426.dll'
                                          GUROBI.'.'.'gurobi81.dll'
BONMIN   .'.'.'optipopt.def'     ,    BONMIN   .'.'.'optcbc.def'       
BONMIN   .'.'.'optcouenne.def'   ,    BONMIN   .'.'.'coincclib64.dll'
CBC      .'.'.'optipopt.def'     ,    CBC      .'.'.'optbonmin.def'    ,    CBC      .'.'.'optcouenne.def'   
CBC      .'.'.'coincclib64.dll',        COUENNE  .'.'.'optipopt.def'     
COUENNE  .'.'.'optbonmin.def'    ,    COUENNE  .'.'.'optcbc.def'       ,    COUENNE  .'.'.'coincclib64.dll'
IPOPT    .'.'.'optbonmin.def'    ,    IPOPT    .'.'.'optcbc.def'       ,    IPOPT    .'.'.'optcouenne.def'   
IPOPT    .'.'.'coincclib64.dll',        SCIP     .'.'.'optipopt.def'     
SCIP     .'.'.'optbonmin.def'    ,    SCIP     .'.'.'optcbc.def'       ,    SCIP     .'.'.'optcouenne.def'   
SCIP     .'.'.'coincclib64.dll',        OSISOPLEX.'.'.'optipopt.def'     
OSISOPLEX.'.'.'optbonmin.def'    ,    OSISOPLEX.'.'.'optcbc.def'       ,    OSISOPLEX.'.'.'optcouenne.def'   
OSISOPLEX.'.'.'coincclib64.dll',        OsiCplex .'.'.'optipopt.def'     
OsiCplex .'.'.'optbonmin.def'    ,    OsiCplex .'.'.'optcbc.def'       ,    OsiCplex .'.'.'optcouenne.def'   
OsiCplex .'.'.'coincclib64.dll',        OsiGurobi.'.'.'optipopt.def'     
OsiGurobi.'.'.'optbonmin.def'    ,    OsiGurobi.'.'.'optcbc.def'       ,    OsiGurobi.'.'.'optcouenne.def'   
OsiGurobi.'.'.'coincclib64.dll',        OsiMosek .'.'.'optipopt.def'     
OsiMosek .'.'.'optbonmin.def'    ,    OsiMosek .'.'.'optcbc.def'       ,    OsiMosek .'.'.'optcouenne.def'   
OsiMosek .'.'.'coincclib64.dll',        OsiXpress.'.'.'optipopt.def'     
OsiXpress.'.'.'optbonmin.def'    ,    OsiXpress.'.'.'optcbc.def'       ,    OsiXpress.'.'.'optcouenne.def'   
OsiXpress.'.'.'coincclib64.dll'
                                         )
                                /
$offempty
;

SET APM(ppp,prda,prd) 'Alias Product Map' /
  (        vs8,deg,leg,wei).COINBONMIN. BONMIN
  (        vs8,deg,leg,wei).BONMINH.    BONMIN
  (        vs8,deg,leg,wei).COINCBC.    CBC
  (        vs8,deg,leg,wei).COINCOUENNE.COUENNE
  (        vs8,deg,leg,wei).COINIPOPT.  IPOPT
  (        vs8,deg,leg,wei).IPOPTH.     IPOPT
  (        vs8,deg,leg,wei).COINSCIP.   SCIP
  (aix,sox,vs8,deg,leg,wei).CONOPT.     CONOPTD
  (aix,sox,vs8,deg,leg,wei).CONOPT3.    CONOPTD
  (    sox,vs8,deg,leg,wei).LGO.        LGOD
  (aix,sox,vs8,deg,leg,wei).LOGMIP.     JAMS
  (aix,sox,vs8,deg,leg,wei).MILESE.     MILES
  (aix,sox,vs8,deg,leg,wei).MINOS.      MINOS55
  (aix,sox,vs8,deg,leg,wei).MINOS5.     MINOS55
  (aix,sox,vs8,deg,leg,wei).PATH.       PATHC
  (        vs8,deg,leg,wei).SOPLEX.     OSISOPLEX
/;

SET prdAlias(prda) 'Aliases of Products';
option prdAlias < APM;

$call rm -f apilib.txt datalib.txt emplib.txt modlib.txt tstlib.txt wrapperlib.inc api.inc

$gdxin "%gams.sysdir%gmspfmap"
$load curfil=pfmap

$gdxin allpfmap
$load lstall=pfmap

$if %GOLD% == 1 $goto mkallpf

lstfil(prd,dir,fil)=lstall('%system.buildcode%',prd,dir,fil);

option curprd<curfil, lstprd<lstfil;

* Skiplist
$onempty
set sPrd(prd)   'Products to be skipped' /
                (GAMSDOTNET, GAMSJAVA, GAMSPYTHON)      'These are skipped in mkpfmap, see #2579'
                Documents                               'too many files and changing too often'
                /;
$offempty

expprd(prd)$(not prdAlias(prd)) = lstprd(prd) and not drpprd('%system.buildcode%',prd) or newprd('%system.buildcode%',prd);
expfil(prd,dir,fil)$(not prdAlias(prd)) = lstfil(prd,dir,fil) and not (drpfil('%system.buildcode%',prd,dir,fil) or drpprd('%system.buildcode%',prd)) or newfil('%system.buildcode%',prd,dir,fil);

nexprd(curprd)$(not prdAlias(curprd) and not sPrd(curprd)) = not expprd(curprd);
misprd(expprd)$(not prdAlias(expprd) and not sPrd(expprd)) = not curprd(expprd);
drwprd(prd)$(not prdAlias(prd) and not sPrd(prd))          = drpprd('%system.buildcode%',prd) and not lstprd(prd);
adwprd(prd)$(not prdAlias(prd) and not sPrd(prd)   )       = newprd('%system.buildcode%',prd) and     lstprd(prd);

nexfil(curfil(prd,dir,fil))$(not prdAlias(prd) and not sPrd(prd)) = not expfil(curfil);
misfil(expfil(prd,dir,fil))$(not prdAlias(prd) and not sPrd(prd)) = not curfil(expfil);
drwfil(prd,dir,fil)$(not prdAlias(prd) and not sPrd(prd))         = drpfil('%system.buildcode%',prd,dir,fil) and not lstfil(prd,dir,fil);
adwfil(prd,dir,fil)$(not prdAlias(prd) and not sPrd(prd))         = newfil('%system.buildcode%',prd,dir,fil) and     lstfil(prd,dir,fil);

nexfila(prdAlias,dir,fil) = curfil(prdAlias,dir,fil) and not sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),expfil(prd,dir,fil));
* This is slow, use loop instead
* misfila(prdAlias,dir,fil) = (not curfil(prdAlias,dir,fil)) and sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),expfil(prd,dir,fil));
set fa(dir,fil),fo(dir,fil);
loop(APM('%system.buildcode%',prda,prd)$(not sPrd(prd)),
  fa(dir,fil) = curfil(prda,dir,fil);
  fo(dir,fil) = expfil(prd,dir,fil);
  misfila(prda,dir,fil) = not fa(dir,fil) and fo(dir,fil);
);
wronga(prdAlias) = sum(APM('%system.buildcode%',prdAlias,prd)$(not sPrd(prd)),1) and (sum(APM('%system.buildcode%',prdAlias,expprd),1)=0);

option nexfil:0:0:3,misfil:0:0:3,drwfil:0:0:3,adwfil:0:0:3,nexfila:0:0:3,misfila:0:0:3,wronga:0:0:3;

abort$(card(nexprd) + card(misprd) + card(drwprd) + card(adwprd) + card(nexfil) + card(misfil) + card(drwfil) + card(adwfil) + card(nexfila) + card(misfila) + card(wronga))
      nexprd, misprd, drwprd, adwprd, nexfil, misfil, drwfil, adwfil, nexfila, misfila, wronga;
$exit
$label mkallpf
set curall(ppp,prd,dir,fil)     Files of current version containing all platforms;
curall(ppp,prd,dir,fil) = lstall(ppp,prd,dir,fil) and not (drpfil(ppp,prd,dir,fil) or drpprd(ppp,prd)) or newfil(ppp,prd,dir,fil);
execute_unload 'allpfmap' curall=pfmap;