Emballage libhugetlbfs til Debian

Original: http://www.skynet.ie/~mel/docs/debianstart/

Efter endnu en compile-fra-kilde libhugetlbfs og besværet altid følger af kilde installerer, besluttede jeg at tage et kig på hvad der er involveret gør en pakke for Debian. Jeg har været en langsigtet bruger af Debian, men modstod fristelsen til at involvere sig, da der nok foregik allerede og flammer på Debians lister var legendarisk. Da jeg har indset, vil der altid for meget at gøre, og jeg kan skubbe D-tasten på mit postprogram, hvis alt for doven til at killfile, jeg selvom jeg ville give det et skud for at se, hvad der sker. Denne artikel er dybest set en log over, hvad jeg gjorde, og hvad jeg stødte undervejs.

Kom godt i gang
Det er ikke meget fremtrædende på Debian-udvikler side, men der er en Debians vejledning til nye vedligeholdere nær bunden af ​​siden. Jeg kiggede på de politiske dokumenter først, men de fleste af de oplysninger, syntes “indlysende” i forbindelse med et gratis software-projekt med en stærk filosofi. Jeg kunne absorbere de dokumenter én ad gangen eller jeg kunne punt en pakke derude og lyt efter klager som en form for fnug. Bliver dovne, jeg vælger det sidste. Hvis jeg formår at virkelig kryds nogen væk i processen, fejle …. undskyld, men jeg ville gøre det igen. Dette er på min egen tid og lørdag er ikke så lang.

Først på kortene var at få de anbefalede pakker. Masser af diskplads så snarere end at gøre omhyggelige beslutninger (tiden er kort)
mel @ arnold: ~ $ sudo apt-get update && sudo apt-get install dpkg-dev fil \
gcc g ++ libc6-dev gøre plaster perl autoconf automake dh-make \
debhelper devscripts fakeroot gnupg G77 GPC xutils lintian \
linda pbuilder debian-politiske udviklere-henvisning
Ved rettigheder, skal jeg læse alle de politikområder og udviklere referere på dette punkt, men jeg regnede på dette tidspunkt var det mere nyttigt at få en deb først og bekymre sig om pakkeansvarliges mekanik senere.

På dette punkt er jeg dobbelt kontrolleres libhugetlbfs ikke allerede var i Debian. Jeg kunne ikke finde beviser for det i arkiverne, pakken søgeværktøj eller på Google. Ingen lod til at arbejde på det, og jeg regnede jeg mødte de fleste af de øvrige andre end advarsel om, at en ny vedligeholder ikke bør forsøge at styre biblioteker kriterier – pyt det, hvor svært kan det være. Alt synes at være på plads til pakke skabelse.

indledende Miljø
Jeg hører, at der er mange arbejdsgange med beskæftiger sig med Debian og jeg er sikker på, jeg vil se tilbage på dette en dag og grine med, hvordan primitive starten var. Anyway, fra vejledning
mel @ arnold: ~ $ mkdir -P deb-libhugetlbfs
mel @ arnold: ~ $ cd deb-libhugetlbfs /
mel @ arnold: ~ / deb-libhugetlbfs $ wget -q \
http: //…/sourceforge/libhugetlbfs/libhugetlbfs-1.2.tar.gz
mel @ arnold: ~ / deb-libhugetlbfs $ tar -zxf libhugetlbfs-1.2.tar.gz
mel @ arnold: ~ / deb-libhugetlbfs $ cd libhugetlbfs-1.2
mel @ Arnold: ~ / deb-libhugetlbfs / libhugetlbfs-1.2 $ gøre libs || ekko Manglende
mel @ Arnold: ~ / deb-libhugetlbfs / libhugetlbfs-1.2 $
Første bemærkning på dette punkt er, at opbygningen testene mislykkes i denne version af libhugetlbfs. Vil beskæftige sig med dette senere.

