Portál AbcLinuxu, 6. května 2025 18:33

Zpravodaj o Víně – 1. 10. 2011

12. 10. 2011 | Luboš Doležel
Články - Zpravodaj o Víně – 1. 10. 2011  

Aktuální verze Wine. Stav DIB enginu. Asociace souborů .bat a .com. Repozitář s aktuální Git verzí pro Ubuntu. Pořádná podpora iTunes (a USB obecně).

Obsah

Aktuální verze Wine

link

Od posledního vydání Zpravodaje o Víně uplynulo mnoho času. Nemusíte se ale bát, že bychom přeskočili důležité dění. Každopádně vyšla celá řada nových verzí Wine – žádné stabilní, jen samé vývojové. Podívejme se na dvě poslední:

Wine 1.3.28 vyšlo 9. září 2011 s následujícími novinkami:

Wine 1.3.29 vyšlo 23. září 2011 s následujícími novinkami:

Stav DIB enginu

link

O DIB enginu už slýcháme velmi dlouho. Připomeňme, že jeho existence je zásadní pro (nyní dost nízký) výkon vykreslování klasických okenních aplikací. Po řadě zavržených implementací se nyní do Wine konečně postupně jedna dostává. Massimo Del Fedele je autorem jedné ze zavržených implementací a teď ho zajímá, jak postupuje práce na té vyvolené:

V poslední době jsem zpozoroval mnoho patchů souvisejících s DIB enginem, sestavil jsem si poslední verzi zdrojáků a vyzkoušel jsem to... Žádné zlepšení výkonu v AutoCADu, mé testovací aplikaci. Takže by mě zajímalo, jestli už engine funguje, aspoň částečně, nebo nefunguje vůbec. Pokud funguje, je třeba nějaký přepínač/hodnota proměnného prostředí pro zapnutí?

Omlouvám se, že se tu tak vyptávám, ale kromě git commitů jsem neviděl žádné vysvětlení, co se děje. I některé uživatele mého starého enginu, co jsou nuceni používat starou verzi Wine (už jej kvůli nedávným změnám nelze aplikovat na současnou verzi), by zajímalo, co se děje.

Odpověděl mu Octavian Voicu, který ale upozorňuje, že vychází jen z commitů a vlastního zkoumání kódu:

Většina doposud udělané práce byla na úrovni architektury – vytváření infrastruktury, která zvládne inkrementální vývoj DIB enginu (viz dlls/gdi32/dibdrv/). Nový DIB engine je standardně povolen a je aktivován automaticky (přidán na zásobník ovladačů), pokud SelectObjectu předáte DIB. Když DIB engine nějakou funkci neimplementuje, je předána dalšímu ovladači na zásobníku. Pokud nejsou některé funkce podporovány (např. specifické formáty pixelů; styly pera nebo štětce), opět se volání přesune na další ovladač na zásobníku, kdykoliv je tyto funkce třeba použít (např. při kreslení čáry, když není aktuální pero podporováno).

Aktuální stav je:

Faktem je, že jedinými primitivy, která jsou aktuálně implementována, jsou LineTo, Rectangle, PaintRgn a PatBlt, minimum potřebné pro ozkoušení, že pera a štětce správně fungují; žádné blity; žádné polygony, ani další podivné tvary; žádné kreslení fontů; dokonce ani ne get/set pixel. To je asi důvod, proč AutoCAD ještě nejeví známky zlepšení. Na druhou stranu je většina zrádných architektonických věcí hotová, takže hádám, že viditelná zlepšení nejsou daleko.

Od odeslání tohoto e-mailu se věci posunuly dále, v posledních verzích už můžeme vidět např. podporu dalších Blt operací. Massimo řekl, že bez podpory fontů je jasné, že není v AutoCADu nic znát. James McKenzie se zapojil do debaty s návrhem:

Možná by stálo za to přepracovat kód nad opravami od Huwa tak, aby tvé patche fungovaly, než Huw dokončí svou práci.

Tohle by ti pomohlo s rozjezdem, kdyby se Huw rozhodl, že tvůj kód je lepší než jeho!

Massimo ale odpověděl, že přístup Huwa je příliš odlišný od jeho na to, aby taková věc byla možná. Dále k tomu napsal:

[...] Navíc, z toho (mála samozřejmě), co jsem pochopil z titulků patchů, některé nízkoúrovňové primitivy byly vyexportovány z winex11 – ovladačů gdi32, což je věc, o které mi bylo řečeno, že je „nemožná“, když jsem vyvíjel svůj DIB engine, a umožňuje snadno vyřešit ten největší zbývající problém, totiž efektivní DIB-DDB konverzi.

