Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy

TL, DR: Sambany vao nahita an'i Haiku ny olona vaovao iray, nanandrana nampiditra fandaharana sasany avy amin'ny tontolon'ny Linux.

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy
Ny fandaharana Haiku voalohany nataoko, nofonosina tamin'ny endrika hpkg

vao haingana Nahita Haiku aho, rafitra fiasa tsara mahagaga ho an'ny PC.
Androany aho dia hianatra ny fomba handefasana programa vaovao amin'ity rafitra fiasa ity. Ny tena ifantohana dia ny famaritana ny traikefa voalohany nifindra tany Haiku avy amin'ny fomba fijerin'ny mpamorona Linux. Miala tsiny aho amin'ny hadisoana adaladala rehetra nataoko teny an-dalana, satria mbola tsy nisy herinandro akory hatramin'ny nisintonako voalohany ny Haiku.

Te-hatratra tanjona telo aho:

  • Ampidiro fampiharana CLI tsotra
  • Ampidiro fampiharana avy amin'ny GUI mankany Qt
  • Avy eo dia alaivo amin'ny endrika hpkg izy ireo (satria mbola mieritreritra ny hampifanaraka ny AppDir sy AppImage ho an'ny Haiku aho ...)

Andeha isika hanomboka. Amin'ny fizarana tahirin-kevitra ΠΈ fivoaranaary koa amin'ny Wiki avy any HaikuPorts no nahitako ny lalana marina. Misy boky PDF an-tserasera mihitsy aza BeOS: fandefasana fampiharana Unix.
467 pejy - ary tamin'ny 1997 ity! Mampatahotra ny mijery ny ao anatiny, fa manantena ny tsara indrindra aho. Mampahery ny tenin'ny mpamorona: "naharitra ela izany satria tsy nanaraka ny POSIX ny BeOS", fa ny Haiku "amin'ny ankamaroany" dia efa toy izany.

Fandefasana fampiharana CLI tsotra

Ny eritreritra voalohany dia ny handefasana ny fampiharana avrdude, fa, raha ny fantatra, dia efa io hatao efa ela.

Andrana voalohany: tsy misy hojerena

Ny tsy azoko dia efa izay Nafindra tany Haiku nandritra ny 10 taona mahery ny fampiharana - na dia tsy mbola version 1.0 aza ny OS mihitsy.

Andrana faharoa: mila manoratra indray

