[{"data":1,"prerenderedAt":385},["ShallowReactive",2],{"project-15043432":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":40,"post_text":43,"what":44,"said":69,"maker_in_thread":179,"shape":191,"grid":196,"attempts":347,"same_week":348,"maker_shows":42,"maker_hidden":377,"reader_version":378,"card":379},"15043432","basic-build","Minimal build system using just \u002Fbin\u002Fsh","title","Show HN: Minimal build system using just \u002Fbin\u002Fsh","https:\u002F\u002Fnotabug.org\u002Fakkartik\u002Fbasic-build","notabug.org","akkartik",1503028593,2017,100,63,460,2242,21,"notable","dev_tools","build system","library",[21,24,25,26],"bourne shell","makefile alternative","sh build script","roasted",-0.487,{"positive":30,"neutral":31,"mixed":32,"critical":33},0,9,2,17,28,{"execution":36,"idea":38},{"positive":30,"critical":37},5,{"positive":30,"critical":39},12,[41,41,30,41,41,30,30,30,41,30,41,30,30,41,30,41,30,30,30,41,41,42,42,30,30,30,41,41,41,41,30,42,30,42,42,30,42,41,30,41],1,3,null,{"problem":45,"audience":43,"pricing":43,"motivation":55,"time_to_build":43,"stack":62,"openness":68,"stage":68,"team_size":68},{"value":46,"source":47,"evidence":48},"Managing a project's build without the complexity of make or autotools","maker",[49,52],{"id":50,"by":11,"text":51},"15044027","Yes, that's true. I'm still noodling on that, primarily to enable parallel builds. Outside of parallel builds, however, I actually prefer an explicit sequence of steps to…",{"id":53,"by":11,"text":54},"15043951","The whole goal of this approach is to get out of the vicious cycle of build files generating other build files, so no `configure`. `configure` is not in itself a feature. What…",{"value":56,"source":47,"evidence":57},"Escape the vicious cycle of build files generating other build files and avoid makefile tab requirements",[58,59],{"id":53,"by":11,"text":54},{"id":60,"by":11,"text":61},"15043960","As it happens, I was moved to create this standalone repo showing off my current build setup after writing this comment:…",[63],{"value":64,"source":47,"evidence":65},"sh",[66],{"id":67},"post","unknown",{"praise":70,"objections":75,"requests":119,"questions":125,"alternatives":141},[71],{"value":72,"source":47,"evidence":73},"Explicit sequence of steps is more readable than declarative makefiles",[74],{"id":50,"by":11,"text":51},[76,91,105,112],{"value":77,"source":78,"evidence":79},"Uses functions and the local keyword, which are not portable to original Bourne shell or some platforms like Solaris","commenter",[80,84,88],{"id":81,"by":82,"text":83},"15044709","jwilk","> This repo illustrates a way to manage a project using just plain Bourne sh, available on all Unix systems since 1977. No, this code uses functions, which didn't exist in the…",{"id":85,"by":86,"text":87},"15044899","jperkin","It also uses the \"local\" keyword, which is non-portable. People like to bash the autotools, but they exist for exactly this reason - they already spent decades working through…",{"id":89,"by":86,"text":90},"15045382","Any OS which use the Korn shell as \u002Fbin\u002Fsh, for example Solaris 10, 11, and illumos: ``` $ \u002Fbin\u002Fsh -c \"fail() { local f; }; fail\" \u002Fbin\u002Fsh[1]: local: not found [No such file or…",{"value":92,"source":78,"evidence":93},"No dependency resolution or topological sorting, so it does not scale",[94,98,102],{"id":95,"by":96,"text":97},"15044002","boomlinde","This leaves the topological sorting of the tasks to the programmer? This is neat, but that's one very useful feature of make that's missing.",{"id":99,"by":100,"text":101},"15045338","edejong","I seriously wonder if the author ever worked on a project with more than around 10k LOC, multiple languages and tools, automatic testing, deployment, version control (merging…",{"id":103,"by":100,"text":104},"15045925","Yes, it's a team of engineers. But interestingly, Google started with a mono-repo. All through their explosive growth they maintained (mostly, except Android and Chromium) their…",{"value":106,"source":78,"evidence":107},"Python or another modern language would be cleaner than shell",[108],{"id":109,"by":110,"text":111},"15044386","vog","I applaud the effort, but is \"pure \u002Fbin\u002Fsh\" really a good feature in today's systems? To my knowledge, today every Unix system has Python, usually at least 2.7, if not Python 3.…",{"value":113,"source":78,"evidence":114},"Code has no open source license",[115],{"id":116,"by":117,"text":118},"15047991","TheDong","> The build script is easy to repurpose to your needs No, it's not. This isn't under a free or open source license. The lack of license means that only an idiot would use it for…",[120],{"value":121,"source":78,"evidence":122},"Support for parallel builds and dependency graphs",[123,124],{"id":95,"by":96,"text":97},{"id":50,"by":11,"text":51},[126],{"value":127,"source":78,"evidence":128},"How does it compare to make, tup, or apenwarr's do?",[129,133,137],{"id":130,"by":131,"text":132},"15043821","lauretas","\"notabug.org\"... interesting. Anyway, how does this compare, features-wise, with GNU Make? For example with make you have `.\u002Fconfigure` files, do I also have them here?",{"id":134,"by":135,"text":136},"15044800","zimpenfish","How does this compare to e.g. @apenwarr's minimal `do`?",{"id":138,"by":139,"text":140},"15044689","jlebrech","has anyone tried tup? http:\u002F\u002Fgittup.org\u002Ftup\u002F",[142,153,161,168,172],{"value":143,"source":78,"evidence":144},"tup",[145,148,149],{"id":146,"by":110,"text":147},"15044416","If you aim for slightly larger projects and efficiency, you'd need at least a DAG (because that's the fundamental nature of a dependency graph). You can find a nice explanation…",{"id":138,"by":139,"text":140},{"id":150,"by":151,"text":152},"15045002","chenglou","Tup is pretty darn amazing. I've never had such a high success rate while writing build rules under it. \"Once it builds, it has no bug\". Not to mention the great speed to begin…",{"value":154,"source":78,"evidence":155},"GNU make",[156,157],{"id":130,"by":131,"text":132},{"id":158,"by":159,"text":160},"15045363","falcolas","It's not a requirement - I give you: .RECIPEPREFIX > If you prefer to prefix your recipes with a character other than tab, you can set the .RECIPEPREFIX variable to an alternate…",{"value":162,"source":78,"evidence":163},"ninja",[164],{"id":165,"by":166,"text":167},"15045333","qznc","Thus ninja https:\u002F\u002Fninja-build.org\u002F",{"value":169,"source":78,"evidence":170},"apenwarr's do",[171],{"id":134,"by":135,"text":136},{"value":173,"source":78,"evidence":174},"qbs",[175],{"id":176,"by":177,"text":178},"15045264","dom0","tup sounds similar to qbs. I found qbs to be a most amazing C++ build system, it's the only one I used that is 1) reasonably easy to use 2) very fast 3) very correct Most build…",{"comments":180,"answered":37,"key":181},10,[182,185,188],{"id":183,"text":184},"15044765","Thanks for the correction!",{"id":186,"text":187},"15045065","Uh-uh. Pray tell me an actual extant platform without `local`. Debian dash deems 3 POSIX extensions basic enough to be in \u002Fbin\u002Fsh -- including `local`.…",{"id":189,"text":190},"15047701","That's good to know, actually. Thanks! Sorry about my tone before. Are there any other platforms that actually benefit from autotools, that you're aware of?",{"commenters":192,"max_depth":193,"maker_replies":180,"first_comment_mins":194,"lifespan_hours":195},43,7,95,18,[197,199,201,203,204,205,206,209,211,213,216,220,224,228,229,233,235,239,240,243,245,247,248,251,255,256,258,259,260,263,266,268,271,274,276,279,283,286,289,292,295,298,301,302,304,306,308,311,312,316,319,323,324,327,331,332,335,336,337,340,342,344,345],[81,30,41,198,82,30],"project\u002Fcritical\u002Fexecution",[183,30,30,200,11,41],"commenter\u002Fneutral\u002Fnone",[85,30,41,202,86,30],"project\u002Fcritical\u002Fidea",[186,30,30,200,11,41],[89,30,41,198,86,30],[189,30,30,200,11,41],[207,30,41,198,208,30],"15048493","JdeBP",[210,30,30,200,82,30],"15048698",[212,30,30,200,11,41],"15049977",[214,30,30,200,215,30],"15045076","rossy",[217,30,30,218,219,30],"15047989","commenter\u002Fneutral\u002Fperformance","jancsika",[221,30,30,222,223,30],"15048099","other\u002Fneutral\u002Fnone","convolvatron",[225,30,42,226,227,30],"15048578","project\u002Fmixed\u002Fexecution","feelin_googley",[99,41,41,202,100,30],[230,41,30,231,232,30],"15045773","other\u002Fneutral\u002Fperformance","antibjarne",[234,41,41,202,100,30],"15045901",[236,41,30,237,238,30],"15045820","commenter\u002Fneutral\u002Fidea","brudgers",[103,41,30,237,100,30],[241,41,30,200,242,30],"15046469","moosingin3space",[244,41,30,200,238,30],"15046548",[246,41,30,237,238,30],"15046533",[109,32,41,202,110,30],[249,32,30,250,11,41],"15044398","maker\u002Fneutral\u002Fnone",[252,32,42,253,254,30],"15044402","project\u002Fneutral\u002Fidea","adtac",[146,32,41,202,110,30],[257,32,30,200,11,41],"15044652",[150,32,30,222,151,30],[176,32,30,222,177,30],[261,32,30,222,262,30],"15047325","CJefferson",[264,32,42,253,265,30],"15045227","svckr",[267,32,41,198,110,30],"15045413",[269,32,41,198,270,30],"15044422","cbcoutinho",[272,32,41,202,273,30],"15044429","johnt15",[275,32,42,253,177,30],"15045252",[277,32,42,253,278,30],"15045814","chubot",[280,32,42,281,282,30],"15045342","project\u002Fneutral\u002Fnone","nailer",[284,32,30,222,285,30],"15046537","kingmanaz",[287,32,30,222,288,30],"15046332","majewsky",[290,32,30,222,291,30],"15047493","user5994461",[293,32,30,222,294,30],"15047962","wrs",[296,32,41,202,297,30],"15046531","swiley",[299,32,30,222,300,30],"15047220","edwinyzh",[95,42,41,202,96,30],[50,42,30,303,11,41],"project\u002Fpositive\u002Fidea",[305,42,41,202,110,30],"15044945",[134,307,42,253,135,30],4,[309,37,41,202,310,30],"15045308","ejholmes",[165,37,30,222,166,30],[313,314,30,222,315,30],"15049635",6,"pskocik",[317,193,42,226,318,30],"15045223","reacweb",[320,321,30,222,322,30],"15045719",8,"sgt",[130,31,42,281,131,30],[325,31,30,222,326,30],"15043930","beojan",[328,31,42,329,330,30],"15043950","project\u002Fneutral\u002Fexecution","gardnr",[60,31,30,329,11,41],[333,31,30,222,334,30],"15044273","Symbiote",[158,31,42,329,159,30],[53,31,30,253,11,41],[338,31,41,202,339,30],"15045381","blux",[341,31,30,222,11,41],"15049939",[343,31,30,200,288,30],"15044320",[138,180,30,222,139,30],[116,346,41,202,117,30],11,[],[349,354,359,363,368,373],{"id":350,"name":351,"points":352,"category":353},"15074526","Champion Traveler",395,"consumer_social",{"id":355,"name":356,"points":357,"category":358},"15041620","Product Graveyard",265,"other",{"id":360,"name":361,"points":362,"category":20},"15070686","Pdf-Bot",235,{"id":364,"name":365,"points":366,"category":367},"15076727","got-book-6",143,"ai",{"id":369,"name":370,"points":371,"category":372},"15073519","YC Remix",132,"productivity",{"id":374,"name":375,"points":376,"category":20},"15035747","Appster",79,false,"v2",{"id":380,"name":5,"line":6,"ai":377,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":381,"top":18,"kw":382,"maker":11,"domain":10,"tier":19,"attempts":30,"strip":383,"url":9,"mix":384,"praise":72,"objection":77,"sub":21},15043432,-0.49,[21,24,25,26],"1101100010100101000113300011110303303101",[30,31,32,33],1793990962974]