From 7d05631f7130c8a98c96eda12120102d37d391ed Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Sun, 6 Oct 2024 07:29:44 +0000 Subject: [PATCH] test1 passes --- README.md | 22 +- developer/groovy/build | 34 ++- .../AriadneGraph$_all_DAG_DF_closure7.class | Bin 2210 -> 2210 bytes .../AriadneGraph$_all_DAG_DF_closure8.class | Bin 2214 -> 2214 bytes .../AriadneGraph$_all_DAG_DF_closure9.class | Bin 2715 -> 2408 bytes ...neGraph$_good_dependency_q_closure10.class | Bin 2393 -> 2393 bytes ...riadneGraph$_mark_node_form_closure3.class | Bin 0 -> 2056 bytes ...the_wellformed_f_closure3$_closure13.class | Bin 2094 -> 0 bytes ...raph$_mark_the_wellformed_f_closure3.class | Bin 4403 -> 0 bytes ...aph$_markup_graph_f_descend_closure4.class | Bin 2019 -> 2019 bytes ...aph$_markup_graph_f_descend_closure5.class | Bin 2115 -> 2115 bytes ...aph$_markup_graph_f_descend_closure6.class | Bin 3313 -> 3313 bytes ...iadneGraph$_newer_than_all_closure11.class | Bin 2708 -> 2708 bytes ...Graph$_run_build_scripts_f_closure12.class | Bin 3784 -> 2054 bytes ...Graph$_run_build_scripts_f_closure13.class | Bin 0 -> 3900 bytes ...Graph$_run_build_scripts_f_closure14.class | Bin 0 -> 2084 bytes ...eGraph$_run_build_scripts_f_closure3.class | Bin 3794 -> 0 bytes developer/groovyc/AriadneGraph.class | Bin 17135 -> 18824 bytes developer/groovyc/AriadneGraph.groovy | 225 ++++++++++-------- .../AriadneGraph$_all_DAG_DF_closure7.class | Bin 2210 -> 2210 bytes .../AriadneGraph$_all_DAG_DF_closure8.class | Bin 2214 -> 2214 bytes .../AriadneGraph$_all_DAG_DF_closure9.class | Bin 2715 -> 2408 bytes ...neGraph$_good_dependency_q_closure10.class | Bin 2393 -> 2393 bytes ...riadneGraph$_mark_node_form_closure3.class | Bin 0 -> 2056 bytes ...the_wellformed_f_closure3$_closure13.class | Bin 2094 -> 0 bytes ...raph$_mark_the_wellformed_f_closure3.class | Bin 4403 -> 0 bytes ...aph$_markup_graph_f_descend_closure4.class | Bin 2019 -> 2019 bytes ...aph$_markup_graph_f_descend_closure5.class | Bin 2115 -> 2115 bytes ...aph$_markup_graph_f_descend_closure6.class | Bin 3313 -> 3313 bytes ...iadneGraph$_newer_than_all_closure11.class | Bin 2708 -> 2708 bytes ...Graph$_run_build_scripts_f_closure12.class | Bin 3784 -> 2054 bytes ...Graph$_run_build_scripts_f_closure13.class | Bin 0 -> 3900 bytes ...Graph$_run_build_scripts_f_closure14.class | Bin 0 -> 2084 bytes ...eGraph$_run_build_scripts_f_closure3.class | Bin 3794 -> 0 bytes release_candidate/AriadneGraph.class | Bin 17135 -> 18824 bytes release_candidate/build | 34 ++- tester/test0/{env_test0 => env_test} | 0 tester/test0/{test0.sh => test.sh} | 2 +- tester/test1/TestGraph.groovy | 21 ++ tester/test1/env_test | 11 + tester/test1/test.sh | 16 ++ tester/test1/transcript_dev.txt | 78 ++++++ tester/test1/transcript_tester.txt | 54 +++++ 43 files changed, 365 insertions(+), 132 deletions(-) create mode 100644 developer/groovyc/AriadneGraph$_mark_node_form_closure3.class delete mode 100644 developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class delete mode 100644 developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class create mode 100644 developer/groovyc/AriadneGraph$_run_build_scripts_f_closure13.class create mode 100644 developer/groovyc/AriadneGraph$_run_build_scripts_f_closure14.class delete mode 100644 developer/groovyc/AriadneGraph$_run_build_scripts_f_closure3.class create mode 100644 release_candidate/AriadneGraph$_mark_node_form_closure3.class delete mode 100644 release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class delete mode 100644 release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class create mode 100644 release_candidate/AriadneGraph$_run_build_scripts_f_closure13.class create mode 100644 release_candidate/AriadneGraph$_run_build_scripts_f_closure14.class delete mode 100644 release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class rename tester/test0/{env_test0 => env_test} (100%) rename tester/test0/{test0.sh => test.sh} (86%) create mode 100644 tester/test1/TestGraph.groovy create mode 100644 tester/test1/env_test create mode 100755 tester/test1/test.sh create mode 100644 tester/test1/transcript_dev.txt create mode 100644 tester/test1/transcript_tester.txt diff --git a/README.md b/README.md index 8202030..991e4ee 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,11 @@ -Theseus volunteered to enter the inescapable maze designed by Daedalus to slay -the Minotaur and put an end to the Athenian sacrifices. Ariadne, fearing for his -life and desperate to help, thinks to give him a ball of string, which Theseus -then uses to trace his way out of the maze thus saving his life. +Ariadne feared for the life of Theseus, who she had fallen in love with, because +he was to enter the maze designed by Daedalus. She saved him by giving him +a ball of string. Building experimental code for GQL_to_Cypher has proven to be as complex as -navigating Daedalus's maze. The traditional build tool `make` does not +navigating Daedalus's maze. As it turns out, `make` does not backward-chain pattern rules. Gradle/Groovy tends to build projects in -layers. However, in experimental code, it is often the case that -no complete layer will build without errors. - -Ariandne will attempt to build all that is buildable, no matter where in -a the dependency graph the buildable node is found, while leaving other -parts untouched. +layers. To use the Ariadne build tool, a developer writes their dependency graph in Groovy, utilizing a map and a set of regular expression matching @@ -19,9 +13,7 @@ functions. Then, to build or clean up the project, the developer invokes Ariadne. Ariadne was originally written in Groovy because it evolved incrementally as -part of a Gradle script. While there are plans to port the build tool to other -languages, Groovy has proven to be a practical language for this purpose, so this -is currently not a priority. +part of a Gradle script. + -Ariadne is a project in progress. diff --git a/developer/groovy/build b/developer/groovy/build index 1acf09b..2fb7a39 100755 --- a/developer/groovy/build +++ b/developer/groovy/build @@ -10,9 +10,18 @@ def include_a_class( a_class_fp ){ } } -// Main build function for the Shell UI -def build(graph_definition_fp){ - // Load the graph class dynamically +// Shell User Interface to the build function +def build(graph_definition_fp, root_node_labels){ + + // Print summary of what we are doing + println "Summary: Building targets for graph '${graph_definition_fp}.class'" + if (root_node_labels.isEmpty()) { + println "No build targets specified. Please provide root node labels to build." + System.exit(0) + } + println "Building targets: ${root_node_labels.join(', ')}" + + // Load the dependency graph class from arg[1] def graph_definition_class = include_a_class(graph_definition_fp) if(graph_definition_class){ println "build:: loaded ${graph_definition_fp}.class" @@ -24,20 +33,23 @@ def build(graph_definition_fp){ // Get the node_map and node_f_list from the graph class def node_map = graph_definition_class.get_node_map() def node_f_list = graph_definition_class.get_node_f_list() - // println "node_map: ${node_map}" - // println "node_f_list: ${node_f_list}" + println "node_map: ${node_map}" + println "node_f_list: ${node_f_list}" - graph = new AriadneGraph(node_map ,node_f_list) - - // Call the build function in AriadneGraph - // AriadneGraph.run_build_scripts_f(node_map ,node_f_list) + // Create an instance of AriadneGraph, and run the build scripts + def graph = new AriadneGraph(node_map ,node_f_list) + graph.run_build_scripts_f(root_node_labels) } // Entry point for the script if(args.length == 0){ - println "Usage: ./build " + println "Usage: ./build [root_node_labels...]" System.exit(1) } +// Get graph definition file and root node labels def graph_definition_fp = args[0] -build( graph_definition_fp ) +def root_node_labels = args.length > 1 ? args[1..-1] : [] + +build(graph_definition_fp, root_node_labels) + diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure7.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure7.class index 4231e3606fd258db1e636bc1740e00dfa59d722e..8857e4d2ef542d233efbb9075e1d99df44bea14b 100644 GIT binary patch delta 13 VcmZ1^xJYorVs^&R$xGP(0RST(1ycY3 delta 13 VcmZ1^xJYorVs=Ki$xGP(0RSS@1w;S< diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure8.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure8.class index a0125cfc05f98bc7e6faf8bcc9c7e1305d6246dd..48d0c812bd5b8a6345ea84b90b1119384363e30f 100644 GIT binary patch delta 13 VcmZ1`xJ+=va(2dy$t&3Z0RSWl1$F=c delta 13 VcmZ1`xJ+=va(2du$t&3Z0RSVq1!e#M diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure9.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure9.class index 799d4d7ef83f18b571a63f4973c04f618463e65e..7be96edafa4690b30b15b89f4e232105e6ef439f 100644 GIT binary patch delta 819 zcma))&rcIk5XZl7f3>VDt!=ls0xBS|wiJIMXced+C{U29SWy%!Ry0&=0-AWSXOHF` zIC$2Z38>VDM6V`Z{1-fW^=^za+f}a~c4prE{LH@h(*7PXzx>+%1YiJnH_bsIb0V+I zxiX`5%C90Nqe^d!jV2Qsc3Wsfr~wN0SP0jx7P+jv+0iMWE*IAXV(yC{cBC7wi7p%z z(3T3NQV>Zwt`3M^`Al7R4&#W4LpT~Ta7@6s|L{q9r6@4TBd3DL(H~(LDYaQy*2l!K z+|oOOXE0(SgHicS?-ygT$;jB}aNfi?CM@higrTMcT=~&()c~gDx{+(UfLRkW$O%{k zH(gvSjFt+ks}?R{hy#~pLtr6xl^{yx^2*~!7Oo+0VjkD!)4=PB7FKv)fHZAO+T>BB zpCgJGQ5q1i5hrK&`ze}IT=IsEC$gip#ul}u@e;GEIaWY%~d3lq+3aE;{>ol0R@XB znHA!JH#J@__&e3cNpGq^8ZO0no308KFi6nv%dP6rR^9KH-y%OZKjp zAN64kgBYSJ2B?e>2`|>2sN!ryc|{~OOm4hIHkbVSy{i`whcBkXFM2Cxd?EZIUMWc}|dScggdb*oixFG8MYeqMy=7ryit!1E>*g A#Q*>R delta 1053 zcmaJ=OHUI~6#njXIxW)?YI%-S9-=&2o<2Z%i9AFU5adydAWmU;$k0J3L|1j|lH7$0 zH!jqbCg1}bVqBS+xbP2{xHiV0V2tOs6BcUR-0wW@Ip25A-1!!Gl&^mJwf`PK3-0Wy z9n9<5GS_4FhROR_lv&(x=Wc%u@DHq>e_?%<1t?M>L)VavoGeHv*5J=rM>QPISf#vO zdcmsscd0ZGLRdu&Y8m7?!?L`n=f$oT*2KqL4~tIWw2G5BlcS)SL0OJ(*()Z)w8Kio zg8QA6t7pSPCdiw(Wzg0X2O z#wj+wZp1eh?DbV6v24dZ=w{Gjwr!b4d?FsR?=s{QXP$3LLofPN^xz_YBKNb){D)lO z8^n-`D;Q>IA`;&0E@UHo*xePlhA|bR7}pR$uGq#Tf9$Sf*ZF7nX!#UwsEA^ks7URQ znJ{`RV`D?ZO$>;{EbmgL^X6!7%eGfG*EE=jshGzC-%*|=-F`{z7$Bq#r;+wcs0ud1 z2gpM{t;7R{0u<7@MBaV4kVV)S3fI2Hk-AnzS3Fk68B+-C!93vNGRp2-!g>`}~DQyXHuCyiO$!SXnbkogBR5@}+C?oC% zL$49sLtU7#gpi<&U>|M34&^1>rc)6tY=&ecK{KTb4`c+HPVB)(cq&^-27%K^HDK0%{xqK4+j5`k()y!S}ZYzl=*5pi(hI zH?(IZ-OZnTis0M_^$Kh325 diff --git a/developer/groovyc/AriadneGraph$_good_dependency_q_closure10.class b/developer/groovyc/AriadneGraph$_good_dependency_q_closure10.class index e02400f0b8ad736cb73d849092c0c504e68d1b0a..b4b33ad54a674bcd01ef5440b1a7746db989baa7 100644 GIT binary patch delta 25 gcmca9bW>H+OBP(=;r**LV131&m>~?b!CSK+9ad<%v%$AxFm!UhVa7-q(yGA!q6kMx1=!@Irn zh#PMCs3d<>q~R1ahIF>)>aJ;2EWOvOid~zbP>alr?^@*Cv<0yc=$09jW|KT@Rv6d= zhRLg@Fx~463nzoMts#S16$!k}kZ||R9+}p{Ssz;*iapb``!08?f>IC$XUH5)li^fT z`t_+Hge|+GTNcBG2!s(d5uQjkhIOvHjw#yJPS;ZKA<_9}F%+B|lluA!J|e>AllX)I zNt|cM=N=vf9~SwB<-AAPf{Hoh7$&+D-A$qpr_PQsT#UjxAaMP*DN2LoQdP7Ls)9({ z)eWxTBE!^wV{ia#e3PBZSVKH;SLLMg}{#)ZXI-a zgnBhhbzmUtQa4>*)=V}Dcc2G3em(7yMW;IzV0H--F$&|;w6XnH7}y4`mSzGg~)>DA%L`LBCeqM{@~ zzz|ETvPwYuH>B|vwWgHQlBDxTdiol1`T1#BG&Jb9~&0XR`H1B6Fes6!~ZLxx{1A zi=p9plKy`8;+^*GNAa>)mhsXFf_No}vPwEK%0l4@u4iI@AXzxXw~znATCMmJDJeZf ztx@|MYsDwHEdwz;pp%+(=3mSz*htgV<8I(DP5%->;t< S#?N$%LBTJ9#$|dcV)1_h#5%kH literal 0 HcmV?d00001 diff --git a/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class deleted file mode 100644 index 1df2a60131fae7f0bb33409621f5bc4b0f8eadb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2094 zcmbVNZExFD6n<`!)~V+vH_9f+$3Hd-^g}? z`UjBsA&9R7q^%knUy=At2yt$lr0yDNfGk~KpL^~(&w0*^|NQ&u?*OjgTZSu}u4ObG zUUrRMCtdFv?tb0x@cMV$wp+sO@@BnNH*MkdUA~?k@7C58FowmpE5zWSU>i=mPzsb3 zL>X3v+b)=*$vZ~hD~z<iyN1u3lN&Q+DvaZDaD(iGr7uFKAkMJ#f)E(g zqaYY&o1$dcHp9h?{?Hg0K`3_{54q_VvnNFwG|V$3)1GhmmRYh5&#O2s!I0CZ#>`tb znX-gK{ET#q3`)ID7IsPu>^_0GW;vGs5yQ$95GOHY_cScxB^5Ee%n0=|KAaWH8Hjye*x`OhG;bPC)8<}U7h=EPD~6zs zaD^ntF76)m_!RX@xZ*|^WO-ICpBFV;MnT0Typx#48dXi8z|hG2@7(L*1}=}u451!% zf`)axmm)UbCw95(3YR)I-R6FE*apOgF)VL}vzhEMqmv`5vp8KCsV$P)QBe$q6yS#_ zs#wA`hP7!a8xN4G=~_L1>%ix7#B4T=9;HqJHPF0lq=`$0d^mNJt_}x1Q6~4FU{l4% z*wT^*~i9u1rC z%7r1JTMoa|?>4wQlFUu`UGcwrY*ylv@Q?D zvv>us(ih0oS-eJPa`!szBDAL&PpdTZ70satz0=At(Mmj1ac^WVNpFcDc8D*evLxp| ltts*{M{kuVlm1T8`@!&Z4h#62b`dD}W~jmNE`8;Y{|DrkNVxz2 diff --git a/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class deleted file mode 100644 index 07405867c34940f79e62e8719d2d4b1d78c2a167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4403 zcmbtX`F9i775<(jOF}4M2Asr&B!(EUWgC?y0cs~S*a63>Sc;5YleX$udbS43Gs z#BI~P+1hm9O!lOdq)l7M06uhfHz!j4-cA%Din8p9RL;uFf?g@7d@8$QI>wYt4MXh}lIglw$nhc-Ff5a}`Ls$> zHcJWn`vt^Nfyk|fX*jzDj?__osp8A%x6E?KaD7OY%Iz3Vpc&W15yrI%titLQXuvxX zX!2$o1j0_iC<|;$2c7X&5kzxWWvz-M?Lm{M5lR7V>FEM18HGmK^B6(NTm5v6z?M3o z)Nv;{ik3B5DaEik#87V#=&t9H>8Vn&GGUmh>0PNoGe0wEQnPVAC!=T=STSZ#GbrOT zh9i3uNTM^24s@-KpqplT1Oh|tSLTO+ntoaYkM)-lNa39t@!QUv3si)AVz^0zP|H!H zymzYP%*3!m0S(2{rZHCDEzr>35d%FQ&go@`IU0npcIeRrZo_U3A-so#DvM*-L-$We z=a6lcr0vWk(62;>aR+nl(rk`mAN8o`+gjzx5$XG@l( zw4t=y+?bVSzOZzU;HCqSVbO##CX|ixqirT;S^VMWxy& zq7U+rapXXf=DOuMih@9hI4u)&H1!xJ<1oOI5@M(ctZT393=@_jV*zL^>SMAPgRLQ| zBC+psG3PJ{3aTzJ|5JC!alKM>RA3C*x>;7&D(?%6=2ny++y6s`G+Y;~-j7#PcuYli7>~zs9M`h^ zNJ#cTfUna8_m5 zTmoyLsZOgZ&|Wv!>a>ti{DftsrmEL~-WEK*cG`;iqw&#|2ODyj=_9(Q?@P7#TLo23hu)rlq36G8tltL6aXS zE>e=OtM{7fqle|2wzJ8j9vQ1*=j1*^oz=v<$mRKE;xWVg&Q zuDr_eVXVbE_DB)ZHREbNf5*21d!H!BP07x#vuNq=X>4gsW?#knmd25ma8INqqTa4+ ziHw{kmB8=$yqOIGuo2he299dh%0Kgs&rSR{xHF}NYRWdcdMNE~M4NZ2c!8(p=sPjP`{6g;-1YB-Vw_V_**ZwS!d*0T*yk z=`Fgnz6%(h!%-^l@o68ZLI*}p;;GP%NONQk6UkSwK6?gJ&5;pKuRDW#e98Bd#R29p zGm8!0yo!$jp*ehN4xgJvlqZKnvq&Y+;la@`RTvF~> z<{q0!YTu~h+njfw!|~B%@(i9hizlmij!Q}HL>13-(s_zNh42SHHz9TryP_EIeup^x z2OBS9AK|)PY>WLH>+wg@?Z8!h9%rR{jBb6Ld{5vgp2Q@c=C%6_9>udv?C0r=h}?b#2vuu{MhHO#;8d>%P1uU#0LI z-c-aOG=Jt(eMG2pV$7c79DmF4FYa!f!2gxA21fATIF9kFV;kSLV5>Xc?2kLK%YDDq cAN&0Aeg60%e=PgsNB!~3KL6AH`$=s5AN?NE^#A|> diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure4.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure4.class index 761a9b686334b2108958dae001b76fc284b3589c..062667b5356fd56352fe31e0ccddd1e098e372ac 100644 GIT binary patch delta 13 VcmaFN|CoQnGd9Nklb^Hw0RS!Y2E70P delta 13 VcmaFN|CoQnGd9Lulb^Hw0RS!92DktK diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure5.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure5.class index 0ee5256c3151a9bf9860f0a606733c8844856a1c..5d177fd8637b7781a4db85fc6eede32602ed9d85 100644 GIT binary patch delta 14 VcmX>sa9Ci27(3(f&Eo7ji~uGy1Udi! delta 14 VcmX>sa9Ci27(3&E&Eo7ji~uGI1Tz2t diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure6.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure6.class index 408e316e59ccc490bd5eb593964f5ac870161eed..1b72f75f6fc6df17208e4f838dd7df6eb7457570 100644 GIT binary patch delta 26 icmew;`B8GiN^agW3|tIn8Jrl-F;p;|-@J|6nh^kphY2tM delta 26 icmew;`B8GiN^ahx3|tJy7@Qc6GgL5~*u0I~nh^koHwhE~ diff --git a/developer/groovyc/AriadneGraph$_newer_than_all_closure11.class b/developer/groovyc/AriadneGraph$_newer_than_all_closure11.class index 97d5002eaa99ce69b98ce8be9f3fb23c1720d2ec..ecf40dde185556780504bde04e1ee4cd80a5950f 100644 GIT binary patch delta 26 icmbOtIz@CtC@1ek25!bl3>u7+87vs5Y);}dVgvwQ5(akw delta 26 hcmbOtIz@CtC?{_t12Ad7%FV>1 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 RDjJPQE~9ZJl79pv{{@P!K6wBD literal 0 HcmV?d00001 diff --git a/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure14.class b/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure14.class new file mode 100644 index 0000000000000000000000000000000000000000..f0205aaaec7d0920d9c0cd173ffc530add47bfc4 GIT binary patch literal 2084 zcmb7FZExFD6n<`!)~V+mWfRSv2HeJ&|x-nA9(gBv^+@@Y#JF=Zh z{R2q+5WWwPwrXg6MdCm3PY~i<+sRyJ-W2KP`rLERdCqfQ?yrA5{u#jg&={(#uBrEJ z-gNcheo=Erw$>Y&R$ucB*Bttuwx=1E;-~b9Ag)x;;=E;gN(i!?NQJ zRKw}>eSPGqkrvtW%|os>xy@bO=l#izDKZuJeL1|ru<*|y7?k)m2{U9U0XD^+B}(oPJ3?^)dNO~NF16!f{YxeY!JOud zeD1bv3dA-zL*ZFR3}-Z9Jw!q{`%Xi*EQX5-ILk@*ml8P{C$;0drafpK4lN0<5~%^* zu}CGnc1jxROL(2(LPE-FH3FxtuQs*yjaqFni#HgM#hVP}(!FQV#YLgzddTdOj0Kb^ zNkf9?TXq(eG}U{GNKOjpi13dFrmY@bRa*9wnV%Fs&W?TnwAlzCNUMN%)Xq zR&?RSCC#>Yx}sSA4xfTmtjYKY4Fz+^%^-!F45dUM2_r#5lLpf`!f>EmkGl_pEdTcz zqo9S4Wo+V;(C{QK1zV_zgIf%;$U<0iqDkVco~p9HlqU_@r}QT&O8AV*$_k2E!8Y#5 z=-_jjRSlwCj2g$#tsR}7j-JK0#lnzln>N2SI_z;blFU+l7zbPWF#1+nHoXD?6PzYq z?xroC7MdUw8}$%{({VSCq@6o z%1>D6W}aZNo33`Ip5Q_^T_|?CnZm`+Ba|Q0Q;G+qmqItNME2NkfxmO%{fWOKt_pwo z3_+|#Ue-uQcv-4E#EnAgJ7g;-Sby*XHrmx+kQ34qw7cyeu~B`9+rkmUF0E9gbH8I= z!e*Y~Q{0K{<>_BUlsUnUP!{Ceqg5uU@RKFNz6_)?X7Ls6QjqXWY literal 0 HcmV?d00001 diff --git a/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure3.class b/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure3.class deleted file mode 100644 index 7cea6d1be805fb26aaab93f32778ffbf548af3c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3794 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 QYHNPB^*!HeFQm5r2W8^tQvd(} delta 6826 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 LC>-{4F0KAQ&}0^D diff --git a/developer/groovyc/AriadneGraph.groovy b/developer/groovyc/AriadneGraph.groovy index b65c1bc..93c7d12 100644 --- a/developer/groovyc/AriadneGraph.groovy +++ b/developer/groovyc/AriadneGraph.groovy @@ -143,85 +143,84 @@ class AriadneGraph { This must be run on the graph for `lookup_marked_good` to work. */ - /* - Given a node label list. Applies well_formed_q to each node and marks the - node accordingly. Returns 'all_wellformed' or 'exists_malformed'. - */ - def mark_the_wellformed_f(node_label_list ,boolean verbose = true){ - def all_wellformed = true - - def neighbors = node_label_list.collect{ neighbor_label -> - def neighbor_node = lookup(neighbor_label) - def form_errors = wellformed_q(neighbor_node) - if(form_errors.isEmpty()){ - neighbor_node.mark = neighbor_node.mark ?: [] as Set - neighbor_node.mark << 'wellformed' + def mark_node_form(node ,verbose = true){ + println("mark_node_form::node: ${node}") + + def form_errors = wellformed_q(node) + + if( form_errors.isEmpty() ){ + set_mark(node ,'wellformed'); + return 'wellformed' + } + + if(verbose){ + if(node.label && node.label.length() > 0){ + print("node ${neighbor_node.label} is malformed due to:") } else { - all_wellformed = false - if(verbose){ - if(neighbor_node.label && neighbor_node.label.length() > 0){ - print("node ${neighbor_node.label} is malformed due to:") - } else { - print("anonymous node is malformed due to:") - } - form_errors.each { error -> print(" ${error}") } - println("") - } + print("anonymous node is malformed due to:") } - neighbor_label + form_errors.each { error -> print(" ${error}") } + println("") } - return all_wellformed ? 'all_wellformed' : 'exists_malformed' + return 'malformed' } + /* Given a path stack initialized with the path root ,descends to a leaf node while looking for cycles. Marks nodes as 'cycle_member' if a cycle is detected. Marks nodes as `wellformed` if `wellformed_q`. Returns a set of - tokens indicating the status: 'cycle_found' ,'defacto_leaf_node' ,and + tokens indicating the status: 'cycle_found' ,'defacto_leaf' ,and 'exists_malformed'. + + the de-fact leaf node test .. + // a 'de-facto' leaf node test .. subtleties here because we have not yet + // determined if the nodes we are wellformed. This is purposeful ,as + // this function does not know about the relationships between the + // possible error marks. + + */ def markup_graph_f_descend(path_stack ,boolean verbose = true){ def ret_value = [] as Set + if( path_stack.isEmpty() ){ + println( "markup_graph_f_descend:: given null to descend from") + return ret_value + } def local_path = path_stack.collect{ it[0] } def local_node_label = local_path[-1] def cycle_start_index do{ + // Check for a cycle in the local path - cycle_start_index = local_path[0..-2].findIndexOf{ it == local_node_label } - if(cycle_start_index != -1){ // Cycle detected - ret_value << 'cycle_found' - if(verbose) print "markup_graph_f_descend:: dependency cycle found:" - local_path[cycle_start_index..-1].each{ cycle_node_label -> - def cycle_node = lookup(cycle_node_label) - if(verbose) print " ${cycle_node.label}" - cycle_node.mark = cycle_node.mark ?: [] as Set // Initialize mark set if needed - cycle_node.mark << 'cycle_member' + if( local_path.size() > 1){ + cycle_start_index = local_path[0..-2].findIndexOf{ it == local_node_label } + if(cycle_start_index != -1){ // Cycle detected + ret_value << 'cycle_found' + if(verbose) print "markup_graph_f_descend:: dependency cycle found:" + local_path[cycle_start_index..-1].each{ cycle_node_label -> + def cycle_node = lookup(cycle_node_label) + if(verbose) print " ${cycle_node.label}" + cycle_node.mark = cycle_node.mark ?: [] as Set // Initialize mark set if needed + cycle_node.mark << 'cycle_member' + } + if(verbose) println "" + // we can not continue searching after the loop so ,we pop back to treat + // the first node in the loop as though a leaf node. + path_stack = path_stack[0..cycle_start_index] + return ret_value } - if(verbose) println "" - // we can not continue searching after the loop so ,we pop back to treat - // the first node in the loop as though a leaf node. - path_stack = path_stack[0..cycle_start_index] - return ret_value } - // a 'de-facto' leaf node test subtleties here because we have not yet - // determined if the nodes we are wellformed. This is purposeful ,as - // this function does not know about the relationships between the - // possible error marks. def local_node = lookup(local_node_label) - if(local_node.neighbor.isEmpty()){ - ret_value << 'defacto_leaf_node' + if( mark_node_form(local_node) == 'malformed' ) ret_value << 'exists_malformed' + if( local_node.neighbor.isEmpty() ){ + ret_value << 'defacto_leaf' // might not be `type:leaf` return ret_value } - // Mark the wellformed nodes and get the result - def result = mark_the_wellformed_f(local_node.neighbor ,verbose) - if(result == 'exists_malformed'){ - ret_value << 'exists_malformed' - } - // Descend further into the tree. path_stack << local_node.neighbor.clone() local_node_label = local_node.neighbor[0] @@ -230,26 +229,22 @@ class AriadneGraph { } /* - Given root_node_labels ,marks up the graph and returns a set possibly + Given root_node_label_list ,marks up the graph and returns a set possibly containing 'all_wellformed' and 'cycles_exist'. Marks potentially added to each node include 'cycle_member' ,'wellformed'. Note that these marks are independent. */ - def wellformed_graph_q(root_node_labels ,boolean verbose = true){ + def wellformed_graph_q(root_node_label_list ,boolean verbose = true){ def ret_value = [] as Set def exists_malformed = false; def result // used variously - // check the root nodes - result = mark_the_wellformed_f(root_node_labels ,verbose) - if(result == 'exists_malformed'){ - ret_value << 'exists_malformed' - } - + if( root_node_label_list.isEmpty() ) return ret_value + // Initialize the DFS tree iterator. def path_stack = [] - path_stack << root_node_labels.clone() + path_stack << root_node_label_list.clone() // iterate over left side tree descent ,not ideal as it starts at the // root each time ,but avoids complexity in the cycle detection logic. @@ -280,11 +275,12 @@ class AriadneGraph { Graph traversal */ - Map lookup( String node_label ,boolean verbose = false ){ - def lookup_node = node_map[ node_label ] - if( !lookup_node ){ + Map lookup(String node_label ,boolean verbose = true){ + def lookup_node = this.node_map[node_label] + if(!lookup_node){ + if(verbose) println "lookup:: Node ${node_label} could not be found." def match_result - for( func in node_f_list ){ + for( func in this.node_f_list ){ match_result = func( node_label ) if( match_result.status == "matched" ){ lookup_node = match_result @@ -292,13 +288,13 @@ class AriadneGraph { } } } - - if( !lookup_node && verbose ) println "lookup:: Node ${node_label} could not be found." + lookup_node.label = node_label + if(verbose) println("lookup::node: ${lookup_node}") return lookup_node } // mark aware lookup function - def lookup_marked_good(node_label ,verbose = false){ + def lookup_marked_good(node_label ,verbose = true){ def node = lookup(node_label ,verbose) if( node && marked_good_q(node) ) return node; return null; @@ -306,36 +302,56 @@ class AriadneGraph { /* - Given `root_node_labels` of a DAG. Applies `node_function` to each node in a + Given `root_node_label_list` of a DAG. Applies `node_function` to each node in a depth-first traversal order. Returns a set of error tokens encountered during traversal. `wellformed_graph_q` must be run on the DAG before this function is called ,or `lookup_marked_good` will not function correctly. */ - def all_DAG_DF(root_node_labels ,node_function ,boolean verbose = true) { + def all_DAG_DF(root_node_label_list ,node_function ,boolean verbose = true) { + if(verbose) println("all_DAG_DF::") + def error_token_set = [] as Set - if (root_node_labels.isEmpty()) return error_token_set + def accept_arg_list = true + if( !node_function ){ + error_token_set << 'null_node_function' + accept_arg_list = false + } + if( !(node_function instanceof Closure) ){ + error_token_set << 'nod_function_not_a_function' + accept_arg_list = false + } + if( !root_node_label_list ){ + error_token_set << 'null_root_node_label_list' + accept_arg_list = false + } + if( root_node_label_list.isEmpty() ){ + error_token_set << 'empty_root_node_label_list' + accept_arg_list = false + } + if( !accept_arg_list ) return error_token_set def visited = [] as Set def in_traversal_order = [] - def stack = [] - root_node_labels.each { root_label -> + def stack = [] + root_node_label_list.each { root_label -> stack << root_label } do { + if( stack.isEmpty() ) break def node_label = stack.pop() def node = lookup_marked_good(node_label ,verbose) - if (!node) { + if(!node){ error_token_set << 'lookup_fail' continue } - if (node.label in visited) continue + if(node.label in visited) continue visited << node.label in_traversal_order << node @@ -343,10 +359,10 @@ class AriadneGraph { node.neighbor.each { neighbor_label -> stack << neighbor_label } - } while (!stack.isEmpty()) + } while(true) in_traversal_order.reverse().each { node -> - node_function(node ,error_token_set ,verbose) + node_function(node ,error_token_set) } return error_token_set @@ -415,48 +431,69 @@ class AriadneGraph { return false } - void run_build_scripts_f( List root_node_labels ,boolean verbose = true ){ - if( root_node_labels.isEmpty() ) return + void run_build_scripts_f( List root_node_label_list ,boolean verbose = true ){ + + if( root_node_label_list.isEmpty() ) return + Set error_token_set // used to catch return values - def node_function = { node ,error_token_set -> + println( "run_build_script:: Checking if graph is well formed." ) + error_token_set = wellformed_graph_q(root_node_label_list) + if( error_token_set && !error_token_set.isEmpty() ){ + println( "Graph is not well-formed. Expect build problems. Errors:" ) + error_token_set.each { token -> + println( " - ${token}" ) + } + } else { + println( "Graph is well-formed. Proceeding with build." ) + } + + def node_function = { node ,error_token_set_2 -> if( !can_be_built_q( node ) ){ - println( "Skipping build for ${node.label} due to dependency problems" ) + println( "run_build_scripts_f:: Skipping build for ${node.label} due to problems with dependencies." ) return } if( !should_be_built_q( node ) ){ - if( verbose ) println( "${node.label} already up to date" ) + if( verbose ) println( "run_build_scripts_f:: ${node.label} already up to date" ) return } - println( "Running build script for ${node.label}" ) - node.build( node ,node.neighbor ) + // build the target + println( "run_build_scripts_f:: Running build script for ${node.label}" ) + node.build() - if( should_be_built_q( node ) ){ - println( "Build failed for ${node.label}" ) - set_mark( node ,'build_failed' ) + // for path nodes, check if the build updated the target at path + if( node.type == 'path' && should_be_built_q( node ) ){ + println( "run_build_scripts_f:: Build failed for ${node.label}" ) + set_mark(node ,'build_failed') } + } - println( "run_build_scripts_f:: running ..." ) - all_DAG_DF( root_node_labels ,node_function ,verbose ) + println("run_build_scripts_f:: running ...") + error_token_set = all_DAG_DF(root_node_label_list, node_function, verbose) + if( error_token_set ){ + error_token_set.each { error -> + println("run_build_scripts_f::all_DAG_DF:: ${error}") + } + } + } - // Add the rest of your methods here as instance/static methods based on whether they depend on the graph instance } /* def clean(nodes_to_clean) { - def all_dependencies = node_map["all"].neighbor.clone() + def all_dependencies = this.node_map["all"].neighbor.clone() nodes_to_clean.each { node -> all_dependencies.remove(node) } def must_have_nodes = [] all_dependencies.each { node -> - def node_info = node_map[node] + def node_info = this.node_map[node] if (node_info.must_have) { must_have_nodes += node_info.must_have } @@ -464,13 +501,13 @@ class AriadneGraph { def to_clean_list = [] nodes_to_clean.each { node -> - if (!must_have_nodes.contains(node) && node_map[node].type == "path") { + if (!must_have_nodes.contains(node) && this.node_map[node].type == "path") { to_clean_list += node } } to_clean_list.each { node -> - def file_path = node_map[node].label + def file_path = this.node_map[node].label def file = new File(file_path) if (file.exists()) { file.delete() diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure7.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure7.class index 4231e3606fd258db1e636bc1740e00dfa59d722e..8857e4d2ef542d233efbb9075e1d99df44bea14b 100644 GIT binary patch delta 13 VcmZ1^xJYorVs^&R$xGP(0RST(1ycY3 delta 13 VcmZ1^xJYorVs=Ki$xGP(0RSS@1w;S< diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure8.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure8.class index a0125cfc05f98bc7e6faf8bcc9c7e1305d6246dd..48d0c812bd5b8a6345ea84b90b1119384363e30f 100644 GIT binary patch delta 13 VcmZ1`xJ+=va(2dy$t&3Z0RSWl1$F=c delta 13 VcmZ1`xJ+=va(2du$t&3Z0RSVq1!e#M diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure9.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure9.class index 799d4d7ef83f18b571a63f4973c04f618463e65e..7be96edafa4690b30b15b89f4e232105e6ef439f 100644 GIT binary patch delta 819 zcma))&rcIk5XZl7f3>VDt!=ls0xBS|wiJIMXced+C{U29SWy%!Ry0&=0-AWSXOHF` zIC$2Z38>VDM6V`Z{1-fW^=^za+f}a~c4prE{LH@h(*7PXzx>+%1YiJnH_bsIb0V+I zxiX`5%C90Nqe^d!jV2Qsc3Wsfr~wN0SP0jx7P+jv+0iMWE*IAXV(yC{cBC7wi7p%z z(3T3NQV>Zwt`3M^`Al7R4&#W4LpT~Ta7@6s|L{q9r6@4TBd3DL(H~(LDYaQy*2l!K z+|oOOXE0(SgHicS?-ygT$;jB}aNfi?CM@higrTMcT=~&()c~gDx{+(UfLRkW$O%{k zH(gvSjFt+ks}?R{hy#~pLtr6xl^{yx^2*~!7Oo+0VjkD!)4=PB7FKv)fHZAO+T>BB zpCgJGQ5q1i5hrK&`ze}IT=IsEC$gip#ul}u@e;GEIaWY%~d3lq+3aE;{>ol0R@XB znHA!JH#J@__&e3cNpGq^8ZO0no308KFi6nv%dP6rR^9KH-y%OZKjp zAN64kgBYSJ2B?e>2`|>2sN!ryc|{~OOm4hIHkbVSy{i`whcBkXFM2Cxd?EZIUMWc}|dScggdb*oixFG8MYeqMy=7ryit!1E>*g A#Q*>R delta 1053 zcmaJ=OHUI~6#njXIxW)?YI%-S9-=&2o<2Z%i9AFU5adydAWmU;$k0J3L|1j|lH7$0 zH!jqbCg1}bVqBS+xbP2{xHiV0V2tOs6BcUR-0wW@Ip25A-1!!Gl&^mJwf`PK3-0Wy z9n9<5GS_4FhROR_lv&(x=Wc%u@DHq>e_?%<1t?M>L)VavoGeHv*5J=rM>QPISf#vO zdcmsscd0ZGLRdu&Y8m7?!?L`n=f$oT*2KqL4~tIWw2G5BlcS)SL0OJ(*()Z)w8Kio zg8QA6t7pSPCdiw(Wzg0X2O z#wj+wZp1eh?DbV6v24dZ=w{Gjwr!b4d?FsR?=s{QXP$3LLofPN^xz_YBKNb){D)lO z8^n-`D;Q>IA`;&0E@UHo*xePlhA|bR7}pR$uGq#Tf9$Sf*ZF7nX!#UwsEA^ks7URQ znJ{`RV`D?ZO$>;{EbmgL^X6!7%eGfG*EE=jshGzC-%*|=-F`{z7$Bq#r;+wcs0ud1 z2gpM{t;7R{0u<7@MBaV4kVV)S3fI2Hk-AnzS3Fk68B+-C!93vNGRp2-!g>`}~DQyXHuCyiO$!SXnbkogBR5@}+C?oC% zL$49sLtU7#gpi<&U>|M34&^1>rc)6tY=&ecK{KTb4`c+HPVB)(cq&^-27%K^HDK0%{xqK4+j5`k()y!S}ZYzl=*5pi(hI zH?(IZ-OZnTis0M_^$Kh325 diff --git a/release_candidate/AriadneGraph$_good_dependency_q_closure10.class b/release_candidate/AriadneGraph$_good_dependency_q_closure10.class index e02400f0b8ad736cb73d849092c0c504e68d1b0a..b4b33ad54a674bcd01ef5440b1a7746db989baa7 100644 GIT binary patch delta 25 gcmca9bW>H+OBP(=;r**LV131&m>~?b!CSK+9ad<%v%$AxFm!UhVa7-q(yGA!q6kMx1=!@Irn zh#PMCs3d<>q~R1ahIF>)>aJ;2EWOvOid~zbP>alr?^@*Cv<0yc=$09jW|KT@Rv6d= zhRLg@Fx~463nzoMts#S16$!k}kZ||R9+}p{Ssz;*iapb``!08?f>IC$XUH5)li^fT z`t_+Hge|+GTNcBG2!s(d5uQjkhIOvHjw#yJPS;ZKA<_9}F%+B|lluA!J|e>AllX)I zNt|cM=N=vf9~SwB<-AAPf{Hoh7$&+D-A$qpr_PQsT#UjxAaMP*DN2LoQdP7Ls)9({ z)eWxTBE!^wV{ia#e3PBZSVKH;SLLMg}{#)ZXI-a zgnBhhbzmUtQa4>*)=V}Dcc2G3em(7yMW;IzV0H--F$&|;w6XnH7}y4`mSzGg~)>DA%L`LBCeqM{@~ zzz|ETvPwYuH>B|vwWgHQlBDxTdiol1`T1#BG&Jb9~&0XR`H1B6Fes6!~ZLxx{1A zi=p9plKy`8;+^*GNAa>)mhsXFf_No}vPwEK%0l4@u4iI@AXzxXw~znATCMmJDJeZf ztx@|MYsDwHEdwz;pp%+(=3mSz*htgV<8I(DP5%->;t< S#?N$%LBTJ9#$|dcV)1_h#5%kH literal 0 HcmV?d00001 diff --git a/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class deleted file mode 100644 index 1df2a60131fae7f0bb33409621f5bc4b0f8eadb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2094 zcmbVNZExFD6n<`!)~V+vH_9f+$3Hd-^g}? z`UjBsA&9R7q^%knUy=At2yt$lr0yDNfGk~KpL^~(&w0*^|NQ&u?*OjgTZSu}u4ObG zUUrRMCtdFv?tb0x@cMV$wp+sO@@BnNH*MkdUA~?k@7C58FowmpE5zWSU>i=mPzsb3 zL>X3v+b)=*$vZ~hD~z<iyN1u3lN&Q+DvaZDaD(iGr7uFKAkMJ#f)E(g zqaYY&o1$dcHp9h?{?Hg0K`3_{54q_VvnNFwG|V$3)1GhmmRYh5&#O2s!I0CZ#>`tb znX-gK{ET#q3`)ID7IsPu>^_0GW;vGs5yQ$95GOHY_cScxB^5Ee%n0=|KAaWH8Hjye*x`OhG;bPC)8<}U7h=EPD~6zs zaD^ntF76)m_!RX@xZ*|^WO-ICpBFV;MnT0Typx#48dXi8z|hG2@7(L*1}=}u451!% zf`)axmm)UbCw95(3YR)I-R6FE*apOgF)VL}vzhEMqmv`5vp8KCsV$P)QBe$q6yS#_ zs#wA`hP7!a8xN4G=~_L1>%ix7#B4T=9;HqJHPF0lq=`$0d^mNJt_}x1Q6~4FU{l4% z*wT^*~i9u1rC z%7r1JTMoa|?>4wQlFUu`UGcwrY*ylv@Q?D zvv>us(ih0oS-eJPa`!szBDAL&PpdTZ70satz0=At(Mmj1ac^WVNpFcDc8D*evLxp| ltts*{M{kuVlm1T8`@!&Z4h#62b`dD}W~jmNE`8;Y{|DrkNVxz2 diff --git a/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class deleted file mode 100644 index 07405867c34940f79e62e8719d2d4b1d78c2a167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4403 zcmbtX`F9i775<(jOF}4M2Asr&B!(EUWgC?y0cs~S*a63>Sc;5YleX$udbS43Gs z#BI~P+1hm9O!lOdq)l7M06uhfHz!j4-cA%Din8p9RL;uFf?g@7d@8$QI>wYt4MXh}lIglw$nhc-Ff5a}`Ls$> zHcJWn`vt^Nfyk|fX*jzDj?__osp8A%x6E?KaD7OY%Iz3Vpc&W15yrI%titLQXuvxX zX!2$o1j0_iC<|;$2c7X&5kzxWWvz-M?Lm{M5lR7V>FEM18HGmK^B6(NTm5v6z?M3o z)Nv;{ik3B5DaEik#87V#=&t9H>8Vn&GGUmh>0PNoGe0wEQnPVAC!=T=STSZ#GbrOT zh9i3uNTM^24s@-KpqplT1Oh|tSLTO+ntoaYkM)-lNa39t@!QUv3si)AVz^0zP|H!H zymzYP%*3!m0S(2{rZHCDEzr>35d%FQ&go@`IU0npcIeRrZo_U3A-so#DvM*-L-$We z=a6lcr0vWk(62;>aR+nl(rk`mAN8o`+gjzx5$XG@l( zw4t=y+?bVSzOZzU;HCqSVbO##CX|ixqirT;S^VMWxy& zq7U+rapXXf=DOuMih@9hI4u)&H1!xJ<1oOI5@M(ctZT393=@_jV*zL^>SMAPgRLQ| zBC+psG3PJ{3aTzJ|5JC!alKM>RA3C*x>;7&D(?%6=2ny++y6s`G+Y;~-j7#PcuYli7>~zs9M`h^ zNJ#cTfUna8_m5 zTmoyLsZOgZ&|Wv!>a>ti{DftsrmEL~-WEK*cG`;iqw&#|2ODyj=_9(Q?@P7#TLo23hu)rlq36G8tltL6aXS zE>e=OtM{7fqle|2wzJ8j9vQ1*=j1*^oz=v<$mRKE;xWVg&Q zuDr_eVXVbE_DB)ZHREbNf5*21d!H!BP07x#vuNq=X>4gsW?#knmd25ma8INqqTa4+ ziHw{kmB8=$yqOIGuo2he299dh%0Kgs&rSR{xHF}NYRWdcdMNE~M4NZ2c!8(p=sPjP`{6g;-1YB-Vw_V_**ZwS!d*0T*yk z=`Fgnz6%(h!%-^l@o68ZLI*}p;;GP%NONQk6UkSwK6?gJ&5;pKuRDW#e98Bd#R29p zGm8!0yo!$jp*ehN4xgJvlqZKnvq&Y+;la@`RTvF~> z<{q0!YTu~h+njfw!|~B%@(i9hizlmij!Q}HL>13-(s_zNh42SHHz9TryP_EIeup^x z2OBS9AK|)PY>WLH>+wg@?Z8!h9%rR{jBb6Ld{5vgp2Q@c=C%6_9>udv?C0r=h}?b#2vuu{MhHO#;8d>%P1uU#0LI z-c-aOG=Jt(eMG2pV$7c79DmF4FYa!f!2gxA21fATIF9kFV;kSLV5>Xc?2kLK%YDDq cAN&0Aeg60%e=PgsNB!~3KL6AH`$=s5AN?NE^#A|> diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure4.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure4.class index 761a9b686334b2108958dae001b76fc284b3589c..062667b5356fd56352fe31e0ccddd1e098e372ac 100644 GIT binary patch delta 13 VcmaFN|CoQnGd9Nklb^Hw0RS!Y2E70P delta 13 VcmaFN|CoQnGd9Lulb^Hw0RS!92DktK diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure5.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure5.class index 0ee5256c3151a9bf9860f0a606733c8844856a1c..5d177fd8637b7781a4db85fc6eede32602ed9d85 100644 GIT binary patch delta 14 VcmX>sa9Ci27(3(f&Eo7ji~uGy1Udi! delta 14 VcmX>sa9Ci27(3&E&Eo7ji~uGI1Tz2t diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure6.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure6.class index 408e316e59ccc490bd5eb593964f5ac870161eed..1b72f75f6fc6df17208e4f838dd7df6eb7457570 100644 GIT binary patch delta 26 icmew;`B8GiN^agW3|tIn8Jrl-F;p;|-@J|6nh^kphY2tM delta 26 icmew;`B8GiN^ahx3|tJy7@Qc6GgL5~*u0I~nh^koHwhE~ diff --git a/release_candidate/AriadneGraph$_newer_than_all_closure11.class b/release_candidate/AriadneGraph$_newer_than_all_closure11.class index 97d5002eaa99ce69b98ce8be9f3fb23c1720d2ec..ecf40dde185556780504bde04e1ee4cd80a5950f 100644 GIT binary patch delta 26 icmbOtIz@CtC@1ek25!bl3>u7+87vs5Y);}dVgvwQ5(akw delta 26 hcmbOtIz@CtC?{_t12Ad7%FV>1 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 RDjJPQE~9ZJl79pv{{@P!K6wBD literal 0 HcmV?d00001 diff --git a/release_candidate/AriadneGraph$_run_build_scripts_f_closure14.class b/release_candidate/AriadneGraph$_run_build_scripts_f_closure14.class new file mode 100644 index 0000000000000000000000000000000000000000..f0205aaaec7d0920d9c0cd173ffc530add47bfc4 GIT binary patch literal 2084 zcmb7FZExFD6n<`!)~V+mWfRSv2HeJ&|x-nA9(gBv^+@@Y#JF=Zh z{R2q+5WWwPwrXg6MdCm3PY~i<+sRyJ-W2KP`rLERdCqfQ?yrA5{u#jg&={(#uBrEJ z-gNcheo=Erw$>Y&R$ucB*Bttuwx=1E;-~b9Ag)x;;=E;gN(i!?NQJ zRKw}>eSPGqkrvtW%|os>xy@bO=l#izDKZuJeL1|ru<*|y7?k)m2{U9U0XD^+B}(oPJ3?^)dNO~NF16!f{YxeY!JOud zeD1bv3dA-zL*ZFR3}-Z9Jw!q{`%Xi*EQX5-ILk@*ml8P{C$;0drafpK4lN0<5~%^* zu}CGnc1jxROL(2(LPE-FH3FxtuQs*yjaqFni#HgM#hVP}(!FQV#YLgzddTdOj0Kb^ zNkf9?TXq(eG}U{GNKOjpi13dFrmY@bRa*9wnV%Fs&W?TnwAlzCNUMN%)Xq zR&?RSCC#>Yx}sSA4xfTmtjYKY4Fz+^%^-!F45dUM2_r#5lLpf`!f>EmkGl_pEdTcz zqo9S4Wo+V;(C{QK1zV_zgIf%;$U<0iqDkVco~p9HlqU_@r}QT&O8AV*$_k2E!8Y#5 z=-_jjRSlwCj2g$#tsR}7j-JK0#lnzln>N2SI_z;blFU+l7zbPWF#1+nHoXD?6PzYq z?xroC7MdUw8}$%{({VSCq@6o z%1>D6W}aZNo33`Ip5Q_^T_|?CnZm`+Ba|Q0Q;G+qmqItNME2NkfxmO%{fWOKt_pwo z3_+|#Ue-uQcv-4E#EnAgJ7g;-Sby*XHrmx+kQ34qw7cyeu~B`9+rkmUF0E9gbH8I= z!e*Y~Q{0K{<>_BUlsUnUP!{Ceqg5uU@RKFNz6_)?X7Ls6QjqXWY literal 0 HcmV?d00001 diff --git a/release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class b/release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class deleted file mode 100644 index 7cea6d1be805fb26aaab93f32778ffbf548af3c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3794 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 QYHNPB^*!HeFQm5r2W8^tQvd(} delta 6826 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 LC>-{4F0KAQ&}0^D diff --git a/release_candidate/build b/release_candidate/build index 1acf09b..2fb7a39 100755 --- a/release_candidate/build +++ b/release_candidate/build @@ -10,9 +10,18 @@ def include_a_class( a_class_fp ){ } } -// Main build function for the Shell UI -def build(graph_definition_fp){ - // Load the graph class dynamically +// Shell User Interface to the build function +def build(graph_definition_fp, root_node_labels){ + + // Print summary of what we are doing + println "Summary: Building targets for graph '${graph_definition_fp}.class'" + if (root_node_labels.isEmpty()) { + println "No build targets specified. Please provide root node labels to build." + System.exit(0) + } + println "Building targets: ${root_node_labels.join(', ')}" + + // Load the dependency graph class from arg[1] def graph_definition_class = include_a_class(graph_definition_fp) if(graph_definition_class){ println "build:: loaded ${graph_definition_fp}.class" @@ -24,20 +33,23 @@ def build(graph_definition_fp){ // Get the node_map and node_f_list from the graph class def node_map = graph_definition_class.get_node_map() def node_f_list = graph_definition_class.get_node_f_list() - // println "node_map: ${node_map}" - // println "node_f_list: ${node_f_list}" + println "node_map: ${node_map}" + println "node_f_list: ${node_f_list}" - graph = new AriadneGraph(node_map ,node_f_list) - - // Call the build function in AriadneGraph - // AriadneGraph.run_build_scripts_f(node_map ,node_f_list) + // Create an instance of AriadneGraph, and run the build scripts + def graph = new AriadneGraph(node_map ,node_f_list) + graph.run_build_scripts_f(root_node_labels) } // Entry point for the script if(args.length == 0){ - println "Usage: ./build " + println "Usage: ./build [root_node_labels...]" System.exit(1) } +// Get graph definition file and root node labels def graph_definition_fp = args[0] -build( graph_definition_fp ) +def root_node_labels = args.length > 1 ? args[1..-1] : [] + +build(graph_definition_fp, root_node_labels) + diff --git a/tester/test0/env_test0 b/tester/test0/env_test similarity index 100% rename from tester/test0/env_test0 rename to tester/test0/env_test diff --git a/tester/test0/test0.sh b/tester/test0/test.sh similarity index 86% rename from tester/test0/test0.sh rename to tester/test0/test.sh index 8e43b74..39be135 100755 --- a/tester/test0/test0.sh +++ b/tester/test0/test.sh @@ -2,7 +2,7 @@ # smoke test, and yes, there was a lot of smoke -source env_test0 +source env_test build TestGraph echo "test0 complete" diff --git a/tester/test1/TestGraph.groovy b/tester/test1/TestGraph.groovy new file mode 100644 index 0000000..660d182 --- /dev/null +++ b/tester/test1/TestGraph.groovy @@ -0,0 +1,21 @@ + +class TestGraph{ + + static def get_node_map(){ + return [ + 'title': [ + type: 'symbol' + ,neighbor: [] + ,build: { + println "TestGraph for test1" + } + ]] + } + + // Static method to define the function list + static def get_node_f_list(){ + return [] + } +} + +// LocalWords: TestGraph diff --git a/tester/test1/env_test b/tester/test1/env_test new file mode 100644 index 0000000..cdf0612 --- /dev/null +++ b/tester/test1/env_test @@ -0,0 +1,11 @@ + +if [ -z "$ENV_TESTER" ]; then + echo "env_test0:: script can only be run in the tester environment" + env_error=true +fi + +export CLASSPATH=\ +"$REPO_HOME"/release_candidate\ +:"$REPO_HOME"/tester/test1\ +:$CLASSPATH + diff --git a/tester/test1/test.sh b/tester/test1/test.sh new file mode 100755 index 0000000..340a6d1 --- /dev/null +++ b/tester/test1/test.sh @@ -0,0 +1,16 @@ +#!/bin/env bash + +# smoke test, and yes, there was a lot of smoke + +source env_test + +echo "test 0 will complain there are no build targets" +build TestGraph +echo "" + +echo "test 1 will print the graph title" +build TestGraph title +echo "" + +echo "test complete" + diff --git a/tester/test1/transcript_dev.txt b/tester/test1/transcript_dev.txt new file mode 100644 index 0000000..7ee5492 --- /dev/null +++ b/tester/test1/transcript_dev.txt @@ -0,0 +1,78 @@ +2024-10-06T07:23:25Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer§ +> repo Ariadne +REPO_HOME /var/user_data/Thomas-developer/Ariadne +PROJECT Ariadne +/var/user_data/Thomas-developer/Ariadne/executor/env_base complete +/var/user_data/Thomas-developer/Ariadne/developer/executor/env_build complete +/var/user_data/Thomas-developer/Ariadne/executor/env_dev complete + +2024-10-06T07:23:34Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> ls +. .. deprecated document executor groovy groovyc scratch_pad + +2024-10-06T07:23:37Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> ls groovy +. .. build + +2024-10-06T07:23:40Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> ls groovyc +. .. AriadneGraph.groovy + +2024-10-06T07:23:44Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> make.sh + +2024-10-06T07:23:53Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> ls groovy +. .. build + +2024-10-06T07:23:56Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> ls groovyc/ + . + .. +'AriadneGraph$_all_DAG_DF_closure7.class' +'AriadneGraph$_all_DAG_DF_closure8.class' +'AriadneGraph$_all_DAG_DF_closure9.class' +'AriadneGraph$_good_dependency_q_closure10.class' +'AriadneGraph$_mark_node_form_closure3.class' +'AriadneGraph$_markup_graph_f_descend_closure4.class' +'AriadneGraph$_markup_graph_f_descend_closure5.class' +'AriadneGraph$_markup_graph_f_descend_closure6.class' +'AriadneGraph$_newer_than_all_closure11.class' +'AriadneGraph$_run_build_scripts_f_closure12.class' +'AriadneGraph$_run_build_scripts_f_closure13.class' +'AriadneGraph$_run_build_scripts_f_closure14.class' +'AriadneGraph$_wellformed_q_closure1.class' +'AriadneGraph$_wellformed_q_closure2.class' + AriadneGraph.class + AriadneGraph.groovy + +2024-10-06T07:23:59Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> release +Installed build to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r,ug+x +Installed AriadneGraph.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_wellformed_q_closure1.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_wellformed_q_closure2.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_mark_node_form_closure3.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure4.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure5.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure6.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure7.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure8.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure9.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_good_dependency_q_closure10.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_newer_than_all_closure11.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_run_build_scripts_f_closure12.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_run_build_scripts_f_closure13.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_run_build_scripts_f_closure14.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r + +2024-10-06T07:24:08Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> diff --git a/tester/test1/transcript_tester.txt b/tester/test1/transcript_tester.txt new file mode 100644 index 0000000..9ccc393 --- /dev/null +++ b/tester/test1/transcript_tester.txt @@ -0,0 +1,54 @@ +2024-10-06T07:25:26Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer§ +> cd Ariadne + +2024-10-06T07:25:41Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne§ +> source executor/env_tester +REPO_HOME /var/user_data/Thomas-developer/Ariadne +PROJECT Ariadne +/var/user_data/Thomas-developer/Ariadne/executor/env_base complete +executor/env_tester complete + +2024-10-06T07:25:49Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester§ +> cd test1 + +2024-10-06T07:25:55Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test1§ +> ls +. .. env_test TestGraph.groovy test.sh + +2024-10-06T07:25:56Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test1§ +> make.sh + +2024-10-06T07:26:28Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test1§ +> ./test.sh +test 0 will complain there are no build targets +Summary: Building targets for graph 'TestGraph.class' +No build targets specified. Please provide root node labels to build. + +test 1 will print the graph title +Summary: Building targets for graph 'TestGraph.class' +Building targets: title +build:: loaded TestGraph.class +node_map: [title:[type:symbol, neighbor:[], build:TestGraph$_get_node_map_closure1@3fae596]] +node_f_list: [] +run_build_script:: Checking if graph is well formed. +lookup::node: [type:symbol, neighbor:[], build:TestGraph$_get_node_map_closure1@3fae596, label:title] +mark_node_form::node: [type:symbol, neighbor:[], build:TestGraph$_get_node_map_closure1@3fae596, label:title] +Graph is not well-formed. Expect build problems. Errors: + - all_wellformed +run_build_scripts_f:: running ... +all_DAG_DF:: +lookup::node: [type:symbol, neighbor:[], build:TestGraph$_get_node_map_closure1@3fae596, label:title, mark:[wellformed]] +run_build_scripts_f:: Running build script for title +TestGraph for test1 + +test complete + +2024-10-06T07:26:37Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test1§ +> -- 2.20.1