Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile

TL; DR: Umntu omtsha wabona uHaiku okokuqala, ezama ukufaka ezinye iinkqubo ezivela kwihlabathi leLinux.

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile
Inkqubo yam yokuqala ye-Haiku efakwe, ifakwe kwifomathi yayo ye-hpkg

Kungekudala Ndafumanisa iHaiku, inkqubo yokusebenza kakuhle ngokumangalisayo yeePC.
Namhlanje ndiza kufunda indlela yokufaka iinkqubo ezintsha kule nkqubo yokusebenza. Ingqwalasela ephambili yinkcazo yamava okuqala okutshintshela kwiHaiku ukusuka kwindawo yokujonga umphuhlisi weLinux. Ndicela uxolo ngazo naziphi na iimpazamo zobudenge endizenzileyo endleleni, kuba akukapheli neveki ndiqale ndakhuphela iHaiku.

Ndifuna ukufezekisa iinjongo ezintathu:

  • Faka isicelo esilula se-CLI
  • Faka isicelo kwi-GUI ukuya kwiQt
  • Emva koko uzipakishe ngefomathi ye-hpkg (ekubeni ndisacinga ngokulungelelanisa i-AppDir kunye ne-AppImage ye-Haiku...)

Masiqalise. Ngamacandelo amaxwebhu и uphuhlisongokunjalo wiki ukusuka e-HaikuPorts ndifumene indlela efanelekileyo. Kukho nencwadi yePDF ekwi-intanethi I-BeOS: Ukufaka isicelo se-Unix.
Amaphepha angama-467 - kwaye oku kuvela ku-1997! Kuyoyikeka ukujonga ngaphakathi, kodwa ndinethemba lokungcono. Amazwi omphuhlisi ayakhuthaza: "kuthathe ixesha elide ngenxa yokuba i-BeOS yayingekho i-POSIX-ithobela," kodwa i-Haiku "inxalenye enkulu" sele injalo.

Ukuhambisa isicelo esilula se-CLI

Ingcinga yokuqala yayikukufaka isicelo ngqi, kodwa, njengoko kwavela, oku sele sele yenziwe kudala dala kakhulu.

Zama kuqala: akhonto yokubukela

Into endingayiqondiyo kukuba sele Usetyenziso lufakwe kwiHaiku ngaphezulu kweminyaka eli-10 - ngaphandle kwento yokuba i-OS ngokwayo ayikho inguqulo ye-1.0 okwangoku.

Ilinge lesibini: kufuneka ubhale kwakhona

Ngoko ke ndiya kusebenzisa i-touch-770, CLI yokulawula umshicileli kaMzalwana uP-Touch 770 endiwusebenzisa ukuprinta iilebhile.
Ndishicilela iilebhile ezahlukeneyo kuyo, kwaye usenokuba sele uyibonile kwinqaku elandulelayo. Ngaphambili, ndibhale inkqubo encinci ye-GUI yokusonga kwiPython (kuba ikwiGtk +, kuya kufuneka ibhalwe kwakhona, kwaye esi sisizathu esihle sokufunda).

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile
Umshicileli weleyibhile kaMzalwana uP-Touch 770 Ingaba izakusebenza neHaiku?

Umphathi wepakethe ye-Haiku uyazi malunga namathala eencwadi kunye nemiyalelo, ke ukuba ndifumana "andifumani libintl" umyalezo xa usebenza. configure - Ndiqalisa nje pkgman install devel:libintl kwaye iphakheji efunekayo iya kufunyanwa. Ngokunjalo pkgman install cmd:rsync. Kulungile, njl.

Ngaphandle kwaxa oku 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

Mhlawumbi i-udev isekwe kwiLinux kwaye ke ayikho ngenxa yeHaiku. Into ethetha ukuba kufuneka ndihlele ikhowudi yemvelaphi endizama ukuyiqokelela.
Ewe, awukwazi ukutsiba ngaphaya kwentloko yakho, kwaye andazi nokuba mandiqale ngaphi.

itrayi yesithathu

Kuya kuba kuhle ukuba nayo tmate yeHaiku, ke bendiza kuvumela abaphuhlisi be-Haiku ukuba baqhagamshele kwiseshoni yam yokugcina - ukuba kukho into engahambi kakuhle. Imiyalelo ilula kakhulu:

./autogen.sh
./configure
make
make install

Ijongeka ilungile, kutheni ungazami kuHaiku?