Ka hampiasaiko ptouch-770, CLI amin'ny fanaraha-maso ny mpanonta Brother P-Touch 770 izay ampiasaiko amin'ny fanontana etikety.
Manonta etikety isan-karazany eo aminy aho, ary mety ho efa hitanao tao amin’ny lahatsoratra teo aloha izany. Taloha kelin'izay, nanoratra programa kely GUI wrapper amin'ny Python aho (satria ao amin'ny Gtk+ izy io, dia tsy maintsy averina soratana, ary antony tsara hianarana izany).

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy
Rahalahy P-Touch 770 etikety mpanonta printy. Hiara-miasa amin'i Haiku ve izany?

Ny mpitantana ny fonosana Haiku dia mahafantatra momba ny tranomboky sy ny baiko, ka raha mahazo hafatra "tsy mahita libintl" aho rehefa mihazakazaka configure - Vao manomboka aho pkgman install devel:libintl ary ho hita ny fonosana ilaina. Toy izany koa pkgman install cmd:rsync. Eny, sns.

Afa-tsy rehefa tsy mandeha izany:

/Haiku/home> git clone https://github.com/probonopd/ptouch-770
Cloning into 'ptouch-770'...
remote: Enumerating objects: 134, done.
remote: Total 134 (delta 0), reused 0 (delta 0), pack-reused 134
Receiving objects: 100% (134/134), 98.91 KiB | 637.00 KiB/s, done.
Resolving deltas: 100% (71/71), done./Haiku/home> cd ptouch-770//Haiku/home/ptouch-770> make
gcc -Wall -O2 -c -o ptouch-770-write.o ptouch-770-write.c
ptouch-770-write.c:28:10: fatal error: libudev.h: No such file or directory
 #include <libudev.h>
          ^~~~~~~~~~~
compilation terminated.
Makefile:16: recipe for target 'ptouch-770-write.o' failed
make: *** [ptouch-770-write.o] Error 1/Haiku/home/ptouch-770> pkgman install devel:libudev
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:libudev": Name not found/Haiku/home/ptouch-770> pkgman install devel:udev
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:udev": Name not found

Angamba ny udev dia mifototra amin'ny Linux loatra ka tsy misy ho an'ny Haiku. Midika izany fa mila manitsy ny kaody loharano ezahako angonina aho.
Eh, tsy afaka mitsambikina mihoatra ny lohanao ianao, ary tsy fantatro akory hoe aiza no hanombohana.

Andrana fahatelo

Tsara ny manana tmate ho an'i Haiku, dia avelako ny mpamorona Haiku hifandray amin'ny fotoam-pivoriana farany ataoko - raha sendra misy tsy mety. Tsotra ny toromarika:

./autogen.sh
./configure
make
make install

Toa tsara, koa maninona raha manandrana azy amin'ny Haiku?

/Haiku/home> git clone https://github.com/tmate-io/tmate/Haiku/home> cd tmate//Haiku/home/tmate> ./autogen.sh
(...)/Haiku/home/tmate> ./configure
(...)
checking for libevent... no
checking for library containing event_init... no
configure: error: "libevent not found"/Haiku/home/tmate> pkgman install devel:libevent
(...)
The following changes will be made:
  in system:
    install package libevent21-2.1.8-2 from repository HaikuPorts
    install package libevent21_devel-2.1.8-2 from repository HaikuPorts
Continue? [yes/no] (yes) :
100% libevent21-2.1.8-2-x86_64.hpkg [965.22 KiB]
(...)
[system] Done.checking for ncurses... no
checking for library containing setupterm... no
configure: error: "curses not found"/Haiku/home/tmate> pkgman install devel:libcurses
(...)
*** Failed to find a match for "devel:libcurses": Name not found/Haiku/home/tmate> pkgman install devel:curses
(...)
*** Failed to find a match for "devel:curses": Name not found

Amin'ity dingana ity dia manokatra HaikuDepot aho ary mikaroka curses.
Nisy zavatra hita, izay nanome ahy soso-kevitra ho an'ny fanontaniana mahay kokoa:

/Haiku/home/tmate> pkgman install devel:libncurses
(...)
100% ncurses6_devel-6.1-1-x86_64.hpkg [835.62 KiB]
(...)./configure
(...)
checking for msgpack >= 1.1.0... no
configure: error: "msgpack >= 1.1.0 not found"/Haiku/home/tmate> pkgman install devel:msgpack
(...)
*** Failed to find a match for "devel:msgpack": Name not found/Haiku/home/tmate> pkgman install devel:libmsgpack
(...)
*** Failed to find a match for "devel:libmsgpack": Name not found

Nandeha tany HaikuDepot indray aho, ary, mazava ho azy, nahita devel:msgpack_c_cpp_devel. Inona ireo anarana hafahafa ireo?

/Haiku/home/tmate> pkgman install devel:msgpack_c_cpp_devel
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:msgpack_c_cpp_devel": Name not found# Why is it not finding it? To hell with the "devel:".../Haiku/home/tmate> pkgman install msgpack_c_cpp_devel
(...)
The following changes will be made:
  in system:
    install package msgpack_c_cpp-3.1.1-1 from repository HaikuPorts
    install package msgpack_c_cpp_devel-3.1.1-1 from repository HaikuPorts
Continue? [yes/no] (yes) :
(...)/Haiku/home/tmate> ./configure
(...)
checking for libssh >= 0.8.4... no
configure: error: "libssh >= 0.8.4 not found"/Haiku/home/tmate> pkgman install devel:libssh/Haiku/home/tmate> make
(...)
In file included from /boot/system/develop/headers/msgpack.h:22,
                 from tmate.h:5,
                 from cfg.c:29:
/boot/system/develop/headers/msgpack/vrefbuffer.h:19:8: error: redefinition of struct iovec'
 struct iovec {
        ^~~~~
In file included from tmux.h:27,
                 from cfg.c:28:
/boot/system/develop/headers/posix/sys/uio.h:12:16: note: originally defined here
 typedef struct iovec {
                ^~~~~
Makefile:969: recipe for target 'cfg.o' failed
make: *** [cfg.o] Error 1

Tamin'ity dingana ity, tsapako fa ny fandefasana programa mankany Haiku dia mitaky fahalalana bebe kokoa noho izay ilaina amin'ny fanamboarana tsotra.
Niresaka tamin'ireo mpamorona Haiku sariaka aho, hita fa misy bibikely ao amin'ny msgpack, ary afaka minitra vitsy dia mahita patch ao amin'ny HaikuPorts aho. Hitako amin'ny masoko hoe ahoana ilay fonosana voahitsy mandeha eto (buildslave - milina virtoaly).

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy
Manangana ny msgpack voahitsy amin'ny buildmaster

Eo anelanelan'ny fotoana dia mandefa patch ho any ambony aho hanampiana ny fanohanana Haiku amin'ny msgpack.

Dimy minitra taty aoriana, efa misy amin'ny Haiku ny msgpack nohavaozina:

/Haiku/home/tmate> pkgman update
(...)
The following changes will be made:
  in system:
    upgrade package msgpack_c_cpp-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
    upgrade package msgpack_c_cpp_devel-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
Continue? [yes/no] (yes) : y
100% msgpack_c_cpp-3.2.0-2-x86_64.hpkg [13.43 KiB]
(...)
[system] Done.

Tsara tsy nampoizina. Izany ve no nolazaiko?!

Miverina amin'ny olana voalohany aho:

/Haiku/home/tmate> make
(...)
In file included from tmux.h:40,
                 from tty.c:32:
compat.h:266: warning: "AT_FDCWD" redefined
 #define AT_FDCWD -100

In file included from tty.c:25:
/boot/system/develop/headers/posix/fcntl.h:62: note: this is the location of the previous definition
 #define AT_FDCWD  (-1)  /* CWD FD for the *at() functions */

tty.c: In function 'tty_init_termios':
tty.c:278:48: error: 'IMAXBEL' undeclared (first use in this function); did you mean 'MAXLABEL'?
  tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP);
                                                ^~~~~~~
                                                MAXLABEL
tty.c:278:48: note: each undeclared identifier is reported only once for each function it appears in
Makefile:969: recipe for target 'tty.o' failed
make: *** [tty.o] Error 1

Ankehitriny dia toa tsy diso ny msgpack. Maneho hevitra aho IMAXLABEL Π² tty.c toy izao manaraka izao:

tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|/*IMAXBEL|*/ISTRIP);

vokany:

osdep-unknown.c: In function 'osdep_get_cwd':
osdep-unknown.c:32:19: warning: unused parameter 'fd' [-Wunused-parameter]
 osdep_get_cwd(int fd)
               ~~~~^~
make: *** No rule to make target 'compat/forkpty-unknown.c', needed by 'compat/forkpty-unknown.o'.  Stop.

Eny ary, andeha indray isika ... Raha ny marina:

/Haiku/home/tmate> ./configure | grep -i OPENAT
checking for openat... no

Mr. waddlesplash milaza aminao hoe aiza no mihady:

/Haiku/home/tmate> ./configure LDFLAGS="-lbsd"
(...)/Haiku/home/tmate> make
(...)
In file included from tmux.h:40,
                 from window.c:31:
compat.h:266: warning: "AT_FDCWD" redefined
 #define AT_FDCWD -100

In file included from window.c:22:
/boot/system/develop/headers/posix/fcntl.h:62: note: this is the location of the previous definition
 #define AT_FDCWD  (-1)  /* CWD FD for the *at() functions */

make: *** No rule to make target 'compat/forkpty-unknown.c', needed by 'compat/forkpty-unknown.o'.  Stop.

Eto aho nandefa config.log.

Nohazavain'izy ireo tamiko fa misy zavatra hafa ao amin'ny libnetwork ankoatry ny libresolv ao amin'ny Haiku. Toa mila ovaina bebe kokoa ny kaody. Mila mieritreritra…

find . -type f -exec sed -i -e 's|lresolv|lnetwork|g'  {} ;

Ny fanontaniana mandrakizay: inona no mitranga?

/Haiku/home/tmate> ./configure LDFLAGS="-lbsd"
(...)/Haiku/home/tmate> make
(...)
# Success!# Let's run it:/Haiku/home/tmate> ./tmate
runtime_loader: /boot/system/lib/libssh.so.4.7.2: Could not resolve symbol '__stack_chk_guard'
resolve symbol "__stack_chk_guard" returned: -2147478780
runtime_loader: /boot/system/lib/libssh.so.4.7.2: Troubles relocating: Symbol not found

Toy izany koa, ao amin'ny profil ihany. Googled ary nahita ity. Raha manampy ianao -lssp "Indraindray" manampy, miezaka aho:

/Haiku/home/tmate> ./configure LDFLAGS="-lbsd -lssp"
(...)/Haiku/home/tmate> make
(...)/Haiku/home/tmate> ./tmate

Oay! Manomboka izao! Fa…

[tmate] ssh.tmate.io lookup failure. Retrying in 2 seconds (non-recoverable failure in name resolution)

Hiezaka aho ny debug rakitra eto:

/Haiku/home/tmate> strace -f ./tmate >log 2>&1

"Bad port ID" dia efa toy ny karatra fandraharahana haiku. Sao dia misy manana hevitra hoe inona no tsy mety sy ny fomba hamahana azy? Raha eny, havaoziko ny lahatsoratra. Rohy mankany GitHub.

Ny fandefasana ny fampiharana GUI mankany Qt.

Mifidy fampiharana QML tsotra aho.

/> cd /Haiku/home//Haiku/home> git clone https://github.com/probonopd/QtQuickApp
/Haiku/home/QtQuickApp> qmake .
/Haiku/home/QtQuickApp> make
/Haiku/home/QtQuickApp> ./QtQuickApp # Works!

Tena tsotra. Tsy ampy iray minitra!

Fampiharana fonosana amin'ny hpkg mampiasa haikuporter sy haikuports.

Inona no tokony hatomboko? Tsy misy antontan-taratasy tsotra, mandeha any amin'ny fantsona #haiku ao amin'ny irc.freenode.net aho ary mandre:

  • ekipa package - fomba ambany indrindra hamoronana fonosana. Amin'ny ankapobeny, PackageInfo dia ampy ho azy, araka ny voalaza ao amin'ny fizarana "Making it into a proper .hpkg package"
  • Mila manao zavatra aho toy izany
  • Azo ampiasaina hpkg-mpamorona (midona amiko izany, tatitra diso)

Tsy mazava ny tokony hatao. Heveriko fa mila torolalana ho an'ny mpandray anjara amin'ny fomba Hello World aho, raha ny tena marina dia horonan-tsary. Tsara ihany koa ny manana fampidirana mora amin'ny HaikuPorter, toy ny atao amin'ny GNU hello.

Mamaky izao manaraka izao aho:

haikuporter dia fitaovana hamoronana tetikasa fonosana mahazatra ho an'ny Haiku. Mampiasa ny tahiry HaikuPorts izy io ho fototry ny fonosana rehetra. Ny fomba fanamboarana Haikuporter dia ampiasaina hamoronana fonosana.

Ankoatra izany, fantatro fa:

Tsy ilaina ny mitahiry resabe ao amin'ny fitahirizana HaikuPorts. Azonao atao ny manamboatra tahiry hafa, apetraho ao anatiny ny fomba fanamboarana, ary avy eo manondro haikuporter azy.

Izay ilaiko fotsiny - raha tsy mitady fomba hamoahana ampahibemaso ilay fonosana. Saingy lohahevitra ho an'ny lahatsoratra hafa ity.

Fametrahana haikuporter sy haikuports

cd /boot/home/
git clone https://github.com/haikuports/haikuporter --depth=50
git clone https://github.com/haikuports/haikuports --depth=50
ln -s /boot/home/haikuporter/haikuporter /boot/home/config/non-packaged/bin/ # make it runnable from anywhere
cd haikuporter
cp haikuports-sample.conf /boot/home/config/settings/haikuports.conf
sed -i -e 's|/mydisk/haikuports|/boot/home/haikuports|g' /boot/home/config/settings/haikuports.conf

Manoratra fomba fahandro

SUMMARY="Demo QtQuick application"
DESCRIPTION="QtQuickApp is a demo QtQuick application for testing Haiku porting and packaging"
HOMEPAGE="https://github.com/probonopd/QtQuickApp"
COPYRIGHT="None"
LICENSE="MIT"
REVISION="1"
SOURCE_URI="https://github.com/probonopd/QtQuickApp.git"
#PATCHES=""
ARCHITECTURES="x86_64"
PROVIDES="
    QtQuickApp = $portVersion
"
REQUIRES="
    haiku
"
BUILD_REQUIRES="
    haiku_devel
    cmd:qmake
"BUILD()
{
    qmake .
    make $jobArgs
}INSTALL()
{
    make install
}

Manangona ny fomba fahandro

Tehiriziko eo ambanin'ny anarana ilay rakitra QtQuickApp-1.0.recipe, ary avy eo dia manomboka aikuporter -S ./QuickApp-1.0.recipe. Ny fiankinan-doha dia voamarina ho an'ny fonosana rehetra ao amin'ny tahiry haikuports, izay maka fotoana kely. Handeha haka kafe aho.

Nahoana no eto an-tany no tokony hatao amin'ny milina eo an-toerana ity fanamarinana ity, fa tsy amin'ny mpizara indray mandeha ho an'ny rehetra?

Araka ny filazan'i mr. waddlesplash:

Amin'izay dia azonao atao ny mamerina manoratra ny rakitra rehetra ao amin'ny tahiry πŸ˜‰ Azonao atao ny manatsara kely izany, kajy ny fampahalalana ilaina rehefa ilaina, satria tsy fahita firy ny fanovana farany natao.

~/QtQuickApp> haikuporter  QtQuickApp-1.0.recipe
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
Error: QtQuickApp not found in repository

Hita fa tsy misy zavatra toy ny rakitra momba ny fomba fanao mahazatra misy ny kaody loharanon'ny fampiharana anao. Mila tehirizina ao anaty tahiry amin'ny endrika HaikuPorts ianao.

~/QtQuickApp> mv QtQuickApp-1.0.recipe ../haikuports/app-misc/QtQuickApp/
~/QtQuickApp> ../haikuport
~/QtQuickApp> haikuporter -S QtQuickApp-1.0.recipe

Izany zava-misy izany dia mahatonga ny fivoriambe ho sarotra kokoa. Tsy dia tiako loatra izany, saingy heveriko fa ilaina izany mba hiseho amin'ny HaikuPorts ny rindrambaiko open source rehetra amin'ny farany.

Mahazo ireto manaraka ireto aho:

~/QtQuickApp> haikuporter -S QtQuickApp-1.0.recipe
Checking if any dependency-infos need to be updated ...
        updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
Error: QtQuickApp-1.0.recipe not found in tree.

Inona no olana? Rehefa avy namaky ny irc aho dia manao:

~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
        updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
        /boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------Downloading: https://github.com/probonopd/QtQuickApp.git ...
--2019-07-14 16:12:44--  https://github.com/probonopd/QtQuickApp.git
Resolving github.com... 140.82.118.3
Connecting to github.com|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/probonopd/QtQuickApp [following]
--2019-07-14 16:12:45--  https://github.com/probonopd/QtQuickApp
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: β€˜/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git’
     0K .                                                     1.34M=0.06s
2019-07-14 16:12:45 (1.34 MB/s) - β€˜/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git’ saved [90094]
Validating checksum of QtQuickApp.git
Warning: ----- CHECKSUM TEMPLATE -----
Warning: CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"
Warning: -----------------------------
Error: No checksum found in recipe!

Nisy fanontaniana mahaliana nipoitra. Raha manampy checksum amin'ny recipe aho - hifanaraka amin'ny git commit farany ho an'ny fampidirana mitohy ve izany? (Manamafy ny mpamorona hoe: "Tsy mety izany. Ny fomba fanamboarana dia natao ho azo antoka.")

Mba hahafinaritra, ampio amin'ny recipe:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Mbola tsy afa-po:

~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
        updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
        /boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------
Skipping download of source for QtQuickApp.git
Validating checksum of QtQuickApp.git
Unpacking source of QtQuickApp.git
Error: Unrecognized archive type in file /boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git

Inona no ataony? Repository git rahateo ity, efa misy mivantana ny code, tsy misy tokony havoaka. Raha ny fijeriko azy dia tokony ho hendry tsara ilay fitaovana fa tsy hitady unpacker raha eo ambonin'ny url GitHub.

Angamba mety hiasa ny uri git://

SOURCE_URI="git://github.com/probonopd/QtQuickApp.git"

Izao no mitaraina toy izao:

Downloading: git://github.com/probonopd/QtQuickApp.git ...
Error: Downloading from unsafe sources is disabled in haikuports.conf!

Hmm, nahoana no sarotra be ny zava-drehetra, nahoana ianao no tsy afaka "miasa fotsiny"? Raha ny marina, tsy dia mahazatra loatra ny manangana zavatra avy amin'ny GitHub. Na fitaovana miasa eo no ho eo, tsy mila setup, na araka ny iantsoako azy hoe "mikorontana".

Mety ho toy izao izany:

SOURCE_URI="git+https://github.com/probonopd/QtQuickApp.git"

Tsia. Mbola mahazo io fahadisoana hafahafa io aho ary manao, araka ny voalaza eto

sed -i -e 's|#ALLOW_UNSAFE_SOURCES|ALLOW_UNSAFE_SOURCES|g' /boot/home/config/settings/haikuports.conf

Mandeha lavidavitra kokoa aho, fa maninona izy no mikiakiaka amiko (tsy azo antoka ny GitHub!) Ary mbola miezaka mamaha zavatra.

Araka ny Mr. waddlesplash:

Eny, eny, ny antony dia ny faniriana hanamarina ny fahamarinan'ny angon-drakitra voaray amin'ny fivoriambe. Ny iray amin'ireo safidy dia ny manamarina ny checksum amin'ny arisiva, saingy azonao atao, mazava ho azy, ny hash rakitra tsirairay, izay tsy hampiharina, satria mila elaela kokoa. Ny vokatr'izany dia ny "tsy fandriampahalemana" an'ny git sy VCS hafa. Mety ho izany foana no mitranga, satria ny famoronana arisiva ao amin'ny GitHub dia mora ary matetika haingana kokoa. Eny ary, amin'ny ho avy, angamba ny hafatra diso dia tsy ho manjelanjelatra loatra ... (tsy manambatra ny fomba fanao toy izany ao amin'ny HaikuPorts intsony izahay).

~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
        /boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------Downloading: git+https://github.com/probonopd/QtQuickApp.git ...
Warning: UNSAFE SOURCES ARE BAD AND SHOULD NOT BE USED IN PRODUCTION
Warning: PLEASE MOVE TO A STATIC ARCHIVE DOWNLOAD WITH CHECKSUM ASAP!
Cloning into bare repository '/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git'...
Unpacking source of QtQuickApp.git
tar: /boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Command 'git archive HEAD | tar -x -C "/boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0"' returned non-zero exit status 2

Noho ny fahazarana taloha dia mandeha manontany olona tsara ao amin'ny fantsona #haiku ao amin'ny tambajotra irc.freenode.net aho. Ary ho aiza aho raha tsy misy azy ireo? Taorian'ny fanosehana dia nahatsapa aho fa tokony hampiasa:

srcGitRev="d0769f53639eaffdcd070bddfb7113c04f2a0de8"
SOURCE_URI="https://github.com/probonopd/QtQuickApp/archive/$srcGitRev.tar.gz"
SOURCE_DIR="QtQuickApp-$srcGitRev"
CHECKSUM_SHA256="db8ab861cfec0ca201e9c7b6c0c9e5e828cb4e9e69d98e3714ce0369ba9d9522"

Eny, nanjary nazava ny ataony - misintona arisiva miaraka amin'ny kaody loharanon'ny fanavaozana iray. Hadalana, raha ny fahitako azy, fa tsy izay tiako indrindra, dia ny misintona ny fanavaozana farany avy amin'ny sampana master.

Nanazava izany ny iray tamin'ireo mpamorona:

Manana CI manokana izahay, ka izay rehetra apetraka ao amin'ny tahiry haikuports dia hapetraka ho an'ny mpampiasa rehetra, ary tsy te hampidi-doza ny hanangona sy hanaterana ny "zavatra rehetra amin'ny dikan-teny farany ambony."

Takatra! Na izany na tsy izany, dia izao no nitranga:

waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
waiting for build package QtQuickApp-1.0-1 to be activated
(...)

Mamerina ity doka tsy manam-petra ity. Toa fahadisoana izany (misy fampiharana ve? Tsy hitako).

Π‘ haikuporter ary repository haikuports Tsy manana fihetseham-po "asa fotsiny" izy io, fa amin'ny maha-mpamorona azy, misy zavatra tiako amin'ny fiaraha-miasa amin'i Haiku. Amin'ny ankapobeny dia mitovy amin'ny Open Build Service izy io, fitaovana iray amin'ny fananganana Linux: mahery vaika, miaraka amin'ny fomba fiasa mirindra, fa be loatra amin'ny fampiharana kely "hello world".

Averina indray, araka ny filazan'i Mr. waddlesplash:

Raha ny marina, ny HaikuPorter dia tena henjana amin'ny alΓ lan'ny default (miampy ny fomba lint ary koa ny fomba henjana mba hahatonga azy ho henjana kokoa!), Fa noho izy mamorona fonosana izay hiasa, fa tsy mamorona fonosana fotsiny. Izany no mahatonga azy mitaraina momba ny fiankinan-doha tsy voambara, ny tranomboky tsy nafarana araka ny tokony ho izy, ny dikan-teny diso, sns. Ny tanjona dia ny hisambotra ny olana rehetra, anisan'izany ny ho avy, alohan'ny hahafantaran'ny mpampiasa azy (izany no tsy nahafahana nametraka avrdude, satria ny fiankinan-doha dia voafaritra ao amin'ny recipe). Ny trano famakiam-boky dia tsy fonosana manokana na dikan-teny SO manokana mihitsy aza. HaikuPorter dia miantoka fa izany rehetra izany dia voamarika ao amin'ny recipe mba hisorohana ny fahadisoana mandritra ny famonoana.

Amin'ny ankapobeny, io haavon'ny henjana io dia hamarinina rehefa mamorona rafitra miasa, saingy toa tsy ilaina amiko ny fampiharana "hello world". Nanapa-kevitra ny hanandrana zavatra hafa aho.

Manangana rindranasa amin'ny endrika hpkg amin'ny alΓ lan'ny baiko "famoronana fonosana".

Angamba, izany Hahomby kokoa amiko ve ny torolalana tsotra?

mkdir -p apps/
cp QtQuickApp apps/cat >  .PackageInfo <<EOF
name QtQuickApp
version 1.0-1
architecture x86_64

summary "Demo QtQuick application"
description "QtQuickApp is a demo QtQuick application for testing Haiku porting and packaging"

packager "probono"
vendor "probono"

copyrights "probono"
licenses "MIT"

provides {
  QtQuickApp = 1.0-1
}requires {
  qt5
}
EOFpackage create -b QtQuickApp.hpkg
package add QtQuickApp.hpkg apps# See below if you also want the application
# to appear in the menu

Haingana tsy nampoizina, tsotra tsy nampoizina, mandaitra tsy nampoizina. Tena tiako ilay izy, mahagaga!

Fametrahana - inona ary aiza?

Nafindra ny rakitra QtQuickApp.hpkg ho ~/config/packagesmampiasa mpitantana rakitra, ary avy eo dia niseho tamin'ny fomba mahagaga ny QtQuickApp ~/config/apps.
Averina indray, haingana tsy nampoizina, tsotra ary mahomby. Mahagaga, tsy mampino!

Fa... (ho aiza isika raha tsy misy azy ireo!)

Mbola tsy hita ao amin'ny lisitry ny menio fampiharana sy QuickLaunch ny fampiharana. Heveriko fa efa haiko ny fanamboarana azy. Ao amin'ny mpitantana ny rakitra dia afindrako ny QtQuickApp.hpkg avy amin'ny ~/config/packages mankany /system/packages.

Tsia, mbola tsy hita. Toa nisy zavatra tsy hitako (ary ny toromarika).

Rehefa nijery ny tabilao "Contents" ao amin'ny HaikuDepot aho ho an'ny fampiharana hafa, dia hitako fa misy rakitra toy ny /data/mimedb/application/x-vnd... ny tena mahavariana dia /data/deskbar/menu/Applications/….

Inona no tokony hapetrako eo? Eo moa...

mkdir -p data/deskbar/menu/Applications/
( cd data/deskbar/menu/Applications ; ln -s ../../../../apps/QtQuickApp . )
package add QtQuickApp.hpkg apps data

Tena azoko antoka fa hahomby io fitaka io, fa ny fanontaniana mipetraka: nahoana no ilaina izany, inona no ilaina? Heveriko fa manimba ny fahatsapana ankapobeny izany fa be pitsiny ny rafitra.

Araka ny fanazavan’i Mr. waddlesplash:

Indraindray dia misy fampiharana ilain'ny fampiharana hafa fa tsy ao anaty menio. Ohatra, ny LegacyPackageInstaller ao amin'ny pikantsaryo, manodina ny arisiva .pkg amin'ny endrika BeOS. Tiako ny mpampiasa hametraka azy ireo, fa ny fisian'izy ireo ao amin'ny menio dia hitarika fisavoritahana.

Noho ny antony sasany dia toa misy vahaolana tsotra kokoa, ohatra Hidden=true amin'ny rakitra .desktop amin'ny Linux. Maninona raha atao loharano sy toetran'ny rafi-drakitra ny fampahalalana "miafina"?

Ny tena tsy dia mazava loatra dia ny anaran'ny fampiharana (sasany) mampiseho ny sakafo, deskbar, mifatotra mafy eny an-dalana.

Mr. Waddlesplash dia manazava izany:

Ny "Deskbar" amin'ity tranga ity dia tokony ho raisina ho karazana teny ankapobeny (mitovitovy amin'ny "taskbar", izay manondro ny fampiharana Windows sy ny foto-kevitra ankapobeny). Eny, hatramin'izao deskbar, fa tsy "Deskbar", izany dia azo takarina amin'ny fomba mitovy.

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy
2 "saika mitovy" lahatahiry misy fampiharana ao anatiny

