{"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\/de\/blog\/news\/sotrudnik-red-hat-predstavil-sborochnuyu-sistemu-goals-vypusk-gnu-make-4-2","title":{"rendered":"Ein Mitarbeiter von Red Hat pr\u00e4sentierte das Build-System Goals. Ver\u00f6ffentlichung von 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>, der bei Red Hat arbeitet, <noindex><a rel=\"nofollow\" href=\"https:\/\/rwmj.wordpress.com\/2020\/01\/14\/goals-an-experimental-new-tool-which-generalizes-make\/\">vor<\/a><\/noindex> ein neues Build-Tool <noindex><a rel=\"nofollow\" href=\"https:\/\/people.redhat.com\/~rjones\/goals\/\">Ziele<\/a><\/noindex>, das darauf abzielt, M\u00e4ngel und Probleme im make-Tool zu beheben und gleichzeitig die gesamte Einfachheit und Verst\u00e4ndlichkeit der Skripte zu bewahren. Das make-Tool wurde 1976 konzipiert und weist eine Reihe konzeptioneller M\u00e4ngel auf, die in den Zielen behoben werden sollen, ohne das Gesamtkonzept zu \u00e4ndern.<br \/>\nQuellcode der Ziele <noindex><a rel=\"nofollow\" href=\"http:\/\/git.annexia.org\/?p=goals.git;a=summary\">wird verbreitet<\/a><\/noindex> unter der GPLv2+-Lizenz. <\/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\">Zu l\u00f6sende Probleme<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> Die Unterst\u00fctzung nur einer Taktik zur Aufl\u00f6sung von Abh\u00e4ngigkeiten \u2014 \u201eDie Build-Anleitung wird ausgef\u00fchrt, wenn die Zieldatei nicht vorhanden ist oder \u00e4lter als eine der Abh\u00e4ngigkeiten ist\u201c. In Goals sind auch andere Taktiken geplant, wie z. B. die \u00dcberpr\u00fcfung der Verf\u00fcgbarkeit von URLs, den Vergleich des \u00c4nderungszeitpunkts mit einer beliebigen Datei und die Sch\u00e4tzung des Paketbaus in <noindex><a rel=\"nofollow\" href=\"https:\/\/fedoraproject.org\/wiki\/Koji\">Koji<\/a><\/noindex>, der Vergleich von Pr\u00fcfziffern, das Ausf\u00fchren von Test-Suites mit selektivem \u00dcberspringen von Tests.\n<li class=\"l\"> Bei der Verarbeitung von Build-Zielen trennt das Tool make Dateien und Regelnamen nicht, und folglich gibt es keine \u00dcberpr\u00fcfung, dass bei der Ausf\u00fchrung einer Regel tats\u00e4chlich eine Datei erstellt wird, deren Erstellung angek\u00fcndigt wurde. Wenn beispielsweise bei einer Regel mit dem Namen \u201etest\u201c, die Skripte mit Tests ausf\u00fchrt, zuf\u00e4llig eine Datei mit dem Namen \u201etest\u201c erstellt wird, dann werden die Tests nicht mehr aufgerufen, da make annimmt, dass das Ziel erstellt wurde und keine weiteren Ma\u00dfnahmen erforderlich sind (um dieses Problem zu umgehen, kann in make die Direktive \u201e.PHONY: test\u201c angegeben werden). Goals trennt ausdr\u00fccklich Dateien und Regelnamen.\n<p><center><img decoding=\"async\" alt=\"Ein Mitarbeiter von Red Hat pr\u00e4sentierte das Build-System Goals. Ver\u00f6ffentlichung von GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/47f42c47650ed38ae84938634edf1328.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Das Problem, nur einen Parameter f\u00fcr die Build-Anweisungen bereitzustellen.\n<p><center><img decoding=\"async\" alt=\"Ein Mitarbeiter von Red Hat pr\u00e4sentierte das Build-System Goals. Ver\u00f6ffentlichung von GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/2a81f9f98745e6d2ddbb90e21b110295.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>In den Zielen wird vorgeschlagen, eine beliebige Anzahl benannter Parameter zu verwenden. Beispielsweise kann man das Merkmal der Debugging-Datei aus dem Namen separat herausheben:<\/p>\n<p><center><img decoding=\"async\" alt=\"Ein Mitarbeiter von Red Hat pr\u00e4sentierte das Build-System Goals. Ver\u00f6ffentlichung von GNU Make 4.2\" src=\"\/wp-content\/uploads\/2020\/01\/ffc783f17ae76bb4d928351ac216d828.png\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<li class=\"l\"> Probleme mit der Interaktion mit dem Shell-Interpreter. Zum Beispiel die Notwendigkeit, das Escaping von Leerzeichen in Dateinamen und Verzeichnissen zu kontrollieren, der Ressourcenaufwand f\u00fcr die Ausf\u00fchrung eines separaten Shell-Interpreters f\u00fcr jeden Befehl, die doppelte Interpretation des Zeichens \u201e$\u201c (das sowohl in der Shell als auch in make verwendet wird), das Ber\u00fccksichtigen von Einr\u00fcckungen.\n<p>Die genannten Probleme werden in Goals durch die Verwendung des Symbols \u201e%\u201c anstelle von \u201e$\u201c f\u00fcr Build-Variablen gel\u00f6st (das \u201e$\u201c bleibt nur f\u00fcr die Shell), durch die Anwendung eines Parsers. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/LALR(1)\">LALR(1)<\/a><\/noindex>, die Pfade und Dateinamen in Anf\u00fchrungszeichen setzen und Codebl\u00f6cke in geschweifte Klammern einschlie\u00dfen m\u00fcssen. Der gesamte Block wird in einem einzigen Instanz der Kommandozeile ausgef\u00fchrt, und innerhalb des Blocks ist beliebige Codeformatierung zul\u00e4ssig, ohne an spezielle Leerzeichen gebunden zu sein.<\/p>\n<p>Fr\u00fcher:<br \/>\n    target: foo.o bar.o<br \/>\n     ${CC} ${CFLAGS} &lt;$ -o $@       <\/p>\n<p>Ist geworden:<br \/>\n    \u201etarget\u201c: \u201efoo.o\u201c, \u201ebar.o\u201c {<br \/>\n        LAGS %&lt; -o %@<br \/>\n    }<\/p>\n<\/ul>\n<p>Weitere Merkmale von Goals:<\/p>\n<ul>\n<li class=\"l\"> Optionale Unterst\u00fctzung f\u00fcr die Angabe beliebiger Namen und Parameter:\n<p>     ziel all = : \u201etarget\u201c<\/p>\n<p>     goal link =<br \/>\n     \u201etarget\u201c : \u201efoo.o\u201c, \u201ebar.o\u201c { \u2026 }<\/p>\n<p>     goal compile (name) =<br \/>\n     \u201e%name.o\u201c : \u201e%name.c\u201c, \u201edep.h\u201c { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> Zwei Betriebsarten: der make-Modus zur Zuordnung von Build-Zielen zu Dateinamen (z. B. die Datei \u201efoo.o\u201c entspricht dem Ziel \u201e%name.o\u201c) und der Modus f\u00fcr den direkten Kompilierungsstart:\n<p>     goal all = : link<\/p>\n<p>     goal link =<br \/>\n     \u201etarget\u201c : \u201efoo.o\u201c, kompilieren (\u201ebar\u201c) { \u2026 }<\/p>\n<p>     goal compile (name) =<br \/>\n     \u201e%name.o\u201c : \u201e%name.c\u201c, \u201edep.h\u201c { LAGS -c $^ -o $@ }<\/p>\n<li class=\"l\"> Die Build-Taktik wird durch spezielle Regeln definiert, mit denen die Notwendigkeit zur Neuanlage eines Build-Ziels festgelegt werden kann. Wenn eine Bindung an das Vorhandensein einer Datei erfolgt, wird dies eindeutig durch das entsprechende Merkmal definiert (\u201etarget\u201c f\u00fcr den Regelname und *file(\u201etarget\u201c) zur \u00dcberpr\u00fcfung der Datei).\n<p>  \u201etarget\u201c : \u201efoo.o\u201c, \u201ebar.o\u201c { \u2026 }<\/p>\n<p>  *file(\u201etarget\u201c) : *file(\u201efoo.o\u201c), *file(\u201ebar.o\u201c) { \u2026 }<\/p>\n<li class=\"l\"> Der Entwickler kann beliebige Merkmale von Build-Taktiken definieren. Das Merkmal \u201e*file\u201c ist standardm\u00e4\u00dfig festgelegt (@{\u2026} steht f\u00fcr die Unterdr\u00fcckung der Ausgabe, und \u201eexit 99\u201c signalisiert die Notwendigkeit einer Neubauaktion):\n<p>   tactic *file (filename) = @{<br \/>\n      test -f %filename || exit 99<br \/>\n      for f in %<\/p>\n<p>Quelle: <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.1.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\/de\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Ein Mitarbeiter von Red Hat hat das Builds-System Goals vorgestellt. Ver\u00f6ffentlichung von GNU Make 4.2 | ProHoster","description":"Richard Jones (Richard WM Jones), der Autor von libguestfs, der bei Red Hat arbeitet,","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/55413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=55413"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55413\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=55413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=55413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=55413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}