Takže si počkám na to, co se bude dít s Huwovým enginem. Je to škoda, protože poslední pokrok ve Wine vyřešil mnoho jiných problémů nesouvisejících s DIB. Uživatelé AutoCADu mohou prozatím doufat, že primitivy fontů budou brzo začleněny :-)

Asociace souborů .bat a .com

link

Nowres Rafid navrhl, že by soubory .bat a .com měly být v GNOME, KDE a dalších asociovány s wine cmd. Na tento návrh zareagoval Damjan Jovanovic:

COM soubory jsou AFAIK samostatný prehistorický DOSový kód reálného režimu bez možnosti načítat DLL. Neměly být spíše načítány DOSBoxem, kam na architektuře AMD64 stejně posíláme DOSové aplikace?

BAT soubory by se měly asociovat s Wine, ale při dvojkliku na Windows se spustí v terminálovém okně (když jsem to posledně zkoušel). Takže bychom museli vytvořit nový wine-cmd.desktop, který se asociuje s BAT soubory. Mrknu na to.

Když už jsem u toho, EXE soubory také čistě nepatří Wine – mohou to být DOS programy reálného režimu nebo .NET kód určený na *nixech Monu. Někdy budou muset Wine/Mono/DOSBox a související projekty začít mluvit o nějakém rozhodovacím mechanismu.

Vincent Povirk poskytl další informace:

Nejsem si jistý, že DOSBox jen tak otevře nějaký náhodný soubor. Museli bychom vytvořit konfigurační soubor, který nastaví mapování jednotek, spustí soubor a ukončí se. Pokud Wine dokáže takové věci dělat (a možná také ošetřit situace, kdy binárka COM očekává, že je spouštěna na stroji s Windows, například DOSovém stroji s nainstalovanými Win3.1), přijde mi to jako dobrá volba.

Je tu nenulová šance, že wine start /unix pro soubory BAT doopravdy spustí cmd a vytvoří terminál. Dělá to pro konzolové aplikace. Pokud tak nečiní, je tu možnost, že to start.exe udělá na Windows, v tomto případě je to chyba ve Wine, kterou bychom měli opravit. Měl bys to ozkoušet, než začneš dělat něco nového.

Na #mono (nebo #monodev) se o tom mluvilo ve smyslu, že rozhodovací mechanismus se nazývá MIME typy a DOS exe, x86/x64 PE exe a CLR exe jsou všechny odlišné a měly by mít odlišné MIME typy.

Damjan to ozkoušel a zjistil, že zatímco na Windows dvojklik zaručuje automatické zavření okna a „start“ znamená, že zůstane otevřené, na Wine „start“ způsobuje automatické zavření. Dále se někdo další zeptal, zda je možné typy EXE binárek nějak snadno rozlišit u shared-mime-info, na což Damjan odpověděl:

Parsování hlaviček EXE vyžaduje následování ukazatelů (například musíš jít na offset určený v dwordu e_lfanew v IMAGE_DOS_HEADER na offsetu 0x40 v souboru, aby ses dostal na rozšířenou hlavičku, která v případě binárky Win16 začíná na „NE“). Zatímco „file“ toto dokáže a „man 5 magic“ obsahuje dokonce příklady, jak to je udělané u EXE souborů, jednoduché parsování prováděné u shared-mime-info zjevně ukazatele následovat nedovede.

Diskuze na toto téma pak brzy utichla. Ozval se ale André Hentschel, který dal vědět, že na podpoře DOSBoxu pracuje (winevdm/winevdm.c:start_dosbox).

Repozitář s aktuální Git verzí pro Ubuntu

link

Scott Ritchie informuje, že pro snazší testování je nyní možné si na Ubuntu snadno nainstalovat poslední verzi Wine z Gitu. Oproti běžné instalaci se namísto ppa:ubuntu-wine/ppa přidává repozitář ppa:ubuntu-wine/daily. Instalace pak může vypadat následovně:

sudo add-apt-repository ppa:ubuntu-wine/daily
sudo apt-get update
sudo apt-get install wine1.3

Pořádná podpora iTunes (a USB obecně)

link

Na mailing listu Wine se rozhořela debata o podpoře iTunes ve Wine, která vlastně nikdy nebyla úplná. Především možnost kopírování dat do iPodů, iPhonů a podobných je pak důvodem, proč by si někdo tento software na Linuxu instaloval – a právě to nefunguje.

Keith Curtis vyvolal dohady tím, že prohlásil, že by práci na podpoře iTunes měli vývojáři dát prioritu. Samozřejmě, kdykoliv někdo začne dobrovolníkům říkat, co by měli ve svém volném čase dělat, nedopadne to dobře. I tak se později vyjasňování a srovnávání dostalo k produktivní diskuzi.