Nahoana no misy lahatahiry 2 misy fampiharana, ary nahoana ny QtQuickApplication-ko no ao anaty iray, fa tsy amin'ny iray hafa? (Raha ny marina, ity dia tsy rafitra iray, fa mpampiasa faharoa, izay ho azoko manokana).
Tena very hevitra aho ary heveriko fa tokony hitambatra izany.

fanehoan-kevitr'i mr. waddlesplash

Ny katalaogin'ny Apps dia misy rindranasa tsy ilaina ao amin'ny menio. Saingy mila hatsaraina tokoa ny toe-javatra misy ny sakafo, mba hahatonga azy ho azo zahana kokoa.

Fampiharana, sao tsy ho tanteraka πŸ˜‰

Nanontany tena aho hoe: tena ilaina ve ny fampiantranoana fampiharana /system/apps, raha hitan'ny mpampiasa any izy ireo dia tsy ilaina izany. Angamba mety tsara kokoa ny mametraka azy ireo amin'ny toerana hafa izay tsy hahitan'ny mpampiasa azy ireo? Tahaka ny atao amin'ny Mac OS X, izay misy ny votoatin'ny fonosana .app, izay tsy tokony ho hitan'ny mpampiasa ao /Applications, miafina ao anatin'ny /System/Library/β€¦β€œ`.

