{"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\/fr\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","title":{"rendered":"Un employ\u00e9 de Red Hat a pr\u00e9sent\u00e9 le syst\u00e8me de construction Goals. Sortie de GNU Make 4.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Richard Jones, auteur <noindex><a rel=\"nofollow\" href=\"http:\/\/libguestfs.org\/\">libguestfs<\/a><\/noindex>, travaillant chez Red Hat, <noindex><a rel=\"nofollow\" href=\"https:\/\/rwmj.wordpress.com\/2020\/01\/14\/goals-an-experimental-new-tool-which-generalizes-make\/\">pr\u00e9sent\u00e9<\/a><\/noindex> un nouvel utilitaire de construction <noindex><a rel=\"nofollow\" href=\"https:\/\/people.redhat.com\/~rjones\/goals\/\">Objectifs<\/a><\/noindex>, visant \u00e0 corriger les d\u00e9fauts et probl\u00e8mes de l'outil make tout en pr\u00e9servant la simplicit\u00e9 et la clart\u00e9 des scripts. L'outil make a \u00e9t\u00e9 con\u00e7u en 1976 et pr\u00e9sente plusieurs d\u00e9fauts conceptuels, qui seront corrig\u00e9s dans Goals sans changer la conception globale.<br \/>\nCode source de Goals <noindex><a rel=\"nofollow\" href=\"http:\/\/git.annexia.org\/?p=goals.git;a=summary\">est distribu\u00e9<\/a><\/noindex> sous licence 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\">Probl\u00e8mes r\u00e9solus<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> La prise en charge d'une seule tactique de r\u00e9solution des d\u00e9pendances \u2014 \u00ab l'instruction de construction s'ex\u00e9cute si le fichier cible est absent ou s'il est plus ancien qu'une des d\u00e9pendances \u00bb. Dans Goals, il est pr\u00e9vu de mettre en \u0153uvre d'autres tactiques, telles que la v\u00e9rification de l'existence d'URL, la comparaison des horodatages avec n'importe quel fichier, l'\u00e9valuation de la construction du package dans <noindex><a rel=\"nofollow\" href=\"https:\/\/fedoraproject.org\/wiki\/Koji\">Koji<\/a><\/noindex>, la comparaison des sommes de contr\u00f4le, l'ex\u00e9cution des ensembles de tests avec des passes s\u00e9lectives.\n<li class=\"l\"> Lors du traitement des objectifs de construction, l'utilitaire make ne s\u00e9pare pas les fichiers et les noms de r\u00e8gles, ce qui engendre l'absence de v\u00e9rification que, lors de l'ex\u00e9cution d'une r\u00e8gle, un fichier sera effectivement cr\u00e9\u00e9, comme pr\u00e9vu. Par exemple, si une r\u00e8gle nomm\u00e9e \u00ab test \u00bb, ex\u00e9cutant des scripts de test, cr\u00e9e accidentellement un fichier nomm\u00e9 \u00ab test \u00bb, les tests cesseront d'\u00eatre appel\u00e9s, car make consid\u00e9rera que l'objectif est atteint et ne n\u00e9cessite aucune action suppl\u00e9mentaire (pour contourner ce probl\u00e8me dans make, la directive \u00ab .PHONY: test \u00bb peut \u00eatre utilis\u00e9e). Goals s\u00e9pare clairement les fichiers et les noms de r\u00e8gles.\n<p><center><img decoding=\"async\" alt=\"Un employ\u00e9 de Red Hat a pr\u00e9sent\u00e9 le syst\u00e8me de construction Goals. Sortie de GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/47f42c47650ed38ae84938634edf1328.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Probl\u00e8me de n'avoir qu'un seul param\u00e8tre pour les instructions de construction.\n<p><center><img decoding=\"async\" alt=\"Un employ\u00e9 de Red Hat a pr\u00e9sent\u00e9 le syst\u00e8me de construction Goals. Sortie de GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/2a81f9f98745e6d2ddbb90e21b110295.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>Goals propose d'utiliser un nombre arbitraire de param\u00e8tres nomm\u00e9s. Par exemple, il est possible de s\u00e9parer un attribut du nom indiquant un fichier de d\u00e9bogage :<\/p>\n<p><center><img decoding=\"async\" alt=\"Un employ\u00e9 de Red Hat a pr\u00e9sent\u00e9 le syst\u00e8me de construction Goals. Sortie de GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/ffc783f17ae76bb4d928351ac216d828.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Probl\u00e8mes d'interaction avec l'interpr\u00e9teur shell. Par exemple, la n\u00e9cessit\u00e9 de g\u00e9rer l'\u00e9chappement des espaces dans les noms de fichiers et de r\u00e9pertoires, le gaspillage de ressources \u00e0 lancer un interpr\u00e9teur shell distinct pour chaque commande, la double interpr\u00e9tation du symbole \u00ab $ \u00bb (utilis\u00e9 \u00e0 la fois dans le shell et dans make), la prise en compte des indentations.\n<p>Ces probl\u00e8mes sont r\u00e9solus dans Goals par l'utilisation du symbole \u00ab % \u00bb au lieu de \u00ab $ \u00bb pour les variables de construction (\u00ab $ \u00bb restant uniquement pour le shell), en appliquant le parseur <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/LALR(1)\">LALR(1)<\/a><\/noindex>, n\u00e9cessitant d'encadrer les chemins et les noms de fichiers entre guillemets et de d\u00e9limiter les blocs de code entre accolades. Tout le bloc s'ex\u00e9cute dans une seule instance de shell, et un formatage de code al\u00e9atoire est autoris\u00e9 \u00e0 l'int\u00e9rieur du bloc, sans attacher \u00e0 des espaces sp\u00e9ciaux.<\/p>\n<p>Avant :<br \/>\n    cible: foo.o bar.o<br \/>\n     ${CC} ${CFLAGS} $&lt; -o $@       <\/p>\n<p>Devenu:<br \/>\n    \u00ab target \u00bb: \u00ab foo.o \u00bb, \u00ab bar.o \u00bb {<br \/>\n        LAGS %&lt; -o %@<br \/>\n    }<\/p>\n<\/ul>\n<p>Autres caract\u00e9ristiques de Goals :<\/p>\n<ul>\n<li class=\"l\"> Support optionnel pour la d\u00e9finition de noms et de param\u00e8tres arbitraires :\n<p>     objectif all = : \u00ab target \u00bb<\/p>\n<p>     objectif lien =<br \/>\n     \u00ab target \u00bb : \u00ab foo.o \u00bb, \u00ab bar.o \u00bb { \u2026 }<\/p>\n<p>     objectif compilation (nom) =<br \/>\n     \u00ab %name.o \u00bb : \u00ab %name.c \u00bb, \u00ab dep.h \u00bb { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> Deux modes d'ex\u00e9cution : mode make pour faire correspondre les objectifs de construction avec les noms de fichiers (par exemple, le fichier \u00ab foo.o \u00bb correspond \u00e0 l'objectif \u00ab %name.o \u00bb), et mode d'ex\u00e9cution directe de la compilation :\n<p>     objectif all = : lien<\/p>\n<p>     objectif lien =<br \/>\n     \u00ab target \u00bb : \u00ab foo.o \u00bb, compile (\u00ab bar \u00bb) { \u2026 }<\/p>\n<p>     objectif compilation (nom) =<br \/>\n     \u00ab %name.o \u00bb : \u00ab %name.c \u00bb, \u00ab dep.h \u00bb { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> La tactique de construction est d\u00e9finie par des r\u00e8gles sp\u00e9ciales, qui permettent de d\u00e9terminer la n\u00e9cessit\u00e9 de reconstruire un objectif. Si l'on se base sur l'existence d'un fichier, cela est clairement d\u00e9fini par un indicateur correspondant (\u00ab target \u00bb pour le nom de la r\u00e8gle et *file(\u00ab target \u00bb) pour v\u00e9rifier le fichier).\n<p>  \u00ab target \u00bb : \u00ab foo.o \u00bb, \u00ab bar.o \u00bb { \u2026 }<\/p>\n<p>  *file(\u00ab target \u00bb) : *file(\u00ab foo.o \u00bb), *file(\u00ab bar.o \u00bb) { \u2026 }<\/p>\n<li class=\"l\"> Le d\u00e9veloppeur peut d\u00e9finir des attributs arbitraires pour les tactiques de compilation. L'attribut \u00ab *file \u00bb est d\u00e9fini par d\u00e9faut (@{\u2026} indique la suppression de la sortie, et \u00ab exit 99 \u00bb signale la n\u00e9cessit\u00e9 d'une recompilation):\n<p>   tactique *file (nom_fichier) = @{<br \/>\n      test -f %filename || exit 99<br \/>\n      pour f dans %<\/p>\n<p>Source : <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.2 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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 Un employ\u00e9 de Red Hat a pr\u00e9sent\u00e9 le syst\u00e8me de construction Goals. Version GNU Make 4.2 | ProHoster","description":"Richard Jones, auteur de libguestfs, travaillant chez Red Hat,","canonical_url":"https:\/\/prohoster.info\/fr\/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":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/55413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=55413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55413\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=55413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=55413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=55413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}