Debianisation
Efter et hurtigt blik gennem dh_make man-side, jeg løb
mel @ arnold: ~ / deb-libhugetlbfs / libhugetlbfs-1.2 $ dh_make -e [email protected] \
-F ../libhugetlbfs-1.2.tar.gz \
-c LGPL -l
Vedligeholder navn: Mel Gorman
E-mail-adresse: [email protected]
Dato: Sat, 17 Nov 2007 12:46:16 +0000
Pakke navn: libhugetlbfs
Version: 1.2
Licens: LGPL
Type af pakken: Bibliotek
Hit at bekræfte:
Udført. Venligst redigere filerne i debian / undermappe nu. Du bør også
kontrollere, at libhugetlbfs Makefile installere i $ målkat og ikke i /.
Sørg for at du ændre pakkens navn fra libhugetlbfsBROKEN til noget
andet, såsom libhugetlbfs1 i debian / kontrol fil.
Dette skaber en bunke af kedel-plade gunk efter diff. Intet af det var en stor overraskelse, selv om der var unødvendige emner som init scripts.

Source Ændringer
libhugetlbfs var både akavet og handy i denne henseende. Det er akavet i at den ikke bruger autoconf. Det var praktisk i, at de ændringer var temmelig enkel, installationen ikke oprette særlige symlinks og de fleste af de veje, det plejede allerede klæbet Filsystemhierarki Standard. Her er de ændringer, jeg har lavet;

Kør localversion manuelt for at skabe version.h
Forhindre localversion kører i Makefile at undgå bygge afhængighed af git
Forhindre ren målet fra sletning version.h
Ændret PRÆFIKS til $ (målkat) / usr
Fast alle andre henvisninger til målkat i Makefile baseret på PREFIX
Fjernet installere-docs og installere-tests mål, unødvendige til pakke
Muck med stien til ldscripts som installationen stien ikke er den “endelige” destination

Bemærk her, at vejledningen gør målkat synes magiske, indtil resultaterne filen er stødt på senere. Den kan indstilles i Banana, så længe reglerne filen får det rigtige.

Skrivning Control fil
Det første skridt i at skrive kontrol fil arbejdede ud byggeværktøjerne afhængigheder.
#! / bin / bash
# Simpelt script til liste Debian-pakker afhang til byggeri
# Tilpasset fra Debians vejledning til nye vedligeholdere 1.2.11
#
# Copyright © 1998-2002 Josip Rodin.
# Copyright © 2005-2007 Osamu Aoki.
strace -f -o / tmp / log $ @
for x i `dpkg-S $ (grep åbne / tmp / log | \
perl -PE! ‘. s * åben \ (\ “([^ \”] *) * 1 $.!’ | \
grep “^ /” | Sorter | uniq | \
grep-v “^ \ (/ tmp \ | / dev \ | / proc \)”) 2> / dev / null | \
skære -F1 -d “:” | slags | uniq`; gøre
echo-n “$ x (> =” `dpkg -S $ x | grep ^ Version | skære -F2 -d”: “` “),”;
done
Det er opført afhængigheder af opbygningen mekanisme som
binutils (> = 2.17cvs20070426-8), libc6 (> = 2.6.1-1 + b1), libc6-dev (> = 2.6.1-1 + b1)
libncurses5 (> = 5,6 + 20070716-1), libselinux1 (> = 2.0.15-2 b1 +),
libsepol1 (> = 2.0.3-1 + b1), linux-libc-dev (> = 2.6.21-6)
locales (> = 2.6.1-1)
Som objdump -p erklærede, at libhugetlbfs.so kun afhang libc.so.6 og de ​​pakker, der er anført syntes at være allerede i bygge-essentielle, jeg gjorde den antagelse, at der ikke var nogen usædvanlige bygge-afhængigheder. Slutresultatet var denne kontrol fil.
Kilde: libhugetlbfs
Prioritet: ekstra
Vedligeholder: Mel Gorman
Build-Depends: debhelper (> = 5)
Standarder-Version: 3.7.2
Sektion: libs