Ahoana ny momba ny fiankinan-doha?

Heveriko fa mendrika ny mamaritra ny fiankinan-doha, sa tsy izany? Azo raisina ho ampahany tsy maintsy atao amin'ny fametrahana Haiku ve ny Qt raha tsy izany? Tsia! Qt dia tsy napetraka amin'ny alΓ lan'ny default. Afaka mahita ny fiankinan-doha amin'ny alΓ lan'ny fanamarinana ny rakitra ELF ve ny mpanamboatra fonosana? Nolazaina tamiko fa tena manao izany i HaikuPorter, saingy package Tsia. Izany dia satria "mpanorina fonosana" fotsiny izy io izay mamorona rakitra ho azy irery hpkg.

Tokony hatao be pitsiny kokoa ve ny Haiku amin'ny fampidirana politika fa tsy tokony hisy fiankinan-doha amin'ny fonosana ivelan'i Haiku ny fonosana iray? haikuports? (Tiako izany satria ny politika toy izany dia hanamora kokoa ny zava-drehetra - ny rafitra dia afaka mamaha ho azy ny fiankinan-doha ho an'ny fonosana rehetra alaina na aiza na aiza, tsy mikorontana amin'ny loharanon'ny fonosana fanampiny.)

Mr. Waddlesplash manazava hoe:

Tsy te hametra be loatra ny fahalalahan'ny mpamorona izahay, satria miharihary fa raha te hanohana ny rindrambaiko manokana misy fiankinan-doha ny CompanyX (ary noho izany fitehirizana), dia hanao izany an-kalalahana tanteraka.

Amin'izay tranga izay, mety ho mendrika ny hanoroana fa ny fonosana an'ny antoko fahatelo dia misoroka ny fiankinan-doha amin'ny zavatra tsy tafiditra ao amin'ny haikuports amin'ny alΓ lan'ny famenoana tanteraka izay rehetra ilaina amin'ny fampiharana. Saingy heveriko fa lohahevitra ho an'ny lahatsoratra ho avy amin'ity andiany ity ity. [Mizotra mankany amin'ny AppImage ve ny mpanoratra? β€” eo ho eo. mpandika teny]

Manampy kisary fampiharana

Ahoana raha te-hanampy iray amin'ireo kisary voaorina tsara ao amin'ny loharanon'ny fampiharana vao noforoniko aho? Hita fa foto-kevitra mahagaga io, ka ho fototry ny lahatsoratra manaraka.

Ahoana ny fandaminana ny fananganana fampiharana mitohy?

Alaivo sary an-tsaina ny tetikasa toy ny Inkscape (eny, fantatro fa mbola tsy hita ao Haiku izy io, fa mety ny mampiseho azy io). Manana tahiry loharano loharano izy ireo https://gitlab.com/inkscape/inkscape.
Isaky ny misy olona manao ny fanovana ao amin'ny tahiry, dia atomboka ny fananganana fantsona, aorian'izay dia andrana ho azy ny fanovana, amboarina, ary ny fampiharana ao anaty fonosana isan-karazany, anisan'izany ny AppImage ho an'ny Linux (fonosana fampiharana tokana azo alaina ho an'ny fitsapana eo an-toerana na inona na inona. izay mety na tsy apetraka amin'ny rafitra [Efa haiko! β€” eo ho eo. mpandika teny]). Toy izany koa no mitranga amin'ny fangatahan'ny sampana rehetra, mba hahafahanao misintona ny rindranasa natsangana avy amin'ny kaody natolotra tao amin'ny fangatahana fampitambatra alohan'ny hanambadiana.