Zatímco starým iPodům stačilo standardní USB Mass Storage, nová zařízení od Apple vyžadují přímou komunikaci přes USB. Na tom se pracuje, ale je to běh na dlouhou trať. A právě autor této podpory, Damjan Jovanovic, popsal v dlouhém e-mailu, jak se věci mají:

Jako člověk, co pracoval v Microsoftu, vám říkám, že byste všichni měli docenit velikost a komplexnost architektury ovladačů na Windows. Proto bych řekl, že toto „selhání“ je především kvůli rozsáhlosti problému, který se tu řeší.

Moje první pokusy o přidání podpory USB do Wine byly bolestivé a pomalé. V roce 2006 mé první patche zaslané do Wine řešily problémy v SETUPAPI.DLL. Kolem roku 2007 mé hacky ve Wine a linuxovém jádře pro emulaci USBSCAN.SYS umožnily mému user-space USB vypisovači pro Windows, aby fungoval pod Ubuntu 6.06. Některé z těchto hacků byly nakonec pročištěny a dostaly se v roce 2009 do Wine STI.DLL, ale můj patch jádra nikdy nefungoval na jiné verzi jádra a pochybuji, že by ve Wine nebo linuxovém jádře přijali ten pochybný kód, co jsem používal. Začal jsem zkoumat možnost implementování USBSCAN jako ovladače v uživatelském prostoru s něčím jako FUSE, ale pak Wine získalo základní NTOSKRNL.EXE a schopnost načítat SYS soubory pro Windows. Od té doby bylo cílem implementovat vše ve Wine a pro USB I/O použít libusb.

V roce 2010 jsem do Wine přidal některé funkce z USBD.SYS a hlavičkové soubory pro USB. Později jsem se pokusil přidat podporu libusb, monitorování USB zařízení a základní infrastrukturu načítání ovladačů podle potřeby, ale nic z toho nebylo z různých důvodů do Wine přijato. Nyní se postupně snažím zobecnit načítání ovladačů ve Wine. Pak snad přidám načítání ovladačů při připojení USB zařízení. Pak podporu libusb. Pak teprve přidám samotné základní USB I/O. Pak musím rozchodit ReadFile/WriteFile u ovladačů. A stejně pak zbude nutnost napsat vysokoúrovňové ovladače (např. USBSCAN.SYS) a spousta chyb v SETUPAPI.DLL a funkce jako podpora instalátorů tříd [class installers], které bude nutné přidat, než se ovladače vůbec úspěšně nainstalují. A pak budeme doufat, že nezačnou používat příliš mnoho neimplementovaných funkcí z NTOSKRNL.EXE.

Takže to postupuje pomalu a musí se toho udělat hodně a moc vývojářů Wine se o to nezajímá. Můžeme jen doufat, že jakmile nějaké ovladače začnou fungovat, vyvolá to větší zájem o Wine (a Linux) a do Wine pak půjde více patchů :-).

Damjan se po dalších několika e-mailech, které mailing listem proběhly, rozloučil se slovy, že se ozve, jakmile bude mít gitový strom, ve kterém bude něco zajímavého.

Seriál Zpravodaj o Víně (dílů: 42)

První díl: Zpravodaj o Víně - 339, poslední díl: Zpravodaj o Víně – 25. 6. 2014.
Předchozí díl: Zpravodaj o Víně – 15. 6. 2011
Následující díl: Zpravodaj o Víně – 10. 2. 2012

Další články z této rubriky

Týden na ITBiz: Lepší šifrování se stává stále větší prioritou aplikací
Týden na ScienceMag.cz: Hubbleovo napětí by mohl vyřešit pomalu rotující vesmír
Týden na ITBiz: Halucinace balíčků při programování AI
Týden na ScienceMag.cz: Kvantová elektronika v křemíku a diamantu
Týden na ITBiz: DeepSeek nic nemění, umělá inteligence vyžaduje obrovské investice do cloudové infrastruktury

Diskuse k tomuto článku

D.A.Tiger avatar 12.10.2011 00:23 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Odpovědět | Sbalit | Link | Blokovat | Admin
Já nevím, ale co je prehistorického na BAT souborech? To jsou přece dávkové soubory, tedy obyčejný text, kde co řádek to jeden příkaz cmd (dávka) a mám ten dojem, že se to využívalo minimálně ještě v Win XP.