Pakke: libhugetlbfs
Sektion: libs
Arkitektur: enhver
Afhænger: $ {shlibs: Afhænger} $ {misc: Afhænger}
Beskrivelse: hjælper til at bakke malloc (), tekst og data med hugepages
Linux bruger en speciel filsystem hugetlbfs at give adgang til hugepages.
Programmering imod det kan blive alt for kompliceret, så dette bibliotek
bruger preloader tricks for et program til automatisk at udnytte hugepages
uden ændringer.
.
* Hugepage malloc ()
* Hugepage tekst / data / BSS
.
Til sikkerhedskopiering tekst / data / BSS, er det nogle gange bedst at sammenkæde målet
ansøgning ved hjælp af de libhugetlbfs linker scripts fra udvikling
pacakage således at segmenterne er tilpasset på en hugepage grænse.

Pakke: libhugetlbfs-dev
Sektion: libdevel
Arkitektur: enhver
Afhænger: libhugetlbfs (= $ {Source-version})
Foreslår: oprofile
Beskrivelse: libhugetlbfs Udvikling bibliotek og Header filer
Indeholder headere og linker filer til libhugetlbfs.
Bemærk rækkefølgen af de pakker, det er subtil. Dokumentationen bliver installeret i det første binære pakke er nævnt i denne liste. Ønsker HOWTO at være sammen med biblioteket selv, libhugetlbfs pakken måtte blive nævnt først. Derfra blev ophavsret og Changelog poster udfyldt, før du flytter ind på reglerne fil.

Skrivning Regler fil
Reglerne fil er en Makefile fil, der bestemmer, hvad dpkg-buildpackage gør. Guiden sagde, det ville være kompliceret, og det blev ikke liggende enten. Langt, få de resultater lige tog længst. dh_install skulle afkommenteret og indstillet til at læse dh_install –sourcedir = debian / tmp. For det andet havde build kommando, der skal opdateres for at ikke køre testene.

Den mest akavet del skrev Debians / libhugetlbfs.installs. debian / libhugetlbfs.dirs og -dev ækvivalent af filerne. Afhængig af arkitekturen, kan der være 64 bit biblioteker bygget så godt. Et script kaldet libhugetlbfs_write_dirs_installs blev oprettet for at kontrollere, om de 64 bits biblioteker eksisterer, og det skriver relevante filer til dh_install til afhentning. Der er formentlig en langt bedre måde at gøre dette.

Fjerne unødvendige filer
dh_make skabt en række filer, der er unødvendige i denne pakke. Listen over filer fjernet var README.Debian, cron.d.ex, kataloger, emacsen- *, init.d. *, menu.ex libhugetlbfs-default.ex.

Dokumentation og man-sider
Et skelet manuelle side blev skrevet for at beskrive libhugetlbfs hjælp manpage.1.ex som skabelon. Den endelige udgave blev gemt som libhugetlbfs.7.ex og SGML og XML skabeloner blev slettet. Der var nogen forvirring mellem guiden og man-siderne her. Vejledningen siger § 7 er for makroer. Manden manuelle side siger § 7 er til diverse. Jeg begik en fejl på siden af ​​den manuelle side. Den regelfil blev derefter opdateret, så den dh_installman blev kaldt korrekt.

Opbygning af aktuelle kolli
Pakken blev simpelthen bygget med
mel @ arnold: ~ / deb-libhugetlbfs / libhugetlbfs-1.2 $ dpkg-buildpackage -rfakeroot
At kreditere guide, det løb tæt på første gang uden fejl. Kom regler ret tidligere var den eneste tidskrævende del. Når der blev sorteret ud, det klagede over nogle ting som ikke at have en GPG-nøgle, men intet katastrofalt.

Kontrol af Pakker til yderligere fejl
Selvfølgelig vejledningen kunne ikke dække alle eventualiteter, og så det kræver, at du køre lintian og Linda. Disse er begge lint pakker, der fanger forskellige ting – sandsynligvis fordi de vedligeholdes med forskellige lovmæssigheder. De fejl, som den er fanget var temmelig ligetil.

Første op var en række eksempel (.EX) filer efterladt. Pakkebehandlingssystemet scripts blev omdøbt at droppe .EX forlængelse. postinst og postrm blev ændret til at ringe ldconfig. For det andet blev det watch.ex filen omdøbt til at se, og den linje er relevant for sourceforge var uncommented.