Andro fahadimy niaraka tamin'i Haiku: andao hitondra programa vitsivitsy
Atambatra ny fangatahana miaraka amin'ny sata fananganana sy ny fahafahana misintona ireo binary voaangona raha mahomby ny fananganana (marika maitso)

Ny fananganana dia mandeha amin'ny container Docker. GitLab dia manolotra mpihazakazaka maimaim-poana amin'ny Linux, ary heveriko fa mety ho azo atao ny mampiditra ny mpihazakazaka anao manokana (amin'ny fomba, tsy hitako izay mety ho an'ny rafitra toa an'i Haiku, izay fantatro fa tsy manana Docker na mitovy aminy, fa koa ho an'ny FreeBSD no Docker, noho izany dia tsy miavaka amin'ny Haiku io olana io).

Ny tsara indrindra dia azo amboarina ao anaty container Docker ho an'ny Linux ny rindranasa Haiku. Amin'ity toe-javatra ity, ny fivoriambe ho an'i Haiku dia azo ampidirina amin'ny fantsona efa misy. Misy compiler ve? Sa tokony haka tahaka ny Haiku rehetra ao anaty container Docker aho amin'ny fampiasana zavatra toa an'i QEMU/KVM (mihevitra fa hiasa toy izany ao anaty Docker)? Raha ny marina, maro ny tetikasa mampiasa fitsipika mitovy. Ohatra, manao an'izany i Scribus - efa misy amin'ny Haiku izy io. Indray andro any dia ho avy ny andro hahafahako mandefa toy izany Misintona fangatahana amin'ny tetikasa hafa hanampiana ny fanohanana Haiku.

Manazava ny iray amin'ireo mpamorona:

Ho an'ny tetikasa hafa maniry ny hamorona fonosana ny tenany, ny fomba mahazatra CMake/CPack dia tohanana. Ny rafitra fananganana hafa dia azo tohanana amin'ny fiantsoana mivantana ny programa fananganana fonosana, izay tsara raha liana amin'izany ny olona. Ny traikefa dia mampiseho: hatramin'izao dia tsy dia misy liana loatra, ka ny haikuporter dia niasa tsara ho antsika, saingy, amin'ny farany, ny fomba roa dia tokony hiara-miasa. Tokony hampiditra andiana fitaovana ho an'ny rindrambaiko cross-building avy amin'ny Linux na rafitra fiasan'ny mpizara hafa (tsy natao ho an'ny mpizara ny Haiku).

Tehaka mitsangana aho. Ireo mpampiasa Linux mahazatra dia mitondra ireo entana fanampiny rehetra sy entana fanampiny (fiarovana, fanaraha-maso hentitra, sns.) izay ilaina amin'ny rafitra fiasan'ny server, fa tsy ho an'ny an'ny tena manokana. Noho izany dia manaiky tanteraka aho fa ny fahafahana manangana fampiharana Haiku amin'ny Linux no lalana tokony haleha.

famaranana

Azo atao ny mandefa fampiharana POSIX mankany Haiku, saingy mety ho lafo kokoa noho ny fanamboarana mahazatra. Tena ho tafajanona ela amin'izany aho raha tsy noho ny fanampian'ny olona avy amin'ny fantsona #haiku ao amin'ny tambajotra irc.freenode.net. Saingy na izy ireo aza dia tsy nahita avy hatrany izay tsy nety.

Ny fampiharana voasoratra amin'ny Qt dia fanavahana mora. Nanangona fampiharana demo tsotra tsy misy olana aho.

Ny fananganana fonosana ho an'ny fampiharana tsotra dia mora ihany koa, fa ho an'ireo "navoaka tamin'ny fomba nentim-paharazana" ihany, izany hoe. manana arisiva kaody loharano misy dikan-teny natao ho fanohanana amin'ny haikuports. Ho an'ny fananganana mitohy (manorina ho an'ny fanovana rehetra) miaraka amin'i GitHub, toa tsy dia tsotra loatra ny zava-drehetra. Eto Haiku dia mahatsapa kokoa ny fizarana Linux noho ny vokatra amin'ny Mac, izay rehefa manindry ny bokotra "Manangana" ao amin'ny XCode ianao dia mahazo fonosana. .app, vonona hampidirina ao anaty sary kapila .dmg, voaomana ho alaina ao amin'ny tranokalako.
Ny fananganana fampiharana tsy tapaka mifototra amin'ny rafitra fiasan'ny "server", ohatra, Linux, dia azo inoana fa ho azo atao raha misy ny fangatahana avy amin'ny mpamorona, fa amin'izao fotoana izao ny tetikasa Haiku dia manana asa hafa, sarotra kokoa.

Andramo ny tenanao! Rehefa dinihina tokoa, ny tetikasa Haiku dia manome sary ho booting avy amin'ny DVD na USB, novokarina Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Mba hametrahana, alaivo fotsiny ny sary ary soraty amin'ny kapila tselatra ampiasaina Etcher

Manana fanontaniana ve ianao? Manasa anao izahay amin'ny teny Rosiana fantsona telegram.

Overview lesoka: Ahoana ny fomba hitifitra ny tenanao amin'ny tongotra amin'ny C sy C ++. Famoriam-bokatra momba ny Haiku OS

avy amin'ny ny mpanoratra fandikana: ity no lahatsoratra fahadimy amin'ny andian-tantara momba ny Haiku.

Lisitry ny lahatsoratra: Ny voalohany Ny faharoa Ny fahatelo fahefatra

Source: www.habr.com

Add a comment