Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

MMS with many (>20) CMS Libraries fails (EXETOOBIG)

 
SOLVED
Go to solution

MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Recently we updated our DECSet installation to Version 12.8 on OpenVMS 8.3. Now we can no longer build our product using MMS. We have found out that the translation of "MMS$CMS_LIBRARY" ("$@") has changed.

In previous versions this special macro has been translated to a single CMS-Library. With the new DECSet this macro is translated to the full list of CMS-Libraries used.

Actually we have 88 Libraries. The special macro $@ translate this into a string with much more than 1019 characters which is illegal and leads into the MMS-F-EXETOOBIG error.


Is there a way to say MMS to use the old style to translate $@ ? Or is there another way to handle this without completely reorganize the description-files or CMS Libraries?

Attached you find a ZIP file containig mmstest.com and mmstest.log - a sample that demonstrate the failure. The interesting part are the last 5 lines of the logfile.
11 REPLIES 11
Hein van den Heuvel
Honored Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Dominik,

A simple 'click' and open for the attachment singles a 'corrupt zip' in my environment. I'm not going try more than that to try to help. It may be a problem in my environment, but others may have this also.
May I suggest a simple .TXT attachment with all file in there, and those 'interesting last lines' duplicated on top?

As for the problem... sorry, no current experience with the new version. It might be a bug or release notes documented new usage rule?

Not having seen the log, and the long logical, I wonder whether there is any hope in making the list short enough by makign the elements shorter... as a workaround?
Is a library now is for example "my_development_disk:[company.subsidary_library]file"
could you define "mycms" as a concealed logical / rooted director pointing to the direcotory. Possibly even add a short alias to the last directory:
$.. mycms="my_development_disk:[company.]"
$set file/ent=l subsidary_library.dir
$sample library: "mycms:[l]file"

fwiw... (not much)...
Hein.

Ian Miller.
Honored Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

There is a patch kit for DECset V12.8

Here is the text file
ftp://ftp.itrc.hp.com/openvms_patches/layered_products/alpha/DECSET128ECO1_ALPHA.txt

here is the kit
ftp://ftp.itrc.hp.com/openvms_patches/layered_products/alpha/DECSET128ECO1_ALPHA.EXE

However it does not appear to include your problem in the release notes. I can't see the change documented in the V12.8 release notes.

I think you have to report this one to HP.

____________________
Purely Personal Opinion
Wim Van den Wyngaert
Honored Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

In the list of macro's I find other macro's labeled "current target". May be try these.

MMS$TARGET $@ The current target
MMS$TARGET_NAME $* The current target (excluding file type)
MMS$SOURCE $< The source file specification
MMS$SOURCE_LIST $+ Comma-separated list of all sources
MMS$CHANGED_LIST $? Comma-separated list of sources that are
newer than the current target
MMS$TARGET_SPEC $> The current target

Wim
Wim

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Hein,

attached you find a text version of the contents of the zip file.
If I don't find any other solution we may have to use many short logicals for each cms library as you suggest. I hope we don't grow up to 500 cms libraries...

Ian,

we've also installed the eco. Btw, DECSet v12.7 works as we expect (I have checked this a couple of minutes ago).

Wim,

were you able to unzip my first attachment? mmstest.com generates a file named "descrip.mms" This file is very short (3 lines). This description file uses the built-in macro for .c~.c which itself uses the special macro $@ . Okay, we could overwrite all special macros. But changes in the description file have to be made in every description file within the cms to be able to build old versions of the project, too. This is not really applicable.

Maybe we really have to use short logicals.

Dominik
Wim Van den Wyngaert
Honored Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

No I couldn't open the zip file.

Wim
Wim
Wim Van den Wyngaert
Honored Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

The txt is still not fine. I had to save it and open it with wordpad.

But now I understand the problem. But I'm just using the basics of cms/mms. Could you overrule the $@ on invocation of mms (with /macro and use $> ) ?

Wim
Wim

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Wim,

the source is a CMS element. The built-in rule needs the name of the (current) CMS Library; not the current target. I could redefine the built-in targets. But this is not an option: We are using many built-in rules which all look like the example below and we cannot update every generation of the build-procedure.
For now, we just (or at least) have the option to use short logical names.

Dominik

built-in rule:

.C~.C :
IF "$(MMS$CMS_LIBRARY)" .NES. "" THEN -
DEFINE/USER CMS$LIB $(MMS$CMS_LIBRARY)
$(CMS) FETCH $(MMS$CMS_ELEMENT) -
/OUTPUT=$(MMS$TARGET_NAME).C -
$(CMSFLAGS) $(CMSCOMMENT)


$ help mms desc spec

MMS

Description_File

Special-Macros


MMS$TARGET $@ The current target
MMS$TARGET_NAME $* The current target (excluding file type)
MMS$SOURCE $< The source file specification
MMS$SOURCE_LIST $+ Comma-separated list of all sources
MMS$CHANGED_LIST $? Comma-separated list of sources that are
newer than the current target
MMS$TARGET_SPEC $> The current target

If the target is a module in an OpenVMS library...
MMS$LIB_ELEMENT $% Element spec (i.e., module=alias)
MMS$TARGET $@ The library file specification
MMS$TARGET_NAME $* The module name
MMS$TARGET_SPEC $> The library file specification

If the source is a CMS element...
MMS$CMS_ELEMENT $< The CMS element
MMS$CMS_GEN $& The CMS generation
MMS$CMS_LIBRARY $@ The CMS library specification
x2084
Trusted Contributor

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Can you show the logical CMS$LIB in both cases?

I think that MMS$CMS_LIBRARY expands to what CMS$LIB defines. I doubt that this expansion changed in a version of MMS. But as usual, I may be wrong.

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Hello Hartmut,

cms$lib is defined the same in DECSet V12.7 (working) and V12.8 (not fully working)


mms working:

$ show log cms$lib
"CMS$LIB" = "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.module1.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.module2.cms]"
= "VAS$USER:mms not working:


mms fails:

$ show log cms$lib
"CMS$LIB" = "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.module1.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.module2.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory01.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory02.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory03.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory04.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory05.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory06.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory07.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory08.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory09.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory10.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory11.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory12.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory13.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory14.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory15.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory16.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory17.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory18.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory19.cms]"
= "VAS$USER:[ANDELSHAUSER.TEMP.mmstest.longdummydirectory20.cms]"
x2084
Trusted Contributor
Solution

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

A workaround: make a local copy of SYS$SYSDEVICE:[VMS$COMMON.SYSHLP.EXAMPLES.MMS]MMS$DEFAULT_RULES.MMS and remove the "IF "$(MMS$CMS_LIBRARY)" .NES..." line[s]. Add /RULES= to your MMS command. However, this may break something else, if you use MMS$CMS_LIBRARY in your dependcies or actions.

With CMS$LIB being a search list MMS will fetch the right source module, anyway. Then there is no need to redefine the cms library (with /user) to the specific library the source module was found.

With the logical CMS$LIB being the same for the working and failing environment, obviously something in MMS is broken. I incorrectly expected that in both MMS versions CMS$LIB would be used for MMS$CMS_LIBRARY, because it would work (and you say so) for short search lists.

Please send a bug report.

Re: MMS with many (>20) CMS Libraries fails (EXETOOBIG)

Hartmut,

thank you for your reply. This seems to be the best workaround to rebuild any class within the CMS libraries without changing too much.

Dominik