{"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\/ro\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","title":{"rendered":"Un angajat Red Hat a prezentat sistemul de compilare Goals. Lansarea GNU Make 4.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Richard Jones (Richard WM Jones), autor <noindex><a rel=\"nofollow\" href=\"http:\/\/libguestfs.org\/\">libguestfs<\/a><\/noindex>, care lucreaz\u0103 la Red Hat, <noindex><a rel=\"nofollow\" href=\"https:\/\/rwmj.wordpress.com\/2020\/01\/14\/goals-an-experimental-new-tool-which-generalizes-make\/\">a prezentat<\/a><\/noindex> noua unealt\u0103 de compilare <noindex><a rel=\"nofollow\" href=\"https:\/\/people.redhat.com\/~rjones\/goals\/\">Obiective<\/a><\/noindex>, destinat\u0103 s\u0103 abordeze deficien\u021bele \u0219i problemele unealtelor make, p\u0103str\u00e2nd \u00een acela\u0219i timp simplitatea \u0219i claritatea scripturilor. Unealta make a fost proiectat\u0103 \u00een 1976 \u0219i are o serie de neajunsuri concepute, \u00een Goals se propune eliminarea acestei neajunsuri, f\u0103r\u0103 a schimba conceptul general.<br \/>\nCodul surs\u0103 al Goals <noindex><a rel=\"nofollow\" href=\"http:\/\/git.annexia.org\/?p=goals.git;a=summary\">se r\u0103sp\u00e2nde\u0219te<\/a><\/noindex> sub licen\u021ba 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\">Probleme abordate<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> Sprijin pentru o singur\u0103 strategie de rezolvare a dependen\u021belor &#8212; &#171;instruc\u021biunea de compilare se execut\u0103 dac\u0103 fi\u0219ierul \u021bint\u0103 nu exist\u0103 sau este mai vechi dec\u00e2t una dintre dependen\u021be&#187;. \u00cen Goals este planificat\u0103 implementarea \u0219i altor strategii, cum ar fi verificarea existen\u021bei URL-ului, compararea timpului de modificare cu orice fi\u0219ier, evaluarea construc\u021biei pachetului \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/fedoraproject.org\/wiki\/Koji\">Koji<\/a><\/noindex>, compararea sumelor de control, rularea seturilor de teste cu omisiuni selective ale testelor.\n<li class=\"l\"> \u00cen procesarea obiectivelor de compilare, utilitarul make nu face distinc\u021bie \u00eentre fi\u0219iere \u0219i numele regulilor, iar ca urmare, nu exist\u0103 o verificare c\u0103, la executarea regulii, fi\u0219ierul care este declarat ca fiind creat va fi de fapt generat. De exemplu, dac\u0103, \u00een prezen\u021ba unei reguli numite &#171;test&#187;, care ruleaz\u0103 scripturi cu teste, se creeaz\u0103 accidental un fi\u0219ier numit &#171;test&#187;, testele nu vor mai fi apelate, deoarece make va considera c\u0103 obiectivul este complet \u0219i nu necesit\u0103 executarea unor ac\u021biuni (pentru a ocoli aceast\u0103 problem\u0103 \u00een make se poate specifica directiva &#171;.PHONY: test&#187;). Goals separ\u0103 \u00een mod clar fi\u0219ierele \u0219i numele regulilor.\n<p><center><img decoding=\"async\" alt=\"Un angajat Red Hat a prezentat sistemul de compilare Goals. Lansarea GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/47f42c47650ed38ae84938634edf1328.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Problema furniz\u0103rii unui singur parametru pentru instruc\u021biunile de construire.\n<p><center><img decoding=\"async\" alt=\"Un angajat Red Hat a prezentat sistemul de compilare Goals. Lansarea GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/2a81f9f98745e6d2ddbb90e21b110295.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>\u00cen Goals se propune utilizarea unui num\u0103r arbitrar de parametri numi\u021bi. De exemplu, se poate extrage separat din nume caracteristica fi\u0219ierului de depanare:<\/p>\n<p><center><img decoding=\"async\" alt=\"Un angajat Red Hat a prezentat sistemul de compilare Goals. Lansarea GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/ffc783f17ae76bb4d928351ac216d828.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Problemele de interac\u021biune cu interpretul shell. De exemplu, necesitatea de a controla escaparea spa\u021biilor \u00een numele fi\u0219ierelor \u0219i directoarelor, consumul de resurse pentru a ini\u021bia un interpret de shell separat la executarea fiec\u0103rei comenzi, interpretarea dubl\u0103 a simbolului &#171;$&#187; (utilizat at\u00e2t \u00een shell, c\u00e2t \u0219i \u00een make), considerarea indent\u0103rilor.\n<p>Problemele men\u021bionate sunt rezolvate \u00een Goals prin utilizarea simbolului &#171;%&#187; \u00een loc de &#171;$&#187; pentru variabilele de compilare (&#171;$&#187; r\u0103m\u00e2ne doar pentru shell), utiliz\u00e2nd un parser <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/LALR(1)\">LALR(1)<\/a><\/noindex>, care necesit\u0103 \u00eencadrarea c\u0103ilor \u0219i numelui fi\u0219ierelor \u00eentre ghilimele \u0219i delimitarea blocurilor de cod cu acolade. \u00centregul bloc este executat \u00eentr-o singur\u0103 instan\u021b\u0103 a shell-ului, iar \u00een interiorul blocului este permis un format aleatoriu al codului, f\u0103r\u0103 leg\u0103tur\u0103 cu spa\u021biile speciale.<\/p>\n<p>A fost:<br \/>\n    target: foo.o bar.o<br \/>\n     ${CC} ${CFLAGS} &lt;$ -o $@       <\/p>\n<p>A devenit:<br \/>\n    &#171;target&#187;: &#171;foo.o&#187;, &#171;bar.o&#187; {<br \/>\n        LAGS &lt; -o %@<br \/>\n    }<\/p>\n<\/ul>\n<p>Alte caracteristici ale Goals:<\/p>\n<ul>\n<li class=\"l\"> Suport op\u021bional pentru specificarea numelui \u0219i parametrilor arbitrar:\n<p>     goal all = : &#171;target&#187;<\/p>\n<p>     goal link =<br \/>\n     &#171;target&#187; : &#171;foo.o&#187;, &#171;bar.o&#187; { &#8230; }<\/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\"> Dou\u0103 moduri de rulare: modul make pentru a corela obiectivele de compilare cu numele fi\u0219ierelor (de exemplu, fi\u0219ierul &#171;foo.o&#187; corespunde obiectivului &#171;%name.o&#187;), \u0219i modul de rulare direct a compil\u0103rii:\n<p>     goal all = : link<\/p>\n<p>     goal link =<br \/>\n     &#171;target&#187; : &#171;foo.o&#187;, compile (&#171;bar&#187;) { &#8230; }<\/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\"> Strategia de compilare este definit\u0103 prin reguli specifice, prin care se poate determina necesitatea recompil\u0103rii obiectivului de compilare. Dac\u0103 se leag\u0103 de existen\u021ba fi\u0219ierului, acest lucru este definit \u00een mod explicit printr-un semn corespunz\u0103tor (&#171;target&#187; pentru numele regulii \u0219i *file(&#171;target&#187;) pentru verificarea fi\u0219ierului).\n<p>  &#171;target&#187; : &#171;foo.o&#187;, &#171;bar.o&#187; { &#8230; }<\/p>\n<p>  *file(&#171;target&#187;) : *file(&#171;foo.o&#187;), *file(&#171;bar.o&#187;) { &#8230; }<\/p>\n<li class=\"l\"> Dezvoltatorul poate defini atribute arbitrare pentru tacticile de compilare. Atributul \u00ab*file\u00bb este definit implicit (@{...} semnaleaz\u0103 suprimarea ie\u0219irii, iar \u00abexit 99\u00bb indic\u0103 necesitatea recompil\u0103rii):\n<p>   tactic *file (filename) = @{<br \/>\n      test -f %filename || exit 99<br \/>\n      for f in %<\/p>\n<p>Sursa: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52215\">opennet.ro<\/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.2.1 - 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\/ro\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Angajatul Red Hat a prezentat sistemul de construire Goals. Lansare GNU Make 4.2 | ProHoster","description":"Richard Jones, autorul libguestfs, care lucreaz\u0103 la Red Hat,","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/55413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=55413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55413\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}