ah, shoot - of course, I let EVALSET work on the temporary variables tmp.baz & tmp.foo only at the end! So that the regexp()s just at the start are not happening there... On 2018-11-02 14:57, Thomas Hartmann wrote: > btw: are/is the transforms/syntax actually a stack?? (in one or the > other direction?) > > I just noticed, that the order of steps seems to be 'inverse' to what I > have naively assumed, i.e., the rules top-down [1]. > > mytmp.baz gets true when evaluating the requirements string - that got > modified 'before' etc. ð > > Cheers, > Thomas > > > [1] >> condor_transform_ads -verbose -rule /tmp/my.rule.order > /tmp/my.classads.sl6 > EVALMACRO tmp.MyRequirements to > regexps("(.*)SL6(.*)",unparse(Requirements),"\\1CentOS7\\2") > tmp.MyRequirements = ( OpSysAndVer == "CentOS7" && ( > TARGET.Arch == "X86_64" ) ) > SET Requirements to ( OpSysAndVer == "CentOS7" && ( TARGET.Arch == > "X86_64" ) ) > SET +SingularityImage to "/foo/sl6" > EVALSET mytmpfoo to regexp("OpSysAndVer == \"SL6\"",unparse(Requirements)) > SET mytmpfoo to false > EVALSET mytmpbaz to regexp("OpSysAndVer == > \"CentOS7\"",unparse(Requirements)) > SET mytmpbaz to true > +SingularityImage = "/foo/sl6" > DiskUsage = 250000 > executable = mypayload.sh > input = mypayload.data > mytmpbaz = true > mytmpfoo = false > requirements = ( OpSysAndVer == "CentOS7" && ( TARGET.Arch == "X86_64" ) ) > universe = vanilla > > > > On 2018-11-02 12:40, Thomas Hartmann wrote: >> Hi all, >> >> a short question how if/else in the old-style syntax handles false >> returns from macros: >> >> ~~> I have a set of class ads 'my.classads.{sl6,el7}' (see attachement) >> which I want to transform with 'my.rule' >> >> my.rule has an if/else on the return of a regexp(), that is supposed to >> return true when finding 'SL6' and false else. Applying my.rule to the >> ClassAds with the stringified requirements containing 'SL6' works fine [1]. >> But if I apply the same rule to a string where regexp does not match, >> the whole transform just fails [2] - where I would have expected that >> the rule would just take the else branch. >> >> To test if regexp() does not return ERROR on a non-string argument or >> so, in a cross-check 'my.rule.set' just sets the result of regexp() as >> ClassAd [3]. >> For >> my.classads.{sl6,el7} >> the return values are a boolean >> WhatIsRegexp = {true,false} >> as far as I can see ~~> and my.rule should take the else-branch on >> false, or? >> >> If the target is not a string but an ad, EVALSET regexp() ends up as >> undefined [4], which I suppose is the way for EVAL* to interpolate ERROR. >> >> Long story short: why does the transform fail on 'if false'? ;) >> >> Cheers and thanks for any hints, >> Thomas >> >> >> >> [1] >>> condor_transform_ads -verbose -rule /tmp/my.rule /tmp/my.classads.sl6 >> EVALMACRO tmp.MyRequirements to >> regexps("(.*)SL6(.*)",unparse(Requirements),"\\1CentOS7\\2") >> tmp.MyRequirements = ( OpSysAndVer == "CentOS7" && ( >> TARGET.Arch == "X86_64" ) ) >> SET Requirements to ( OpSysAndVer == "CentOS7" && ( TARGET.Arch == >> "X86_64" ) ) >> SET +SingularityImage to "/foo/sl6" >> +SingularityImage = "/foo/sl6" >> DiskUsage = 250000 >> executable = mypayload.sh >> input = mypayload.data >> requirements = ( OpSysAndVer == "CentOS7" && ( TARGET.Arch == "X86_64" ) ) >> universe = vanilla >> >> [2] >>> condor_transform_ads -verbose -rule /tmp/my.rule /tmp/my.classads.el7 >> Transform of ad failed! >> >> [3] >>> condor_transform_ads -verbose -rule /tmp/my.rule.set >> /tmp/my.classads.{sl6,el7} >> >> [4] >>> condor_transform_ads -verbose -rule >> /tmp/my.rule.set.nonstringasregexptarget /tmp/my.classads.el7 >> ... >> WhatIsRegexp = undefined >> >> >> >> >> _______________________________________________ >> HTCondor-users mailing list >> To unsubscribe, send a message to htcondor-users-request@xxxxxxxxxxx with a >> subject: Unsubscribe >> You can also unsubscribe by visiting >> https://lists.cs.wisc.edu/mailman/listinfo/htcondor-users >> >> The archives can be found at: >> https://lists.cs.wisc.edu/archive/htcondor-users/ >> >> >> >> _______________________________________________ >> HTCondor-users mailing list >> To unsubscribe, send a message to htcondor-users-request@xxxxxxxxxxx with a >> subject: Unsubscribe >> You can also unsubscribe by visiting >> https://lists.cs.wisc.edu/mailman/listinfo/htcondor-users >> >> The archives can be found at: >> https://lists.cs.wisc.edu/archive/htcondor-users/
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature