Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo

TL; DR: Osanda kuzalwa wabona i-Haiku okokuqala, ezama ukuthutha ezinye izinhlelo ezivela emhlabeni we-Linux.

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo
Uhlelo lwami lokuqala lwe-Haiku olufakwe ngesandla, olupakishwe ngefomethi yalo ye-hpkg

Muva nje Ngithole i-Haiku, isistimu yokusebenza enhle ngokumangalisayo yama-PC.
Namuhla ngizofunda indlela yokufaka izinhlelo ezintsha kulolu hlelo lokusebenza. Okugxilwe kakhulu kuyo yincazelo yesipiliyoni sokuqala sokushintshela ku-Haiku ukusuka endaweni yokubuka yonjiniyela we-Linux. Ngiyaxolisa nganoma yimaphi amaphutha ayisiphukuphuku engawenza endleleni, njengoba akukapheli ngisho isonto ngaqala ukulanda i-Haiku.

Ngifuna ukufeza izinhloso ezintathu:

  • Faka isicelo se-CLI esilula
  • Faka isicelo kusuka ku-GUI kuya ku-Qt
  • Bese uwapakishe ngefomethi ye-hpkg (njengoba ngisacabanga ukulungisa i-AppDir ne-AppImage ye-Haiku...)

Ake siqale. Ezigabeni imibhalo и ukuthuthukiswa, kanye naku wiki ngisuka e-HaikuPorts ngathola isiqondiso esifanele. Kukhona ngisho nencwadi ye-PDF eku-inthanethi I-BeOS: Ukufaka isicelo se-Unix.
Amakhasi angama-467 - futhi lokhu kuvela ku-1997! Kuyesabeka ukubheka ngaphakathi, kodwa ngithemba okungcono kakhulu. Amazwi womthuthukisi ayakhuthaza: "kuthathe isikhathi eside ngoba i-BeOS yayingahambisani ne-POSIX," kodwa i-Haiku "ingxenye enkulu" isivele injalo.

Ihambisa isicelo esilula se-CLI

Umcabango wokuqala kwaba ukufaka isicelo avrdude, kodwa, njengoba kwavela, lokhu kakade kwenziwe kudala.

Zama kuqala: akukho ongakubuka

Engingakwazi ukukuqonda ukuthi kakade Izinhlelo zokusebenza zithuthelwe e-Haiku ngaphezu kweminyaka eyi-10 - naphezu kweqiniso lokuthi i-OS ngokwayo akuyona ngisho inguqulo 1.0 okwamanje.

Umzamo wesibili: kudingeka ubhale kabusha

Ngakho ngizosebenzisa i-touch-770, i-CLI yokulawula iphrinta ye-Brother P-Touch 770 engiyisebenzisela ukuphrinta amalebula.
Ngiphrinta amalebula ahlukahlukene kuyo, futhi kungenzeka ukuthi usuyibonile esihlokweni esandulele. Ngaphambidlana, ngibhale uhlelo oluncane lwe-GUI wrapper ePython (njengoba iku-Gtk +, kuzodingeka ibhalwe kabusha, futhi lesi yisizathu esihle sokufunda).

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo
Iphrinta yelebula kaMfowethu P-Touch 770. Ingabe izosebenza ne-Haiku?

Umphathi wephakheji ye-Haiku uyazi ngamalabhulali nemiyalo, ngakho-ke uma ngithola umlayezo othi "angikwazi ukuthola i-libintl" lapho ngisebenza. configure - Ngiqala nje pkgman install devel:libintl futhi iphakheji edingekayo izotholakala. Ngokunjalo pkgman install cmd:rsync. Awu, njll.

Ngaphandle uma lokhu kungasebenzi:

/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

Mhlawumbe i-udev isekelwe kakhulu ku-Linux ngakho-ke ayikho ku-Haiku. Okusho ukuthi ngidinga ukuhlela ikhodi yomthombo engizama ukuyihlanganisa.
Eh, awukwazi ukugxuma phezu kwekhanda lakho, futhi angazi nokuthi ngiqale kuphi.

Zama okwesithathu

Kungaba kuhle ukuba nakho tmate nge-Haiku, bengizovumela abathuthukisi be-Haiku ukuthi baxhume kuseshini yami yokugcina - uma kwenzeka kukhona okungahambi kahle. Imiyalo ilula kakhulu:

./autogen.sh
./configure
make
make install

Kubukeka kukuhle, ngakho kungani ungazami ku-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

Kulesi sinyathelo ngivula i-HaikuDepot bese ngicinga curses.
Kukhona okutholiwe, okunginikeze iseluleko sombuzo ofaneleka kakhudlwana:

/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

Ngaphinde ngaya e-HaikuDepot, futhi, ngathola devel:msgpack_c_cpp_devel. Yimaphi la magama angajwayelekile?

/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

Kulesi sinyathelo, ngabona ukuthi ukuhambisa uhlelo ku-Haiku kudinga ulwazi olwengeziwe kunalokho oludingekayo ekwakhiweni kabusha okulula.
Ngikhulume nabathuthukisi be-Haiku abanobungane, kuvele ukuthi kunesiphazamisi ku-msgpack, futhi ngemuva kwemizuzu embalwa ngibona isiqeshana ku-HaikuPorts. Ngiyabona ngamehlo ami ukuthi iphakethe lilungiswe kanjani ngiya lapha (i-buildslave - imishini ebonakalayo).

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo
Ukwakha i-msgpack elungisiwe ku-buildmaster

Phakathi nezikhathi ngithumela isiqeshana phezulu nomfula ukwengeza usekelo lwe-Haiku ku-msgpack.

Ngemuva kwemizuzu emihlanu, i-msgpack ebuyekeziwe isivele iyatholakala e-Haiku:

/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.

Kuhle ngokungalindelekile. Ngathi?!

Ngibuyela enkingeni yokuqala:

/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

Manje kubukeka sengathi i-msgpack ayinaphutha. Ngiyaphawula IMAXLABEL в tty.c Ngakho:

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

Umphumela:

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.

Hhayi-ke, nakhu siphinda futhi... By the way:

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

Mnu. i-waddlesplash ikutshela ukuthi umbe kuphi:

/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.

Lapha ngithumele config.log.

Bangichazela ukuthi kukhona okunye ku-libnetwork ngaphezu kwe-libresolv ku-Haiku. Ngokusobala ikhodi idinga ukuhlelwa ngokuqhubekayo. Udinga ukucabanga...

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

Umbuzo waphakade: kwenzekani?

/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

Into efanayo, kuphela kuphrofayela. Googled kanye uthole lokhu. Uma ungeza -lssp "ngesinye isikhathi" kuyasiza, ngiyazama:

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

Hewu! Iyaqala! Kodwa…

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

Ngizozama ukulungisa iphutha ifayela lapha:

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

"I-ID yembobo embi" isivele ifana nekhadi lebhizinisi haiku. Mhlawumbe othile unombono wokuthi yini engalungile nokuthi ungayilungisa kanjani? Uma kunjalo, ngizobuyekeza isihloko. Xhumanisa ne GitHub.

Ihambisa uhlelo lwe-GUI ku-Qt.

Ngikhetha uhlelo lokusebenza olulula lwe-QML.

/> 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!

Ilula ngempela. Ngaphansi komzuzu!

Ukupakisha izinhlelo zokusebenza ku-hpkg kusetshenziswa i-haikuporter ne-haikuports.

Kufanele ngiqale ngani? Awekho amaphepha alula, ngiya esiteshini #haiku ku-irc.freenode.net ngizwe:

  • Ithimba package - indlela ephansi yokudala amaphakheji. Ngokwengxenye enkulu, i-PackageInfo imenele yena, njengoba kuchazwe esigabeni "Ukwenza kube iphakheji efanele ye-hpkg"
  • Ngidinga ukwenza okuthile kanjalo
  • Ingasebenzisa hpkg-umdali (kuvele kuqhamuke kimi, ukubika iphutha)

Akukacaci ukuthi yini okumele yenziwe. Ngicabanga ukuthi ngidinga umhlahlandlela wabaqalayo besitayela se-Hello World, okuyividiyo. Kungaba kuhle futhi ukuba nesingeniso esikahle se-HaikuPorter, njengoba kwenziwa ku-GNU sawubona.

Ngifunde okulandelayo:

haikuporter iyithuluzi lokudala amaphrojekthi wephakheji evamile ye-Haiku. Isebenzisa inqolobane ye-HaikuPorts njengesisekelo sawo wonke amaphakheji. Izindlela zokupheka ze-Haikuporter zisetshenziselwa ukudala amaphakheji.

Ngaphezu kwalokho, ngithola ukuthi:

Asikho isidingo sokugcina izindlela zokupheka kwisitoreji se-HaikuPorts. Ungenza enye inqolobane, ubeke izindlela zokupheka kuyo, bese ukhomba i-haikuporter kuyo.

Engikudingayo nje - uma ngingabheki indlela yokukhulula iphakheji esidlangalaleni. Kodwa lesi yisihloko sokunye okuthunyelwe.

Ukufaka i-haikuporter ne-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

Ukubhala iresiphi

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
}

Ukuhlanganisa iresiphi

Ngigcina ifayela ngaphansi kwegama QtQuickApp-1.0.recipe, emva kwalokho ngiyethula aikuporter -S ./QuickApp-1.0.recipe. Ukuncika kuyahlolwa kuwo wonke amaphakheji endaweni yokugcina i-haikuports, okuthatha isikhathi. Ngizohamba ngiyolanda ikhofi.

Kungani emhlabeni kufanele lokhu kuhlola kwenziwe emshinini wami wendawo, hhayi phakathi nendawo kuseva kanye kuwo wonke umuntu?

Ngokusho kukaMnu. i-waddlesplash:

Ngalokho ukuthi ungakwazi ukubhala kabusha noma yiliphi ifayela endaweni yokugcina 😉 Ungakwazi ukuthuthukisa lokhu kancane, ubala ulwazi oludingekayo lapho ludingeka, ngoba izinguquko zokugcina ezenziwe azivamile.

~/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

Kuvele ukuthi ayikho into efana nefayela leresiphi elivamile eliqukethe ikhodi yomthombo yohlelo lwakho lokusebenza. Udinga ukuyigcina endaweni yokugcina ngefomethi ye-HaikuPorts.

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

Leli qiniso lenza umhlangano ube nzima kakhulu. Angikuthandi ikakhulukazi, kodwa ngicabanga ukuthi kuyadingeka ukuze ekugcineni yonke isofthiwe yomthombo ovulekile izovela ku-HaikuPorts.

Ngithola okulandelayo:

~/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.

Kwenzenjani? Ngemva kokufunda irc ngenza:

~/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!

Kuphakame umbuzo othokozisayo. Uma ngengeza isheke kuresiphi - ingabe izohambisana nesibopho sakamuva se-git sokuhlanganiswa okuqhubekayo? (Unjiniyela uyaqinisekisa: "Ngeke kusebenze. Amarisiphu adizayinelwe ukuthi azinze uma kuqhathaniswa.")

Ukuze ujabule, engeza ku-iresiphi:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Namanje awakaneliseki:

~/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

Wenzani? Phela, lena inqolobane ye-git, ikhodi isivele ikhona ngokuqondile, akukho lutho olungakhishwa. Ngokombono wami, ithuluzi kufanele lihlakaniphe ngokwanele ukuthi lingabheki i-unpacker uma ingaphezu kwe-url ye-GitHub.

Mhlawumbe i-uri git:// izosebenza

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

Manje ikhala kanje:

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

Hmm, kungani yonke into iyinkimbinkimbi kangaka, kungani ungakwazi "ukusebenza nje"? Phela, akuyona into engavamile ukwakha okuthile kusuka ku-GitHub. Kungakhathaliseki ukuthi amathuluzi asebenza ngokushesha, ngaphandle kwesidingo sokusetha, noma njengoba ngikubiza ngokuthi "ukuphikisa".

Mhlawumbe izosebenza kanje:

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

Cha. Ngisalithola leli phutha eliyinqaba futhi ngiyalenza, njengoba kuchaziwe lapha

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

Ngiqhubekela phambili kancane, kodwa kungani ingimemeza (i-GitHub ayivikelekile!) futhi ngisazama ukukhipha okuthile.

Ngokusho Mnu. i-waddlesplash:

Yebo, yebo, isizathu kwakuyisifiso sokuhlola ubuqotho bedatha etholiwe ukuze ihlanganiswe. Enye yezinketho iwukuqinisekisa i-checksum yengobo yomlando, kodwa ungakwazi, vele, amafayela ngamanye, angeke asetshenziswe, ngoba kuthatha isikhathi eside kakhulu. Umphumela walokhu "ukungavikeleki" kwe-git nezinye i-VCS. Lokhu cishe kuzohlala kunjalo, njengoba ukudala ingobo yomlando ku-GitHub kulula kakhulu futhi kuvame ukushesha. Yebo, esikhathini esizayo, mhlawumbe umlayezo wephutha ngeke ube okhanyayo ... (asisahlanganisi izindlela ezinjalo zokupheka ku-HaikuPorts).

~/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

Ngenxa yomkhuba wakudala, ngihamba ngibuza kubantu abalungile esiteshini se-#haiku kunethiwekhi ye-irc.freenode.net. Futhi ngabe ngikuphi ngaphandle kwabo? Ngemva kokusikisela, ngabona ukuthi kufanele ngisebenzise:

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

Kulungile, kwacaca ukuthi yenzani - ilanda ingobo yomlando enekhodi yomthombo yesibuyekezo esithile. Kuwubuwula, ngokombono wami, hhayi lokho kanye engangikufuna, okungukuthi, ukulanda ukubuyekezwa kwakamuva kusuka egatsheni eliyinhloko.

Omunye wonjiniyela ukuchaze ngale ndlela:

Sineyethu i-CI, ngakho-ke yonke into ebekwe endaweni yokugcina ye-haikuports izopakishwa kubo bonke abasebenzisi, futhi asifuni ukuzifaka engcupheni yokuqoqa nokuletha "yonke into enguqulweni yakamuva ekhuphuka nomfula."

Kuyaqondwa! Kunoma yikuphi, yilokhu okwenzekile:

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
(...)

Iphinda lesi sikhangiso esingapheli. Ngokusobala leli iphutha (ingabe lukhona uhlelo lokusebenza? Angikwazanga ukulithola).

С haikuporter kanye nenqolobane i-haikuports Ayinawo umuzwa othi "ukusebenza nje", kodwa njengonjiniyela, kukhona izinto engizithanda ngokusebenza ne-Haiku. Ngokwengxenye enkulu, iyafana ne-Open Build Service, isethi yamathuluzi okwakha i-Linux: inamandla ngokwedlulele, ngendlela ehlelekile, kodwa i-overkill yohlelo lwami oluncane lwe-"hello world".

Futhi, ngokusho kukaMnu. i-waddlesplash:

Ngempela, i-HaikuPorter iqinile ngokuzenzakalelayo (futhi kukhona imodi ye-lint kanye nemodi eqinile yokuyenza ibe lukhuni nakakhulu!), Kodwa kuphela ngoba idala amaphakheji azosebenza, kunokudala amaphakheji. Kungakho ekhala ngokuncika okungakamenyezelwa, imitapo yolwazi engangeniswanga ngendlela efanele, izinguqulo ezingalungile, njll. Umgomo uwukubamba noma yiziphi izinkinga nazo zonke, kuhlanganise nezizayo, ngaphambi kokuba umsebenzisi azi ngakho (yingakho kwakungenakwenzeka ukufaka i-avrdude, ngoba ukuncika empeleni kwakucaciswe kuresiphi). Imitapo yolwazi ayiwona nje amaphakheji angawodwana noma izinguqulo ezithile ze-SO. I-HaikuPorter iqinisekisa ukuthi konke lokhu kubhekwa emaresiphi ngokwawo ukuze kugwenywe amaphutha ngesikhathi sokubulawa.

Empeleni, leli zinga lokuqina liyafaneleka lapho kwakhiwa isistimu yokusebenza, kodwa kubonakala kungenasidingo kimi ngohlelo lokusebenza lwe-"hello world". Nganquma ukuzama okunye.

Ukwakha izinhlelo zokusebenza ngefomethi ye-hpkg usebenzisa umyalo othi "dala iphakheji".

Kungenzeka, эта Ingabe imiyalelo elula izongisebenzela kangcono?

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

Kuyashesha ngokungalindelekile, kulula ngokungalindelekile, kusebenza ngendlela engalindelekile. Indlela engiyithanda ngayo impela, iyamangalisa!

Ukufakwa - ini futhi kuphi?

Uhambise ifayela le-QtQuickApp.hpkg ku ~/config/packagesusebenzisa imenenja yefayela, okwathi ngemva kwalokho i-QtQuickApp yavela ngomlingo ~/config/apps.
Futhi, ngokushesha okungalindelekile, kulula futhi kusebenza ngempumelelo. Kuyamangalisa, kungakholeki!

Kodwa... (besiyoba kuphi ngaphandle kwabo!)

Uhlelo lokusebenza lusashoda ohlwini lwemenyu yezinhlelo zokusebenza kanye ne-QuickLaunch. Ngicabanga ukuthi sengiyazi ukuthi ngingayilungisa kanjani. Kumphathi wefayela ngihambisa i-QtQuickApp.hpkg ukusuka ku-~/config/packages kuya ku-/system/packages.

Cha, kusalahlekile. Ngokusobala, mina (kahle, kanye nemiyalelo) ngiphuthelwe okuthile.

Ngemva kokubheka ithebhu ethi "Okuqukethwe" ku-HaikuDepot kwezinye izinhlelo zokusebenza, ngabona ukuthi kukhona amafayela afana /data/mimedb/application/x-vnd... okuphawuleka nakakhulu ukuthi /data/deskbar/menu/Applications/….

Awu, yini okufanele ngibeke lapho? Woza...

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

Nginesiqiniseko sokuthi leli qhinga lizosebenza, kodwa imibuzo isasele: kungani lokhu kudingekile, kwenzelwani? Ngicabanga ukuthi lokhu konakalisa umbono jikelele wokuthi uhlelo luyinkimbinkimbi kakhulu.

Njengoba kuchazwe nguMnu. i-waddlesplash:

Kwesinye isikhathi kuba nezinhlelo ezidingwa ezinye izinhlelo kodwa ezingekho kumenyu. Isibonelo, i-LegacyPackageInstaller kusithombe-skrini sakho, icubungula .pkg izingobo zomlando ngefomethi ye-BeOS. Ngingathanda ukuthi abasebenzisi bawafake, kodwa ukuba khona kwawo kumenyu kuzoholela ekudidekeni.

Ngesizathu esithile kubonakala kimi ukuthi kunesixazululo esilula, isibonelo Hidden=true emafayilini .desktop ku-Linux. Kungani ungenzi ulwazi "olufihliwe" lube insiza nesibaluli sesistimu yefayela?

Okungeyona into ecashile ikakhulukazi igama lohlelo (olunye) olubonisa imenyu, deskbar, eboshwe ngqi endleleni.

Mnu. I-waddlesplash ichaza lokhu:

I-“Deskbar” kuleli cala kufanele iqondwe njengohlobo lwetemu elivamile (ngendlela efanayo nethi “ibha yomsebenzi”, ebhekisela kukho kokubili uhlelo lwe-Windows nomqondo ovamile). Well, kusukela lokhu deskbar, hhayi “Ibha yedeskithophu”, lokhu nakho kungaqondwa ngendlela efanayo.

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo
2 izinkomba "ezicishe zifane" ezinezinhlelo zokusebenza kuzo

Kungani kunezinkomba ezi-2 ezinezinhlelo zokusebenza, futhi kungani i-QtQuickApplication yami ikuyodwa, kodwa ingekho kwenye? (Phela, lokhu akulona uhlelo olulodwa, kodwa umsebenzisi wesibili, okungaqondakala kimi mathupha).
Ngididekile ngempela futhi ngicabanga ukuthi lokhu kufanele kubumbene.

amazwana kaMnu. i-waddlesplash

Ikhathalogi yezinhlelo zokusebenza iqukethe izinhlelo zokusebenza ezingadingeki kumenyu. Kodwa isimo esinemenyu sidinga ngempela ukuthuthukiswa, ukuze yenziwe ngendlela oyifisayo.

Isicelo, noma ngeke kwenzeke 😉