/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

Kweli nyathelo ndivula i-HaikuDepot kwaye ndikhangele curses.
Kukho into efunyenweyo, eyandinika ingcebiso kumbuzo onobuchule ngakumbi:

/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

Ndaphinda ndaya eHaikuDepot, kwaye, ewe, ndayifumana devel:msgpack_c_cpp_devel. Ngawaphi la magama angaqhelekanga?

/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

Kweli nyathelo, ndiye ndaqonda ukuba ukufaka inkqubo kwiHaiku kufuna ulwazi oluninzi kunokuba luyimfuneko kulwakhiwo olulula.
Ndathetha nabaphuhlisi be-Haiku abanobuhlobo, kwavela ukuba kukho i-bug kwi-msgpack, kwaye emva kwemizuzu embalwa ndibona isiqwenga kwi-HaikuPorts. Ndiyabona ngamehlo am indlela iphakheji elungiswe ngayo ukuya apha (buildslave - oomatshini virtual).

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile
Ukwakha i-msgpack elungisiweyo kwi-buildmaster

Phakathi kwamaxesha ndithumela ipatch ukuya phezulu ukongeza inkxaso ye-Haiku kwi-msgpack.

Kwimizuzu emihlanu kamva, i-msgpack ehlaziyiweyo sele ikhona eHaiku:

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

Ulungile ngokungalindelekanga. Ndithe?!

Ndibuyela kwingxaki 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

Ngoku kubonakala ngathi i-msgpack ayinasiphoso. Ndiyahlomla IMAXLABEL в tty.c ngolu hlobo:

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

Isiphumo:

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.

Ewe, sihamba kwakhona ... Ngendlela:

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

Mr. waddlesplash ikuxelela ukuba ugrumbe phi:

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

Apha ndithumele config.log.

Bandicacisele ukuba kukho enye into kwi-libnetwork ukongeza kwi-libresolv kwi-Haiku. Kuyabonakala ukuba ikhowudi ifuna ukuhlelwa ngakumbi. Kufuneka ucinge...

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

Umbuzo ongunaphakade: kuqhubeka ntoni?

/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 kwiprofayili. Googled kunye ndiyifumene le. Ukuba uyongeza -lssp "ngamanye amaxesha" iyanceda, ndiyazama:

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

Wowu! Iyaqala! Kodwa…

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

Ndiza kuzama ukulungisa ingxaki ifayile apha:

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

"I-ID ye-port embi" sele ifana nekhadi leshishini haiku. Mhlawumbi umntu unombono wento engalunganga kunye nendlela yokuyilungisa? Ukuba kunjalo, ndiza kulihlaziya inqaku. Ikhonkco kwi GitHub.

Ukuhambisa isicelo se GUI kwi Qt.

Ndikhetha isicelo esilula se-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 ngokwenene. Ngaphantsi komzuzu!

Ukufakwa kwezicelo kwi-hpkg kusetyenziswa i-haikuporter kunye ne-haikuports.

Ndiqale ngantoni? Akukho maxwebhu alula, ndiya kwitshaneli ye-#haiku kwi-irc.freenode.net ndive:

  • Iqela package - indlela ephantsi yokudala iipakethe. Ubukhulu becala, i-PackageInfo iyanele kuye, njengoko ichazwe kwicandelo "Ukwenza ibe yiphakheji efanelekileyo .hpkg"
  • Kufuneka ndenze into njalo
  • Ingasebenzisa hpkg-umdali (itsho ibetha kum, ingxelo yempazamo)

Akukacaci ukuba mandenze ntoni. Ndicinga ukuba ndifuna isikhokelo sabaqalayo besimbo seHlabathi, eyona vidiyo. Kuya kuba kuhle ukuba ube nentshayelelo efanelekileyo kwi-HaikuPorter, njengoko kusenziwa kwi-GNU molo.

Ndifunde oku kulandelayo:

haikuporter sisixhobo sokwenza iiprojekthi zephakheji eziqhelekileyo zeHaiku. Isebenzisa indawo yokugcina yaseHaikuPorts njengesiseko sazo zonke iipakethe. Iiresiphi zeHaikuporter zisetyenziselwa ukwenza iipakethe.

Ukongeza, ndifumanisa ukuba:

Akukho mfuneko yokugcina iiresiphi kwindawo yokugcina i-HaikuPorts. Unokwenza enye indawo yokugcina, ubeke iiresiphi kuyo, uze ukhombe i-haikuporter kuyo.

