Prezident USA Donald Trump během svého projevu na valném shromáždění OSN 22. září 2026 prohlásil, že umělá inteligence 'bude dále oficiálně nazývána superinteligencí', zkráceně SI. Svůj návrh zdůvodnil takto: 'Použití slova artificial činí inteligenci falešnou. Ona falešná není, ve skutečnosti je úžasná'. Zároveň ve svém proslovu prohlásil, že Spojené státy kategoricky odmítají jakékoliv pokusy o vytvoření 'globalistického
… více »Čínská technologická firma Xiaomi představila novou verzi 2.6 svého modelu MiMo, váhy modelů MiMo‑V2.6‑Pro‑RL a MiMo‑V2.6‑Flash‑RL jsou dostupné na HuggingFace pod licencí MIT. Výkonnější varianta Pro má přes bilion parametrů, z toho 42 miliard aktivních, úspornější Flash 309 miliard parametrů, z nichž se při generování aktivuje přibližně 15 miliard. Oba modely mají délku kontextového okna milion tokenů. Tyto MoE modely zvládají
… více »Proběhl Snapdragon Summit 2026. Společnost Qualcomm se mimo jiné pochlubila během Linuxu na čipech Snapdragon X2. Zatím pouze v ranní verzi vhodné pro vývojáře linuxových distribucí a přispěvatele do jádra Linux.
Byla vydána nová verze 2.0 klienta F-Droid určeného pro instalaci bezplatných a otevřených mobilních aplikací do Androidu ze softwarového repozitáře F-Droid (Wikipedie). Jedná se o alternativu k Google Play.
Debian Inference Portal nabízí vývojářům Debianu bezplatný přístup ke službám AI/LLM. Sponzorem je společnost Scaleway.
Robert Ressl nalezl ve WordPressu kritickou zranitelnost CVE-2026-87902 s CVSS 9.2. Útočníkům umožňuje neoprávněný přístup k souborům a vzdálené spuštění kódu (RCE). Opravena je ve verzích 7.1.2, 7.0.6, 6.9.9…
Společnost Meta na dvoudenní konferenci Meta Connect 2026 představuje své novinky. Vypíchnout lze lehké brýle s funkci VR Meta VR Glasses. Do prodeje půjdou na jaře 2027 za cenu 1299,99 dolarů.
Google Chrome 154 byl prohlášen za stabilní. Nejnovější stabilní verze 154.0.8037.57 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 108 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Vláda sníží v příštím roce výdaje na IT služby státu o 1,4 miliardy korun. Úspory má umožnit lepší koordinace nákupu služeb napříč resorty prostřednictvím nového zmocněnce. Celkové roční výdaje státu na informační technologie a digitalizaci se podle údajů ministerstva průmyslu a obchodu pohybují okolo 20 až 25 miliard korun ročně, pro letošek bylo na 320 projektů vyčleněno 21 miliard.
Irská komise pro ochranu dat (DPC) uložila americké technologické společnosti Google ze skupiny Alphabet pokutu 403 milionů eur (9,8 miliardy Kč) za neoprávněné nakládání s údaji o poloze uživatelů. Firma podle komise porušila evropské nařízení o ochraně osobních údajů (GDPR). DPC uvedla, že při šetření zjistila, že si lidé nemuseli být vědomi skutečnosti, že jejich poloha byla využívána například k ovlivňování prostřednictvím reklam nebo k odvozování jejich zájmů, a mohli tak ztratit kontrolu nad svými osobními údaji.
%ifBylo by nadmíru zvláštní, kdyby existovaly %ifarch a %ifos, a přitom žádné %if. A ono také existuje. Syntaxe je stejná jako u %ifarch
a velmi připomíná preprocesor C (část s %else je nepovinná):
%if logický_výraz … %else … %endif
Logické výrazy vypadají, jak jsme zvyklí z většiny ostatních jazyků. Nula je nepravda, nenulové číslo pravda. Můžeme testovat existenci maker
%if %{?WITH_SELINUX:1}%{!?WITH_SELINUX:0}
porovnávat řetězce
%if "%{with_sasl1}" == "yes" || "%{with_sasl2}" == "yes"
nebo ověřovat platnost elementárních matematických tvrzení
%configure \
%if 2 + 2 == 5
--with-funny-math \
%endif
…
Z posledního příkladu také vidíme, že řádky s podmínkami jsou po expansi kompletně vynechány (stejně jako řádky s %define a dalšími direktivami), a tak je můžeme bezpečně vkládat doprostřed čehokoli.
Funkce připomínají makra, ale zatímco makro při použití na něco expanduje, funkce něco vykoná. Syntaxe volání funkcí je
%{název_funkce:argument}
%{název_funkce}
%{!název_funkce}
přičemž poslední dva příklady se týkají funkcí bez argumentů, které nastavují nějaký příznak.
K disposici máme následující funkce:
%{echo:…}, %{warn:…}, %{error:…}%{trace}, %{!trace}%{verbose}, %{!verbose}rpm --verbose).%{dump}rpm --showrc), jak vypadá právě v místě, kde se funkce provede.%{expand:…}%{expand:…} jsou lokální; mají-li být globální, musíme je definovat %global.%{lua:…}%{basename:…}%{dirname:…}%{suffix:…}%{url2path:…}, %{u2p:…}%{uncompress:…}gzipem, bzip2em, zipem a nekomprimované.%{S:…}, %{P:…}%SOURCEargument
a %PATCHargument – neexpandované, tj. ne na jejich hodnoty.%{F:…}fileargument.file. Pokud někdo tuší, k čemu to může být dobré, docela by mě to zajímalo.S většinou funkcí se v existujících spec souborech potkáte zřídka, některé se však hodí při ladění.
Odskočit do shellu, tedy vykonat v rámci expanse makra libovolný příkaz shellu, můžeme konstrukcí
%(příkaz_shellu)
Výstup příkazu se stane expansí makra. Lze to využít k ledasčemu, od nevinných konstrukcí
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
přes úlety typu
%define vendorstring Unsupported Custom Build by %(whoami)
až po věci, které sem raději nebudu psát, kterých však najdete dost ve spec souborech oblíbené rpmoidní distribuce. Kupříkladu standardní makra pro zjištění perlích adresářů (v nichž je pěkný guláš) vypadají:
%define perl_archlib %(eval "`perl -V:installarchlib`"; echo $installarchlib)
Těla maker se ovšem expandují až při použití. Proto když desetkrát použijeme
%perl_archlib, bude se desetkrát spouštět perl a sdělovat nám, kde má jakýsi adresář. Efektivnější by bylo
%{expand:%global perl_archlib %(…)}
Takto však lze definovat makro jen ve spec souboru, nikoli v macros.
Makra %setup a %patch, i když to vlastně nejsou makra, mají různé volby, jež řídí jejich chování. Umí tohle náš kečup? Umí, i když nám po zjištění, z čeho se vaří, možná přestane chutnat.
Makro s argumenty definujeme
%define makro(volby) tělo_makra
Volby jsou seznam písmen volitelně následovaných dvojtečkami, jak jsme zvyklí z getopt(3). Makro %nibbler se dvěma volbami, -s bez argumentu a -t s argumentem, tak definujeme
%define nibbler(st:) …
Expanse maker s argumenty se liší od obyčejných maker. Nejenže se makro nahradí svým tělem, ale spolkne přitom celý zbytek řádku, který se stává jeho argumenty:
$ rpm --define 'nibbler %%nibbler' --eval 'Makro %nibbler a argumenty' Makro %nibbler a argumenty $ rpm --define 'nibbler() %%nibbler' --eval 'Makro %nibbler a argumenty' Makro %nibbler
Omezit nenažranost makra můžeme jeho uzavřením do funkce %{expand:…} nebo prostě jen složenými závorkami:
$ rpm --define 'nibbler() %%nibbler' --eval 'Makro %{expand:%nibbler} a argumenty'
Makro %nibbler a argumenty
$ rpm --define 'nibbler(s) %%nibbler' --eval 'Makro %{nibbler -s} a argumenty'
Makro %nibbler a argumenty
A teď bychom rádi ty spolykané argumenty z makra zase nějak dostali ven. Hodnotu argumentu -s, případně volbu samu získáme různými variacemi na %{-s}. Volbová makra (začínající pomlčkou) mají hodnotu voleb či argumentů jen uvnitř těla příslušného makra; volbová makra odpovídající nepřítomným či neexistujícím volbám se chovají částečně jako makra s prázdným tělem, částečně jako nedefinovaná.
Uvažujme definici
%define nibbler(prs:t:) …
použitou
%nibbler -r -s plit -tall is short
Pak se různá volbová a argumentová makra expandují následovně:
%{-p}-p se nevyskytuje, proto expanduje na nic – jako prázdné makro.%{-q}-q není ani deklarována, ale chová se stejně jako -p a expanduje na nic.%{?-p:ppp}-p se nevyskytuje, proto expanduje na nic – jako nedefinované makro.%{!?-p:ppp}-p se nevyskytuje, proto expanduje na ppp – jako nedefinované makro.%{-r}-r, tedy volbu samu.%{?-r:rrr}, %{?-r:rrr}-r je přítomna, makro se tudíž chová jako definované a žádné překvapení se nekoná – první expanduje na rrr, druhé na nic.%{-s}-s plit, tedy na celou volbu s argumentem.%{-t}-t all, argument byl převeden na standardní tvar, tj. oddělen mezerou.%{-t*}all, tedy samotný argument volby -t.%{*}is short.%{**}-r -s plit -tall is short (bez makra samého).%{#}2, tedy počet zbývajících argumentů makra.%{2}short, tedy druhý zbývající argument.%{0}nibbler.%defined() a %undefined()V novějších verzích RPM obsahuje standardní soubor macros definice testovacích maker %defined() a %undefined() pro jednoduché testování existence makra:
%if %{defined makro1} || %{defined makro2}
…
%endif
Jejich definice by už nyní měly být srozumitelné:
%define defined() %{expand:%%{?%{1}:1}%%{!?%{1}:0}}
%define undefined() %{expand:%%{?%{1}:0}%%{!?%{1}:1}}
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
%{?-r:rrr}, %{!?-r:rrr}
Volba -r je přítomna, makro se tudíž chová jako definované a žádné překvapení se nekoná – první expanduje na rrr, druhé na nic.