Ngazibuza: ingabe kuyadingeka ngempela ukusingatha izicelo /system/apps, uma abasebenzisi bezibona lapho, akuthandeki. Mhlawumbe kungaba ngcono ukuzibeka kwenye indawo lapho umsebenzisi engeke ahlangane nazo? Njengoba nje kwenziwa ku-Mac OS X, lapho okuqukethwe kwamaphakheji .app, okungafanele kubonakale kumsebenzisi ku /Applications, ecashe ekujuleni kwe /System/Library/…“`.

Kuthiwani ngokuncika?

Ngicabanga ukuthi kufanelekile ukucacisa ukuncika ngandlela thile, akunjalo? Ingabe i-Qt ingathathwa njengengxenye eyisibopho yokufakwa kwe-Haiku ngokuzenzakalela? Cha! I-Qt ayifakiwe ngokuzenzakalelayo. Ingabe umakhi wephakheji angakwazi ukubona ngokuzenzakalelayo ukuncika ngokubheka amafayela e-ELF? Ngatshelwa ukuthi i-HaikuPorter empeleni iyakwenza lokhu, kodwa package Cha. Lokho kungenxa yokuthi "kumane kuwumakhi wephakheji" ovele azenzele amafayela ngokwawo hpkg.

Ingabe i-Haiku kufanele yenziwe ibe yinkimbinkimbi ngokwengeza inqubomgomo yokuthi iphakheji akufanele ibe nokuncika kumaphakheji angaphandle kwe-Haiku? haikuports? (Ngingathanda, ngoba inqubomgomo enjalo ingenza izinto zibe lula kakhulu - isistimu izokwazi ukuxazulula ngokuzenzekelayo ukuncika kwawo wonke amaphakheji alandwe kusuka noma yikuphi, ngaphandle kokuxosha ngemithombo yephakheji eyengeziwe.)

Mnu. i-waddlesplash iyachaza:

Ngeke sithande ukukhawulela inkululeko yabathuthukisi kakhulu, ngoba kusobala ukuthi uma i-CompanyX ifuna ukusekela isethi yayo yesofthiwe ngokuncika (ngakho-ke indawo yokugcina), izokwenza ngokukhululekile ngokuphelele.

Uma kunjalo, kungase kudingeke ukutusa ukuthi amaphakheji ezinkampani zangaphandle agweme ukuncika kunoma yini engafakiwe kuma-haikuports ngokupakisha ngokuphelele yonke into edingekayo ngohlelo lokusebenza. Kodwa ngicabanga ukuthi lesi isihloko sesihloko esizayo kulolu chungechunge. [Ingabe umbhali ubheke ku-AppImage? - cishe. umhumushi]

Yengeza isithonjana sohlelo lokusebenza

Kuthiwani uma ngifuna ukwengeza esinye sezithonjana ezakhelwe ngobunono kuzisetshenziswa zohlelo lwami olusanda kwakhiwa? Kuvela ukuthi lesi yisihloko esimangalisayo, ngakho-ke kuzoba yisisekelo sesihloko esilandelayo.

Ungahlela kanjani ukwakhiwa kwezicelo okuqhubekayo?

Cabanga ngephrojekthi efana ne-Inkscape (yebo, ngiyazi ukuthi ayikatholakali e-Haiku, kodwa kulula ukuyiveza kuyo). Banenqolobane yekhodi yomthombo https://gitlab.com/inkscape/inkscape.
Ngaso sonke isikhathi lapho othile enza izinguquko zakhe endaweni yokugcina, amapayipi okwakha ayaqaliswa, ngemva kwalokho izinguquko zivivinywa ngokuzenzakalelayo, zakhiwe, futhi uhlelo lokusebenza lupakishwe kumaphakheji ahlukahlukene, okuhlanganisa i-AppImage ye-Linux (iphakheji yohlelo lokusebenza ezimele engadawunilodelwa ukuze ihlolwe endaweni kungakhathaliseki ukuthi i-AppImage ye-Linux). okungase kufakwe noma kungafakwa ohlelweni [Bengazi! - cishe. umhumushi]). Kwenzeka okufanayo ngesicelo ngasinye sokuhlanganisa igatsha, ukuze ukwazi ukulanda isicelo esakhiwe kusuka kukhodi ehlongozwayo esicelweni sokuhlanganisa ngaphambi kokuhlanganisa.

Usuku lwami lwesihlanu no-Haiku: ake sithumele ezinye izinhlelo
Hlanganisa izicelo nezimo zokwakha kanye nekhono lokulanda ombambambili abahlanganisiwe uma ukwakhiwa kuphumelele (kumakwe ngokuluhlaza)

Isakhiwo sisebenza ezitsheni ze-Docker. I-GitLab inikeza abagijimi bamahhala ku-Linux, futhi ngicabanga ukuthi kungenzeka ukuthi ufake abagijimi bakho (ngendlela, angiboni ukuthi lokhu kuzosebenza kanjani kumasistimu afana ne-Haiku, engaziyo ukuthi ayinayo i-Docker noma efanayo, kodwa futhi ku-FreeBSD ayikho i-Docker, ngakho-ke le nkinga ayiyona i-Haiku kuphela).

Ngokufanelekile, izinhlelo zokusebenza ze-Haiku zingakhiwa ngaphakathi kwesitsha se-Docker se-Linux. Kulesi simo, umhlangano we-Haiku ungangeniswa kumapayipi akhona. Ingabe akhona ama-cross compilers? Noma kufanele ngilingise yonke i-Haiku ngaphakathi kwesitsha se-Docker ngisebenzisa into efana ne-QEMU/KVM (ngicabanga ukuthi izosebenza ngaleyo ndlela ngaphakathi kwe-Docker)? Ngendlela, amaphrojekthi amaningi asebenzisa izimiso ezifanayo. Isibonelo, i-Scribus yenza lokhu - isivele itholakalela i-Haiku. Ngelinye ilanga kuyofika usuku engizothumela ngalo kanjalo Donsela izicelo kwamanye amaphrojekthi ukuze ungeze usekelo lwe-Haiku.

Omunye wabathuthukisi uyachaza:

Kwamanye amaphrojekthi afisa ukuzenzela amaphakheji ngokwawo, indlela evamile ye-CMake/CPack iyasekelwa. Amanye amasistimu wokwakha angasekelwa ngokushayela uhlelo lokwakha lwephakheji ngokuqondile, okuhle uma abantu benentshisekelo kulo. Okuhlangenwe nakho kubonisa: kuze kube manje akukaze kube nesithakazelo esikhulu, ngakho-ke i-haikuporter yasebenza njengesilungele, kodwa, ekugcineni, zombili izindlela kufanele zisebenze ndawonye. Kufanele sethule isethi yamathuluzi esofthiwe yokwakha ehlukahlukene esuka ku-Linux nanoma iyiphi enye isistimu yokusebenza yeseva (i-Haiku ayakhelwe ukusebenza kumaseva).

Ngiphakamisa ihlombe ngimile. Abasebenzisi be-Linux abavamile baphatha wonke lo mthwalo owengeziwe kanye nemithwalo eyengeziwe (ukuphepha, ukulawula okuqinile, njll.) okudingekayo ohlelweni lokusebenza lweseva, kodwa hhayi okomuntu siqu. Ngakho-ke ngivuma ngokuphelele ukuthi ukukwazi ukwakha izinhlelo zokusebenza ze-Haiku ku-Linux kuyindlela okufanele uhambe ngayo.

isiphetho

Ukuthumela izicelo ze-POSIX ku-Haiku kungenzeka, kodwa kungase kubize kakhulu kunokwakha kabusha okuvamile. Impela ngabe ngibambekile kulokhu isikhathi eside ukube bekungengenxa yosizo lwabantu abavela esiteshini i-#haiku kunethiwekhi ye-irc.freenode.net. Kodwa ngisho nabo abazange basheshe babone ukuthi yini engalungile.

Izinhlelo zokusebenza ezibhalwe nge-Qt zihlukile. Ngihlanganisa uhlelo lokusebenza lwedemo olulula ngaphandle kwezinkinga.

Ukwakha iphakheji yezinhlelo zokusebenza ezilula nakho kulula kakhulu, kodwa kuphela "okukhishwe ngokwesiko", i.e. inezingobo zomlando zekhodi yomthombo ehloselwe ukusekelwa kuma-haikuports. Ngokwakhiwa okuqhubekayo (ukwakha kukho konke ukuzibophezela kwezinguquko) nge-GitHub, yonke into ibonakala ilula kakhulu. Lapha i-Haiku izizwa ifana nokusatshalaliswa kwe-Linux kunomphumela ku-Mac, lapho uma uchofoza inkinobho ethi “Yakha” ku-XCode uthola iphakheji. .app, ilungele ukufakwa esithombeni sediski .dmg, elungiselelwe ukudawunilodeka kuwebhusayithi yami.
Ukwakhiwa okuqhubekayo kwezinhlelo zokusebenza ngokusekelwe ohlelweni lokusebenza "lweseva", isibonelo, i-Linux, cishe kuzokwenzeka uma kunesidingo esivela kubathuthukisi, kodwa okwamanje iphrojekthi ye-Haiku ineminye, imisebenzi ecindezela kakhulu.

Zizame wena! Ngemuva kwakho konke, iphrojekthi ye-Haiku ihlinzeka ngezithombe zokuqalisa kusuka ku-DVD noma i-USB, eyenziwe Ежедневно. Ukufaka, vele ulande isithombe bese usibhala ku-flash drive usebenzisa I-Etcher

Ingabe unemibuzo? Sikumema kwabakhuluma isiRashiya isiteshi sethelegramu.

Ukubuka konke kwephutha: Ungazidubula kanjani onyaweni ku-C no-C++. Iqoqo leresiphi ye-Haiku OS

Kusuka ku umbhali translation: lesi isihloko sesihlanu ochungechungeni mayelana Haiku.

Uhlu lwama-athikili: Okokuqala Owesibili Okwesithathu Okwesine

Source: www.habr.com

Engeza amazwana