Bestaande Slackware packages importeren in SYN-3
Als een pakketje al in Slackware bestaat, dan word het aanbevolen deze te importeren en compilen voor de huidige versie van SYN-3.
Dit is grotendeels automatisch mogelijk via het importpackage script:
psy@ws1 ~/opensyn3/npl % sudo bash ./importpackage [sudo] password for psy: Usage: ./importpackage <category> <name> <url> Imports slackware package from specified slackware source url Example: ./importpackage system gmp 'http://mirrors.slackware.com/slackware/slackware-current/source/l/gmp/'
Voorbeeld: powertop importeren
Nu volgt een voorbeeld van het importeren van powertop vanuit SlackWare?.
Zoek de originele SlackBuild files op
Zoek de SlackBuild directory op in http://mirrors.slackware.com/slackware/slackware-current/source/
Powertop vinden we in http://mirrors.slackware.com/slackware/slackware-current/source/ap/powertop/
Importeer de package
Hieronder de output van de intiele build, er is wat output weggelaten.
psy@ws1 ~/opensyn3/npl % sudo ./importpackage overig powertop http://mirrors.slackware.com/slackware/slackware-current/source/ap/powertop/ --2017-01-19 14:48:29-- http://mirrors.slackware.com/slackware/slackware-current/source/ap/powertop// Resolving mirrors.slackware.com (mirrors.slackware.com)... 207.223.116.213 Connecting to mirrors.slackware.com (mirrors.slackware.com)|207.223.116.213|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1887 (1.8K) [text/html] Saving to: ‘index.html’ index.html 100%[==================================================================================================================================================================>] 1.84K --.-KB/s in 0s Last-modified header missing -- time-stamps turned off. 2017-01-19 14:48:33 (233 MB/s) - ‘index.html’ saved [1887/1887] (...) Adding SYN-3 packaging to powertop.SlackBuild ... Building package... Rebuild required: ./powertop-2.8.tar.xz has changed! REBUILDING /home/psy/opensyn3/npl/overig/powertop/powertop.SlackBuild: Buildroot maken: ..............................................................................................OK (...) 67 /tmp > cd powertop-2.8 70 /tmp/powertop-2.8 > chown -R root:root . 71 /tmp/powertop-2.8 > find . '(' -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 ')' -exec chmod 755 '{}' ';' -o '(' -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 ')' -exec chmod 644 '{}' ';' 77 /tmp/powertop-2.8 > LDFLAGS=' -lresolv -lz ' 77 /tmp/powertop-2.8 > CFLAGS='-O2 -march=i586 -mtune=i686' 77 /tmp/powertop-2.8 > CXXFLAGS='-O2 -march=i586 -mtune=i686' 77 /tmp/powertop-2.8 > ./configure --prefix=/usr --libdir=/usr/lib --sysconfdir=/etc --localstatedir=/var --mandir=/usr/man --docdir=/usr/doc/-2.8 --build=i586-slackware-linux checking for a BSD-compatible install... /usr/bin/ginstall -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for style of include used by make... GNU checking for g++... g++ checking whether the C++ compiler works... yes checking for library containing pci_get_dev... no checking for LIBNL... no checking for LIBNL... no checking for LIBNL... no configure: error: libnl and libnl-genl are required but were not found 87 /tmp/powertop-2.8 > exit 1 *** Er ging iets mis tijdens het bakken in de buildroot! Chroot naar /tmp/buildroot0._home_psy_opensyn3_builder zodat je kunt onderzoeken (ctrl-d om te stoppen): [Syn-3] root@darkstar.example.net /tmp/build#
De build mislukt zoals we zien. Met ctrl-d verlaat je de buildroot.
Build probleem oplossen
Veel packages zijn bepaalde dependencies nodig.
In dit geval vraagt het configure script om libnl en libnl-genl.
We kijken of dit pakketje al in SYN-3 aanwezig is:
psy@ws1 ~/opensyn3/npl % find |grep libnl ./overig/libnl ./overig/libnl/libnl_dev.arch ./overig/libnl/libnl.version ./overig/libnl/libnl_dev.version ./overig/libnl/libnl-1.1.4.tar.gz ./overig/libnl/libnl.SlackBuild ./overig/libnl/libnl.info ./overig/libnl/libnl.pkg ./overig/libnl/libnl.SlackBuild.log.gz ./overig/libnl/libnl.arch ./overig/libnl/slack-desc ./overig/libnl/libnl.build ./overig/libnl/libnl_dev.build ./overig/libnl/libnl.major ./overig/libnl/libnl.md5 ./overig/libnl/libnl_dev.pkg
We geven nu aan in de SlackBuild dat deze dependency nodig is:
psy@ws1 ~/opensyn3/npl % sudo mcedit overig/powertop/powertop.SlackBuild
Voeg na de header deze regel toe:
#DEP:libnl
We starten een rebuild om te kijken of we nu verder komen:
psy@ws1 ~/opensyn3/npl % sudo ./rebuildcheck powertop Rebuild required: ./powertop-2.8.tar.xz has changed! Rebuild required: libnl major is now 1, but this package was build was against 0. Dependency check libnl REBUILDING /home/psy/opensyn3/npl/overig/powertop/powertop.SlackBuild: Buildroot up-to-date check: (nopkgcheck to skip)..............................................................................................DONE Buildroot /tmp/buildroot0._home_psy_opensyn3_builder repareren/syncen...OK Build-dependency libnl installeren: /home/psy/opensyn3/npl/.tmp/D/libnl-1.1.4-i486-6116.tgz Build-dependency libnl_dev installeren: /home/psy/opensyn3/npl/.tmp/D/libnl_dev-1.1.4-i486-6116.tgz Nieuwe packages ldconfiggen... etc-update doen Different config file: /etc/hosts.new (please check manually) /home/psy/opensyn3/npl/overig/powertop word gekopieerd naar werkdirectory /tmp/buildroot0._home_psy_opensyn3_builder/tmp/build *** Chroot naar /tmp/buildroot0._home_psy_opensyn3_builder en starten van powertop.SlackBuild in /tmp/build: 10 /tmp/build > pwd 10 /tmp/build > CWD=/tmp/build 11 /tmp/build > set -e 12 /tmp/build > source ./powertop.SlackBuild.orig 28 /tmp/build > PKGNAM=powertop 29 /tmp/build > echo powertop-2.8.tar.xz 29 /tmp/build > rev 29 /tmp/build > cut -f 3- -d . 29 /tmp/build > cut -f 1 -d - 29 /tmp/build > rev (...) make[3]: Entering directory `/tmp/powertop-2.8/src' CXX powertop-display.o In file included from display.cpp:25:0: display.h:31:21: fatal error: ncurses.h: No such file or directory #include <ncurses.h> ^ compilation terminated. make[3]: *** [powertop-display.o] Error 1 (...)
2e build probeem oplossen
Aan de error zien we dat ncurses.h ontbreekt.
Ook hier is een pakketje voor (je kunt ook ./findpkgfile gebruiken om zoeken in welke package een file zich bevind)
Nu voegen we #DEP:ncurses toe en starten de build nogmaals:
psy@ws1 ~/opensyn3/npl % sudo ./rebuildcheck powertop '' nopkgcheck Rebuild required: ./powertop-2.8.tar.xz has changed! (...) All rebuilds completed.
De build is gelukt!
Gebruik ./remoteinstall om het pakketje en de dependencys te installeren op je SYN-3 machine.
Neem contact met DatuX op om het pakketje toe te voegen aan de online SYN-3 tree. Deze pakketjes komen dan via een update in SYN-3.
Bovenstaande package is gecommit in changeset 1393bb5 .