Kanye into endiyifunayo - ukuba ayikhangeli indlela yokukhupha ipakethe esidlangalaleni. Kodwa esi sisihloko sesinye isithuba.

Ukufaka i-haikuporter kunye 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
}

Ukudibanisa iresiphi

Ndigcina ifayile phantsi kwegama QtQuickApp-1.0.recipe, emva koko ndiqalise aikuporter -S ./QuickApp-1.0.recipe. Ukuxhomekeka kukhangelwe kuzo zonke iipakethe kwindawo yokugcina i-haikuports, nto leyo ethatha ixesha. Ndizakuthatha ikofu.

Kutheni le nto emhlabeni kufuneka le tshekhi yenziwe kumatshini wam wasekhaya, kwaye hayi embindini weseva kube kanye kuye wonke umntu?

NgokukaMnu. waddlesplash:

Ngaloo ndlela ungaphinda ubhale nayiphi na ifayile kwindawo yokugcina 😉 Unga lungisa oku kancinci, ubala ulwazi oluyimfuneko xa lufuneka, kuba utshintsho lokugqibela olwenziweyo lunqabile.

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

Kuyavela ukuba akukho nto ifana nefayile yeresiphi eqhelekileyo equlethe ikhowudi yomthombo wesicelo sakho. Kufuneka uyigcine kwindawo yokugcina kwifomathi yeHaikuPorts.

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

Le nyaniso yenza ukuba indibano ibe nzima ngakumbi. Andiyithandi kakhulu, kodwa ndicinga ukuba iyimfuneko ukuze ekugqibeleni yonke isoftware evulekileyo ivele kwiHaikuPorts.

Ndifumana oku kulandelayo:

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

Yintoni engalunganga? Emva kokufunda irc ndenza:

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

Kuye kwaphakama umbuzo obangel’ umdla. Ukuba ndongeza i-checksum kwiresiphi- ingaba iya kuhambelana ne-git yamva nje yokuzinikela ngokuqhubekayo? (Umphuhlisi uyaqinisekisa: "Ayiyi kusebenza. Iiresiphi ziyilelwe ukuba zizinzile.")

Ukuzonwabisa, yongeza kwiresiphi:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Akwanelisekanga:

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

Inga wenzantoni? Emva kwayo yonke loo nto, le yi-git repository, ikhowudi sele ikhona ngokuthe ngqo, akukho nto yokukhupha. Ngokombono wam, isixhobo kufuneka silumke ngokwaneleyo ukuba singajongi i-unpacker ukuba ingaphezulu kwe-url ye-GitHub.

Mhlawumbi i-uri git:// iya kusebenza

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

Ngoku ikhalaza ngolu hlobo:

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

Hmm, kutheni yonke into inzima, kutheni "ungasebenzi nje"? Emva kwayo yonke loo nto, ayisiyonto ingaqhelekanga ukwakha into evela kwiGitHub. Nokuba zizixhobo ezisebenza kwangoko, ngaphandle kwesidingo sokuseta, okanye njengoko ndiyibiza ngokuba "yingxabano".

Mhlawumbi iya kusebenza ngolu hlobo:

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

Hayi. Ndisafumana le mpazamo ingaqhelekanga kwaye ndiyayenza, njengoko kuchaziwe apha

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

Ndiqhubela phambili kancinci, kodwa kutheni indikhwaza (i-GitHub ayikhuselekanga!) kwaye isazama ukukhupha into.

Ngokutsho Mr. waddlesplash:

Ewe, ewe, isizathu yayingumnqweno wokukhangela ingqibelelo yedatha efunyenweyo kwindibano. Enye yeenketho kukuqinisekisa i-checksum yogcino, kodwa unako, ngokuqinisekileyo, i-hash yeefayile ezizimeleyo, ezingayi kuphunyezwa, ngenxa yokuba. kuthatha ixesha elide. Isiphumo soku "kukungakhuseleki" kwe-git kunye nezinye i-VCS. Oku kuya kuhlala kunjalo, kuba ukwenza indawo yokugcina kwi-GitHub kulula kakhulu kwaye ihlala ikhawuleza. Ewe, kwixesha elizayo, mhlawumbi umyalezo wephutha awuyi kuba mnandi ... (asisadibanisi iindlela zokupheka ezinjalo kwi-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

Ngaphandle komkhwa wakudala, ndiya kubuza abantu abalungileyo kwitshaneli ye-#haiku kwinethiwekhi ye-irc.freenode.net. Bendiza kuba phi ngaphandle kwabo? Emva kwengcebiso, ndaqonda ukuba kufuneka ndisebenzise:

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

Kulungile, kuye kwacaca into eyenzayo-ikhuphela indawo yokugcina kunye nekhowudi yomthombo wohlaziyo oluthile. Kubudenge, ngokwembono yam, kwaye ayisiyiyo kanye le nto bendiyifuna, oko kukuthi, ukukhuphela uhlaziyo lwamva nje kwisebe eliphambili.

Omnye wabaphuhlisi wayichaza ngolu hlobo:

Sine-CI yethu, ngoko ke yonke into ebekwe kwindawo yokugcina i-haikuports iya kupakishwa kubo bonke abasebenzisi, kwaye asifuni ukubeka emngciphekweni ukuqokelela nokuhambisa "yonke into ekwinguqulelo yamva nje phezulu."

Kuyaqondwa! Kuyo nayiphi na imeko, oku kwenzeka:

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 le ad infinitum. Kuyabonakala ukuba le yimpazamo (ingaba sikhona isicelo? Andisifumananga).

С haikuporter kunye novimba i-haikuports Ayinayo "imisebenzi nje" ivakalelwa kuyo, kodwa njengomphuhlisi, kukho izinto endizithandayo ngokusebenza noHaiku. Ubukhulu becala, iyafana ne-Open Build Service, iseti yezixhobo zokwakha i-Linux yakha: inamandla kakhulu, kunye nendlela ecwangcisiweyo, kodwa i-overkill kwisicelo sam esincinci "somhlaba".

Kwakhona, ngokutsho kukaMnu. waddlesplash:

Ewe, i-HaikuPorter ingqongqo ngokungagqibekanga (kwaye kukho imowudi ye-lint kunye nemowudi engqongqo yokuyenza ibe ngqongqo ngakumbi!), Kodwa kuphela ngenxa yokuba idala iipakethe eziya kusebenza, kunokwenza iipakethe nje. Yiyo loo nto ekhalaza malunga nokuxhomekeka okungachazwanga, amathala eencwadi angangeniswanga ngokufanelekileyo, iinguqulelo ezingachanekanga, njl. Injongo kukubamba nayiphi na ingxaki kunye nazo zonke iingxaki, kuquka ezizayo, ngaphambi kokuba umsebenzisi azi ngayo (kungenxa yoko kwakungenakwenzeka ukufaka i-avrdude, kuba iresiphi ngokwenene ichaze ukuxhomekeka). Amathala eencwadi ayizopakethe nje zodwa okanye iinguqulelo ezithile zeSO. I-HaikuPorter iqinisekisa ukuba konke oku kubonwa kwiindlela zokupheka ngokwabo ukuphepha iimpazamo ngexesha lokubulawa.

Ngokomgaqo, lo mgangatho wobungqongqo ufanelekile xa udala inkqubo yokusebenza, kodwa kubonakala kungeyomfuneko kum kwisicelo esithi "hello world". Ndagqiba kwelokuba ndizame enye into.

Ukwakha usetyenziso kwifomathi ye-hpkg usebenzisa “ukwenza ipakethe” umyalelo

Ingayiyo, oku Ngaba imiyalelo elula iza kundisebenzela ngcono?

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

Ukukhawuleza ngokungalindelekanga, kulula ngokungalindelekanga, ukusebenza ngokungalindelekanga. Indlela endiyithanda ngayo, iyamangalisa!

Ukufakela - yintoni kwaye phi?

Uhambise ifayile ye QtQuickApp.hpkg ukuya ~/config/packagesusebenzisa umphathi wefayile, emva koko iQtQuickApp yavela ngomlingo ngaphakathi ~/config/apps.
Kwakhona, ngokukhawuleza okungalindelekanga, kulula kwaye kusebenza. Iyamangalisa, iyamangalisa!

Kodwa... (besiya kuba phi ngaphandle kwabo!)

Usetyenziso lusalahlekile kuluhlu lwemenyu ye-app kunye ne-QuickLaunch. Ndicinga ukuba sele ndiyayazi indlela yokuyilungisa. Kumphathi wefayile ndihambisa QtQuickApp.hpkg ukusuka ~/config/packages ukuya /system/packages.

Hayi, usalahlekile. Ngokucacileyo, mna (kakuhle, kunye nemiyalelo) ndiphuthelwe into ethile.

Emva kokuba ndijonge "Imixholo" ithebhu kwiHaikuDepot kwezinye izicelo, ndabona ukuba kukho iifayile ezifana /data/mimedb/application/x-vnd... eyona nto iphawuleka ngakumbi /data/deskbar/menu/Applications/….

Kulungile, ndibeke ntoni apho? Ima kancinci...

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

Ndiqinisekile ukuba eli qhinga liya kusebenza, kodwa imibuzo ihleli: kutheni le nto iyimfuneko, yeyantoni? Ndicinga ukuba oku kuyonakalisa imbono epheleleyo yokuba inkqubo iphucuke kakhulu.

Njengoko kucaciswa nguMnu. waddlesplash:

Ngamanye amaxesha kukho izicelo ezifunwa zezinye iinkqubo kodwa azikho kwimenyu. Umzekelo, iLegacyPackageInstaller kumfanekiso wakho wekhusi, kusetyenzwa .pkg oovimba kwifomathi yeBeOS. Ndingathanda ukuba abasebenzisi bazifake, kodwa ubukho bazo kwimenyu buya kukhokelela ekubhidekeni.

Ngesizathu esithile kubonakala kum ukuba kukho isisombululo esilula, umzekelo Hidden=true kwiifayile .desktop kwi Linux. Kutheni ungenzi ulwazi "olufihliweyo" lube ngumthombo kunye nophawu lwesixokelelwano sefayile?

Yintoni engacacanga ngakumbi ligama lesicelo (esinye) esibonisa imenyu, deskbar, ebotshelelwe ngqongqo endleleni.

Mr. iwaddlesplash icacisa oku:

"I-Deskbar" kule meko kufuneka iqondwe njengoluhlobo lwegama eliqhelekileyo (ngendlela efanayo ne "taskbar", ebhekisa kuzo zombini usetyenziso lweWindows kunye nengqikelelo jikelele). Ke, ukusukela oko deskbar, hayi "Deskbar", oku kunokuqondwa ngendlela efanayo.

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile
2 abalawuli “abaphantse bafane” abanezicelo kuzo

Kutheni kukho abalawuli aba-2 abanezicelo, kwaye kutheni iSicelo sam seQtQuick sikwenye, kodwa hayi kwenye? (Emva kwayo yonke loo nto, oku akusiyo inkqubo enye, kodwa ngumsebenzisi wesibini, oya kuqondakala kum ngokobuqu).
Ndibhidekile ngokwenene kwaye ndicinga ukuba oku kufanele kudityaniswe.

Izimvo zikaMnu. waddlesplash

Ikhathalogu yeApps iqulathe izicelo ezingafunekiyo kwimenyu. Kodwa imeko enemenyu ngokwenene idinga ukuphuculwa, ukuyenza ibe nokwenzeka ngakumbi.

Isicelo, okanye ayizukwenzeka 😉

Ndazibuza: ngaba iyimfuneko ngokwenene ukubamba izicelo /system/apps, ukuba abasebenzisi bayazibona apho, ayithandeki. Mhlawumbi kuya kuba ngcono ukuzibeka kwenye indawo apho umsebenzisi angayi kudibana nazo? Kanye njengokuba yenziwa kwi-Mac OS X, apho imixholo yeepakethe .app, engafanele ibonakale kumsebenzisi kwi /Applications, izimele kubunzulu be/System/Library/…“`.

Kuthekani ngokuxhomekeka?

Ndicinga ukuba kufanelekile ukucacisa ukuxhomekeka ngandlela thile, akunjalo? Ngaba i-Qt ingathathwa njengenxalenye enyanzelekileyo yofakelo lwe-Haiku ngokungagqibekanga? Hayi! Qt ayifakelwanga ngokwendalo. Ngaba umakhi wephakheji unokuzibona ngokuzenzekelayo ukuxhomekeka ngokujonga iifayile ze-ELF? Ndaxelelwa ukuba i-HaikuPorter ngokwenene yenza oku, kodwa package Hayi. Kungenxa yokuba "ngumakhi wepakethi" owenza iifayile zodwa hpkg.

Ngaba i-Haiku kufuneka yenziwe ibe yinkimbinkimbi ngokongeza umgaqo-nkqubo ukuba iphakheji akufanele ibe nokuxhomekeka kwiiphakheji ngaphandle kwe-Haiku? haikuports? (Ndingathanda, kuba umgaqo-nkqubo onjalo unokwenza izinto zibe lula kakhulu-inkqubo iya kuba nakho ukusombulula ngokuzenzekelayo ukuxhomekeka kwayo yonke ipakethe ekhutshelweyo naphi na, ngaphandle kokuphazamisana nemithombo yempahla eyongezelelweyo.)

Mr. waddlesplash uyacacisa:

Asinakuthanda ukunciphisa inkululeko yabaphuhlisi kakhulu, kuba kuyacaca ukuba ukuba i-CompanyX ifuna ukuxhasa isethi yayo yesofthiwe ngokuxhomekeka (kwaye ke indawo yokugcina), iya kuyenza ngokukhululekileyo ngokupheleleyo.

Kwimeko enjalo, kunokuba luncedo ukucebisa ukuba iipasela zomntu wesithathu zikuthintele ukuxhomekeka kuyo nantoni na engabandakanywanga kwi-haikuports ngokuthi zipakishwe ngokupheleleyo yonke into efunekayo kwisicelo. Kodwa ndicinga ukuba lo ngumxholo wenqaku elizayo kolu ngcelele. [Ngaba umbhali usingise kwi-AppImage? - malunga. umguquleli]

Ukongeza i icon yesicelo

Kuthekani ukuba ndifuna ukongeza enye yee-icon ezicocekileyo ezakhelwe-ngaphakathi kwimithombo yesicelo sam esitsha esenziwe? Kuvela ukuba lo ngumxholo omangalisayo, ngoko kuya kuba sisiseko senqaku elilandelayo.

Indlela yokulungelelanisa ukwakhiwa kwezicelo eziqhubekayo?

Khawucinge ngeprojekthi efana ne-Inkscape (ewe, ndiyazi ukuba ayikafumaneki eHaiku, kodwa ikulungele ukubonisa kuyo). Banekhowudi yokugcina ikhowudi yomthombo https://gitlab.com/inkscape/inkscape.
Ngalo lonke ixesha umntu esenza utshintsho lwakhe kwindawo yokugcina, imibhobho yokwakha iyaqaliswa, emva koko utshintsho luvavanywa ngokuzenzekelayo, lwakhiwe, kunye nesicelo esifakwe kwiipakethe ezahlukeneyo, kuquka i-AppImage ye-Linux (iphakheji yesicelo esizimeleyo esinokukhutshelwa uvavanyo lwasekhaya kungakhathaliseki yintoni enokufakwa okanye engafakelwanga kwisixokelelwano [Ndiyazile! - malunga. umguquleli]). Kwenzeka into efanayo ngesicelo ngasinye sokudibanisa isebe, ngoko unokukhuphela isicelo esakhiwe kwikhowudi ecetywayo kwisicelo sokudibanisa ngaphambi kokudibanisa.

Usuku lwam lwesihlanu noHaiku: masibonise iinkqubo ezithile
Hlanganisa izicelo kunye nemigangatho yokwakha kunye nokukwazi ukukhuphela iibhinari ezihlanganisiweyo ukuba ulwakhiwo luphumelele (ephawulwe eluhlaza)

Ulwakhiwo luqhuba kwizikhongozeli zeDocker. I-GitLab ibonelela ngeembaleki zasimahla kwiLinux, kwaye ndicinga ukuba kunokwenzeka ukuba ubandakanye ezakho iimbaleki (ngendlela, andiboni ukuba oku kungasebenza njani kwiinkqubo ezinjengeHaiku, endiyaziyo ukuba ayinayo iDocker okanye ilingana nayo, kodwa kwakhona kwi-FreeBSD akukho Docker, ngoko ke le ngxaki ayikho kwi-Haiku kuphela).

Ngokufanelekileyo, usetyenziso lweHaiku lunokwakhiwa ngaphakathi kwesikhongozeli seDocker seLinux. Kule meko, indibano ye-Haiku inokwaziswa kwimibhobho ekhoyo. Ngaba kukho abahlanganisi abanqamlezayo? Okanye ngaba ndilinganise yonke iHaiku ngaphakathi kwesikhongozeli seDocker ndisebenzisa into efana neQEMU/KVM (ndicinga ukuba iya kusebenza ngolo hlobo ngaphakathi kweDocker)? Ngendlela, iiprojekthi ezininzi zisebenzisa imigaqo efanayo. Umzekelo, uScribus wenza oku - sele efumaneka kwi-Haiku. Ngenye imini iya kufika imini endinokuthi ndithumele ngayo enjalo Tsala izicelo kwezinye iiprojekthi ukongeza inkxaso Haiku.

Omnye wabaphuhlisi uyachaza:

Kwezinye iiprojekthi ezinqwenela ukwenza iipakethe ngokwazo, indlela yeCMake/CPack eqhelekileyo iyaxhaswa. Ezinye iinkqubo zokwakha zinokuxhaswa ngokubiza inkqubo yokwakha yephakheji ngokuthe ngqo, oko kulungile ukuba abantu banomdla kuyo. Amava abonisa: ukuza kuthi ga ngoku akukabikho mdla ungako, ke ngoko i-haikuporter isebenze njengeyona ndlela ifanelekileyo kuthi, kodwa, ekugqibeleni, zombini ezi ndlela zifanele ukusebenzisana. Kufuneka sazise uluhlu lwezixhobo zesoftware yokwakha ezinqamlezayo ukusuka kwiLinux okanye nayiphi na enye inkqubo yokusebenza yeseva (iHaiku ayenzelwanga ukusebenza kwiiseva).

Nditsho ngelizwi eliphezulu. Abasebenzisi beLinux abaqhelekileyo bathwala yonke le mithwalo eyongezelelweyo kunye nemithwalo eyongezelelweyo (ukhuseleko, ulawulo oluqinileyo, njl.) Okuyimfuneko kwinkqubo yokusebenza yeseva, kodwa kungekhona kumntu. Ke ndivuma ngokupheleleyo ukuba ukwazi ukwakha usetyenziso lweHaiku kwiLinux yindlela yokuhamba.

isiphelo

Ukufaka izicelo zePOSIX kwiHaiku kuyenzeka, kodwa kunokuba kubiza kakhulu kunolwakhiwo oluqhelekileyo. Ngokuqinisekileyo bendiya kubambelela kule nto ixesha elide ukuba bekungengenxa yoncedo lwabantu abavela kwitshaneli ye-#haiku kwinethiwekhi ye-irc.freenode.net. Kodwa nabo babengasoloko bebona undonakele.

Usetyenziso olubhalwe nge-Qt lukhetho olulula. Ndibeka kunye isicelo esilula sedemo ngaphandle kweengxaki.

Ukwakha ipakethe yezicelo ezilula kulula kakhulu, kodwa kuphela "ezikhutshwe ngokwesiko", okt. ukuba noovimba bekhowudi yomthombo oguqulelweyo ocetyelwe ukuxhasa kwi-haikuports. Kulwakhiwo oluqhubekayo (ukwakha kuzo zonke izibophelelo zotshintsho) ngeGitHub, yonke into ibonakala ilula. Apha iHaiku ivakalelwa ngakumbi njengonikezelo lweLinux kunesiphumo kwiMac, apho xa ucofa iqhosha elithi “Yakha” kwiXCode ufumana ipakethe. .app, ilungele ukufakwa kumfanekiso wediski .dmg, elungiselelwe ukukhutshelwa kwiwebhusayithi yam.
Ukwakhiwa okuqhubekayo kwezicelo ezisekelwe kwinkqubo yokusebenza "yeseva", umzekelo, i-Linux, iya kwenzeka ukuba kunokwenzeka ukuba kukho imfuno evela kubaphuhlisi, kodwa okwangoku iprojekthi ye-Haiku ineminye imisebenzi ecinezela ngakumbi.

Yizame ngokwakho! Emva kwayo yonke loo nto, iprojekthi yeHaiku ibonelela ngemifanekiso yokubhuthwa kwiDVD okanye kwi-USB, eyenziwe Ежедневно. Ukufakela, khuphela nje umfanekiso kwaye uwutshise kwi-USB flash drive usebenzisa Etcher

Unemibuzo? Siyakumema kwisiRashiya Umzila wetelegram.

Isishwankathelo sempazamo: Ungazidubula njani unyawo kwi-C kunye ne-C ++. Haiku OS Recipe Collection

Ukusuka umbhali translation: eli linqaku lesihlanu kuthotho malunga Haiku.

Uluhlu lwamanqaku: Okokuqala Okwesibini Okwesithathu Okwesine

umthombo: www.habr.com

Yongeza izimvo