De sidste advarsler var relateret til shlibs. Mens jeg ikke forventer nogen til at afhænge libhugetlbfs blev en shlibs fil, der indeholder blot følgende tilføjet.
libhugetlbfs 1.2 (> = 1: 1,2)
Disse ændringer holdt linda glad. Lintian stadig klagede en masse, men det var ikke klart, om hvad det var klager over var vigtigt. Jeg besluttede at vente, indtil en Debian-udvikler havde en ændring at se på output og afgøre, om det var relevant eller ej.

På dette punkt vil jeg også tjekke pakken med pbuilder. Men jeg var ved at løbe tør for tid på dette punkt, og udskudt det på grund det var usandsynligt, at lide bygge afhængighed fejl.

Kontrol den virker
Pakkerne installeret nemt nok med dpkg og hvad der var tilbage nu var kontrol. Hvad jeg bruges til at verificere det fungerede er kaldet STREAM som er en hukommelse båndbredde benchmark, at jeg havde en praktisk script rådighed til brug med libhugetlbfs. Hvis du gengive denne test, vil jeg påpege, at jeg for nylig fundet, at hukommelsesbåndbredde reduceres ved anvendelse stream på nogle systemer, men har ikke haft mulighed for at tjekke ud af, hvorfor endnu. Det var resultaterne fra en gammel bærbar jeg bruger til at teste nye patches.

Løb stream på et array 48MB i størrelse tildelt af malloc med små sider, jeg fik;
Funktion Rate (MB / s) Gennemsnitspris tid Min tid Maks tid
Kopi: 264.9805 0,1267 0,1266 0,1268
Skala: 289.1775 0,1161 0,1160 0,1166
Føj: 296.7493 0,1704 0,1696 0,1762
Triad: 302.6247 0,1668 0,1663 0,1675
Kørsel med libhugetlbfs bibliotek installeres via Debian-pakke, jeg fik;
Funktion Rate (MB / s) Gennemsnitspris tid Min tid Maks tid
Kopi: 333.2745 0,1008 0,1007 0,1009
Skala: 325.6892 0,1031 0,1030 0,1031
Føj: 383.6921 0,1314 0,1312 0,1325
Triad: 379.2916 0,1330 0,1327 0,1339
Alt i alt synes at være i orden.

Næste skridt
På dette stadium, er pakken blevet bygget, monteret og verificeret. Jeg gætte, men ved ikke, at en Debian-udvikler vil uploade den på dette punkt baseret på deres erfaringer. , For mig det næste skridt er dog at gå på debian-mentorer mailingliste og sende en anmodning efter sponsor (RFS) med en “ad” for pakken. Jeg tror, ​​jeg har en sponsor allerede rekrutteret af den mest pålidelige måde er muligt – talte om det med ham i en pub! Det tvivler jeg stærkt, at rent faktisk at få pakken i og beskæftiger sig med mængden af ​​endnu flere postlister og proces regler vil være den mest smertefulde aspekt af denne forpligtelse. Vil tiden vise.

resumé
OK, så i starten kunne jeg lige har kompileret og installeret i cirka 15 minutter uden at bryde sved. Formålet var at finde ud af, om emballagen proces var ikke helt så let, som pub-opdaget-Debian-udviklere sagde, at det var, men det var stadig temmelig praktisk. Den samlede tid fra at sidde ned med henblik på at læse dokumentationen til at have en fungerende pakke var omkring 5 timer. Samlet vil jeg beskrive oplevelsen som med rimelighed behagelig, hovedsagelig fordi hjælpelinjen var så godt skrevet. Det var virkelig så nemt som annonceret.

Bemærkede dog, at der var en shedload mere dokumentation for, at jeg skal læse og forstå. Jeg kommer til at antage, jeg kan samle det op, som jeg hen ad vejen til en vis grad. Jeg formoder det mere smertefuld aspekt af erfaring vil være at få pakken ind i distributionen og beskæftiger sig med endnu en postliste. Hvis det bliver involveret nok, vil du se en anden artikel.

Alt i alt, bare at bygge en pakke fra bunden er ikke svært. Der er ikke meget undskyldning for at undgå det, hvis du finder det mangler.

Comments are closed.