12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250 |
- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
- [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
- <chapter id='migration'>
- <title>Migrating to a Newer Yocto Project Release</title>
- <para>
- This chapter provides information you can use to migrate work to a
- newer Yocto Project release. You can find the same information in the
- release notes for a given release.
- </para>
- <section id='general-migration-considerations'>
- <title>General Migration Considerations</title>
- <para>
- Some considerations are not tied to a specific Yocto Project
- release.
- This section presents information you should consider when
- migrating to any new Yocto Project release.
- <itemizedlist>
- <listitem><para><emphasis>Dealing with Customized Recipes</emphasis>:
- Issues could arise if you take older recipes that contain
- customizations and simply copy them forward expecting them
- to work after you migrate to new Yocto Project metadata.
- For example, suppose you have a recipe in your layer that is
- a customized version of a core recipe copied from the earlier
- release, rather than through the use of an append file.
- When you migrate to a newer version of Yocto Project, the
- metadata (e.g. perhaps an include file used by the recipe)
- could have changed in a way that would break the build.
- Say, for example, a function is removed from an include file
- and the customized recipe tries to call that function.
- </para>
- <para>You could "forward-port" all your customizations in your
- recipe so that everything works for the new release.
- However, this is not the optimal solution as you would have
- to repeat this process with each new release if changes
- occur that give rise to problems.</para>
- <para>The better solution (where practical) is to use append
- files (<filename>*.bbappend</filename>) to capture any
- customizations you want to make to a recipe.
- Doing so, isolates your changes from the main recipe making
- them much more manageable.
- However, sometimes it is not practical to use an append
- file.
- A good example of this is when introducing a newer or older
- version of a recipe in another layer.</para>
- </listitem>
- <listitem><para><emphasis>Updating Append Files</emphasis>:
- Since append files generally only contain your customizations,
- they often do not need to be adjusted for new releases.
- However, if the <filename>.bbappend</filename> file is
- specific to a particular version of the recipe (i.e. its
- name does not use the % wildcard) and the version of the
- recipe to which it is appending has changed, then you will
- at a minimum need to rename the append file to match the
- name of the recipe file.
- A mismatch between an append file and its corresponding
- recipe file (<filename>.bb</filename>) will
- trigger an error during parsing.</para>
- <para>Depending on the type of customization the append file
- applies, other incompatibilities might occur when you
- upgrade.
- For example, if your append file applies a patch and the
- recipe to which it is appending is updated to a newer
- version, the patch might no longer apply.
- If this is the case and assuming the patch is still needed,
- you must modify the patch file so that it does apply.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='moving-to-the-yocto-project-1.3-release'>
- <title>Moving to the Yocto Project 1.3 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.3 Release from the prior release.
- </para>
- <section id='1.3-local-configuration'>
- <title>Local Configuration</title>
- <para>
- Differences include changes for
- <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
- and <filename>bblayers.conf</filename>.
- </para>
- <section id='migration-1.3-sstate-mirrors'>
- <title>SSTATE_MIRRORS</title>
- <para>
- The shared state cache (sstate-cache), as pointed to by
- <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
- by default now has two-character subdirectories to prevent
- issues arising from too many files in the same directory.
- Also, native sstate-cache packages, which are built to run
- on the host system, will go into a subdirectory named using
- the distro ID string.
- If you copy the newly structured sstate-cache to a mirror
- location (either local or remote) and then point to it in
- <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>,
- you need to append "PATH" to the end of the mirror URL so that
- the path used by BitBake before the mirror substitution is
- appended to the path used to access the mirror.
- Here is an example:
- <literallayout class='monospaced'>
- SSTATE_MIRRORS = "file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH"
- </literallayout>
- </para>
- </section>
- <section id='migration-1.3-bblayers-conf'>
- <title>bblayers.conf</title>
- <para>
- The <filename>meta-yocto</filename> layer consists of two parts
- that correspond to the Poky reference distribution and the
- reference hardware Board Support Packages (BSPs), respectively:
- <filename>meta-yocto</filename> and
- <filename>meta-yocto-bsp</filename>.
- When running BitBake for the first time after upgrading,
- your <filename>conf/bblayers.conf</filename> file will be
- updated to handle this change and you will be asked to
- re-run or restart for the changes to take effect.
- </para>
- </section>
- </section>
- <section id='1.3-recipes'>
- <title>Recipes</title>
- <para>
- Differences include changes for the following:
- <itemizedlist>
- <listitem><para>Python function whitespace</para></listitem>
- <listitem><para><filename>proto=</filename> in <filename>SRC_URI</filename></para></listitem>
- <listitem><para><filename>nativesdk</filename></para></listitem>
- <listitem><para>Task recipes</para></listitem>
- <listitem><para><filename>IMAGE_FEATURES</filename></para></listitem>
- <listitem><para>Removed recipes</para></listitem>
- </itemizedlist>
- </para>
- <section id='migration-1.3-python-function-whitespace'>
- <title>Python Function Whitespace</title>
- <para>
- All Python functions must now use four spaces for indentation.
- Previously, an inconsistent mix of spaces and tabs existed,
- which made extending these functions using
- <filename>_append</filename> or <filename>_prepend</filename>
- complicated given that Python treats whitespace as
- syntactically significant.
- If you are defining or extending any Python functions (e.g.
- <filename>populate_packages</filename>, <filename>do_unpack</filename>,
- <filename>do_patch</filename> and so forth) in custom recipes
- or classes, you need to ensure you are using consistent
- four-space indentation.
- </para>
- </section>
- <section id='migration-1.3-proto=-in-src-uri'>
- <title>proto= in SRC_URI</title>
- <para>
- Any use of <filename>proto=</filename> in
- <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
- needs to be changed to <filename>protocol=</filename>.
- In particular, this applies to the following URIs:
- <itemizedlist>
- <listitem><para><filename>svn://</filename></para></listitem>
- <listitem><para><filename>bzr://</filename></para></listitem>
- <listitem><para><filename>hg://</filename></para></listitem>
- <listitem><para><filename>osc://</filename></para></listitem>
- </itemizedlist>
- Other URIs were already using <filename>protocol=</filename>.
- This change improves consistency.
- </para>
- </section>
- <section id='migration-1.3-nativesdk'>
- <title>nativesdk</title>
- <para>
- The suffix <filename>nativesdk</filename> is now implemented
- as a prefix, which simplifies a lot of the packaging code for
- <filename>nativesdk</filename> recipes.
- All custom <filename>nativesdk</filename> recipes, which are
- relocatable packages that are native to
- <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
- and any references need to be updated to use
- <filename>nativesdk-*</filename> instead of
- <filename>*-nativesdk</filename>.
- </para>
- </section>
- <section id='migration-1.3-task-recipes'>
- <title>Task Recipes</title>
- <para>
- "Task" recipes are now known as "Package groups" and have
- been renamed from <filename>task-*.bb</filename> to
- <filename>packagegroup-*.bb</filename>.
- Existing references to the previous <filename>task-*</filename>
- names should work in most cases as there is an automatic
- upgrade path for most packages.
- However, you should update references in your own recipes and
- configurations as they could be removed in future releases.
- You should also rename any custom <filename>task-*</filename>
- recipes to <filename>packagegroup-*</filename>, and change
- them to inherit <filename>packagegroup</filename> instead of
- <filename>task</filename>, as well as taking the opportunity
- to remove anything now handled by
- <filename>packagegroup.bbclass</filename>, such as providing
- <filename>-dev</filename> and <filename>-dbg</filename>
- packages, setting
- <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>,
- and so forth.
- See the
- "<link linkend='ref-classes-packagegroup'><filename>packagegroup.bbclass</filename></link>"
- section for further details.
- </para>
- </section>
- <section id='migration-1.3-image-features'>
- <title>IMAGE_FEATURES</title>
- <para>
- Image recipes that previously included "apps-console-core"
- in <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
- should now include "splash" instead to enable the boot-up
- splash screen.
- Retaining "apps-console-core" will still include the splash
- screen but generates a warning.
- The "apps-x11-core" and "apps-x11-games"
- <filename>IMAGE_FEATURES</filename> features have been removed.
- </para>
- </section>
- <section id='migration-1.3-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been removed.
- For most of them, it is unlikely that you would have any
- references to them in your own
- <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>.
- However, you should check your metadata against this list to be sure:
- <itemizedlist>
- <listitem><para><emphasis><filename>libx11-trim</filename></emphasis>:
- Replaced by <filename>libx11</filename>, which has a negligible
- size difference with modern Xorg.</para></listitem>
- <listitem><para><emphasis><filename>xserver-xorg-lite</filename></emphasis>:
- Use <filename>xserver-xorg</filename>, which has a negligible
- size difference when DRI and GLX modules are not installed.</para></listitem>
- <listitem><para><emphasis><filename>xserver-kdrive</filename></emphasis>:
- Effectively unmaintained for many years.</para></listitem>
- <listitem><para><emphasis><filename>mesa-xlib</filename></emphasis>:
- No longer serves any purpose.</para></listitem>
- <listitem><para><emphasis><filename>galago</filename></emphasis>:
- Replaced by telepathy.</para></listitem>
- <listitem><para><emphasis><filename>gail</filename></emphasis>:
- Functionality was integrated into GTK+ 2.13.</para></listitem>
- <listitem><para><emphasis><filename>eggdbus</filename></emphasis>:
- No longer needed.</para></listitem>
- <listitem><para><emphasis><filename>gcc-*-intermediate</filename></emphasis>:
- The build has been restructured to avoid the need for
- this step.</para></listitem>
- <listitem><para><emphasis><filename>libgsmd</filename></emphasis>:
- Unmaintained for many years.
- Functionality now provided by
- <filename>ofono</filename> instead.</para></listitem>
- <listitem><para><emphasis>contacts, dates, tasks, eds-tools</emphasis>:
- Largely unmaintained PIM application suite.
- It has been moved to <filename>meta-gnome</filename>
- in <filename>meta-openembedded</filename>.</para></listitem>
- </itemizedlist>
- In addition to the previously listed changes, the
- <filename>meta-demoapps</filename> directory has also been removed
- because the recipes in it were not being maintained and many
- had become obsolete or broken.
- Additionally, these recipes were not parsed in the default configuration.
- Many of these recipes are already provided in an updated and
- maintained form within the OpenEmbedded community layers such as
- <filename>meta-oe</filename> and <filename>meta-gnome</filename>.
- For the remainder, you can now find them in the
- <filename>meta-extras</filename> repository, which is in the
- Yocto Project
- <ulink url='&YOCTO_DOCS_DEV_URL;#source-repositories'>Source Repositories</ulink>.
- </para>
- </section>
- </section>
- <section id='1.3-linux-kernel-naming'>
- <title>Linux Kernel Naming</title>
- <para>
- The naming scheme for kernel output binaries has been changed to
- now include
- <link linkend='var-PE'><filename>PE</filename></link> as part of the
- filename:
- <literallayout class='monospaced'>
- KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}"
- </literallayout>
- </para>
- <para>
- Because the <filename>PE</filename> variable is not set by default,
- these binary files could result with names that include two dash
- characters.
- Here is an example:
- <literallayout class='monospaced'>
- bzImage--3.10.9+git0+cd502a8814_7144bcc4b8-r0-qemux86-64-20130830085431.bin
- </literallayout>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-1.4-release'>
- <title>Moving to the Yocto Project 1.4 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.4 Release from the prior release.
- </para>
- <section id='migration-1.4-bitbake'>
- <title>BitBake</title>
- <para>
- Differences include the following:
- <itemizedlist>
- <listitem><para><emphasis>Comment Continuation:</emphasis>
- If a comment ends with a line continuation (\) character,
- then the next line must also be a comment.
- Any instance where this is not the case, now triggers
- a warning.
- You must either remove the continuation character, or be
- sure the next line is a comment.
- </para></listitem>
- <listitem><para><emphasis>Package Name Overrides:</emphasis>
- The runtime package specific variables
- <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>,
- <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>,
- <link linkend='var-RSUGGESTS'><filename>RSUGGESTS</filename></link>,
- <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>,
- <link linkend='var-RCONFLICTS'><filename>RCONFLICTS</filename></link>,
- <link linkend='var-RREPLACES'><filename>RREPLACES</filename></link>,
- <link linkend='var-FILES'><filename>FILES</filename></link>,
- <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>,
- and the pre, post, install, and uninstall script functions
- <filename>pkg_preinst</filename>,
- <filename>pkg_postinst</filename>,
- <filename>pkg_prerm</filename>, and
- <filename>pkg_postrm</filename> should always have a
- package name override.
- For example, use <filename>RDEPENDS_${PN}</filename> for
- the main package instead of <filename>RDEPENDS</filename>.
- BitBake uses more strict checks when it parses recipes.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.4-build-behavior'>
- <title>Build Behavior</title>
- <para>
- Differences include the following:
- <itemizedlist>
- <listitem><para><emphasis>Shared State Code:</emphasis>
- The shared state code has been optimized to avoid running
- unnecessary tasks.
- For example, the following no longer populates the target
- sysroot since that is not necessary:
- <literallayout class='monospaced'>
- $ bitbake -c rootfs <replaceable>some-image</replaceable>
- </literallayout>
- Instead, the system just needs to extract the output
- package contents, re-create the packages, and construct
- the root filesystem.
- This change is unlikely to cause any problems unless
- you have missing declared dependencies.
- </para></listitem>
- <listitem><para><emphasis>Scanning Directory Names:</emphasis>
- When scanning for files in
- <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
- the build system now uses
- <link linkend='var-FILESOVERRIDES'><filename>FILESOVERRIDES</filename></link>
- instead of <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
- for the directory names.
- In general, the values previously in
- <filename>OVERRIDES</filename> are now in
- <filename>FILESOVERRIDES</filename> as well.
- However, if you relied upon an additional value
- you previously added to <filename>OVERRIDES</filename>,
- you might now need to add it to
- <filename>FILESOVERRIDES</filename> unless you are already
- adding it through the
- <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>
- or <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
- variables, as appropriate.
- For more related changes, see the
- "<link linkend='migration-1.4-variables'>Variables</link>"
- section.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.4-proxies-and-fetching-source'>
- <title>Proxies and Fetching Source</title>
- <para>
- A new <filename>oe-git-proxy</filename> script has been added to
- replace previous methods of handling proxies and fetching source
- from Git.
- See the <filename>meta-yocto/conf/site.conf.sample</filename> file
- for information on how to use this script.
- </para>
- </section>
- <section id='migration-1.4-custom-interfaces-file-netbase-change'>
- <title>Custom Interfaces File (netbase change)</title>
- <para>
- If you have created your own custom
- <filename>etc/network/interfaces</filename> file by creating
- an append file for the <filename>netbase</filename> recipe,
- you now need to create an append file for the
- <filename>init-ifupdown</filename> recipe instead, which you can
- find in the
- <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
- at <filename>meta/recipes-core/init-ifupdown</filename>.
- For information on how to use append files, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files</ulink>"
- in the Yocto Project Development Manual.
- </para>
- </section>
- <section id='migration-1.4-remote-debugging'>
- <title>Remote Debugging</title>
- <para>
- Support for remote debugging with the Eclipse IDE is now
- separated into an image feature
- (<filename>eclipse-debug</filename>) that corresponds to the
- <filename>packagegroup-core-eclipse-debug</filename> package group.
- Previously, the debugging feature was included through the
- <filename>tools-debug</filename> image feature, which corresponds
- to the <filename>packagegroup-core-tools-debug</filename>
- package group.
- </para>
- </section>
- <section id='migration-1.4-variables'>
- <title>Variables</title>
- <para>
- The following variables have changed:
- <itemizedlist>
- <listitem><para><emphasis><filename>SANITY_TESTED_DISTROS</filename>:</emphasis>
- This variable now uses a distribution ID, which is composed
- of the host distributor ID followed by the release.
- Previously,
- <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>
- was composed of the description field.
- For example, "Ubuntu 12.10" becomes "Ubuntu-12.10".
- You do not need to worry about this change if you are not
- specifically setting this variable, or if you are
- specifically setting it to "".
- </para></listitem>
- <listitem><para><emphasis><filename>SRC_URI</filename>:</emphasis>
- The <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>,
- <filename>${</filename><link linkend='var-PF'><filename>PF</filename></link><filename>}</filename>,
- <filename>${</filename><link linkend='var-P'><filename>P</filename></link><filename>}</filename>,
- and <filename>FILE_DIRNAME</filename> directories have been
- dropped from the default value of the
- <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
- variable, which is used as the search path for finding files
- referred to in
- <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>.
- If you have a recipe that relied upon these directories,
- which would be unusual, then you will need to add the
- appropriate paths within the recipe or, alternatively,
- rearrange the files.
- The most common locations are still covered by
- <filename>${BP}</filename>, <filename>${BPN}</filename>,
- and "files", which all remain in the default value of
- <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-target-package-management-with-rpm'>
- <title>Target Package Management with RPM</title>
- <para>
- If runtime package management is enabled and the RPM backend
- is selected, Smart is now installed for package download, dependency
- resolution, and upgrades instead of Zypper.
- For more information on how to use Smart, run the following command
- on the target:
- <literallayout class='monospaced'>
- smart --help
- </literallayout>
- </para>
- </section>
- <section id='migration-1.4-recipes-moved'>
- <title>Recipes Moved</title>
- <para>
- The following recipes were moved from their previous locations
- because they are no longer used by anything in
- the OpenEmbedded-Core:
- <itemizedlist>
- <listitem><para><emphasis><filename>clutter-box2d</filename>:</emphasis>
- Now resides in the <filename>meta-oe</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>evolution-data-server</filename>:</emphasis>
- Now resides in the <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>gthumb</filename>:</emphasis>
- Now resides in the <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>gtkhtml2</filename>:</emphasis>
- Now resides in the <filename>meta-oe</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>gupnp</filename>:</emphasis>
- Now resides in the <filename>meta-multimedia</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>gypsy</filename>:</emphasis>
- Now resides in the <filename>meta-oe</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>libcanberra</filename>:</emphasis>
- Now resides in the <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>libgdata</filename>:</emphasis>
- Now resides in the <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>libmusicbrainz</filename>:</emphasis>
- Now resides in the <filename>meta-multimedia</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>metacity</filename>:</emphasis>
- Now resides in the <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>polkit</filename>:</emphasis>
- Now resides in the <filename>meta-oe</filename> layer.
- </para></listitem>
- <listitem><para><emphasis><filename>zeroconf</filename>:</emphasis>
- Now resides in the <filename>meta-networking</filename> layer.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.4-removals-and-renames'>
- <title>Removals and Renames</title>
- <para>
- The following list shows what has been removed or renamed:
- <itemizedlist>
- <listitem><para><emphasis><filename>evieext</filename>:</emphasis>
- Removed because it has been removed from
- <filename>xserver</filename> since 2008.
- </para></listitem>
- <listitem><para><emphasis>Gtk+ DirectFB:</emphasis>
- Removed support because upstream Gtk+ no longer supports it
- as of version 2.18.
- </para></listitem>
- <listitem><para><emphasis><filename>libxfontcache / xfontcacheproto</filename>:</emphasis>
- Removed because they were removed from the Xorg server in 2008.
- </para></listitem>
- <listitem><para><emphasis><filename>libxp / libxprintapputil / libxprintutil / printproto</filename>:</emphasis>
- Removed because the XPrint server was removed from
- Xorg in 2008.
- </para></listitem>
- <listitem><para><emphasis><filename>libxtrap / xtrapproto</filename>:</emphasis>
- Removed because their functionality was broken upstream.
- </para></listitem>
- <listitem><para><emphasis>linux-yocto 3.0 kernel:</emphasis>
- Removed with linux-yocto 3.8 kernel being added.
- The linux-yocto 3.2 and linux-yocto 3.4 kernels remain
- as part of the release.
- </para></listitem>
- <listitem><para><emphasis><filename>lsbsetup</filename>:</emphasis>
- Removed with functionality now provided by
- <filename>lsbtest</filename>.
- </para></listitem>
- <listitem><para><emphasis><filename>matchbox-stroke</filename>:</emphasis>
- Removed because it was never more than a proof-of-concept.
- </para></listitem>
- <listitem><para><emphasis><filename>matchbox-wm-2 / matchbox-theme-sato-2</filename>:</emphasis>
- Removed because they are not maintained.
- However, <filename>matchbox-wm</filename> and
- <filename>matchbox-theme-sato</filename> are still
- provided.
- </para></listitem>
- <listitem><para><emphasis><filename>mesa-dri</filename>:</emphasis>
- Renamed to <filename>mesa</filename>.
- </para></listitem>
- <listitem><para><emphasis><filename>mesa-xlib</filename>:</emphasis>
- Removed because it was no longer useful.
- </para></listitem>
- <listitem><para><emphasis><filename>mutter</filename>:</emphasis>
- Removed because nothing ever uses it and the recipe is
- very old.
- </para></listitem>
- <listitem><para><emphasis><filename>orinoco-conf</filename>:</emphasis>
- Removed because it has become obsolete.
- </para></listitem>
- <listitem><para><emphasis><filename>update-modules</filename>:</emphasis>
- Removed because it is no longer used.
- The kernel module <filename>postinstall</filename> and
- <filename>postrm</filename> scripts can now do the same
- task without the use of this script.
- </para></listitem>
- <listitem><para><emphasis><filename>web</filename>:</emphasis>
- Removed because it is not maintained. Superseded by
- <filename>web-webkit</filename>.
- </para></listitem>
- <listitem><para><emphasis><filename>xf86bigfontproto</filename>:</emphasis>
- Removed because upstream it has been disabled by default
- since 2007.
- Nothing uses <filename>xf86bigfontproto</filename>.
- </para></listitem>
- <listitem><para><emphasis><filename>xf86rushproto</filename>:</emphasis>
- Removed because its dependency in
- <filename>xserver</filename> was spurious and it was
- removed in 2005.
- </para></listitem>
- <listitem><para><emphasis><filename>zypper / libzypp / sat-solver</filename>:</emphasis>
- Removed and been functionally replaced with Smart
- (<filename>python-smartpm</filename>) when RPM packaging
- is used and package management is enabled on the target.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-1.5-release'>
- <title>Moving to the Yocto Project 1.5 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.5 Release from the prior release.
- </para>
- <section id='migration-1.5-host-dependency-changes'>
- <title>Host Dependency Changes</title>
- <para>
- The OpenEmbedded build system now has some additional requirements
- on the host system:
- <itemizedlist>
- <listitem><para>Python 2.7.3+</para></listitem>
- <listitem><para>Tar 1.24+</para></listitem>
- <listitem><para>Git 1.7.8+</para></listitem>
- <listitem><para>Patched version of Make if you are using
- 3.82.
- Most distributions that provide Make 3.82 use the patched
- version.</para></listitem>
- </itemizedlist>
- If the Linux distribution you are using on your build host
- does not provide packages for these, you can install and use
- the Buildtools tarball, which provides an SDK-like environment
- containing them.
- </para>
- <para>
- For more information on this requirement, see the
- "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
- section.
- </para>
- </section>
- <section id='migration-1.5-atom-pc-bsp'>
- <title><filename>atom-pc</filename> Board Support Package (BSP)</title>
- <para>
- The <filename>atom-pc</filename> hardware reference BSP has been
- replaced by a <filename>genericx86</filename> BSP.
- This BSP is not necessarily guaranteed to work on all x86
- hardware, but it will run on a wider range of systems than the
- <filename>atom-pc</filename> did.
- <note>
- Additionally, a <filename>genericx86-64</filename> BSP has
- been added for 64-bit Atom systems.
- </note>
- </para>
- </section>
- <section id='migration-1.5-bitbake'>
- <title>BitBake</title>
- <para>
- The following changes have been made that relate to BitBake:
- <itemizedlist>
- <listitem><para>
- BitBake now supports a <filename>_remove</filename>
- operator.
- The addition of this operator means you will have to
- rename any items in recipe space (functions, variables)
- whose names currently contain
- <filename>_remove_</filename> or end with
- <filename>_remove</filename> to avoid unexpected behavior.
- </para></listitem>
- <listitem><para>
- BitBake's global method pool has been removed.
- This method is not particularly useful and led to clashes
- between recipes containing functions that had the
- same name.</para></listitem>
- <listitem><para>
- The "none" server backend has been removed.
- The "process" server backend has been serving well as the
- default for a long time now.</para></listitem>
- <listitem><para>
- The <filename>bitbake-runtask</filename> script has been
- removed.</para></listitem>
- <listitem><para>
- <filename>${</filename><link linkend='var-P'><filename>P</filename></link><filename>}</filename>
- and
- <filename>${</filename><link linkend='var-PF'><filename>PF</filename></link><filename>}</filename>
- are no longer added to
- <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
- by default in <filename>bitbake.conf</filename>.
- These version-specific <filename>PROVIDES</filename>
- items were seldom used.
- Attempting to use them could result in two versions being
- built simultaneously rather than just one version due to
- the way BitBake resolves dependencies.</para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.5-qa-warnings'>
- <title>QA Warnings</title>
- <para>
- The following changes have been made to the package QA checks:
- <itemizedlist>
- <listitem><para>
- If you have customized
- <link linkend='var-ERROR_QA'><filename>ERROR_QA</filename></link>
- or <link linkend='var-WARN_QA'><filename>WARN_QA</filename></link>
- values in your configuration, check that they contain all of
- the issues that you wish to be reported.
- Previous Yocto Project versions contained a bug that meant
- that any item not mentioned in <filename>ERROR_QA</filename>
- or <filename>WARN_QA</filename> would be treated as a
- warning.
- Consequently, several important items were not already in
- the default value of <filename>WARN_QA</filename>.
- All of the possible QA checks are now documented in the
- "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
- section.</para></listitem>
- <listitem><para>
- An additional QA check has been added to check if
- <filename>/usr/share/info/dir</filename> is being installed.
- Your recipe should delete this file within
- <link linkend='ref-tasks-install'><filename>do_install</filename></link>
- if "make install" is installing it.
- </para></listitem>
- <listitem><para>
- If you are using the buildhistory class, the check for the
- package version going backwards is now controlled using a
- standard QA check.
- Thus, if you have customized your
- <filename>ERROR_QA</filename> or
- <filename>WARN_QA</filename> values and still wish to have
- this check performed, you should add
- "version-going-backwards" to your value for one or the
- other variables depending on how you wish it to be handled.
- See the documented QA checks in the
- "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
- section.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.5-directory-layout-changes'>
- <title>Directory Layout Changes</title>
- <para>
- The following directory changes exist:
- <itemizedlist>
- <listitem><para>
- Output SDK installer files are now named to include the
- image name and tuning architecture through the
- <link linkend='var-SDK_NAME'><filename>SDK_NAME</filename></link>
- variable.</para></listitem>
- <listitem><para>
- Images and related files are now installed into a directory
- that is specific to the machine, instead of a parent
- directory containing output files for multiple machines.
- The
- <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
- variable continues to point to the directory containing
- images for the current
- <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
- and should be used anywhere there is a need to refer to
- this directory.
- The <filename>runqemu</filename> script now uses this
- variable to find images and kernel binaries and will use
- BitBake to determine the directory.
- Alternatively, you can set the
- <filename>DEPLOY_DIR_IMAGE</filename> variable in the
- external environment.</para></listitem>
- <listitem><para>
- When buildhistory is enabled, its output is now written
- under the
- <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
- rather than
- <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>.
- Doing so makes it easier to delete
- <filename>TMPDIR</filename> and preserve the build history.
- Additionally, data for produced SDKs is now split by
- <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>.
- </para></listitem>
- <listitem><para>
- The <filename>pkgdata</filename> directory produced as
- part of the packaging process has been collapsed into a
- single machine-specific directory.
- This directory is located under
- <filename>sysroots</filename> and uses a machine-specific
- name (i.e.
- <filename>tmp/sysroots/<replaceable>machine</replaceable>/pkgdata</filename>).
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.5-shortened-git-srcrev-values'>
- <title>Shortened Git <filename>SRCREV</filename> Values</title>
- <para>
- BitBake will now shorten revisions from Git repositories from the
- normal 40 characters down to 10 characters within
- <link linkend='var-SRCPV'><filename>SRCPV</filename></link>
- for improved usability in path and file names.
- This change should be safe within contexts where these revisions
- are used because the chances of spatially close collisions
- is very low.
- Distant collisions are not a major issue in the way
- the values are used.
- </para>
- </section>
- <section id='migration-1.5-image-features'>
- <title><filename>IMAGE_FEATURES</filename></title>
- <para>
- The following changes have been made that relate to
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>:
- <itemizedlist>
- <listitem><para>
- The value of
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
- is now validated to ensure invalid feature items are not
- added.
- Some users mistakenly add package names to this variable
- instead of using
- <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
- in order to have the package added to the image, which does
- not work.
- This change is intended to catch those kinds of situations.
- Valid <filename>IMAGE_FEATURES</filename> are drawn from
- <link linkend='var-PACKAGE_GROUP'><filename>PACKAGE_GROUP</filename></link>
- definitions,
- <link linkend='var-COMPLEMENTARY_GLOB'><filename>COMPLEMENTARY_GLOB</filename></link>
- and a new "validitems" varflag on
- <filename>IMAGE_FEATURES</filename>.
- The "validitems" varflag change allows additional features
- to be added if they are not provided using the previous
- two mechanisms.
- </para></listitem>
- <listitem><para>
- The previously deprecated "apps-console-core"
- <filename>IMAGE_FEATURES</filename> item is no longer
- supported.
- Add "splash" to <filename>IMAGE_FEATURES</filename> if you
- wish to have the splash screen enabled, since this is
- all that apps-console-core was doing.</para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.5-run'>
- <title><filename>/run</filename></title>
- <para>
- The <filename>/run</filename> directory from the Filesystem
- Hierarchy Standard 3.0 has been introduced.
- You can find some of the implications for this change
- <ulink url='http://cgit.openembedded.org/openembedded-core/commit/?id=0e326280a15b0f2c4ef2ef4ec441f63f55b75873'>here</ulink>.
- The change also means that recipes that install files to
- <filename>/var/run</filename> must be changed.
- You can find a guide on how to make these changes
- <ulink url='http://permalink.gmane.org/gmane.comp.handhelds.openembedded/58530'>here</ulink>.
- </para>
- </section>
- <section id='migration-1.5-removal-of-package-manager-database-within-image-recipes'>
- <title>Removal of Package Manager Database Within Image Recipes</title>
- <para>
- The image <filename>core-image-minimal</filename> no longer adds
- <filename>remove_packaging_data_files</filename> to
- <link linkend='var-ROOTFS_POSTPROCESS_COMMAND'><filename>ROOTFS_POSTPROCESS_COMMAND</filename></link>.
- This addition is now handled automatically when "package-management"
- is not in
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
- If you have custom image recipes that make this addition,
- you should remove the lines, as they are not needed and might
- interfere with correct operation of postinstall scripts.
- </para>
- </section>
- <section id='migration-1.5-images-now-rebuild-only-on-changes-instead-of-every-time'>
- <title>Images Now Rebuild Only on Changes Instead of Every Time</title>
- <para>
- The
- <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
- and other related image
- construction tasks are no longer marked as "nostamp".
- Consequently, they will only be re-executed when their inputs have
- changed.
- Previous versions of the OpenEmbedded build system always rebuilt
- the image when requested rather when necessary.
- </para>
- </section>
- <section id='migration-1.5-task-recipes'>
- <title>Task Recipes</title>
- <para>
- The previously deprecated <filename>task.bbclass</filename> has
- now been dropped.
- For recipes that previously inherited from this class, you should
- rename them from <filename>task-*</filename> to
- <filename>packagegroup-*</filename> and inherit packagegroup
- instead.
- </para>
- <para>
- For more information, see the
- "<link linkend='ref-classes-packagegroup'><filename>packagegroup.bbclass</filename></link>"
- section.
- </para>
- </section>
- <section id='migration-1.5-busybox'>
- <title>BusyBox</title>
- <para>
- By default, we now split BusyBox into two binaries:
- one that is suid root for those components that need it, and
- another for the rest of the components.
- Splitting BusyBox allows for optimization that eliminates the
- <filename>tinylogin</filename> recipe as recommended by upstream.
- You can disable this split by setting
- <link linkend='var-BUSYBOX_SPLIT_SUID'><filename>BUSYBOX_SPLIT_SUID</filename></link>
- to "0".
- </para>
- </section>
- <section id='migration-1.5-automated-image-testing'>
- <title>Automated Image Testing</title>
- <para>
- A new automated image testing framework has been added
- through the
- <link linkend='ref-classes-testimage*'><filename>testimage.bbclass</filename></link>
- class.
- This framework replaces the older
- <filename>imagetest-qemu</filename> framework.
- </para>
- <para>
- You can learn more about performing automated image tests in the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
- section.
- </para>
- </section>
- <section id='migration-1.5-build-history'>
- <title>Build History</title>
- <para>
- Following are changes to Build History:
- <itemizedlist>
- <listitem><para>
- Installed package sizes:
- <filename>installed-package-sizes.txt</filename> for an
- image now records the size of the files installed by each
- package instead of the size of each compressed package
- archive file.</para></listitem>
- <listitem><para>
- The dependency graphs (<filename>depends*.dot</filename>)
- now use the actual package names instead of replacing
- dashes, dots and plus signs with underscores.
- </para></listitem>
- <listitem><para>
- The <filename>buildhistory-diff</filename> and
- <filename>buildhistory-collect-srcrevs</filename>
- utilities have improved command-line handling.
- Use the <filename>--help</filename> option for
- each utility for more information on the new syntax.
- </para></listitem>
- </itemizedlist>
- For more information on Build History, see the
- "<link linkend='maintaining-build-output-quality'>Maintaining Build Output Quality</link>"
- section.
- </para>
- </section>
- <section id='migration-1.5-udev'>
- <title><filename>udev</filename></title>
- <para>
- Following are changes to <filename>udev</filename>:
- <itemizedlist>
- <listitem><para>
- <filename>udev</filename> no longer brings in
- <filename>udev-extraconf</filename> automatically
- through
- <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>,
- since this was originally intended to be optional.
- If you need the extra rules, then add
- <filename>udev-extraconf</filename> to your image.
- </para></listitem>
- <listitem><para>
- <filename>udev</filename> no longer brings in
- <filename>pciutils-ids</filename> or
- <filename>usbutils-ids</filename> through
- <filename>RRECOMMENDS</filename>.
- These are not needed by <filename>udev</filename> itself
- and removing them saves around 350KB.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.5-removed-renamed-recipes'>
- <title>Removed and Renamed Recipes</title>
- <itemizedlist>
- <listitem><para>
- The <filename>linux-yocto</filename> 3.2 kernel has been
- removed.</para></listitem>
- <listitem><para>
- <filename>libtool-nativesdk</filename> has been renamed to
- <filename>nativesdk-libtool</filename>.</para></listitem>
- <listitem><para>
- <filename>tinylogin</filename> has been removed.
- It has been replaced by a suid portion of Busybox.
- See the
- "<link linkend='migration-1.5-busybox'>BusyBox</link>" section
- for more information.</para></listitem>
- <listitem><para>
- <filename>external-python-tarball</filename> has been renamed
- to <filename>buildtools-tarball</filename>.
- </para></listitem>
- <listitem><para>
- <filename>web-webkit</filename> has been removed.
- It has been functionally replaced by
- <filename>midori</filename>.</para></listitem>
- <listitem><para>
- <filename>imake</filename> has been removed.
- It is no longer needed by any other recipe.
- </para></listitem>
- <listitem><para>
- <filename>transfig-native</filename> has been removed.
- It is no longer needed by any other recipe.
- </para></listitem>
- <listitem><para>
- <filename>anjuta-remote-run</filename> has been removed.
- Anjuta IDE integration has not been officially supported for
- several releases.</para></listitem>
- </itemizedlist>
- </section>
- <section id='migration-1.5-other-changes'>
- <title>Other Changes</title>
- <para>
- Following is a list of short entries describing other changes:
- <itemizedlist>
- <listitem><para>
- <filename>run-postinsts</filename>: Make this generic.
- </para></listitem>
- <listitem><para>
- <filename>base-files</filename>: Remove the unnecessary
- <filename>media/</filename><replaceable>xxx</replaceable> directories.
- </para></listitem>
- <listitem><para>
- <filename>alsa-state</filename>: Provide an empty
- <filename>asound.conf</filename> by default.
- </para></listitem>
- <listitem><para>
- <filename>classes/image</filename>: Ensure
- <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
- supports pre-renamed package names.</para></listitem>
- <listitem><para>
- <filename>classes/rootfs_rpm</filename>: Implement
- <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
- for RPM.</para></listitem>
- <listitem><para>
- <filename>systemd</filename>: Remove
- <filename>systemd_unitdir</filename> if
- <filename>systemd</filename> is not in
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
- </para></listitem>
- <listitem><para>
- <filename>systemd</filename>: Remove
- <filename>init.d</filename> dir if
- <filename>systemd</filename> unit file is present and
- <filename>sysvinit</filename> is not a distro feature.
- </para></listitem>
- <listitem><para>
- <filename>libpam</filename>: Deny all services for the
- <filename>OTHER</filename> entries.
- </para></listitem>
- <listitem><para>
- <filename>image.bbclass</filename>: Move
- <filename>runtime_mapping_rename</filename> to avoid
- conflict with <filename>multilib</filename>.
- See
- <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=4993'><filename>YOCTO #4993</filename></ulink>
- in Bugzilla for more information.
- </para></listitem>
- <listitem><para>
- <filename>linux-dtb</filename>: Use kernel build system
- to generate the <filename>dtb</filename> files.
- </para></listitem>
- <listitem><para>
- <filename>kern-tools</filename>: Switch from guilt to
- new <filename>kgit-s2q</filename> tool.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-1.6-release'>
- <title>Moving to the Yocto Project 1.6 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.6 Release from the prior release.
- </para>
- <section id='migration-1.6-archiver-class'>
- <title><filename>archiver</filename> Class</title>
- <para>
- The
- <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
- class has been rewritten and its configuration has been simplified.
- For more details on the source archiver, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
- section in the Yocto Project Development Manual.
- </para>
- </section>
- <section id='migration-1.6-packaging-changes'>
- <title>Packaging Changes</title>
- <para>
- The following packaging changes have been made:
- <itemizedlist>
- <listitem><para>
- The <filename>binutils</filename> recipe no longer produces
- a <filename>binutils-symlinks</filename> package.
- <filename>update-alternatives</filename> is now used to
- handle the preferred <filename>binutils</filename>
- variant on the target instead.
- </para></listitem>
- <listitem><para>
- The tc (traffic control) utilities have been split out of
- the main <filename>iproute2</filename> package and put
- into the <filename>iproute2-tc</filename> package.
- </para></listitem>
- <listitem><para>
- The <filename>gtk-engines</filename> schemas have been
- moved to a dedicated
- <filename>gtk-engines-schemas</filename> package.
- </para></listitem>
- <listitem><para>
- The <filename>armv7a</filename> with thumb package
- architecture suffix has changed.
- The suffix for these packages with the thumb
- optimization enabled is "t2" as it should be.
- Use of this suffix was not the case in the 1.5 release.
- Architecture names will change within package feeds as a
- result.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.6-bitbake'>
- <title>BitBake</title>
- <para>
- The following changes have been made to
- <ulink url='&YOCTO_DOCS_DEV_URL;#bitbake-term'>BitBake</ulink>.
- </para>
- <section id='migration-1.6-matching-branch-requirement-for-git-fetching'>
- <title>Matching Branch Requirement for Git Fetching</title>
- <para>
- When fetching source from a Git repository using
- <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
- BitBake will now validate the
- <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
- value against the branch.
- You can specify the branch using the following form:
- <literallayout class='monospaced'>
- SRC_URI = "git://server.name/repository;branch=<replaceable>branchname</replaceable>"
- </literallayout>
- If you do not specify a branch, BitBake looks
- in the default "master" branch.
- </para>
- <para>
- Alternatively, if you need to bypass this check (e.g.
- if you are fetching a revision corresponding to a tag that
- is not on any branch), you can add ";nobranch=1" to
- the end of the URL within <filename>SRC_URI</filename>.
- </para>
- </section>
- <section id='migration-1.6-bitbake-deps'>
- <title>Python Definition substitutions</title>
- <para>
- BitBake had some previously deprecated Python definitions
- within its <filename>bb</filename> module removed.
- You should use their sub-module counterparts instead:
- <itemizedlist>
- <listitem><para><filename>bb.MalformedUrl</filename>:
- Use <filename>bb.fetch.MalformedUrl</filename>.
- </para></listitem>
- <listitem><para><filename>bb.encodeurl</filename>:
- Use <filename>bb.fetch.encodeurl</filename>.
- </para></listitem>
- <listitem><para><filename>bb.decodeurl</filename>:
- Use <filename>bb.fetch.decodeurl</filename>
- </para></listitem>
- <listitem><para><filename>bb.mkdirhier</filename>:
- Use <filename>bb.utils.mkdirhier</filename>.
- </para></listitem>
- <listitem><para><filename>bb.movefile</filename>:
- Use <filename>bb.utils.movefile</filename>.
- </para></listitem>
- <listitem><para><filename>bb.copyfile</filename>:
- Use <filename>bb.utils.copyfile</filename>.
- </para></listitem>
- <listitem><para><filename>bb.which</filename>:
- Use <filename>bb.utils.which</filename>.
- </para></listitem>
- <listitem><para><filename>bb.vercmp_string</filename>:
- Use <filename>bb.utils.vercmp_string</filename>.
- </para></listitem>
- <listitem><para><filename>bb.vercmp</filename>:
- Use <filename>bb.utils.vercmp</filename>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.6-bitbake-fetcher'>
- <title>SVK Fetcher</title>
- <para>
- The SVK fetcher has been removed from BitBake.
- </para>
- </section>
- <section id='migration-1.6-bitbake-console-output'>
- <title>Console Output Error Redirection</title>
- <para>
- The BitBake console UI will now output errors to
- <filename>stderr</filename> instead of
- <filename>stdout</filename>.
- Consequently, if you are piping or redirecting the output of
- <filename>bitbake</filename> to somewhere else, and you wish
- to retain the errors, you will need to add
- <filename>2>&1</filename> (or something similar) to the
- end of your <filename>bitbake</filename> command line.
- </para>
- </section>
- <section id='migration-1.6-task-taskname-overrides'>
- <title><filename>task-</filename><replaceable>taskname</replaceable> Overrides</title>
- <para>
- <filename>task-</filename><replaceable>taskname</replaceable> overrides have been
- adjusted so that tasks whose names contain underscores have the
- underscores replaced by hyphens for the override so that they
- now function properly.
- For example, the task override for
- <link linkend='ref-tasks-populate_sdk'><filename>do_populate_sdk</filename></link>
- is <filename>task-populate-sdk</filename>.
- </para>
- </section>
- </section>
- <section id='migration-1.6-variable-changes'>
- <title>Changes to Variables</title>
- <para>
- The following variables have changed.
- For information on the OpenEmbedded build system variables, see the
- "<link linkend='ref-variables-glos'>Variables Glossary</link>" Chapter.
- </para>
- <section id='migration-1.6-variable-changes-TMPDIR'>
- <title><filename>TMPDIR</filename></title>
- <para>
- <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
- can no longer be on an NFS mount.
- NFS does not offer full POSIX locking and inode consistency
- and can cause unexpected issues if used to store
- <filename>TMPDIR</filename>.
- </para>
- <para>
- The check for this occurs on startup.
- If <filename>TMPDIR</filename> is detected on an NFS mount,
- an error occurs.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-PRINC'>
- <title><filename>PRINC</filename></title>
- <para>
- The <filename>PRINC</filename>
- variable has been deprecated and triggers a warning if
- detected during a build.
- For
- <link linkend='var-PR'><filename>PR</filename></link>
- increments on changes, use the PR service instead.
- You can find out more about this service in the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
- section in the Yocto Project Development Manual.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-IMAGE_TYPES'>
- <title><filename>IMAGE_TYPES</filename></title>
- <para>
- The "sum.jffs2" option for
- <link linkend='var-IMAGE_TYPES'><filename>IMAGE_TYPES</filename></link>
- has been replaced by the "jffs2.sum" option, which fits the
- processing order.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-COPY_LIC_MANIFEST'>
- <title><filename>COPY_LIC_MANIFEST</filename></title>
- <para>
- The
- <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
- variable must
- now be set to "1" rather than any value in order to enable
- it.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-COPY_LIC_DIRS'>
- <title><filename>COPY_LIC_DIRS</filename></title>
- <para>
- The
- <link linkend='var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></link>
- variable must
- now be set to "1" rather than any value in order to enable
- it.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-PACKAGE_GROUP'>
- <title><filename>PACKAGE_GROUP</filename></title>
- <para>
- The
- <link linkend='var-PACKAGE_GROUP'><filename>PACKAGE_GROUP</filename></link>
- variable has been renamed to
- <link linkend='var-FEATURE_PACKAGES'><filename>FEATURE_PACKAGES</filename></link>
- to more accurately reflect its purpose.
- You can still use <filename>PACKAGE_GROUP</filename> but
- the OpenEmbedded build system produces a warning message when
- it encounters the variable.
- </para>
- </section>
- <section id='migration-1.6-variable-changes-variable-entry-behavior'>
- <title>Preprocess and Post Process Command Variable Behavior</title>
- <para>
- The following variables now expect a semicolon separated
- list of functions to call and not arbitrary shell commands:
- <literallayout class='monospaced'>
- <link linkend='var-ROOTFS_PREPROCESS_COMMAND'>ROOTFS_PREPROCESS_COMMAND</link>
- <link linkend='var-ROOTFS_POSTPROCESS_COMMAND'>ROOTFS_POSTPROCESS_COMMAND</link>
- <link linkend='var-SDK_POSTPROCESS_COMMAND'>SDK_POSTPROCESS_COMMAND</link>
- <link linkend='var-POPULATE_SDK_POST_TARGET_COMMAND'>POPULATE_SDK_POST_TARGET_COMMAND</link>
- <link linkend='var-POPULATE_SDK_POST_HOST_COMMAND'>POPULATE_SDK_POST_HOST_COMMAND</link>
- <link linkend='var-IMAGE_POSTPROCESS_COMMAND'>IMAGE_POSTPROCESS_COMMAND</link>
- <link linkend='var-IMAGE_PREPROCESS_COMMAND'>IMAGE_PREPROCESS_COMMAND</link>
- <link linkend='var-ROOTFS_POSTUNINSTALL_COMMAND'>ROOTFS_POSTUNINSTALL_COMMAND</link>
- <link linkend='var-ROOTFS_POSTINSTALL_COMMAND'>ROOTFS_POSTINSTALL_COMMAND</link>
- </literallayout>
- For migration purposes, you can simply wrap shell commands in
- a shell function and then call the function.
- Here is an example:
- <literallayout class='monospaced'>
- my_postprocess_function() {
- echo "hello" > ${IMAGE_ROOTFS}/hello.txt
- }
- ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "
- </literallayout>
- </para>
- </section>
- </section>
- <section id='migration-1.6-package-test-ptest'>
- <title>Package Test (ptest)</title>
- <para>
- Package Tests (ptest) are built but not installed by default.
- For information on using Package Tests, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Setting up and running package test (ptest)</ulink>"
- section in the Yocto Project Development Manual.
- For information on the <filename>ptest</filename> class, see the
- "<link linkend='ref-classes-ptest'><filename>ptest.bbclass</filename></link>"
- section.
- </para>
- </section>
- <section id='migration-1.6-build-changes'>
- <title>Build Changes</title>
- <para>
- Separate build and source directories have been enabled
- by default for selected recipes where it is known to work
- (a whitelist) and for all recipes that inherit the
- <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
- class.
- In future releases the
- <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
- class will enable a separate build directory by default as
- well.
- Recipes building Autotools-based
- software that fails to build with a separate build directory
- should be changed to inherit from the
- <link linkend='ref-classes-autotools'><filename>autotools-brokensep</filename></link>
- class instead of the <filename>autotools</filename> or
- <filename>autotools_stage</filename>classes.
- </para>
- </section>
- <section id='migration-1.6-building-qemu-native'>
- <title><filename>qemu-native</filename></title>
- <para>
- <filename>qemu-native</filename> now builds without
- SDL-based graphical output support by default.
- The following additional lines are needed in your
- <filename>local.conf</filename> to enable it:
- <literallayout class='monospaced'>
- PACKAGECONFIG_pn-qemu-native = "sdl"
- ASSUME_PROVIDED += "libsdl-native"
- </literallayout>
- <note>
- The default <filename>local.conf</filename>
- contains these statements.
- Consequently, if you are building a headless system and using
- a default <filename>local.conf</filename> file, you will need
- comment these two lines out.
- </note>
- </para>
- </section>
- <section id='migration-1.6-core-image-basic'>
- <title><filename>core-image-basic</filename></title>
- <para>
- <filename>core-image-basic</filename> has been renamed to
- <filename>core-image-full-cmdline</filename>.
- </para>
- <para>
- In addition to <filename>core-image-basic</filename> being renamed,
- <filename>packagegroup-core-basic</filename> has been renamed to
- <filename>packagegroup-core-full-cmdline</filename> to match.
- </para>
- </section>
- <section id='migration-1.6-licensing'>
- <title>Licensing</title>
- <para>
- The top-level <filename>LICENSE</filename> file has been changed
- to better describe the license of the various components of
- OE-Core.
- However, the licensing itself remains unchanged.
- </para>
- <para>
- Normally, this change would not cause any side-effects.
- However, some recipes point to this file within
- <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
- (as <filename>${COREBASE}/LICENSE</filename>) and thus the
- accompanying checksum must be changed from
- 3f40d7994397109285ec7b81fdeb3b58 to
- 4d92cd373abda3937c2bc47fbc49d690.
- A better alternative is to have
- <filename>LIC_FILES_CHKSUM</filename> point to a file
- describing the license that is distributed with the source
- that the recipe is building, if possible, rather than pointing
- to <filename>${COREBASE}/LICENSE</filename>.
- </para>
- </section>
- <section id='migration-1.6-cflags-options'>
- <title><filename>CFLAGS</filename> Options</title>
- <para>
- The "-fpermissive" option has been removed from the default
- <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
- value.
- You need to take action on individual recipes that fail when
- building with this option.
- You need to either patch the recipes to fix the issues reported by
- the compiler, or you need to add "-fpermissive" to
- <filename>CFLAGS</filename> in the recipes.
- </para>
- </section>
- <section id='migration-1.6-custom-images'>
- <title>Custom Image Output Types</title>
- <para>
- Custom image output types, as selected using
- <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>,
- must declare their dependencies on other image types (if any) using
- a new
- <link linkend='var-IMAGE_TYPEDEP'><filename>IMAGE_TYPEDEP</filename></link>
- variable.
- </para>
- </section>
- <section id='migration-1.6-do-package-write-task'>
- <title>Tasks</title>
- <para>
- The <filename>do_package_write</filename> task has been removed.
- The task is no longer needed.
- </para>
- </section>
- <section id='migration-1.6-update-alternatives-provider'>
- <title><filename>update-alternative</filename> Provider</title>
- <para>
- The default <filename>update-alternatives</filename> provider has
- been changed from <filename>opkg</filename> to
- <filename>opkg-utils</filename>.
- This change resolves some troublesome circular dependencies.
- The runtime package has also been renamed from
- <filename>update-alternatives-cworth</filename>
- to <filename>update-alternatives-opkg</filename>.
- </para>
- </section>
- <section id='migration-1.6-virtclass-overrides'>
- <title><filename>virtclass</filename> Overrides</title>
- <para>
- The <filename>virtclass</filename> overrides are now deprecated.
- Use the equivalent class overrides instead (e.g.
- <filename>virtclass-native</filename> becomes
- <filename>class-native</filename>.)
- </para>
- </section>
- <section id='migration-1.6-removed-renamed-recipes'>
- <title>Removed and Renamed Recipes</title>
- <para>
- The following recipes have been removed:
- <itemizedlist>
- <listitem><para><filename>packagegroup-toolset-native</filename> -
- This recipe is largely unused.
- </para></listitem>
- <listitem><para><filename>linux-yocto-3.8</filename> -
- Support for the Linux yocto 3.8 kernel has been dropped.
- Support for the 3.10 and 3.14 kernels have been added
- with the <filename>linux-yocto-3.10</filename> and
- <filename>linux-yocto-3.14</filename> recipes.
- </para></listitem>
- <listitem><para><filename>ocf-linux</filename> -
- This recipe has been functionally replaced using
- <filename>cryptodev-linux</filename>.
- </para></listitem>
- <listitem><para><filename>genext2fs</filename> -
- <filename>genext2fs</filename> is no longer used by the
- build system and is unmaintained upstream.
- </para></listitem>
- <listitem><para><filename>js</filename> -
- This provided an ancient version of Mozilla's javascript
- engine that is no longer needed.
- </para></listitem>
- <listitem><para><filename>zaurusd</filename> -
- The recipe has been moved to the
- <filename>meta-handheld</filename> layer.
- </para></listitem>
- <listitem><para><filename>eglibc 2.17</filename> -
- Replaced by the <filename>eglibc 2.19</filename>
- recipe.
- </para></listitem>
- <listitem><para><filename>gcc 4.7.2</filename> -
- Replaced by the now stable
- <filename>gcc 4.8.2</filename>.
- </para></listitem>
- <listitem><para><filename>external-sourcery-toolchain</filename> -
- this recipe is now maintained in the
- <filename>meta-sourcery</filename> layer.
- </para></listitem>
- <listitem><para><filename>linux-libc-headers-yocto 3.4+git</filename> -
- Now using version 3.10 of the
- <filename>linux-libc-headers</filename> by default.
- </para></listitem>
- <listitem><para><filename>meta-toolchain-gmae</filename> -
- This recipe is obsolete.
- </para></listitem>
- <listitem><para><filename>packagegroup-core-sdk-gmae</filename> -
- This recipe is obsolete.
- </para></listitem>
- <listitem><para><filename>packagegroup-core-standalone-gmae-sdk-target</filename> -
- This recipe is obsolete.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.6-removed-classes'>
- <title>Removed Classes</title>
- <para>
- The following classes have become obsolete and have been removed:
- <itemizedlist>
- <listitem><para><filename>module_strip</filename>
- </para></listitem>
- <listitem><para><filename>pkg_metainfo</filename>
- </para></listitem>
- <listitem><para><filename>pkg_distribute</filename>
- </para></listitem>
- <listitem><para><filename>image-empty</filename>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.6-reference-bsps'>
- <title>Reference Board Support Packages (BSPs)</title>
- <para>
- The following reference BSPs changes occurred:
- <itemizedlist>
- <listitem><para>The BeagleBoard
- (<filename>beagleboard</filename>) ARM reference hardware
- has been replaced by the BeagleBone
- (<filename>beaglebone</filename>) hardware.
- </para></listitem>
- <listitem><para>The RouterStation Pro
- (<filename>routerstationpro</filename>) MIPS reference
- hardware has been replaced by the EdgeRouter Lite
- (<filename>edgerouter</filename>) hardware.
- </para></listitem>
- </itemizedlist>
- The previous reference BSPs for the
- <filename>beagleboard</filename> and
- <filename>routerstationpro</filename> machines are still available
- in a new <filename>meta-yocto-bsp-old</filename> layer in the
- <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
- at
- <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto-bsp-old/'>http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto-bsp-old/</ulink>.
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-1.7-release'>
- <title>Moving to the Yocto Project 1.7 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.7 Release from the prior release.
- </para>
- <section id='migration-1.7-changes-to-setting-qemu-packageconfig-options'>
- <title>Changes to Setting QEMU <filename>PACKAGECONFIG</filename> Options in <filename>local.conf</filename></title>
- <para>
- The QEMU recipe now uses a number of
- <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
- options to enable various optional features.
- The method used to set defaults for these options means that
- existing
- <filename>local.conf</filename> files will need to be be
- modified to append to <filename>PACKAGECONFIG</filename> for
- <filename>qemu-native</filename> and
- <filename>nativesdk-qemu</filename> instead of setting it.
- In other words, to enable graphical output for QEMU, you should
- now have these lines in <filename>local.conf</filename>:
- <literallayout class='monospaced'>
- PACKAGECONFIG_append_pn-qemu-native = " sdl"
- PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
- </literallayout>
- </para>
- </section>
- <section id='migration-1.7-minimum-git-version'>
- <title>Minimum Git version</title>
- <para>
- The minimum
- <ulink url='&YOCTO_DOCS_DEV_URL;#git'>Git</ulink> version required
- on the build host is now 1.7.8 because the
- <filename>--list</filename> option is now required by
- BitBake's Git fetcher.
- As always, if your host distribution does not provide a version of
- Git that meets this requirement, you can use the
- <filename>buildtools-tarball</filename> that does.
- See the
- "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
- section for more information.
- </para>
- </section>
- <section id='migration-1.7-autotools-class-changes'>
- <title>Autotools Class Changes</title>
- <para>
- The following
- <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
- class changes occurred:
- <itemizedlist>
- <listitem><para><emphasis>
- A separate build directory is now used by default:</emphasis>
- The <filename>autotools</filename> class has been changed
- to use a directory for building
- (<link linkend='var-B'><filename>B</filename></link>),
- which is separate from the source directory
- (<link linkend='var-S'><filename>S</filename></link>).
- This is commonly referred to as
- <filename>B != S</filename>, or an out-of-tree build.</para>
- <para>If the software being built is already capable of
- building in a directory separate from the source, you
- do not need to do anything.
- However, if the software is not capable of being built
- in this manner, you will
- need to either patch the software so that it can build
- separately, or you will need to change the recipe to
- inherit the
- <link linkend='ref-classes-autotools'><filename>autotools-brokensep</filename></link>
- class instead of the <filename>autotools</filename> or
- <filename>autotools_stage</filename> classes.
- </para></listitem>
- <listitem><para><emphasis>
- The <filename>--foreign</filename> option is
- no longer passed to <filename>automake</filename> when
- running <filename>autoconf</filename>:</emphasis>
- This option tells <filename>automake</filename> that a
- particular software package does not follow the GNU
- standards and therefore should not be expected
- to distribute certain files such as
- <filename>ChangeLog</filename>,
- <filename>AUTHORS</filename>, and so forth.
- Because the majority of upstream software packages already
- tell <filename>automake</filename> to enable foreign mode
- themselves, the option is mostly superfluous.
- However, some recipes will need patches for this change.
- You can easily make the change by patching
- <filename>configure.ac</filename> so that it passes
- "foreign" to <filename>AM_INIT_AUTOMAKE()</filename>.
- See
- <ulink url='http://cgit.openembedded.org/openembedded-core/commit/?id=01943188f85ce6411717fb5bf702d609f55813f2'>this commit</ulink>
- for an example showing how to make the patch.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.7-binary-configuration-scripts-disabled'>
- <title>Binary Configuration Scripts Disabled</title>
- <para>
- Some of the core recipes that package binary configuration scripts
- now disable the scripts due to the
- scripts previously requiring error-prone path substitution.
- Software that links against these libraries using these scripts
- should use the much more robust <filename>pkg-config</filename>
- instead.
- The list of recipes changed in this version (and their
- configuration scripts) is as follows:
- <literallayout class='monospaced'>
- directfb (directfb-config)
- freetype (freetype-config)
- gpgme (gpgme-config)
- libassuan (libassuan-config)
- libcroco (croco-6.0-config)
- libgcrypt (libgcrypt-config)
- libgpg-error (gpg-error-config)
- libksba (ksba-config)
- libpcap (pcap-config)
- libpcre (pcre-config)
- libpng (libpng-config, libpng16-config)
- libsdl (sdl-config)
- libusb-compat (libusb-config)
- libxml2 (xml2-config)
- libxslt (xslt-config)
- ncurses (ncurses-config)
- neon (neon-config)
- npth (npth-config)
- pth (pth-config)
- taglib (taglib-config)
- </literallayout>
- Additionally, support for <filename>pkg-config</filename> has been
- added to some recipes in the previous list in the rare cases
- where the upstream software package does not already provide
- it.
- </para>
- </section>
- <section id='migration-1.7-glibc-replaces-eglibc'>
- <title><filename>eglibc 2.19</filename> Replaced with <filename>glibc 2.20</filename></title>
- <para>
- Because <filename>eglibc</filename> and
- <filename>glibc</filename> were already fairly close, this
- replacement should not require any significant changes to other
- software that links to <filename>eglibc</filename>.
- However, there were a number of minor changes in
- <filename>glibc 2.20</filename> upstream that could require
- patching some software (e.g. the removal of the
- <filename>_BSD_SOURCE</filename> feature test macro).
- </para>
- <para>
- <filename>glibc 2.20</filename> requires version 2.6.32 or greater
- of the Linux kernel.
- Thus, older kernels will no longer be usable in conjunction with it.
- </para>
- <para>
- For full details on the changes in <filename>glibc 2.20</filename>,
- see the upstream release notes
- <ulink url='https://sourceware.org/ml/libc-alpha/2014-09/msg00088.html'>here</ulink>.
- </para>
- </section>
- <section id='migration-1.7-kernel-module-autoloading'>
- <title>Kernel Module Autoloading</title>
- <para>
- The
- <link linkend='var-module_autoload'><filename>module_autoload_*</filename></link>
- variable is now deprecated and a new
- <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
- variable should be used instead.
- Also,
- <link linkend='var-module_conf'><filename>module_conf_*</filename></link>
- must now be used in conjunction with a new
- <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
- variable.
- The new variables no longer require you to specify the module name
- as part of the variable name.
- This change not only simplifies usage but also allows the values
- of these variables to be appropriately incorporated into task
- signatures and thus trigger the appropriate tasks to re-execute
- when changed.
- You should replace any references to
- <filename>module_autoload_*</filename> with
- <filename>KERNEL_MODULE_AUTOLOAD</filename>, and add any modules
- for which <filename>module_conf_*</filename> is specified to
- <filename>KERNEL_MODULE_PROBECONF</filename>.
- </para>
- <para>
- For more information, see the
- <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
- and
- <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
- variables.
- </para>
- </section>
- <section id='migration-1.7-qa-check-changes'>
- <title>QA Check Changes</title>
- <para>
- The following changes have occurred to the QA check process:
- <itemizedlist>
- <listitem><para>
- Additional QA checks <filename>file-rdeps</filename>
- and <filename>build-deps</filename> have been added in
- order to verify that file dependencies are satisfied
- (e.g. package contains a script requiring
- <filename>/bin/bash</filename>) and build-time dependencies
- are declared, respectively.
- For more information, please see the
- "<link linkend='ref-qa-checks'>QA Error and Warning Messages</link>"
- chapter.
- </para></listitem>
- <listitem><para>
- Package QA checks are now performed during a new
- <link linkend='ref-tasks-package_qa'><filename>do_package_qa</filename></link>
- task rather than being part of the
- <link linkend='ref-tasks-package'><filename>do_package</filename></link>
- task.
- This allows more parallel execution.
- This change is unlikely to be an issue except for highly
- customized recipes that disable packaging tasks themselves
- by marking them as <filename>noexec</filename>.
- For those packages, you will need to disable the
- <filename>do_package_qa</filename> task as well.
- </para></listitem>
- <listitem><para>
- Files being overwritten during the
- <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
- task now trigger an error instead of a warning.
- Recipes should not be overwriting files written to the
- sysroot by other recipes.
- If you have these types of recipes, you need to alter them
- so that they do not overwrite these files.</para>
- <para>You might now receive this error after changes in
- configuration or metadata resulting in orphaned files
- being left in the sysroot.
- If you do receive this error, the way to resolve the issue
- is to delete your
- <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
- or to move it out of the way and then re-start the build.
- Anything that has been fully built up to that point and
- does not need rebuilding will be restored from the shared
- state cache and the rest of the build will be able to
- proceed as normal.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.7-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been removed:
- <itemizedlist>
- <listitem><para>
- <filename>x-load</filename>:
- This recipe has been superseded by
- U-boot SPL for all Cortex-based TI SoCs.
- For legacy boards, the <filename>meta-ti</filename>
- layer, which contains a maintained recipe, should be used
- instead.
- </para></listitem>
- <listitem><para>
- <filename>ubootchart</filename>:
- This recipe is obsolete.
- A <filename>bootchart2</filename> recipe has been added
- to functionally replace it.
- </para></listitem>
- <listitem><para>
- <filename>linux-yocto 3.4</filename>:
- Support for the linux-yocto 3.4 kernel has been dropped.
- Support for the 3.10 and 3.14 kernels remains, while
- support for version 3.17 has been added.
- </para></listitem>
- <listitem><para>
- <filename>eglibc</filename> has been removed in favor of
- <filename>glibc</filename>.
- See the
- "<link linkend='migration-1.7-glibc-replaces-eglibc'><filename>eglibc 2.19</filename> Replaced with <filename>glibc 2.20</filename></link>"
- section for more information.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.7-miscellaneous-changes'>
- <title>Miscellaneous Changes</title>
- <para>
- The following miscellaneous change occurred:
- <itemizedlist>
- <listitem><para>
- The build history feature now writes
- <filename>build-id.txt</filename> instead of
- <filename>build-id</filename>.
- Additionally, <filename>build-id.txt</filename>
- now contains the full build header as printed by
- BitBake upon starting the build.
- You should manually remove old "build-id" files from your
- existing build history repositories to avoid confusion.
- For information on the build history feature, see the
- "<link linkend='maintaining-build-output-quality'>Maintaining Build Output Quality</link>"
- section.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-1.8-release'>
- <title>Moving to the Yocto Project 1.8 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 1.8 Release from the prior release.
- </para>
- <section id='migration-1.8-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been removed:
- <itemizedlist>
- <listitem><para><filename>owl-video</filename>:
- Functionality replaced by <filename>gst-player</filename>.
- </para></listitem>
- <listitem><para><filename>gaku</filename>:
- Functionality replaced by <filename>gst-player</filename>.
- </para></listitem>
- <listitem><para><filename>gnome-desktop</filename>:
- This recipe is now available in
- <filename>meta-gnome</filename> and is no longer needed.
- </para></listitem>
- <listitem><para><filename>gsettings-desktop-schemas</filename>:
- This recipe is now available in
- <filename>meta-gnome</filename> and is no longer needed.
- </para></listitem>
- <listitem><para><filename>python-argparse</filename>:
- The <filename>argparse</filename> module is already
- provided in the default Python distribution in a
- package named <filename>python-argparse</filename>.
- Consequently, the separate
- <filename>python-argparse</filename> recipe is no
- longer needed.
- </para></listitem>
- <listitem><para><filename>telepathy-python, libtelepathy, telepathy-glib, telepathy-idle, telepathy-mission-control</filename>:
- All these recipes have moved to
- <filename>meta-oe</filename> and are consequently no
- longer needed by any recipes in OpenEmbedded-Core.
- </para></listitem>
- <listitem><para><filename>linux-yocto_3.10</filename> and <filename>linux-yocto_3.17</filename>:
- Support for the linux-yocto 3.10 and 3.17 kernels has been
- dropped.
- Support for the 3.14 kernel remains, while support for
- 3.19 kernel has been added.
- </para></listitem>
- <listitem><para><filename>poky-feed-config-opkg</filename>:
- This recipe has become obsolete and is no longer needed.
- Use <filename>distro-feed-config</filename> from
- <filename>meta-oe</filename> instead.
- </para></listitem>
- <listitem><para><filename>libav 0.8.x</filename>:
- <filename>libav 9.x</filename> is now used.
- </para></listitem>
- <listitem><para><filename>sed-native</filename>:
- No longer needed.
- A working version of <filename>sed</filename> is expected
- to be provided by the host distribution.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.8-bluez'>
- <title>BlueZ 4.x / 5.x Selection</title>
- <para>
- Proper built-in support for selecting BlueZ 5.x in preference
- to the default of 4.x now exists.
- To use BlueZ 5.x, simply add "bluez5" to your
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
- value.
- If you had previously added append files
- (<filename>*.bbappend</filename>) to make this selection, you can
- now remove them.
- </para>
- <para>
- Additionally, a
- <link linkend='ref-classes-bluetooth'><filename>bluetooth</filename></link>
- class has been added to make selection of the appropriate bluetooth
- support within a recipe a little easier.
- If you wish to make use of this class in a recipe, add something
- such as the following:
- <literallayout class='monospaced'>
- inherit bluetooth
- PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}
- PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
- PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5"
- </literallayout>
- </para>
- </section>
- <section id='migration-1.8-kernel-build-changes'>
- <title>Kernel Build Changes</title>
- <para>
- The kernel build process was changed to place the source
- in a common shared work area and to place build artifacts
- separately in the source code tree.
- In theory, migration paths have been provided for most common
- usages in kernel recipes but this might not work in all cases.
- In particular, users need to ensure that
- <filename>${S}</filename> (source files) and
- <filename>${B}</filename> (build artifacts) are used
- correctly in functions such as
- <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
- and
- <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
- For kernel recipes that do not inherit from
- <filename>kernel-yocto</filename> or include
- <filename>linux-yocto.inc</filename>, you might wish to
- refer to the <filename>linux.inc</filename> file in the
- <filename>meta-oe</filename> layer for the kinds of changes you
- need to make.
- For reference, here is the
- <ulink url='http://cgit.openembedded.org/meta-openembedded/commit/meta-oe/recipes-kernel/linux/linux.inc?id=fc7132ede27ac67669448d3d2845ce7d46c6a1ee'>commit</ulink>
- where the <filename>linux.inc</filename> file in
- <filename>meta-oe</filename> was updated.
- </para>
- <para>
- Recipes that rely on the kernel source code and do not inherit
- the module classes might need to add explicit dependencies on
- the <filename>do_shared_workdir</filename> kernel task, for example:
- <literallayout class='monospaced'>
- do_configure[depends] += "virtual/kernel:do_shared_workdir"
- </literallayout>
- </para>
- </section>
- <section id='migration-1.8-ssl'>
- <title>SSL 3.0 is Now Disabled in OpenSSL</title>
- <para>
- SSL 3.0 is now disabled when building OpenSSL.
- Disabling SSL 3.0 avoids any lingering instances of the POODLE
- vulnerability.
- If you feel you must re-enable SSL 3.0, then you can add an
- append file (<filename>*.bbappend</filename>) for the
- <filename>openssl</filename> recipe to remove "-no-ssl3"
- from
- <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>.
- </para>
- </section>
- <section id='migration-1.8-default-sysroot-poisoning'>
- <title>Default Sysroot Poisoning</title>
- <para>
- <filename>gcc's</filename> default sysroot and include directories
- are now "poisoned".
- In other words, the sysroot and include directories are being
- redirected to a non-existent location in order to catch when
- host directories are being used due to the correct options not
- being passed.
- This poisoning applies both to the cross-compiler used within the
- build and to the cross-compiler produced in the SDK.
- </para>
- <para>
- If this change causes something in the build to fail, it almost
- certainly means the various compiler flags and commands are not
- being passed correctly to the underlying piece of software.
- In such cases, you need to take corrective steps.
- </para>
- </section>
- <section id='migration-1.8-rebuild-improvements'>
- <title>Rebuild Improvements</title>
- <para>
- Changes have been made to the
- <link linkend='ref-classes-base'><filename>base</filename></link>,
- <link linkend='ref-classes-autotools'><filename>autotools</filename></link>,
- and
- <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
- classes to clean out generated files when the
- <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
- task needs to be re-executed.
- </para>
- <para>
- One of the improvements is to attempt to run "make clean" during
- the <filename>do_configure</filename> task if a
- <filename>Makefile</filename> exists.
- Some software packages do not provide a working clean target
- within their make files.
- If you have such recipes, you need to set
- <link linkend='var-CLEANBROKEN'><filename>CLEANBROKEN</filename></link>
- to "1" within the recipe, for example:
- <literallayout class='monospaced'>
- CLEANBROKEN = "1"
- </literallayout>
- </para>
- </section>
- <section id='migration-1.8-qa-check-and-validation-changes'>
- <title>QA Check and Validation Changes</title>
- <para>
- The following QA Check and Validation Changes have occurred:
- <itemizedlist>
- <listitem><para>
- Usage of <filename>PRINC</filename>
- previously triggered a warning.
- It now triggers an error.
- You should remove any remaining usage of
- <filename>PRINC</filename> in any recipe or append file.
- </para></listitem>
- <listitem><para>
- An additional QA check has been added to detect usage of
- <filename>${D}</filename> in
- <link linkend='var-FILES'><filename>FILES</filename></link>
- values where
- <link linkend='var-D'><filename>D</filename></link> values
- should not be used at all.
- The same check ensures that <filename>$D</filename> is used
- in
- <filename>pkg_preinst/pkg_postinst/pkg_prerm/pkg_postrm</filename>
- functions instead of <filename>${D}</filename>.
- </para></listitem>
- <listitem><para>
- <link linkend='var-S'><filename>S</filename></link> now
- needs to be set to a valid value within a recipe.
- If <filename>S</filename> is not set in the recipe, the
- directory is not automatically created.
- If <filename>S</filename> does not point to a directory
- that exists at the time the
- <link linkend='ref-tasks-unpack'><filename>do_unpack</filename></link>
- task finishes, a warning will be shown.
- </para></listitem>
- <listitem><para>
- <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
- is now validated for correct formatting of multiple
- licenses.
- If the format is invalid (e.g. multiple licenses are
- specified with no operators to specify how the multiple
- licenses interact), then a warning will be shown.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-1.8-miscellaneous-changes'>
- <title>Miscellaneous Changes</title>
- <para>
- The following miscellaneous changes have occurred:
- <itemizedlist>
- <listitem><para>
- The <filename>send-error-report</filename> script now
- expects a "-s" option to be specified before the server
- address.
- This assumes a server address is being specified.
- </para></listitem>
- <listitem><para>
- The <filename>oe-pkgdata-util</filename> script now
- expects a "-p" option to be specified before the
- <filename>pkgdata</filename> directory, which is now
- optional.
- If the <filename>pkgdata</filename> directory is not
- specified, the script will run BitBake to query
- <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
- from the build environment.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-2.0-release'>
- <title>Moving to the Yocto Project 2.0 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 2.0 Release from the prior release.
- </para>
- <section id='migration-2.0-gcc-5'>
- <title>GCC 5</title>
- <para>
- The default compiler is now GCC 5.2.
- This change has required fixes for compilation errors in a number
- of other recipes.
- </para>
- <para>
- One important example is a fix for when the Linux kernel freezes at
- boot time on ARM when built with GCC 5.
- If you are using your own kernel recipe or source tree and
- building for ARM, you will likely need to apply this
- <ulink url='https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=a077224fd35b2f7fbc93f14cf67074fc792fbac2'>patch</ulink>.
- The standard <filename>linux-yocto</filename> kernel source tree
- already has a workaround for the same issue.
- </para>
- <para>
- For further details, see
- <ulink url='https://gcc.gnu.org/gcc-5/changes.html'></ulink> and
- the porting guide at
- <ulink url='https://gcc.gnu.org/gcc-5/porting_to.html'></ulink>.
- </para>
- <para>
- Alternatively, you can switch back to GCC 4.9 or 4.8 by
- setting <filename>GCCVERSION</filename> in your configuration,
- as follows:
- <literallayout class='monospaced'>
- GCCVERSION = "4.9%"
- </literallayout>
- </para>
- </section>
- <section id='migration-2.0-Gstreamer-0.10-removed'>
- <title>Gstreamer 0.10 Removed</title>
- <para>
- Gstreamer 0.10 has been removed in favor of Gstreamer 1.x.
- As part of the change, recipes for Gstreamer 0.10 and related
- software are now located
- in <filename>meta-multimedia</filename>.
- This change results in Qt4 having Phonon and Gstreamer
- support in QtWebkit disabled by default.
- </para>
- </section>
- <section id='migration-2.0-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been moved or removed:
- <itemizedlist>
- <listitem><para>
- <filename>bluez4</filename>: The recipe is obsolete and
- has been moved due to <filename>bluez5</filename>
- becoming fully integrated.
- The <filename>bluez4</filename> recipe now resides in
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>gamin</filename>: The recipe is obsolete and
- has been removed.
- </para></listitem>
- <listitem><para>
- <filename>gnome-icon-theme</filename>: The recipe's
- functionally has been replaced by
- <filename>adwaita-icon-theme</filename>.
- </para></listitem>
- <listitem><para>
- Gstreamer 0.10 Recipes: Recipes for Gstreamer 0.10 have
- been removed in favor of the recipes for Gstreamer 1.x.
- </para></listitem>
- <listitem><para>
- <filename>insserv</filename>: The recipe is obsolete and
- has been removed.
- </para></listitem>
- <listitem><para>
- <filename>libunique</filename>: The recipe is no longer
- used and has been moved to <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>midori</filename>: The recipe's functionally
- has been replaced by <filename>epiphany</filename>.
- </para></listitem>
- <listitem><para>
- <filename>python-gst</filename>: The recipe is obsolete
- and has been removed since it only contains bindings for
- Gstreamer 0.10.
- </para></listitem>
- <listitem><para>
- <filename>qt-mobility</filename>: The recipe is obsolete and
- has been removed since it requires
- <filename>Gstreamer 0.10</filename>, which has been
- replaced.
- </para></listitem>
- <listitem><para>
- <filename>subversion</filename>: All 1.6.x versions of this
- recipe have been removed.
- </para></listitem>
- <listitem><para>
- <filename>webkit-gtk</filename>: The older 1.8.3 version
- of this recipe has been removed in favor of
- <filename>webkitgtk</filename>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.0-bitbake-datastore-improvements'>
- <title>BitBake datastore improvements</title>
- <para>
- The method by which BitBake's datastore handles overrides has
- changed.
- Overrides are now applied dynamically and
- <filename>bb.data.update_data()</filename> is now a no-op.
- Thus, <filename>bb.data.update_data()</filename> is no longer
- required in order to apply the correct overrides.
- In practice, this change is unlikely to require any changes to
- Metadata.
- However, these minor changes in behavior exist:
- <itemizedlist>
- <listitem><para>
- All potential overrides are now visible in the variable
- history as seen when you run the following:
- <literallayout class='monospaced'>
- $ bitbake -e
- </literallayout>
- </para></listitem>
- <listitem><para>
- <filename>d.delVar('</filename><replaceable>VARNAME</replaceable><filename>')</filename> and
- <filename>d.setVar('</filename><replaceable>VARNAME</replaceable><filename>', None)</filename>
- result in the variable and all of its overrides being
- cleared out.
- Before the change, only the non-overridden values
- were cleared.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.0-shell-message-function-changes'>
- <title>Shell Message Function Changes</title>
- <para>
- The shell versions of the BitBake message functions (i.e.
- <filename>bbdebug</filename>, <filename>bbnote</filename>,
- <filename>bbwarn</filename>, <filename>bbplain</filename>,
- <filename>bberror</filename>, and <filename>bbfatal</filename>)
- are now connected through to their BitBake equivalents
- <filename>bb.debug()</filename>, <filename>bb.note()</filename>,
- <filename>bb.warn()</filename>, <filename>bb.plain()</filename>,
- <filename>bb.error()</filename>, and
- <filename>bb.fatal()</filename>, respectively.
- Thus, those message functions that you would expect to be printed
- by the BitBake UI are now actually printed.
- In practice, this change means two things:
- <itemizedlist>
- <listitem><para>
- If you now see messages on the console that you did not
- previously see as a result of this change, you might
- need to clean up the calls to
- <filename>bbwarn</filename>, <filename>bberror</filename>,
- and so forth.
- Or, you might want to simply remove the calls.
- </para></listitem>
- <listitem><para>
- The <filename>bbfatal</filename> message function now
- suppresses the full error log in the UI, which means any
- calls to <filename>bbfatal</filename> where you still
- wish to see the full error log should be replaced by
- <filename>die</filename> or
- <filename>bbfatal_log</filename>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.0-extra-development-debug-package-cleanup'>
- <title>Extra Development/Debug Package Cleanup</title>
- <para>
- The following recipes have had extra
- <filename>dev/dbg</filename> packages removed:
- <itemizedlist>
- <listitem><para>
- <filename>acl</filename>
- </para></listitem>
- <listitem><para>
- <filename>apmd</filename>
- </para></listitem>
- <listitem><para>
- <filename>aspell</filename>
- </para></listitem>
- <listitem><para>
- <filename>attr</filename>
- </para></listitem>
- <listitem><para>
- <filename>augeas</filename>
- </para></listitem>
- <listitem><para>
- <filename>bzip2</filename>
- </para></listitem>
- <listitem><para>
- <filename>cogl</filename>
- </para></listitem>
- <listitem><para>
- <filename>curl</filename>
- </para></listitem>
- <listitem><para>
- <filename>elfutils</filename>
- </para></listitem>
- <listitem><para>
- <filename>gcc-target</filename>
- </para></listitem>
- <listitem><para>
- <filename>libgcc</filename>
- </para></listitem>
- <listitem><para>
- <filename>libtool</filename>
- </para></listitem>
- <listitem><para>
- <filename>libxmu</filename>
- </para></listitem>
- <listitem><para>
- <filename>opkg</filename>
- </para></listitem>
- <listitem><para>
- <filename>pciutils</filename>
- </para></listitem>
- <listitem><para>
- <filename>rpm</filename>
- </para></listitem>
- <listitem><para>
- <filename>sysfsutils</filename>
- </para></listitem>
- <listitem><para>
- <filename>tiff</filename>
- </para></listitem>
- <listitem><para>
- <filename>xz</filename>
- </para></listitem>
- </itemizedlist>
- All of the above recipes now conform to the standard packaging
- scheme where a single <filename>-dev</filename>,
- <filename>-dbg</filename>, and <filename>-staticdev</filename>
- package exists per recipe.
- </para>
- </section>
- <section id='migration-2.0-recipe-maintenance-tracking-data-moved-to-oe-core'>
- <title>Recipe Maintenance Tracking Data Moved to OE-Core</title>
- <para>
- Maintenance tracking data for recipes that was previously part
- of <filename>meta-yocto</filename> has been moved to OE-Core.
- The change includes <filename>package_regex.inc</filename> and
- <filename>distro_alias.inc</filename>, which are typically enabled
- when using the
- <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
- class.
- Additionally, the contents of
- <filename>upstream_tracking.inc</filename> has now been split out
- to the relevant recipes.
- </para>
- </section>
- <section id='migration-2.0-automatic-stale-sysroot-file-cleanup'>
- <title>Automatic Stale Sysroot File Cleanup</title>
- <para>
- Stale files from recipes that no longer exist in the current
- configuration are now automatically removed from
- sysroot as well as removed from
- any other place managed by shared state.
- This automatic cleanup means that the build system now properly
- handles situations such as renaming the build system side of
- recipes, removal of layers from
- <filename>bblayers.conf</filename>, and
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
- changes.
- </para>
- <para>
- Additionally, work directories for old versions of recipes are
- now pruned.
- If you wish to disable pruning old work directories, you can set
- the following variable in your configuration:
- <literallayout class='monospaced'>
- SSTATE_PRUNE_OBSOLETEWORKDIR = "0"
- </literallayout>
- </para>
- </section>
- <section id='migration-2.0-linux-yocto-kernel-metadata-repository-now-split-from-source'>
- <title><filename>linux-yocto</filename> Kernel Metadata Repository Now Split from Source</title>
- <para>
- The <filename>linux-yocto</filename> tree has up to now been a
- combined set of kernel changes and configuration (meta) data
- carried in a single tree.
- While this format is effective at keeping kernel configuration and
- source modifications synchronized, it is not always obvious to
- developers how to manipulate the Metadata as compared to the
- source.
- </para>
- <para>
- Metadata processing has now been removed from the
- <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
- class and the external Metadata repository
- <filename>yocto-kernel-cache</filename>, which has always been used
- to seed the <filename>linux-yocto</filename> "meta" branch.
- This separate <filename>linux-yocto</filename> cache repository
- is now the primary location for this data.
- Due to this change, <filename>linux-yocto</filename> is no longer
- able to process combined trees.
- Thus, if you need to have your own combined kernel repository,
- you must do the split there as well and update your recipes
- accordingly.
- See the <filename>meta/recipes-kernel/linux/linux-yocto_4.1.bb</filename>
- recipe for an example.
- </para>
- </section>
- <section id='migration-2.0-additional-qa-checks'>
- <title>Additional QA checks</title>
- <para>
- The following QA checks have been added:
- <itemizedlist>
- <listitem><para>
- Added a "host-user-contaminated" check for ownership
- issues for packaged files outside of
- <filename>/home</filename>.
- The check looks for files that are incorrectly owned by the
- user that ran BitBake instead of owned by a valid user in
- the target system.
- </para></listitem>
- <listitem><para>
- Added an "invalid-chars" check for invalid (non-UTF8)
- characters in recipe metadata variable values
- (i.e.
- <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>,
- <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>,
- <link linkend='var-LICENSE'><filename>LICENSE</filename></link>,
- and
- <link linkend='var-SECTION'><filename>SECTION</filename></link>).
- Some package managers do not support these characters.
- </para></listitem>
- <listitem><para>
- Added an "invalid-packageconfig" check for any options
- specified in
- <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
- that do not match any <filename>PACKAGECONFIG</filename>
- option defined for the recipe.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.0-miscellaneous'>
- <title>Miscellaneous Changes</title>
- <para>
- These additional changes exist:
- <itemizedlist>
- <listitem><para>
- <filename>gtk-update-icon-cache</filename> has been
- renamed to <filename>gtk-icon-utils</filename>.
- </para></listitem>
- <listitem><para>
- The <filename>tools-profile</filename>
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
- item as well as its corresponding packagegroup and
- <filename>packagegroup-core-tools-profile</filename> no
- longer bring in <filename>oprofile</filename>.
- Bringing in <filename>oprofile</filename> was originally
- added to aid compilation on resource-constrained
- targets.
- However, this aid has not been widely used and is not
- likely to be used going forward due to the more powerful
- target platforms and the existence of better
- cross-compilation tools.
- </para></listitem>
- <listitem><para>
- The
- <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
- variable's default value now specifies
- <filename>ext4</filename> instead of
- <filename>ext3</filename>.
- </para></listitem>
- <listitem><para>
- All support for the <filename>PRINC</filename>
- variable has been removed.
- </para></listitem>
- <listitem><para>
- The <filename>packagegroup-core-full-cmdline</filename>
- packagegroup no longer brings in
- <filename>lighttpd</filename> due to the fact that
- bringing in <filename>lighttpd</filename> is not really in
- line with the packagegroup's purpose, which is to add full
- versions of command-line tools that by default are
- provided by <filename>busybox</filename>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-2.1-release'>
- <title>Moving to the Yocto Project 2.1 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 2.1 Release from the prior release.
- </para>
- <section id='migration-2.1-variable-expansion-in-python-functions'>
- <title>Variable Expansion in Python Functions</title>
- <para>
- Variable expressions, such as
- <filename>${</filename><replaceable>VARNAME</replaceable><filename>}</filename>
- no longer expand automatically within Python functions.
- Suppressing expansion was done to allow Python functions to
- construct shell scripts or other code for situations in which you
- do not want such expressions expanded.
- For any existing code that relies on these expansions, you need to
- change the expansions to expand the value of individual
- variables through <filename>d.getVar()</filename>.
- To alternatively expand more complex expressions,
- use <filename>d.expand()</filename>.
- </para>
- </section>
- <section id='migration-2.1-overrides-must-now-be-lower-case'>
- <title>Overrides Must Now be Lower-Case</title>
- <para>
- The convention for overrides has always been for them to be
- lower-case characters.
- This practice is now a requirement as BitBake's datastore now
- assumes lower-case characters in order to give a slight performance
- boost during parsing.
- In practical terms, this requirement means that anything that ends
- up in
- <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
- must now appear in lower-case characters (e.g. values for
- <filename>MACHINE</filename>, <filename>TARGET_ARCH</filename>,
- <filename>DISTRO</filename>, and also recipe names if
- <filename>_pn-</filename><replaceable>recipename</replaceable>
- overrides are to be effective).
- </para>
- </section>
- <section id='migration-2.1-expand-parameter-to-getvar-and-getvarflag-now-mandatory'>
- <title>Expand Parameter to <filename>getVar()</filename> and
- <filename>getVarFlag()</filename> is Now Mandatory</title>
- <para>
- The expand parameter to <filename>getVar()</filename> and
- <filename>getVarFlag()</filename> previously defaulted to
- False if not specified.
- Now, however, no default exists so one must be specified.
- You must change any <filename>getVar()</filename> calls that
- do not specify the final expand parameter to calls that do specify
- the parameter.
- You can run the following <filename>sed</filename> command at the
- base of a layer to make this change:
- <literallayout class='monospaced'>
- sed -e 's:\(\.getVar([^,()]*\)):\1, False):g' -i `grep -ril getVar *`
- sed -e 's:\(\.getVarFlag([^,()]*, [^,()]*\)):\1, False):g' -i `grep -ril getVarFlag *`
- </literallayout>
- <note>
- The reason for this change is that it prepares the way for
- changing the default to True in a future Yocto Project release.
- This future change is a much more sensible default than False.
- However, the change needs to be made gradually as a sudden
- change of the default would potentially cause side-effects
- that would be difficult to detect.
- </note>
- </para>
- </section>
- <section id='migration-2.1-makefile-environment-changes'>
- <title>Makefile Environment Changes</title>
- <para>
- <link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link>
- now defaults to "" instead of "-e MAKEFLAGS=".
- Setting <filename>EXTRA_OEMAKE</filename> to "-e MAKEFLAGS=" by
- default was a historical accident that has required many classes
- (e.g. <filename>autotools</filename>, <filename>module</filename>)
- and recipes to override this default in order to work with
- sensible build systems.
- When upgrading to the release, you must edit any recipe that
- relies upon this old default by either setting
- <filename>EXTRA_OEMAKE</filename> back to "-e MAKEFLAGS=" or by
- explicitly setting any required variable value overrides using
- <filename>EXTRA_OEMAKE</filename>, which is typically only needed
- when a Makefile sets a default value for a variable that is
- inappropriate for cross-compilation using the "=" operator rather
- than the "?=" operator.
- </para>
- </section>
- <section id='migration-2.1-libexecdir-reverted-to-prefix-libexec'>
- <title><filename>libexecdir</filename> Reverted to <filename>${prefix}/libexec</filename></title>
- <para>
- The use of <filename>${libdir}/${BPN}</filename> as
- <filename>libexecdir</filename> is different as compared to all
- other mainstream distributions, which either uses
- <filename>${prefix}/libexec</filename> or
- <filename>${libdir}</filename>.
- The use is also contrary to the GNU Coding Standards
- (i.e. <ulink url='https://www.gnu.org/prep/standards/html_node/Directory-Variables.html'></ulink>)
- that suggest <filename>${prefix}/libexec</filename> and also
- notes that any package-specific nesting should be done by the
- package itself.
- Finally, having <filename>libexecdir</filename> change between
- recipes makes it very difficult for different recipes to invoke
- binaries that have been installed into
- <filename>libexecdir</filename>.
- The Filesystem Hierarchy Standard
- (i.e. <ulink url='http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html'></ulink>)
- now recognizes the use of <filename>${prefix}/libexec/</filename>,
- giving distributions the choice between
- <filename>${prefix}/lib</filename> or
- <filename>${prefix}/libexec</filename> without breaking FHS.
- </para>
- </section>
- <section id='migration-2.1-ac-cv-sizeof-off-t-no-longer-cached-in-site-files'>
- <title><filename>ac_cv_sizeof_off_t</filename> is No Longer Cached in Site Files</title>
- <para>
- For recipes inheriting the
- <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
- class, <filename>ac_cv_sizeof_off_t</filename> is no longer cached
- in the site files for <filename>autoconf</filename>.
- The reason for this change is because the
- <filename>ac_cv_sizeof_off_t</filename> value is not necessarily
- static per architecture as was previously assumed.
- Rather, the value changes based on whether large file support is
- enabled.
- For most software that uses <filename>autoconf</filename>, this
- change should not be a problem.
- However, if you have a recipe that bypasses the standard
- <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
- task from the <filename>autotools</filename> class and the software
- the recipe is building uses a very old version of
- <filename>autoconf</filename>, the recipe might be incapable of
- determining the correct size of <filename>off_t</filename> during
- <filename>do_configure</filename>.
- </para>
- <para>
- The best course of action is to patch the software as necessary
- to allow the default implementation from the
- <filename>autotools</filename> class to work such that
- <filename>autoreconf</filename> succeeds and produces a working
- configure script, and to remove the
- overridden <filename>do_configure</filename> task such that the
- default implementation does get used.
- </para>
- </section>
- <section id='migration-2.1-image-generation-split-out-from-filesystem-generation'>
- <title>Image Generation is Now Split Out from Filesystem Generation</title>
- <para>
- Previously, for image recipes the
- <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
- task assembled the filesystem and then from that filesystem
- generated images.
- With this Yocto Project release, image generation is split into
- separate
- <link linkend='ref-tasks-image'><filename>do_image_*</filename></link>
- tasks for clarity both in operation and in the code.
- </para>
- <para>
- For most cases, this change does not present any problems.
- However, if you have made customizations that directly modify the
- <filename>do_rootfs</filename> task or that mention
- <filename>do_rootfs</filename>, you might need to update those
- changes.
- In particular, if you had added any tasks after
- <filename>do_rootfs</filename>, you should make edits so that
- those tasks are after the
- <link linkend='ref-tasks-image-complete'><filename>do_image_complete</filename></link>
- task rather than after <filename>do_rootfs</filename>
- so that the your added tasks
- run at the correct time.
- </para>
- <para>
- A minor part of this restructuring is that the post-processing
- definitions and functions have been moved from the
- <link linkend='ref-classes-image'><filename>image</filename></link>
- class to the
- <link linkend='ref-classes-rootfs*'><filename>rootfs-postcommands</filename></link>
- class.
- Functionally, however, they remain unchanged.
- </para>
- </section>
- <section id='migration-2.1-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been removed in the 2.1 release:
- <itemizedlist>
- <listitem><para><filename>gcc</filename> version 4.8:
- Versions 4.9 and 5.3 remain.
- </para></listitem>
- <listitem><para><filename>qt4</filename>:
- All support for Qt 4.x has been moved out to a separate
- <filename>meta-qt4</filename> layer because Qt 4 is no
- longer supported upstream.
- </para></listitem>
- <listitem><para><filename>x11vnc</filename>:
- Moved to the <filename>meta-oe</filename> layer.
- </para></listitem>
- <listitem><para><filename>linux-yocto-3.14</filename>:
- No longer supported.
- </para></listitem>
- <listitem><para><filename>linux-yocto-3.19</filename>:
- No longer supported.
- </para></listitem>
- <listitem><para><filename>libjpeg</filename>:
- Replaced by the <filename>libjpeg-turbo</filename> recipe.
- </para></listitem>
- <listitem><para><filename>pth</filename>:
- Became obsolete.
- </para></listitem>
- <listitem><para><filename>liboil</filename>:
- Recipe is no longer needed and has been moved to the
- <filename>meta-multimedia</filename> layer.
- </para></listitem>
- <listitem><para><filename>gtk-theme-torturer</filename>:
- Recipe is no longer needed and has been moved to the
- <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><filename>gnome-mime-data</filename>:
- Recipe is no longer needed and has been moved to the
- <filename>meta-gnome</filename> layer.
- </para></listitem>
- <listitem><para><filename>udev</filename>:
- Replaced by the <filename>eudev</filename> recipe for
- compatibility when using <filename>sysvinit</filename>
- with newer kernels.
- </para></listitem>
- <listitem><para><filename>python-pygtk</filename>:
- Recipe became obsolete.
- </para></listitem>
- <listitem><para><filename>adt-installer</filename>:
- Recipe became obsolete.
- See the
- "<link linkend='migration-2.1-adt-removed'>ADT Removed</link>"
- section for more information.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-class-changes'>
- <title>Class Changes</title>
- <para>
- The following classes have changed:
- <itemizedlist>
- <listitem><para><filename>autotools_stage</filename>:
- Removed because the
- <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
- class now provides its functionality.
- Recipes that inherited from
- <filename>autotools_stage</filename> should now inherit
- from <filename>autotools</filename> instead.
- </para></listitem>
- <listitem><para><filename>boot-directdisk</filename>:
- Merged into the
- <link linkend='ref-classes-image-vm'><filename>image-vm</filename></link>
- class.
- The <filename>boot-directdisk</filename> class was rarely
- directly used.
- Consequently, this change should not cause any issues.
- </para></listitem>
- <listitem><para><filename>bootimg</filename>:
- Merged into the
- <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
- class.
- The <filename>bootimg</filename> class was rarely
- directly used.
- Consequently, this change should not cause any issues.
- </para></listitem>
- <listitem><para><filename>packageinfo</filename>:
- Removed due to its limited use by the Hob UI, which has
- itself been removed.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-build-system-ui-changes'>
- <title>Build System User Interface Changes</title>
- <para>
- The following changes have been made to the build system user
- interface:
- <itemizedlist>
- <listitem><para><emphasis>Hob GTK+-based UI</emphasis>:
- Removed because it is unmaintained and based on the
- outdated GTK+ 2 library.
- The Toaster web-based UI is much more capable and is
- actively maintained.
- See the
- "<ulink url='&YOCTO_DOCS_TOAST_URL;#using-the-toaster-web-interface'>Using the Toaster Web Interface</ulink>"
- section in the Yocto Project Toaster User Manual for more
- information on this interface.
- </para></listitem>
- <listitem><para><emphasis>"puccho" BitBake UI</emphasis>:
- Removed because is unmaintained and no longer useful.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-adt-removed'>
- <title>ADT Removed</title>
- <para>
- The Application Development Toolkit (ADT) has been removed
- because its functionality almost completely overlapped with the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-using-the-standard-sdk'>standard SDK</ulink>
- and the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>extensible SDK</ulink>.
- For information on these SDKs and how to build and use them, see the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-intro'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
- <note>
- The Yocto Project Eclipse IDE Plug-in is still supported and
- is not affected by this change.
- </note>
- </para>
- </section>
- <section id='migration-2.1-poky-reference-distribution-changes'>
- <title>Poky Reference Distribution Changes</title>
- <para>
- The following changes have been made for the Poky distribution:
- <itemizedlist>
- <listitem><para>
- The <filename>meta-yocto</filename> layer has been renamed
- to <filename>meta-poky</filename> to better match its
- purpose, which is to provide the Poky reference
- distribution.
- The <filename>meta-yocto-bsp</filename> layer retains its
- original name since it provides reference machines for
- the Yocto Project and it is otherwise unrelated to Poky.
- References to <filename>meta-yocto</filename> in your
- <filename>conf/bblayers.conf</filename> should
- automatically be updated, so you should not need to change
- anything unless you are relying on this naming elsewhere.
- </para></listitem>
- <listitem><para>
- The
- <link linkend='ref-classes-uninative'><filename>uninative</filename></link>
- class is now enabled by default in Poky.
- This class attempts to isolate the build system from the
- host distribution's C library and makes re-use of native
- shared state artifacts across different host distributions
- practical.
- With this class enabled, a tarball containing a pre-built
- C library is downloaded at the start of the build.</para>
- <para>The <filename>uninative</filename> class is enabled
- through the
- <filename>meta/conf/distro/include/yocto-uninative.inc</filename>
- file, which for those not using the Poky distribution, can
- include to easily enable the same functionality.</para>
- <para>Alternatively, if you wish to build your own
- <filename>uninative</filename> tarball, you can do so by
- building the <filename>uninative-tarball</filename> recipe,
- making it available to your build machines
- (e.g. over HTTP/HTTPS) and setting a similar configuration
- as the one set by <filename>yocto-uninative.inc</filename>.
- </para></listitem>
- <listitem><para>
- Static library generation, for most cases, is now disabled
- by default in the Poky distribution.
- Disabling this generation saves some build time as well
- as the size used for build output artifacts.</para>
- <para>Disabling this library generation is accomplished
- through a
- <filename>meta/conf/distro/include/no-static-libs.inc</filename>,
- which for those not using the Poky distribution can
- easily include to enable the same functionality.</para>
- <para>Any recipe that needs to opt-out of having the
- "--disable-static" option specified on the configure
- command line either because it is not a supported option
- for the configure script or because static libraries are
- needed should set the following variable:
- <literallayout class='monospaced'>
- DISABLE_STATIC = ""
- </literallayout>
- </para></listitem>
- <listitem><para>
- The separate <filename>poky-tiny</filename> distribution
- now uses the musl C library instead of a heavily pared
- down <filename>glibc</filename>.
- Using musl results in a smaller
- distribution and facilitates much greater maintainability
- because musl is designed to have a small footprint.</para>
- <para>If you have used <filename>poky-tiny</filename> and
- have customized the <filename>glibc</filename>
- configuration you will need to redo those customizations
- with musl when upgrading to the new release.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-packaging-changes'>
- <title>Packaging Changes</title>
- <para>
- The following changes have been made to packaging:
- <itemizedlist>
- <listitem><para>
- The <filename>runuser</filename> and
- <filename>mountpoint</filename> binaries, which were
- previously in the main <filename>util-linux</filename>
- package, have been split out into the
- <filename>util-linux-runuser</filename> and
- <filename>util-linux-mountpoint</filename> packages,
- respectively.
- </para></listitem>
- <listitem><para>
- The <filename>python-elementtree</filename> package has
- been merged into the <filename>python-xml</filename>
- package.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-tuning-file-changes'>
- <title>Tuning File Changes</title>
- <para>
- The following changes have been made to the tuning files:
- <itemizedlist>
- <listitem><para>
- The "no-thumb-interwork" tuning feature has been dropped
- from the ARM tune include files.
- Because interworking is required for ARM EABI, attempting
- to disable it through a tuning feature no longer makes
- sense.
- <note>
- Support for ARM OABI was deprecated in gcc 4.7.
- </note>
- </para></listitem>
- <listitem><para>
- The <filename>tune-cortexm*.inc</filename> and
- <filename>tune-cortexr4.inc</filename> files have been
- removed because they are poorly tested.
- Until the OpenEmbedded build system officially gains
- support for CPUs without an MMU, these tuning files would
- probably be better maintained in a separate layer
- if needed.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.1-supporting-gobject-introspection'>
- <title>Supporting GObject Introspection</title>
- <para>
- This release supports generation of GLib Introspective
- Repository (GIR) files through GObject introspection, which is
- the standard mechanism for accessing GObject-based software from
- runtime environments.
- You can enable, disable, and test the generation of this data.
- See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-gobject-introspection-support'>Enabling GObject Introspection Support</ulink>"
- section for more information.
- </para>
- </section>
- <section id='migration-2.1-miscellaneous-changes'>
- <title>Miscellaneous Changes</title>
- <para>
- These additional changes exist:
- <itemizedlist>
- <listitem><para>
- The minimum Git version has been increased to 1.8.3.1.
- If your host distribution does not provide a sufficiently
- recent version, you can install the buildtools, which
- will provide it.
- See the
- "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
- section for more information on the buildtools tarball.
- </para></listitem>
- <listitem><para>
- The buggy and incomplete support for the RPM version 4
- package manager has been removed.
- The well-tested and maintained support for RPM version 5
- remains.
- </para></listitem>
- <listitem><para>
- Previously, the following list of packages were removed
- if package-management was not in
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>,
- regardless of any dependencies:
- <literallayout class='monospaced'>
- update-rc.d
- base-passwd
- shadow
- update-alternatives
- run-postinsts
- </literallayout>
- With the Yocto Project 2.1 release, these packages are only
- removed if "read-only-rootfs" is in
- <filename>IMAGE_FEATURES</filename>, since they might
- still be needed for a read-write image even in the absence
- of a package manager (e.g. if users need to be added,
- modified, or removed at runtime).
- </para></listitem>
- <listitem><para>
- The
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'><filename>devtool modify</filename></ulink>
- command now defaults to extracting the source since that
- is most commonly expected.
- The "-x" or "--extract" options are now no-ops.
- If you wish to provide your own existing source tree, you
- will now need to specify either the "-n" or
- "--no-extract" options when running
- <filename>devtool modify</filename>.
- </para></listitem>
- <listitem><para>
- If the formfactor for a machine is either not supplied
- or does not specify whether a keyboard is attached, then
- the default is to assume a keyboard is attached rather
- than assume no keyboard.
- This change primarily affects the Sato UI.
- </para></listitem>
- <listitem><para>
- The <filename>.debug</filename> directory packaging is
- now automatic.
- If your recipe builds software that installs binaries into
- directories other than the standard ones, you no longer
- need to take care of setting
- <filename>FILES_${PN}-dbg</filename> to pick up the
- resulting <filename>.debug</filename> directories as these
- directories are automatically found and added.
- </para></listitem>
- <listitem><para>
- Inaccurate disk and CPU percentage data has been dropped
- from <filename>buildstats</filename> output.
- This data has been replaced with
- <filename>getrusage()</filename> data and corrected IO
- statistics.
- You will probably need to update any custom code that reads
- the <filename>buildstats</filename> data.
- </para></listitem>
- <listitem><para>
- The
- <filename>meta/conf/distro/include/package_regex.inc</filename>
- is now deprecated.
- The contents of this file have been moved to individual
- recipes.
- <note><title>Tip</title>
- Because this file will likely be removed in a future
- Yocto Project release, it is suggested that you remove
- any references to the file that might be in your
- configuration.
- </note>
- </para></listitem>
- <listitem><para>
- The <filename>v86d/uvesafb</filename> has been removed from
- the <filename>genericx86</filename> and
- <filename>genericx86-64</filename> reference machines,
- which are provided by the
- <filename>meta-yocto-bsp</filename> layer.
- Most modern x86 boards do not rely on this file and it only
- adds kernel error messages during startup.
- If you do still need to support
- <filename>uvesafb</filename>, you can
- simply add <filename>v86d</filename> to your image.
- </para></listitem>
- <listitem><para>
- Build sysroot paths are now removed from debug symbol
- files.
- Removing these paths means that remote GDB using an
- unstripped build system sysroot will no longer work
- (although this was never documented to work).
- The supported method to accomplish something similar is
- to set <filename>IMAGE_GEN_DEBUGFS</filename> to "1",
- which will generate a companion debug image
- containing unstripped binaries and associated debug
- sources alongside the image.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-2.2-release'>
- <title>Moving to the Yocto Project 2.2 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 2.2 Release from the prior release.
- </para>
- <section id='migration-2.2-minimum-kernel-version'>
- <title>Minimum Kernel Version</title>
- <para>
- The minimum kernel version for the target system and for SDK
- is now 3.2.0, due to the upgrade
- to <filename>glibc 2.24</filename>.
- Specifically, for AArch64-based targets the version is
- 3.14.
- For Nios II-based targets, the minimum kernel version is 3.19.
- <note>
- For x86 and x86_64, you can reset
- <link linkend='var-OLDEST_KERNEL'><filename>OLDEST_KERNEL</filename></link>
- to anything down to 2.6.32 if desired.
- </note>
- </para>
- </section>
- <section id='migration-2.2-staging-directories-in-sysroot-simplified'>
- <title>Staging Directories in Sysroot Has Been Simplified</title>
- <para>
- The way directories are staged in sysroot has been simplified and
- introduces the new
- <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>,
- <link linkend='var-SYSROOT_DIRS_NATIVE'><filename>SYSROOT_DIRS_NATIVE</filename></link>,
- and
- <link linkend='var-SYSROOT_DIRS_BLACKLIST'><filename>SYSROOT_DIRS_BLACKLIST</filename></link>.
- See the
- <ulink url='http://lists.openembedded.org/pipermail/openembedded-core/2016-May/121365.html'>v2 patch series on the OE-Core Mailing List</ulink>
- for additional information.
- </para>
- </section>
- <section id='migration-2.2-removal-of-old-images-from-tmp-deploy-now-enabled'>
- <title>Removal of Old Images and Other Files in <filename>tmp/deploy</filename> Now Enabled</title>
- <para>
- Removal of old images and other files in
- <filename>tmp/deploy/</filename> is now enabled by default due
- to a new staging method used for those files.
- As a result of this change, the
- <filename>RM_OLD_IMAGE</filename> variable is now redundant.
- </para>
- </section>
- <section id='migration-2.2-python-changes'>
- <title>Python Changes</title>
- <para>
- The following changes for Python occurred:
- </para>
- <section id='migration-2.2-bitbake-now-requires-python-3.4'>
- <title>BitBake Now Requires Python 3.4+</title>
- <para>
- BitBake requires Python 3.4 or greater.
- </para>
- </section>
- <section id='migration-2.2-utf-8-locale-required-on-build-host'>
- <title>UTF-8 Locale Required on Build Host</title>
- <para>
- A UTF-8 locale is required on the build host due to Python 3.
- Since C.UTF-8 is not a standard, the default is en_US.UTF-8.
- </para>
- </section>
- <section id='migration-2.2-metadata-now-must-use-python-3-syntax'>
- <title>Metadata Must Now Use Python 3 Syntax</title>
- <para>
- The metadata is now required to use Python 3 syntax.
- For help preparing metadata, see any of the many Python 3 porting
- guides available.
- Alternatively, you can reference the conversion commits for Bitbake
- and you can use OE-Core as a guide for changes.
- Following are particular areas of interest:
- <literallayout class='monospaced'>
- * subprocess command-line pipes needing locale decoding
- * the syntax for octal values changed
- * the <filename>iter*()</filename> functions changed name
- * iterators now return views, not lists
- * changed names for Python modules
- </literallayout>
- </para>
- </section>
- <section id='migration-2.2-target-python-recipes-switched-to-python-3'>
- <title>Target Python Recipes Switched to Python 3</title>
- <para>
- Most target Python recipes have now been switched to Python 3.
- Unfortunately, systems using RPM as a package manager and
- providing online package-manager support through SMART still
- require Python 2.
- <note>
- Python 2 and recipes that use it can still be built for the
- target as with previous versions.
- </note>
- </para>
- </section>
- <section id='migration-2.2-buildtools-tarball-includes-python-3'>
- <title><filename>buildtools-tarball</filename> Includes Python 3</title>
- <para>
- <filename>buildtools-tarball</filename> now includes Python 3.
- </para>
- </section>
- </section>
- <section id='migration-2.2-uclibc-replaced-by-musl'>
- <title>uClibc Replaced by musl</title>
- <para>
- uClibc has been removed in favor of musl.
- Musl has matured, is better maintained, and is compatible with a
- wider range of applications as compared to uClibc.
- </para>
- </section>
- <section id='migration-2.2-B-no-longer-default-working-directory-for-tasks'>
- <title><filename>${B}</filename> No Longer Default Working Directory for Tasks</title>
- <para>
- <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>
- is no longer the default working directory for tasks.
- Consequently, any custom tasks you define now need to either
- have the
- <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>dirs</filename></ulink><filename>]</filename> flag set, or the task needs to change into the
- appropriate working directory manually (e.g using
- <filename>cd</filename> for a shell task).
- <note>
- The preferred method is to use the
- <filename>[dirs]</filename> flag.
- </note>
- </para>
- </section>
- <section id='migration-2.2-runqemu-ported-to-python'>
- <title><filename>runqemu</filename> Ported to Python</title>
- <para>
- <filename>runqemu</filename> has been ported to Python and has
- changed behavior in some cases.
- Previous usage patterns continue to be supported.
- </para>
- <para>
- The new <filename>runqemu</filename> is a Python script.
- Machine knowledge is no longer hardcoded into
- <filename>runqemu</filename>.
- You can choose to use the <filename>qemuboot</filename>
- configuration file to define the BSP's own arguments and to make
- it bootable with <filename>runqemu</filename>.
- If you use a configuration file, use the following form:
- <literallayout class='monospaced'>
- <replaceable>image-name</replaceable>-<replaceable>machine</replaceable>.qemuboot.conf
- </literallayout>
- The configuration file enables fine-grained tuning of options
- passed to QEMU without the <filename>runqemu</filename> script
- hard-coding any knowledge about different machines.
- Using a configuration file is particularly convenient when trying
- to use QEMU with machines other than the
- <filename>qemu*</filename> machines in OE-Core.
- The <filename>qemuboot.conf</filename> file is generated by the
- <filename>qemuboot</filename>
- class when the root filesystem is being build (i.e.
- build rootfs).
- QEMU boot arguments can be set in BSP's configuration file and
- the <filename>qemuboot</filename> class will save them to
- <filename>qemuboot.conf</filename>.
- </para>
- <para>
- If you want to use <filename>runqemu</filename> without a
- configuration file, use the following command form:
- <literallayout class='monospaced'>
- $ runqemu <replaceable>machine</replaceable> <replaceable>rootfs</replaceable> <replaceable>kernel</replaceable> [<replaceable>options</replaceable>]
- </literallayout>
- Supported <replaceable>machines</replaceable> are as follows:
- <literallayout class='monospaced'>
- qemuarm
- qemuarm64
- qemux86
- qemux86-64
- qemuppc
- qemumips
- qemumips64
- qemumipsel
- qemumips64el
- </literallayout>
- Consider the following example, which uses the
- <filename>qemux86-64</filename> machine,
- provides a root filesystem, provides an image, and uses
- the <filename>nographic</filename> option:
- <literallayout class='monospaced'>
- $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic
- </literallayout>
- </para>
- <para>
- Following is a list of variables that can be set in configuration
- files such as <filename>bsp.conf</filename> to enable the BSP
- to be booted by <filename>runqemu</filename>:
- <note>
- "QB" means "QEMU Boot".
- </note>
- <literallayout class='monospaced'>
- QB_SYSTEM_NAME: QEMU name (e.g. "qemu-system-i386")
- QB_OPT_APPEND: Options to append to QEMU (e.g. "-show-cursor")
- QB_DEFAULT_KERNEL: Default kernel to boot (e.g. "bzImage")
- QB_DEFAULT_FSTYPE: Default FSTYPE to boot (e.g. "ext4")
- QB_MEM: Memory (e.g. "-m 512")
- QB_MACHINE: QEMU machine (e.g. "-machine virt")
- QB_CPU: QEMU cpu (e.g. "-cpu qemu32")
- QB_CPU_KVM: Similar to QB_CPU except used for kvm support (e.g. "-cpu kvm64")
- QB_KERNEL_CMDLINE_APPEND: Options to append to the kernel's -append
- option (e.g. "console=ttyS0 console=tty")
- QB_DTB: QEMU dtb name
- QB_AUDIO_DRV: QEMU audio driver (e.g. "alsa", set it when support audio)
- QB_AUDIO_OPT: QEMU audio option (e.g. "-soundhw ac97,es1370"), which is used
- when QB_AUDIO_DRV is set.
- QB_KERNEL_ROOT: Kernel's root (e.g. /dev/vda)
- QB_TAP_OPT: Network option for 'tap' mode (e.g.
- "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0").
- runqemu will replace "@TAP@" with the one that is used, such as tap0, tap1 ...
- QB_SLIRP_OPT: Network option for SLIRP mode (e.g. "-netdev user,id=net0 -device virtio-net-device,netdev=net0")
- QB_ROOTFS_OPT: Used as rootfs (e.g.
- "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0").
- runqemu will replace "@ROOTFS@" with the one which is used, such as
- core-image-minimal-qemuarm64.ext4.
- QB_SERIAL_OPT: Serial port (e.g. "-serial mon:stdio")
- QB_TCPSERIAL_OPT: tcp serial port option (e.g.
- " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
- runqemu will replace "@PORT@" with the port number which is used.
- </literallayout>
- </para>
- <para>
- To use <filename>runqemu</filename>, set
- <link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
- as follows and run <filename>runqemu</filename>:
- <note>
- For command-line syntax, use
- <filename>runqemu help</filename>.
- </note>
- <literallayout class='monospaced'>
- IMAGE_CLASSES += "qemuboot"
- </literallayout>
- </para>
- </section>
- <section id='migration-2.2-default-linker-hash-style-changed'>
- <title>Default Linker Hash Style Changed</title>
- <para>
- The default linker hash style for <filename>gcc-cross</filename>
- is now "sysv" in order to catch recipes that are building software
- without using the OpenEmbedded
- <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>.
- This change could result in seeing some "No GNU_HASH in the elf
- binary" QA issues when building such recipes.
- You need to fix these recipes so that they use the expected
- <filename>LDFLAGS</filename>.
- Depending on how the software is built, the build system used by
- the software (e.g. a Makefile) might need to be patched.
- However, sometimes making this fix is as simple as adding the
- following to the recipe:
- <literallayout class='monospaced'>
- TARGET_CC_ARCH += "${LDFLAGS}"
- </literallayout>
- </para>
- </section>
- <section id='migration-2.2-kernel-image-base-name-no-longer-uses-kernel-imagetype'>
- <title><filename>KERNEL_IMAGE_BASE_NAME</filename> no Longer Uses <filename>KERNEL_IMAGETYPE</filename></title>
- <para>
- The
- <link linkend='var-KERNEL_IMAGE_BASE_NAME'><filename>KERNEL_IMAGE_BASE_NAME</filename></link>
- variable no longer uses the
- <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
- variable to create the image's base name.
- Because the OpenEmbedded build system can now build multiple kernel
- image types, this part of the kernel image base name as been
- removed leaving only the following:
- <literallayout class='monospaced'>
- KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}
- </literallayout>
- If you have recipes or classes that use
- <filename>KERNEL_IMAGE_BASE_NAME</filename> directly, you might
- need to update the references to ensure they continue to work.
- </para>
- </section>
- <section id='migration-2.2-bitbake-changes'>
- <title>BitBake Changes</title>
- <para>
- The following changes took place for BitBake:
- <itemizedlist>
- <listitem><para>
- The "goggle" UI and standalone image-writer tool have
- been removed as they both require GTK+ 2.0 and
- were not being maintained.
- </para></listitem>
- <listitem><para>
- The Perforce fetcher now supports
- <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
- for specifying the source revision to use, be it
- <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>,
- changelist number, p4date, or label, in preference to
- separate
- <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
- parameters to specify these.
- This change is more in-line with how the other fetchers
- work for source control systems.
- Recipes that fetch from Perforce will need to be updated
- to use <filename>SRCREV</filename> in place of specifying
- the source revision within
- <filename>SRC_URI</filename>.
- </para></listitem>
- <listitem><para>
- Some of BitBake's internal code structures for accessing
- the recipe cache needed to be changed to support the new
- multi-configuration functionality.
- These changes will affect external tools that use BitBake's
- tinfoil module.
- For information on these changes, see the changes made to
- the scripts supplied with OpenEmbedded-Core:
- <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=189371f8393971d00bca0fceffd67cc07784f6ee'>1</ulink>
- and
- <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=4a5aa7ea4d07c2c90a1654b174873abb018acc67'>2</ulink>.
- </para></listitem>
- <listitem><para>
- The task management code has been rewritten to avoid using
- ID indirection in order to improve performance.
- This change is unlikely to cause any problems for most
- users.
- However, the setscene verification function as pointed to
- by <filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
- needed to change signature.
- Consequently, a new variable named
- <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></ulink>
- has been added allowing multiple versions of BitBake
- to work with suitably written metadata, which includes
- OpenEmbedded-Core and Poky.
- Anyone with custom BitBake task scheduler code might also
- need to update the code to handle the new structure.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.2-swabber-has-been-removed'>
- <title>Swabber has Been Removed</title>
- <para>
- Swabber, a tool that was intended to detect host contamination in
- the build process, has been removed, as it has been unmaintained
- and unused for some time and was never particularly effective.
- The OpenEmbedded build system has since incorporated a number of
- mechanisms including enhanced QA checks that mean that there is
- less of a need for such a tool.
- </para>
- </section>
- <section id='migration-2.2-removed-recipes'>
- <title>Removed Recipes</title>
- <para>
- The following recipes have been removed:
- <itemizedlist>
- <listitem><para>
- <filename>augeas</filename>:
- No longer needed and has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>directfb</filename>:
- Unmaintained and has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>gcc</filename>:
- Removed 4.9 version.
- Versions 5.4 and 6.2 are still present.
- </para></listitem>
- <listitem><para>
- <filename>gnome-doc-utils</filename>:
- No longer needed.
- </para></listitem>
- <listitem><para>
- <filename>gtk-doc-stub</filename>:
- Replaced by <filename>gtk-doc</filename>.
- </para></listitem>
- <listitem><para>
- <filename>gtk-engines</filename>:
- No longer needed and has been moved to
- <filename>meta-gnome</filename>.
- </para></listitem>
- <listitem><para>
- <filename>gtk-sato-engine</filename>:
- Became obsolete.
- </para></listitem>
- <listitem><para>
- <filename>libglade</filename>:
- No longer needed and has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>libmad</filename>:
- Unmaintained and functionally replaced by
- <filename>libmpg123</filename>.
- <filename>libmad</filename> has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>libowl</filename>:
- Became obsolete.
- </para></listitem>
- <listitem><para>
- <filename>libxsettings-client</filename>:
- No longer needed.
- </para></listitem>
- <listitem><para>
- <filename>oh-puzzles</filename>:
- Functionally replaced by
- <filename>puzzles</filename>.
- </para></listitem>
- <listitem><para>
- <filename>oprofileui</filename>:
- Became obsolete.
- OProfile has been largely supplanted by perf.
- </para></listitem>
- <listitem><para>
- <filename>packagegroup-core-directfb.bb</filename>:
- Removed.
- </para></listitem>
- <listitem><para>
- <filename>core-image-directfb.bb</filename>:
- Removed.
- </para></listitem>
- <listitem><para>
- <filename>pointercal</filename>:
- No longer needed and has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>python-imaging</filename>:
- No longer needed and moved to
- <filename>meta-python</filename>
- </para></listitem>
- <listitem><para>
- <filename>python-pyrex</filename>:
- No longer needed and moved to
- <filename>meta-python</filename>.
- </para></listitem>
- <listitem><para>
- <filename>sato-icon-theme</filename>:
- Became obsolete.
- </para></listitem>
- <listitem><para>
- <filename>swabber-native</filename>:
- Swabber has been removed.
- See the
- <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
- </para></listitem>
- <listitem><para>
- <filename>tslib</filename>:
- No longer needed and has been moved to
- <filename>meta-oe</filename>.
- </para></listitem>
- <listitem><para>
- <filename>uclibc</filename>:
- Removed in favor of musl.
- </para></listitem>
- <listitem><para>
- <filename>xtscal</filename>:
- No longer needed and moved to
- <filename>meta-oe</filename>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.2-removed-classes'>
- <title>Removed Classes</title>
- <para>
- The following classes have been removed:
- <itemizedlist>
- <listitem><para>
- <filename>distutils-native-base</filename>:
- No longer needed.
- </para></listitem>
- <listitem><para>
- <filename>distutils3-native-base</filename>:
- No longer needed.
- </para></listitem>
- <listitem><para>
- <filename>sdl</filename>:
- Only set
- <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
- and
- <link linkend='var-SECTION'><filename>SECTION</filename></link>,
- which are better set within the recipe instead.
- </para></listitem>
- <listitem><para>
- <filename>sip</filename>:
- Mostly unused.
- </para></listitem>
- <listitem><para>
- <filename>swabber</filename>:
- See the
- <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.2-minor-packaging-changes'>
- <title>Minor Packaging Changes</title>
- <para>
- The following minor packaging changes have occurred:
- <itemizedlist>
- <listitem><para>
- <filename>grub</filename>:
- Split <filename>grub-editenv</filename> into its own
- package.
- </para></listitem>
- <listitem><para>
- <filename>systemd</filename>:
- Split container and vm related units into a new package,
- systemd-container.
- </para></listitem>
- <listitem><para>
- <filename>util-linux</filename>:
- Moved <filename>prlimit</filename> to a separate
- <filename>util-linux-prlimit</filename> package.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.2-miscellaneous-changes'>
- <title>Miscellaneous Changes</title>
- <para>
- The following miscellaneous changes have occurred:
- <itemizedlist>
- <listitem><para>
- <filename>package_regex.inc</filename>:
- Removed because the definitions
- <filename>package_regex.inc</filename> previously contained
- have been moved to their respective recipes.
- </para></listitem>
- <listitem><para>
- Both <filename>devtool add</filename> and
- <filename>recipetool create</filename> now use a fixed
- <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
- by default when fetching from a Git repository.
- You can override this in either case to use
- <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>
- instead by using the <filename>-a</filename> or
- <filename>‐‐autorev</filename> command-line
- option
- </para></listitem>
- <listitem><para>
- <filename>distcc</filename>:
- GTK+ UI is now disabled by default.
- </para></listitem>
- <listitem><para>
- <filename>packagegroup-core-tools-testapps</filename>:
- Removed Piglit.
- </para></listitem>
- <listitem><para>
- <filename>image.bbclass</filename>:
- Renamed COMPRESS(ION) to CONVERSION.
- This change means that
- <filename>COMPRESSIONTYPES</filename>,
- <filename>COMPRESS_DEPENDS</filename> and
- <filename>COMPRESS_CMD</filename> are deprecated in favor
- of <filename>CONVERSIONTYPES</filename>,
- <filename>CONVERSION_DEPENDS</filename> and
- <filename>CONVERSION_CMD</filename>.
- The <filename>COMPRESS*</filename> variable names will
- still work in the 2.2 release but metadata that does not
- need to be backwards-compatible should be changed to
- use the new names as the <filename>COMPRESS*</filename>
- ones will be removed in a future release.
- </para></listitem>
- <listitem><para>
- <filename>gtk-doc</filename>:
- A full version of <filename>gtk-doc</filename> is now
- made available.
- However, some old software might not be capable of using
- the current version of <filename>gtk-doc</filename>
- to build documentation.
- You need to change recipes that build such software so that
- they explicitly disable building documentation with
- <filename>gtk-doc</filename>.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section id='moving-to-the-yocto-project-2.3-release'>
- <title>Moving to the Yocto Project 2.3 Release</title>
- <para>
- This section provides migration information for moving to the
- Yocto Project 2.3 Release from the prior release.
- </para>
- <section id='migration-2.3-recipe-specific-sysroots'>
- <title>Recipe-specific Sysroots</title>
- <para>
- The Open-Embedded build system now uses one sysroot per
- recipe to resolve long-standing issues with configuration
- script auto-detection of undeclared dependencies.
- Consequently, you might find that some of your previously
- written custom recipes are missing declared dependencies,
- particularly those dependencies that are incidentally built
- earlier in a typical build process and thus are already likely
- to be present in the shared sysroot in a previous release.
- </para>
- <para>
- Because of this new feature, you must explicitly declare all
- build-time dependencies for your recipe.
- If you do not declare these dependencies, they are not
- populated into the sysroot for the recipe.
- </para>
- <para>
- You can find information on how this works in the
- <link linkend='ref-classes-staging'><filename>staging</filename></link>
- class.
- </para>
- </section>
- <section id='migration-2.3-path-variable'>
- <title><filename>PATH</filename> Variable</title>
- <para>
- Within the environment used to run build tasks, the environment
- variable <filename>PATH</filename> is now sanitized such that
- symbolic links linking only the binaries from the host mentioned
- in the
- <link linkend='var-HOSTTOOLS'><filename>HOSTTOOLS</filename></link>
- and
- <link linkend='var-HOSTTOOLS_NONFATAL'><filename>HOSTTOOLS_NONFATAL</filename></link>
- variables into
- their own directory are added to <filename>PATH</filename>.
- Consequently, any native binaries that you need to call should
- either be in one of these two variables at the configuration
- level.
- </para>
- <para>
- Alternatively, you can add a native recipe (i.e.
- <filename>-native</filename>) that provides the
- binary to the recipe's
- <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
- value.
- <note>
- <filename>PATH</filename> is not sanitized in the same way
- within <filename>devshell</filename>.
- If it were, you would have difficulty running host tools for
- development and debugging within the shell.
- </note>
- </para>
- </section>
- <section id='migration-2.3-functions'>
- <title>Changes to Functions</title>
- <para>
- The previously deprecated
- <filename>bb.data.getVar()</filename>,
- <filename>bb.data.setVar()</filename>, and
- related functions have been removed in favor of
- <filename>d.getVar()</filename>,
- <filename>d.setVar()</filename>, and so forth.
- </para>
- <para>
- You need to fix any references to these old functions.
- </para>
- </section>
- <section id='migration-2.3-bitbake-changes'>
- <title>BitBake Changes</title>
- <para>
- The following changes took place for BitBake:
- <itemizedlist>
- <listitem><para>
- <emphasis>BitBake's Graphical Dependency Explorer UI Replaced:</emphasis>
- BitBake's graphical dependency explorer UI
- <filename>depexp</filename> was replaced by
- <filename>taskexp</filename> ("Task Explorer"), which
- provides a graphical way of exploring the
- <filename>task-depends.dot</filename> file.
- The data presented by Task Explorer is much more
- accurate than the data that is presented by
- <filename>depexp</filename>.
- Being able to visualize the data is an often requested
- feature as standard <filename>*.dot</filename> file
- viewers cannot usual cope with the size of
- the <filename>task-depends.dot</filename> file.
- </para></listitem>
- <listitem><para>
- <emphasis>Dependency Tree Information Removals:</emphasis>
- The <filename>package-depends.dot</filename> and
- <filename>pn-depends.dot</filename> files as previously
- generated using the <filename>bitbake -g</filename> command
- have been removed.
- A <filename>recipe-depends.dot</filename> file
- is now generated as a collapsed version of
- <filename>task-depends.dot</filename> instead.
- </para>
- <para>The reason for this change is because
- <filename>package-depends.dot</filename> and
- <filename>pn-depends.dot</filename> largely date back
- to a time before task-based execution and do not take
- into account task-level dependencies between recipes,
- which could be misleading.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='migration-2.3-absolute-symlinks'>
- <title>Absolute Symbolic Links</title>
- <para>
- Absolute symbolic links (symlinks) within staged files are no
- longer permitted and now trigger an error.
- Any explicit creation of symlinks can use the
- <filename>lnr</filename> script, which is a replacement for
- <filename>ln -r</filename>.
- </para>
- <para>
- If the build scripts in the software that the recipe is building
- are creating a number of absolute symlinks that need to be
- corrected, you can inherit
- <filename>relative_symlinks</filename> within the recipe to turn
- those absolute symlinks into relative symlinks.
- </para>
- </section>
- <section id='migration-2.3-gplv2-and-gplv3-moves'>
- <title>GPLv2 Versions of GPLv3 Recipes Moved</title>
- <para>
- Older GPLv2 versions of GPLv3 recipes have moved to a
- separate <filename>meta-gplv2</filename> layer.
- </para>
- <para>
- If you use
- <link linkend='var-INCOMPATIBLE_LICENSE'><filename>INCOMPATIBLE_LICENSE</filename></link>
- to exclude GPLv3 or set
- <link linkend='var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></link>
- to select recipes that use GPLv3, then you must add the
- <filename>meta-gplv2</filename> layer to your configuration.
- <note>
- You can find <filename>meta-gplv2</filename> layer in the
- OpenEmbedded layer index at
- <ulink url='https://layers.openembedded.org/layerindex/branch/master/layer/meta-gplv2/'></ulink>.
- </note>
- </para>
- <para>
- These relocated GPLv3 recipes do not receive the same level of
- maintenance as other core recipes.
- The recipes do not get security fixes and upstream no longer
- maintains them.
- In fact, the upstream community is actively hostile towards people
- that use the old versions of the recipes.
- Moving these recipes into a separate layer both makes the different
- needs of the recipes clearer and clearly identifies the number of
- these recipes.
- <note>
- The long-term solution might be to move to BSD-licensed
- replacements of the GPLv3 components for those that need to
- exclude GPLv3-licensed components from the target system.
- This solution will be investigated for future Yocto
- Project releases.
- </note>
- </para>
- </section>
- <section id='migration-2.3-package-management-changes'>
- <title>Package Management Changes</title>
- <para>
- The following package management changes took place:
- <itemizedlist>
- <listitem><para>
- Smart package manager is replaced by Dnf package manager.
- Smart has become unmaintained upstream, is not ported
- to Python 3.x.
- Consequently, Smart needed to be replaced.
- Dnf is the only feasible candidate.</para>
- <para>The change in functionality is that the on-target
- runtime package management from remote package feeds is
- now done with a different tool that has a
- different set of command-line options.
- If you have scripts that call the
- tool directly, or use its API, they need to be fixed.</para>
- <para>For more information, see the
- <ulink url='http://dnf.readthedocs.io/en/latest/'>Dnf Documentation</ulink>.
- </para></listitem>
- <listitem><para>
- Rpm 5.x is replaced with Rpm 4.x.
- This is done for two major reasons:
- <itemizedlist>
- <listitem><para>
- Dnf is API-incompatible with Rpm 5.x and porting
- it and maintaining the port is non-trivial.
- </para></listitem>
- <listitem><para>
- Rpm 5.x itself has limited maintenance upstream,
- and the Yocto Project is one of the very few
- remaining users.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- Berkeley DB 6.x is removed and Berkeley DB 5.x becomes
- the default:
- <itemizedlist>
- <listitem><para>
- Version 6.x of Berkeley DB has largely been
- rejected by the open source community due to its
- AGPLv3 license.
- As a result, most mainstream open source projects
- that require DB are still developed and tested with
- DB 5.x.
- By extension,all the open source projects are still
- developed and tested with DB 5.x
- </para></listitem>
- <listitem><para>
- In OE-core, the only thing that was requiring
- DB 6.x was Rpm 5.x.
- Thus, no reason exists to continue carrying DB 6.x
- in OE-core.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <filename>createrepo</filename> is replaced with
- <filename>createrepo_c</filename>.</para>
- <para><filename>createrepo_c</filename> is the current
- incarnation of the tool that generates remote repository
- metadata.
- It is written in C as compared to
- <filename>createrepo</filename>, which is written in
- Python.
- <filename>createrepo_c</filename> is faster and is
- maintained.
- </para></listitem>
- <listitem><para>
- Architecture-independent RPM packages are "noarch"
- instead of "all".</para>
- <para>This change was made because too many places in
- dnf/rpm4 stack already make that assumption.
- Only the filenames and the architecture tag has changed.
- Nothing else has changed in OE-core system, particularly
- in the
- <link linkend='ref-classes-allarch'><filename>allarch.bbclass</filename></link>
- class.
- </para></listitem>
- <listitem><para>
- Signing of remote package feeds using
- <filename>PACKAGE_FEED_SIGN</filename>
- is not currently supported.
- This issue will be fully addressed in a future
- Yocto Project release.
- <note>
- See the defect
- <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=11209'>11209</ulink>
- for more information on a solution to package feed
- signing with RPM in the Yocto Project 2.3 release.
- </note>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- </chapter>
- <!--
- vim: expandtab tw=80 ts=4
- -->
|