{"id":55413,"date":"2020-01-20T00:00:00","date_gmt":"2020-01-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2"},"modified":"2020-02-18T14:03:31","modified_gmt":"2020-02-18T11:03:31","slug":"sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","title":{"rendered":"Een medewerker van Red Hat heeft het build-systeem Goals gepresenteerd. Vrijgave GNU Make 4.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Richard Jones (Richard WM Jones), auteur <noindex><a rel=\"nofollow\" href=\"http:\/\/libguestfs.org\/\">libguestfs<\/a><\/noindex>, werkend bij Red Hat, <noindex><a rel=\"nofollow\" href=\"https:\/\/rwmj.wordpress.com\/2020\/01\/14\/goals-an-experimental-new-tool-which-generalizes-make\/\">gepresenteerd<\/a><\/noindex> een nieuwe buildtool <noindex><a rel=\"nofollow\" href=\"https:\/\/people.redhat.com\/~rjones\/goals\/\">Doelen<\/a><\/noindex>, gericht op het verhelpen van tekortkomingen en problemen in de make-tool, terwijl de algemene eenvoud en begrijpelijkheid van scripts behouden blijft. De make-tool werd in 1976 ontworpen en heeft een aantal conceptuele tekortkomingen, die met Goals verholpen moeten worden zonder de algemene opzet te veranderen.<br \/>\nDe broncode van Goals <noindex><a rel=\"nofollow\" href=\"http:\/\/git.annexia.org\/?p=goals.git;a=summary\">wordt verspreid<\/a><\/noindex> is gelicentieerd onder GPLv2+. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/git.annexia.org\/?p=libguestfs-talks.git;a=blob;f=2020-goals\/notes.txt;h=b03d9e5ea1062869c642a1850a09340ea1575116;hb=HEAD\">Opgeloste problemen<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> Ondersteuning voor slechts \u00e9\u00e9n strategie voor afhankelijkheidsresolutie \u2014 \u00abde bouwinstructie wordt uitgevoerd als het doelbestand ontbreekt of ouder is dan een van de afhankelijkheden\u00bb. In Goals zijn er plannen om ook andere strategie\u00ebn te implementeren, zoals het controleren van de aanwezigheid van een URL, het vergelijken van het wijzigingstijdstip met elk bestand, het inschatten van de pakketbouw in <noindex><a rel=\"nofollow\" href=\"https:\/\/fedoraproject.org\/wiki\/Koji\">Koji<\/a><\/noindex>, het vergelijken van checksums en het uitvoeren van testsets met selectief overslaan van tests.\n<li class=\"l\"> Bij het verwerken van bouwdoelen scheidt de make-tool geen bestanden en namen van regels, en als gevolg daarvan ontbreekt de controle dat bij het uitvoeren van de regel daadwerkelijk het bestand wordt aangemaakt dat is opgegeven. Bijvoorbeeld, als er een regel is met de naam \u00abtest\u00bb, die scripts met tests uitvoert, en per ongeluk een bestand met de naam \u00abtest\u00bb wordt aangemaakt, dan zullen de tests niet meer worden aangeroepen, aangezien make zal denken dat het doel is opgebouwd en geen verdere acties vereist zijn (om dit probleem te omzeilen, kan in make de richtlijn \u00ab.PHONY: test\u00bb worden opgegeven). Goals scheidt duidelijk bestanden en namen van regels.\n<p><center><img decoding=\"async\" alt=\"Een medewerker van Red Hat heeft het build-systeem Goals gepresenteerd. Vrijgave GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/47f42c47650ed38ae84938634edf1328.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Probleem met het verstrekken van slechts \u00e9\u00e9n parameter voor buildinstructies.\n<p><center><img decoding=\"async\" alt=\"Een medewerker van Red Hat heeft het build-systeem Goals gepresenteerd. Vrijgave GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/2a81f9f98745e6d2ddbb90e21b110295.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>In Goals wordt voorgesteld om een willekeurig aantal benoembare parameters te gebruiken. Zo kan bijvoorbeeld een label voor het debugbestand apart uit de naam worden gehaald:<\/p>\n<p><center><img decoding=\"async\" alt=\"Een medewerker van Red Hat heeft het build-systeem Goals gepresenteerd. Vrijgave GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/ffc783f17ae76bb4d928351ac216d828.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Problemen met de interactie met de shell-interpreter. Bijvoorbeeld, de noodzaak om spaties in bestands- en mapnamen te escap\u00ebren, het gebruik van middelen voor het starten van een aparte shell-interpreter bij de uitvoering van elke opdracht, dubbele interpretatie van het teken \u00ab$\u00bb (met name gebruikt in zowel de shell als in make), en het in acht nemen van inspringingen.\n<p>De genoemde problemen worden in Goals opgelost door het gebruik van het teken \u00ab%\u00bb in plaats van \u00ab$\u00bb voor bouwvariabelen (\u00ab$\u00bb blijft alleen voor de shell), en door het toepassen van een parser <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/LALR(1)\">LALR(1)<\/a><\/noindex>, waarbij paden en bestandsnamen tussen aanhalingstekens moeten worden geplaatst en codeblokken met accolades moeten worden gemarkeerd. Het hele blok wordt in \u00e9\u00e9n instantie van de commandoregel uitgevoerd, en binnen het blok is willekeurige code-indeling toegestaan, zonder dat speciale spaties vereist zijn.<\/p>\n<p>Was:<br \/>\n    target: foo.o bar.o<br \/>\n     ${CC} ${CFLAGS} $&lt; -o $@       <\/p>\n<p>Het is geworden:<br \/>\n    \u00abtarget\u00bb: \u00abfoo.o\u00bb, \u00abbar.o\u00bb {<br \/>\n        LAGS &lt;-o %@<br \/>\n    }<\/p>\n<\/ul>\n<p>Andere kenmerken van Goals:<\/p>\n<ul>\n<li class=\"l\"> Optionele ondersteuning voor het opgeven van willekeurige namen en parameters:\n<p>     doel all = : \u00abtarget\u00bb<\/p>\n<p>     goal link =<br \/>\n     \u00abtarget\u00bb : \u00abfoo.o\u00bb, \u00abbar.o\u00bb { \u2026 }<\/p>\n<p>     goal compile (name) =<br \/>\n     \u00ab%name.o\u00bb : \u00ab%name.c\u00bb, \u00abdep.h\u00bb { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> Twee uitvoermodi: de make-modus voor het koppelen van bouwdoelen aan bestandsnamen (bijvoorbeeld, het bestand \u00abfoo.o\u00bb komt overeen met het doel \u00ab%name.o\u00bb), en de modus voor directe compilatie-uitvoering:\n<p>     goal all = : link<\/p>\n<p>     goal link =<br \/>\n     \u00abtarget\u00bb : \u00abfoo.o\u00bb, compile (\u00abbar\u00bb) { \u2026 }<\/p>\n<p>     goal compile (name) =<br \/>\n     \u00ab%name.o\u00bb : \u00ab%name.c\u00bb, \u00abdep.h\u00bb { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> De bouwstrategie wordt bepaald door speciale regels die de noodzaak voor het opnieuw bouwen van een bouwdoel kunnen aangeven. Als de binding afhankelijk is van het bestaan van een bestand, dan wordt dit expliciet aangegeven door het overeenkomstige kenmerk (\u00abtarget\u00bb voor de naam van de regel en *file(\u00abtarget\u00bb) voor de controle van het bestand).\n<p>  \u00abtarget\u00bb : \u00abfoo.o\u00bb, \u00abbar.o\u00bb { \u2026 }<\/p>\n<p>  *file(\u00abtarget\u00bb) : *file(\u00abfoo.o\u00bb), *file(\u00abbar.o\u00bb) { \u2026 }<\/p>\n<li class=\"l\"> De ontwikkelaar kan willekeurige kenmerken van assemblagetactieken defini\u00ebren. De functie \u2018*file\u2019 is standaard gedefinieerd (@{\u2026} geeft aan dat de uitvoer wordt onderdrukt, en \u2018exit 99\u2019 signaleert de noodzaak voor herbouw):\n<p>   tactic *file (filename) = @{<br \/>\n      test -f %filename || exit 99<br \/>\n      for f in %<\/p>\n<p>Bron: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52215\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u0436\u043e\u043d\u0441 (Richard WM Jones), \u0430\u0432\u0442\u043e\u0440 libguestfs, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Red Hat, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u043e\u0432\u0443\u044e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 Goals, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 make \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043e\u0431\u0449\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 make \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 1976 \u0433\u043e\u0434\u0443 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a, \u0432 Goals \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u043e\u0431\u0449\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55413","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u0436\u043e\u043d\u0441 (Richard WM Jones), \u0430\u0432\u0442\u043e\u0440 libguestfs, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Red Hat,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a Red Hat \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Goals. \u0412\u044b\u043f\u0443\u0441\u043a GNU Make 4.2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u0436\u043e\u043d\u0441 (Richard WM Jones), \u0430\u0432\u0442\u043e\u0440 libguestfs, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Red Hat,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Medewerker van Red Hat presenteerde het bouwsysteem Goals. Uitgave GNU Make 4.2 | ProHoster","description":"Richard Jones (Richard WM Jones), auteur van libguestfs, werkzaam bij Red Hat,","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a Red Hat \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Goals. \u0412\u044b\u043f\u0443\u0441\u043a GNU Make 4.2 | ProHoster","og:description":"\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u0436\u043e\u043d\u0441 (Richard WM Jones), \u0430\u0432\u0442\u043e\u0440 libguestfs, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Red Hat,","og:url":"https:\/\/prohoster.info\/nl\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55413","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:44:26","updated":"2022-09-28 03:55:10","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/55413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=55413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/55413\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=55413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=55413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=55413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}