ndmitchell / shake

Shake build system
http://shakebuild.com
Other
772 stars 118 forks source link

shake report generates graphviz code w/ syntax error #226

Closed hvr closed 9 years ago

hvr commented 9 years ago

it seems that the graphviz-codegen doesn't properly escape " within labels:

Error: :1: syntax error near line 1 context: 

digraph ""{graph[nodesep=0.15,ranksep=0.3];node[fontname="sans-serif",fontsize=9,penwidth=0.5,height=0,width=0];edge[penwidth=0.5,arrowsize=0.5];a0[label="deps/dd38755580efdd95e86fe3439154c21fd9243336b1eed0044524608f89f4cffd.deplist"];a1[label="sandboxes/dd38755580efdd95e86fe3439154c21fd9243336b1eed0044524608f89f4cffd/7_10.d/exit.code sandboxes/dd38755580efdd95e86fe3439154c21fd9243336b1eed0044524608f89f4cffd/7_10.d/.cabal-sandbox/logs/build.log"];a1->a0;a2[label="sandboxes/dd38755580efdd95e86fe3439154c21fd9243336b1eed0044524608f89f4cffd/7_10.d/exit.code"];a2->a1;a3[label="/home/hvr/.cabal/packages/hackage.haskell.org/00-index.tar"];a4[label="report/product-profunctors.idx"];a4->a3;a5[label="OracleQ (XRevQ >>> ("product- <<< profunctors",Version {versionBranch = [0,5], versionTags = []}))"];a5->a4;a6[label="report/product-profunctors/0.5/7_06.iplan"];a6->a5;a7[label="report/product-profunctors/0.5/7_06.dephash"];a7->a6;a8[label="report/product-profunctors/0.5/7_02.iplan"];a8->a5;a9[label="report/product-profunctors/0.5/7_02.result"];a9->a8;a10[label="report/product-profunctors/0.5/7_04.iplan"];a10->a5;a11[label="report/product-profunctors/0.5/7_04.dephash"];a11->a10;a12[label="report/product-profunctors/0.5/7_00.iplan"];a12->a5;a13[label="report/product-profunctors/0.5/7_00.dephash"];a13->a12;a14[label="report/product-profunctors/0.5/7_08.iplan"];a14->a5;a15[label="report/product-profunctors/0.5/7_08.dephash"];a15->a14;a16[label="report/product-profunctors/0.5/7_10.iplan"];a16->a5;a17[label="report/product-profunctors/0.5/7_10.result"];a17->a16;a18[label="OracleQ (XRevQ ("product-profunctors",Version {versionBranch = [0,6,1], versionTags = []}))"];a18->a4;a19[label="report/product-profunctors/0.6.1/7_06.iplan"];a19->a18;a20[label="report/product-profunctors/0.6.1/7_06.dephash"];a20->a19;a21[label="report/product-profunctors/0.6.1/7_00.iplan"];a21->a18;a22[label="report/product-profunctors/0.6.1/7_00.dephash"];a22->a21;a23[label="report/product-profunctors/0.6.1/7_10.iplan"];a23->a18;a24[label="report/product-profunctors/0.6.1/7_10.dephash"];a24->a23;a25[label="report/product-profunctors/0.6.1/7_10.result"];a25->a23;a25->a24;a25->a2;a26[label="report/product-profunctors/0.6.1/7_02.iplan"];a26->a18;a27[label="report/product-profunctors/0.6.1/7_02.result"];a27->a26;a28[label="report/product-profunctors/0.6.1/7_04.iplan"];a28->a18;a29[label="report/product-profunctors/0.6.1/7_04.dephash"];a29->a28;a30[label="report/product-profunctors/0.6.1/7_08.iplan"];a30->a18;a31[label="report/product-profunctors/0.6.1/7_08.dephash"];a31->a30;a32[label="OracleQ (XRevQ ("product-profunctors",Version {versionBranch = [0,6], versionTags = []}))"];a32->a4;a33[label="report/product-profunctors/0.6/7_08.iplan"];a33->a32;a34[label="report/product-profunctors/0.6/7_08.dephash"];a34->a33;a35[label="report/product-profunctors/0.6/7_10.iplan"];a35->a32;a36[label="report/product-profunctors/0.6/7_10.result"];a36->a35;a37[label="report/product-profunctors/0.6/7_02.iplan"];a37->a32;a38[label="report/product-profunctors/0.6/7_02.result"];a38->a37;a39[label="report/product-profunctors/0.6/7_04.iplan"];a39->a32;a40[label="report/product-profunctors/0.6/7_04.dephash"];a40->a39;a41[label="report/product-profunctors/0.6/7_06.iplan"];a41->a32;a42[label="report/product-profunctors/0.6/7_06.dephash"];a42->a41;a43[label="report/product-profunctors/0.6/7_00.iplan"];a43->a32;a44[label="report/product-profunctors/0.6/7_00.dephash"];a44->a43;a45[label="deps/8ca5b3c5ca2e01fcb93ae1af063460a14ae4901cb36810d32e00d83e9e1571eb.deplist"];a46[label="sandboxes/8ca5b3c5ca2e01fcb93ae1af063460a14ae4901cb36810d32e00d83e9e1571eb/7_00.d/exit.code sandboxes/8ca5b3c5ca2e01fcb93ae1af063460a14ae4901cb36810d32e00d83e9e1571eb/7_00.d/.cabal-sandbox/logs/build.log"];a46->a45;a47[label="sandboxes/8ca5b3c5ca2e01fcb93ae1af063460a14ae4901cb36810d32e00d83e9e1571eb/7_00.d/exit.code"];a47->a46;a48[label="report/product-profunctors/0.6.1/7_00.result"];a48->a21;a48->a22;a48->a47;a49[label="report/product-profunctors/0.6/7_00.result"];a49->a43;a49->a44;a49->a47;a50[label="deps/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4.deplist"];a51[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_06.d/exit.code sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_06.d/.cabal-sandbox/logs/build.log"];a51->a50;a52[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_06.d/exit.code"];a52->a51;a53[label="report/product-profunctors/0.5/7_06.result"];a53->a6;a53->a7;a53->a52;a54[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_04.d/exit.code sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_04.d/.cabal-sandbox/logs/build.log"];a54->a50;a55[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_04.d/exit.code"];a55->a54;a56[label="report/product-profunctors/0.5/7_04.result"];a56->a10;a56->a11;a56->a55;a57[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_08.d/exit.code sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_08.d/.cabal-sandbox/logs/build.log"];a57->a50;a58[label="sandboxes/3d22c1638509d2297c6d39c40b4756c777f46e338bd1af7d555f46011017f8a4/7_08.d/exit.code"];a58->a57;a59[label="report/product-profunctors/0.5/7_08.result"];a59->a14;a59->a15;a59->a58;a60[label="deps/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5.deplist"];a61[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_06.d/exit.code sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_06.d/.cabal-sandbox/logs/build.log"];a61->a60;a62[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_06.d/exit.code"];a62->a61;a63[label="report/product-profunctors/0.6.1/7_06.result"];a63->a19;a63->a20;a63->a62;a64[label="report/product-profunctors/0.6/7_06.result"];a64->a41;a64->a42;a64->a62;a65[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_08.d/exit.code sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_08.d/.cabal-sandbox/logs/build.log"];a65->a60;a66[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_08.d/exit.code"];a66->a65;a67[label="report/product-profunctors/0.6.1/7_08.result"];a67->a30;a67->a31;a67->a66;a68[label="report/product-profunctors/0.6/7_08.result"];a68->a33;a68->a34;a68->a66;a69[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_04.d/exit.code sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_04.d/.cabal-sandbox/logs/build.log"];a69->a60;a70[label="sandboxes/df89e32236ec62619596960ced82759b1ad646766dcf4219a5a2abccad0ee1a5/7_04.d/exit.code"];a70->a69;a71[label="report/product-profunctors/0.6.1/7_04.result"];a71->a28;a71->a29;a71->a70;a72[label="report/product-profunctors/0.6/7_04.result"];a72->a39;a72->a40;a72->a70;a73[label="deps/266b16ecbdbdd3f2867e955a59dd8f8fed9511503998c95a8e722429deff5bed.deplist"];a74[label="sandboxes/266b16ecbdbdd3f2867e955a59dd8f8fed9511503998c95a8e722429deff5bed/7_00.d/exit.code sandboxes/266b16ecbdbdd3f2867e955a59dd8f8fed9511503998c95a8e722429deff5bed/7_00.d/.cabal-sandbox/logs/build.log"];a74->a73;a75[label="sandboxes/266b16ecbdbdd3f2867e955a59dd8f8fed9511503998c95a8e722429deff5bed/7_00.d/exit.code"];a75->a74;a76[label="report/product-profunctors/0.5/7_00.result"];a76->a12;a76->a13;a76->a75;a77[label="report/product-profunctors.html"];a77->a4;a77->a76;a77->a9;a77->a56;a77->a53;a77->a59;a77->a17;a77->a49;a77->a38;a77->a72;a77->a64;a77->a68;a77->a36;a77->a48;a77->a27;a77->a71;a77->a63;a77->a67;a77->a25;} 
ndmitchell commented 9 years ago

Urk, escaping issues. I don't think I even went as far as reading the spec for GraphViz, so no great shock - should be easy to fix.

ndmitchell commented 9 years ago

Done. The GraphViz spec is awful, and wrong. It seems \\ becomes \ and \" becomes ", so I've used that as the escaping relation. Note the spec is wrong, or maybe the HTML implementation I'm using is doing its own escaping.