Taky mi trochu nesedí ta snaha přesunout jej čistě na Dosbox. Jednak už na to někdo upozorňoval v citované diskuzi, že by bylo nutné vytvořit konfiguraci pro Dosbox a já si myslím, že by Wine v tomto případě část konfigurace musel generovat, protože pokud bude BAT soubor volat programy, které nejsou standardní součástí dosu, tak mu musí být sděleno kde je má hledat. A lokace se provádí tak, že se do Dosboxu "namountuje" virtualní jednotka a Dosbox je tam potom přesměrován. Ouuuu, to vypadá jako spousta problémů a práce. nakonec wine přece obsahuje program cmd (commmandline), tak co brání tomu ji upravit tak, aby dokázala přijímat vstup nejen z klávesnice, ale z jakéhokoliv volitelného datového proudu (např. ze souboru). Pak by stačilo místo Dosboxu volat wine cmd a až potom, co by si s tím opravdu nevěděl rady, pak bych se ohlížel po externích nástrojích....
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
12.10.2011 01:01 Anonymous_ | skóre: 3
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Já nevím, ale co je prehistorického na BAT souborech?
Sorry, mozna jsem neco prehledl, ale v clanku se oznacuji jako prehistoricke COM soubory, ne bat(aky)...

"COM soubory jsou AFAIK samostatný prehistorický DOSový kód reálného režimu ..."
D.A.Tiger avatar 12.10.2011 01:29 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Jj máte recht, nějak jsem si to spojil dohromady, omlouvám se.
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
13.10.2011 20:36 Mmad
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
No, vzhledem k tomu, že jsem včera slovil a pod dosboxem rozjel Widle 3.1, tak COM nepovažuju až za takový Prehist... :-)
Mělo to vadu - Alt-F4 (příkaz konce) odstřelí celý dosbox a myš též brala systém na věčnost.
12.10.2011 08:09 klingger | skóre: 18
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Ale tam sa píše o COM nie o BAT.
12.10.2011 08:10 klingger | skóre: 18
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Eh, mal som si spraviť reload pred reagovaním.
vain avatar 12.10.2011 09:09 vain | skóre: 16
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
To jsi to měl v cache přes osm hodin? Dobrý.
If the only choice you've got is to do the wrong thing, then it's not really the wrong thing, it's more like fate.
12.10.2011 12:23 klingger | skóre: 18
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Nie okno som mal otvorené od noci, ale príspevok som napísal ráno, bez predošlého reloadu.
12.10.2011 08:20 Pali
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
BAT su vazne prehistoricke. MS chce aby sa pouzivala koncovka CMD na davkove subory pre >= 2K
D.A.Tiger avatar 12.10.2011 23:23 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Ok, ale to se mění jen koncovka. Nebo ne?
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
egg avatar 13.10.2011 12:42 egg | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Nerozumím, proč nová koncovka, když to má stejnou funkci i obsah. Nebo nemá?
PaulosV avatar 15.10.2011 22:39 PaulosV | skóre: 10 | blog: dentoob
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
No, kdysi jsem viděl minimálně jeden případ, kdy mezi zpracováním skriptů s koncovkami .bat a .cmd byl docela zásadní rozdíl. Je to tím, že pro zpracování BAT souborů se používal prehistorický 16-bitový interpreter a pro CMD soubory naopak 32-bitový - zdroj. Ale to jen tak pro zajímavost. Tyto věci by už ve Windows 7 (a možná i ve Vistách? Nevím jistě) měly být sjednoceny.
PaulosV avatar 15.10.2011 22:58 PaulosV | skóre: 10 | blog: dentoob
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Příloha:
No tak moment?! To si ze mě děláte srandu! Oni se toho prehistorického interpretu ještě nezbavili? :-D Taková mohutná zpětná kompatibilita se opravdu jen tak nevidí. Ale BAT soubory už neotvírá, tím jsem si celkem jistý.
D.A.Tiger avatar 16.10.2011 00:42 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Dokonce ještě v XPéčkách uměl bez problémů spouštět staré dosovské hry :) Jak je tomu te fakt nevím ...
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
17.10.2011 17:27 Sten
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Všechny 32-bitové verze Windows umí spouštět DOSovské aplikace, i když to má určitá omezení, kvůli kterým bych an hry doporučoval spíše DOSBox. 64-bitové Windows už 16-bitové aplikace (ani Win16) spouštět nemůžou, protože to neumožňuje hardware.
Bedňa avatar 12.10.2011 09:20 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 1. 10. 2011
Odpovědět | Sbalit | Link | Blokovat | Admin
Porty USB sa nedajú nalinkovať v dosdevices do /dev/serial/by-id/nazov_zariadenia? Com porty linkovať idú, testnem to doma.
KERNEL ULTRAS video channel >>>

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.