Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme

TL; DR: Onye ọhụrụ hụrụ Haiku maka oge mbụ, na-agbalị ibubata ụfọdụ mmemme sitere na ụwa Linux.

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme
Mmemme mbubata Haiku mbụ m, nke etinyere n'ụdị hpkg ya

Na nso nso Achọpụtara m Haiku, sistemụ arụmọrụ dị ịtụnanya maka PC.
Taa, m ga-amụta ka esi ebufe mmemme ọhụrụ na sistemụ arụmọrụ a. Isi ihe na-elekwasị anya bụ nkọwa nke ahụmahụ mbụ nke ịgbanwere na Haiku site na echiche nke onye mmepụta Linux. A na m arịọ mgbaghara maka ihe nzuzu ọ bụla m mejọrọ n'ụzọ, ebe ọ dịbeghị otu izu kemgbe m budata Haiku na mbụ.

Achọrọ m imezu ebumnuche atọ:

  • Bubata ngwa CLI dị mfe
  • Bubata ngwa site na GUI gaa na Qt
  • Wee tinye ha na usoro hpkg (ebe m ka na-eche maka imeghari AppDir na AppImage maka Haiku...)

Ka anyị malite. Na ngalaba akwụkwọ и mmepeyana wiki site na HaikuPorts ahụrụ m ụzọ ziri ezi. E nwekwara akwụkwọ PDF dị n'ịntanetị BeOS: ibubata ngwa Unix.
Peeji 467 - nke a sitere na 1997! Ọ na-atụ egwu ile anya n'ime, mana enwere m olileanya maka ihe kacha mma. Okwu onye mmepụta ihe na-agba ume: "o were ogologo oge n'ihi na BeOS akwadoghị POSIX," ma Haiku "maka ọtụtụ akụkụ" adịlarị otú ahụ.

Ibufe ngwa CLI dị mfe

Echiche mbụ bụ ibubata ngwa ahụ avrdude, ma, dị ka ọ tụgharịrị, nke a adịlarị mere ogologo oge gara aga.

Gbalịa mbụ: ọ nweghị ihe ị ga-ekiri

Ihe m na-enweghị ike ịghọta bụ na ugbua Ebugarala ngwa na Haiku ihe karịrị afọ 10 - n'agbanyeghị eziokwu na OS n'onwe ya abụghị ọbụna version 1.0 ma.

Mgbalị nke abụọ: mkpa idegharị

Ya mere, m ga-eji akpa-770, CLI maka ịchịkwa ihe nbipute Nwanna P-Touch 770 nke m na-eji ebipụta akara.
M na-ebipụta akara dị iche iche na ya, ma eleghị anya ị hụlarị ya n'isiokwu bu ụzọ. N'oge na-adịbeghị anya, edere m obere mmemme ihe mkpuchi GUI na Python (ebe ọ bụ na Gtk +, a ga-edegharị ya, nke a bụkwa ezigbo ihe mere ị ga-eji mụta ihe).

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme
Brọda P-Touch 770 label printer. Ọ ga-arụ ọrụ na Haiku?

Onye njikwa ngwugwu Haiku maara maka ọba akwụkwọ na iwu, yabụ ọ bụrụ na enwetara m ozi "enweghị ike ịhụ libintl" mgbe ọ na-agba ọsọ. configure - M dị nnọọ malite pkgman install devel:libintl na ngwugwu achọrọ ga-achọta. N'otu aka ahụ pkgman install cmd:rsync. Ọfọn, wdg.

Ewezuga mgbe nke a anaghị arụ ọrụ:

/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

Ikekwe udev dabere na Linux ya mere ọ dịghị maka Haiku. Nke pụtara na m kwesịrị idezi koodu isi mmalite m na-agbalị ikpokọta.
Ee, ị nweghị ike ịwụli elu n'isi gị, amakwaghị m ebe m ga-amalite.

Nwaa nke atọ

Ọ ga-adị mma inwe tmate maka Haiku, mgbe ahụ, m ga-ekwe ka ndị mmepe Haiku jikọọ na nnọkọ njedebe m - ọ bụrụ na ihe adịghị mma. Ntuziaka dị nnọọ mfe:

./autogen.sh
./configure
make
make install

Ọ mara mma, yabụ gịnị ma ị nwaa ya na 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

Na nzọụkwụ a, m na-emeghe HaikuDepot ma chọọ curses.
Achọtara ihe, nke nyere m ntụnye maka ajụjụ tozuru oke:

/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

Ọzọ, agara m HaikuDepot, na, n'ezie, chọtara devel:msgpack_c_cpp_devel. Kedu aha ndị a iju?

/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

Na nzọụkwụ a, achọpụtara m na ibuga mmemme na Haiku chọrọ ihe ọmụma karịa ka achọrọ maka mwughachi dị mfe.
Agwara m ndị mmepe Haiku enyi na enyi, ọ tụgharịrị na enwere mperi na msgpack, mgbe nkeji ole na ole gachara, ahụrụ m patch na HaikuPorts. Enwere m ike iji anya m hụ ka ngwugwu edoziziri na-aga ebe a (ewu ohu - igwe mebere).

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme
Iwulite msgpack emeziri na buildmaster

N'etiti oge, a na m ezipu patch gaa n'elu mmiri ịgbakwunye nkwado Haiku na msgpack.

Mgbe nkeji ise gachara, msgpack emelitere adịlarị na 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.

Dị mma na-atụghị anya ya. M kwuru nke ahụ?!

M laghachi azụ na nsogbu mbụ:

/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

Ugbu a ọ dị ka msgpack enweghị mmejọ. Ana m ekwu IMAXLABEL в tty.c ya mere:

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

Nsonaazụ:

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.

Ọfọn, ebe a anyị na-aga ọzọ... Site n'ụzọ:

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

maazị. waddlesplash na-agwa gị ebe ị ga-egwu ala:

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

Ebe a ka m tinyere config.log.

Ha kọwara m na e nwere ihe ọzọ na libnetwork na mgbakwunye na libresolv na Haiku. O doro anya na koodu kwesịrị ka edezikwuo ya. Kwesịrị iche…

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

Ajụjụ ebighi ebi: gịnị na-eme?

/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

Otu ihe ahụ, naanị na profaịlụ. Googled na hụrụ nke a. Ọ bụrụ na ị gbakwunye -lssp "Mgbe ụfọdụ" na-enyere aka, m na-agbalị:

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

Chaị! Ọ na-amalite! Mana…

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

M ga-agbalị imezigharị faịlụ ebe a:

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

"NJ ọdụ ụgbọ mmiri ọjọọ" adịlarị ka kaadị azụmahịa haiku. Ma eleghị anya, mmadụ nwere echiche ihe na-ezighị ezi na otu esi edozi ya? Ọ bụrụ otu a, aga m emelite akụkọ ahụ. Njikọ na GitHub.

Ibufe ngwa GUI na Qt.

M na-ahọrọ ngwa QML dị mfe.

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

N'ezie dị mfe. Ihe na-erughị otu nkeji!

Ngwa nkwakọ ngwaahịa na hpkg site na iji haikuporter na haikuports.

Kedu ihe m ga-eji malite? Enweghị akwụkwọ dị mfe, a na m aga na ọwa #haiku na irc.freenode.net wee nụ:

  • otu package - ụzọ dị ala iji mepụta ngwugwu. Maka ọtụtụ akụkụ, PackageInfo ezuru ya, dị ka akọwara na ngalaba "Ime ka ọ bụrụ ngwugwu .hpkg kwesịrị ekwesị"
  • Achọrọ m ime ihe ndị dị otú ahụ
  • Nwere ike iji hpkg-okike (ọ na-ada m, mkpesa njehie)

O doghị anya ihe a ga-eme. Echere m na achọrọ m ntuziaka onye mbido ụdị ndewo ụwa, nke kachasị mma vidiyo. Ọ ga-adị mma ịnwe mmeghe dabara adaba na HaikuPorter, dịka a na-eme na GNU ndewo.

Ana m agụ ihe a:

haikuporter bụ ngwá ọrụ maka ịmepụta ọrụ ngwugwu nkịtị maka Haiku. Ọ na-eji ebe nchekwa HaikuPorts dị ka ntọala maka ngwugwu niile. A na-eji ntụziaka Haikuporter mepụta ngwugwu.

Ọzọkwa, echere m na:

Ọ dịghị mkpa na-echekwa Ezi ntụziaka na HaikuPorts nchekwa. Ị nwere ike ịmepụta ebe nchekwa ọzọ, tinye ntụziaka na ya, wee tụọ haikuporter aka na ya.

Naanị ihe m chọrọ - ọ bụrụ na ịchọghị ụzọ m ga-esi hapụ ngwugwu ahụ n'ihu ọha. Mana nke a bụ isiokwu maka post ọzọ.

Ịwụnye haikuporter na 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

Na-ede usoro nhazi

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
}

Ịchịkọta uzommeputa

Ana m echekwa faịlụ ahụ n'okpuru aha QtQuickApp-1.0.recipe, mgbe nke ahụ gasịrị, m na-amalite aikuporter -S ./QuickApp-1.0.recipe. A na-enyocha ihe ndabere maka ngwugwu niile dị na ebe nchekwa haikuports, nke na-ewe oge. Aga m enweta kọfị.

Kedu ihe kpatara na a ga-eme nlele a na igwe mpaghara m, ọ bụghịkwa etiti na ihe nkesa otu ugboro maka onye ọ bụla?

Dị ka Mr. waddlesplash:

Site na nke a ị nwere ike idegharị faịlụ ọ bụla na ebe nchekwa 😉 Ị nwere ike ịkwalite nke a ntakịrị, na-agbakọ ozi dị mkpa mgbe ọ dị mkpa, n'ihi na mgbanwe ikpeazụ mere dị obere.

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

Ọ tụgharịrị na ọ nweghị ihe dị ka faịlụ nhazi oge niile nwere koodu isi mmalite nke ngwa gị. Ịkwesịrị idowe ya na ebe nchekwa na usoro HaikuPorts.

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

Eziokwu a na-eme ka mgbakọ ahụ dịkwuo njọ. Ọ masịghị m nke ọma, mana echere m na ọ dị mkpa ka emechaa ngwa ngwa niile mepere emepe ga-apụta na HaikuPorts.

Ana m enweta ihe ndị a:

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

Kedu ihe ọ bụ? Mgbe m gụsịrị irc m na-eme:

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

Ajụjụ na-atọ ụtọ ebilitela. Ọ bụrụ na m tinye checksum na uzommeputa - ọ ga-adakọ na git kacha ọhụrụ maka ntinye aka na-aga n'ihu? (Onye nrụpụta ahụ na-akwado: "Ọ gaghị arụ ọrụ. A haziri usoro ntụziaka ka ọ bụrụ nke kwụsiri ike.")

Maka ntụrụndụ, gbakwunye na nri:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Enweghi afọ ojuju:

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

Gịnị ka ọ na-eme? E kwuwerị, nke a bụ ebe nchekwa git, koodu ahụ adịlarị ebe ahụ ozugbo, ọ nweghị ihe ị ga-ebupụ. Site n'echiche m, ngwá ọrụ ahụ kwesịrị ịma ihe nke ọma ka ọ ghara ịchọ onye na-ebubata ihe ma ọ bụrụ na ọ dị n'elu GitHub url.

Ikekwe uri git:// ga-arụ ọrụ

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

Ugbu a ọ na-eme mkpesa dị ka nke a:

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

Hmm, gịnị kpatara ihe niile ji gbagwojuru anya, gịnị kpatara na ị gaghị "na-arụ ọrụ naanị"? E kwuwerị, ọ bụghị ihe ọhụrụ iji wuo ihe sitere na GitHub. Ma ọ bụ ngwaọrụ na-arụ ọrụ ozugbo, na-enweghị mkpa nhazi, ma ọ bụ dị ka m na-akpọ ya "fussing".

Ikekwe ọ ga-arụ ọrụ dị ka nke a:

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

Mba. M ka na-enweta njehie a dị egwu wee mee, dị ka akọwara ebe a

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

M na-aga n'ihu ntakịrị, mana gịnị kpatara o ji na-eti m mkpu (GitHub adịghị echekwa!) Ma ka na-agbalị ịkwapụ ihe.

Dị ka maazị. waddlesplash:

Ọfọn, ee, ihe kpatara ya bụ ọchịchọ ịlele iguzosi ike n'ezi ihe nke data natara maka mgbakọ. Otu n'ime nhọrọ bụ iji nyochaa checksum nke Archive, ma ị nwere ike, n'ezie, hash onye faịlụ, nke na-agaghị emejuputa atumatu, n'ihi na. ọ na-ewe ogologo oge. Nsonaazụ nke a bụ “enweghị nchekwa” nke git na VCS ndị ọzọ. Nke a yikarịrị ka ọ ga-abụ mgbe niile, ebe ọ bụ na ịmepụta ebe nchekwa na GitHub dị mfe ma na-adịkarị ngwa ngwa. Ọfọn, n'ọdịnihu, ikekwe ozi njehie agaghị adị ọkụ ... (anyị anaghịzi ejikọta ntụziaka ndị dị otú ahụ na 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

Site n'omume ochie, a na m ajụ ndị ezigbo mmadụ na ọwa #haiku na netwọk irc.freenode.net. Oleekwa ebe m ga-anọ na-enweghị ha? Mgbe ntụnye ahụ gasịrị, achọpụtara m na m kwesịrị iji:

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

Ọ dị mma, ọ bịara doo anya ihe ọ na-eme - ọ na-ebudata ebe nchekwa na koodu isi mmalite nke ụfọdụ nlegharị anya. Ọ bụ ihe nzuzu, site n'echiche m, ọ bụghịkwa kpọmkwem ihe m chọrọ, ya bụ, ibudata nsụgharị ọhụrụ site na alaka ụlọ ọrụ.

Otu n'ime ndị mmepe kọwara ya otu a:

Anyị nwere CI nke anyị, yabụ, a ga-achịkọta ihe niile etinyere na ebe nchekwa haikuports maka ndị ọrụ niile, anyị achọghịkwa itinye ihe egwu ịnakọta na ibuga “ihe niile dị na ụdị kachasị ọhụrụ na-agbago.”

Aghọtara! Ka o sina dị, nke a bụ ihe mere:

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

Ọ na-emegharị mgbasa ozi infinitum a. O doro anya na nke a bụ njehie (enwere ngwa? Enweghị m ike ịchọta ya).

С haikuporter na ebe nchekwa haikuports Ọ naghị enwe mmetụta nke "naanị na-arụ ọrụ", mana dịka onye nrụpụta, enwere ụfọdụ ihe na-amasị m maka iso Haiku na-arụkọ ọrụ. Maka ọtụtụ akụkụ, ọ dị ka Open Build Service, otu ngwaọrụ maka iwuli Linux na-ewuli elu: dị ike nke ukwuu, yana usoro nhazi, mana overkill maka obere ngwa "hello ụwa".

Ọzọ, dị ka Mr. waddlesplash:

N'ezie, HaikuPorter siri ike site na ndabara (gbakwunyere na enwere ọnọdụ lint yana ọnọdụ siri ike iji mee ka ọ sie ike karị!), Mana naanị n'ihi na ọ na-emepụta ngwugwu ga-arụ ọrụ, kama imepụta ngwugwu. Ọ bụ ya mere o ji na-eme mkpesa maka ndabere na-ekwupụtaghị, ụlọ akwụkwọ ọbá akwụkwọ anaghị ebubata nke ọma, ụdị ezighi ezi, wdg. Ebumnuche bụ ijide nsogbu ọ bụla na nsogbu niile, gụnyere ndị ga-eme n'ọdịnihu, tupu onye ọrụ amara banyere ya (nke a bụ ya mere na ọ gaghị ekwe omume ịwụnye avrdude, n'ihi na adabereghị n'ezie na nhazi). Ọbá akwụkwọ abụghị naanị ngwugwu nke mmadụ ma ọ bụ ọbụna ụdị SO akọwapụtara. HaikuPorter na-achọpụta na a na-ahụ ihe ndị a niile na ntụziaka n'onwe ha iji zere mmejọ n'oge a na-egbu ya.

Na ụkpụrụ, ọkwa siri ike a ziri ezi mgbe ị na-emepụta sistemụ arụmọrụ, mana ọ dị m ka ọ dịghị mkpa maka ngwa "hello ụwa". Ekpebiri m ịnwale ihe ọzọ.

Iwulite ngwa n'ụdị hpkg site na iji iwu "ngwugwu mepụta".

Eleghi anya nke a Ndụmọdụ dị mfe ọ ga-abara m uru?

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

Na-atụghị anya ngwa ngwa, dị mfe na-atụghị anya ya, dị irè na-atụghị anya ya. Kpọmkwem ka ọ masịrị m, ịtụnanya!

Nwụnye - gịnị na ebe?

Bugharịa faịlụ QtQuickApp.hpkg na ~/config/packagesiji njikwa faili, emesia QtQuickApp pụtara n'ụzọ anwansi ~/config/apps.
Ọzọ, na-atụghị anya ngwa ngwa, dị mfe ma dị irè. Dị ịtụnanya, dị ịtụnanya!

Mana ... (olee ebe anyị ga-anọ na-enweghị ha!)

Ngwa ahụ ka na-efu na ndepụta ngwa ngwa yana QuickLaunch. Echere m na amatala m otu esi edozi ya. N'ime onye njikwa faili, m na-ebuga QtQuickApp.hpkg site na ~/config/packages na /system/packages.

Mba, ka na-efu. O doro anya na m (nke ọma, na ntuziaka) tụfuru ihe.

Mgbe m lere taabụ "Ọdịnaya" dị na HaikuDepot maka ụfọdụ ngwa ndị ọzọ, ahụrụ m na enwere faịlụ dịka /data/mimedb/application/x-vnd... ihe dị ịrịba ama bụ /data/deskbar/menu/Applications/….

Ọfọn, gịnị ka m ga-etinye ebe ahụ? Bịanụ...

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

Eji m n'aka na aghụghọ a ga-arụ ọrụ, mana ajụjụ ndị a ka dị: gịnị kpatara nke a ji dị mkpa, gịnị ka ọ bụ? Echere m na nke a na-emebi echiche n'ozuzu ya na usoro ahụ dị ọkaibe.

Dị ka Mr. waddlesplash:

Mgbe ụfọdụ enwere ngwa ndị ngwa ndị ọzọ chọrọ mana ha adịghị na menu. Dịka ọmụmaatụ, LegacyPackageInstaller na nseta ihuenyo gị, na-ahazi ebe nchekwa .pkg n'ụdị BeOS. Ọ ga-amasị m ka ndị ọrụ tinye ha, mana ọnụnọ ha na menu ga-eduga na mgbagwoju anya.

N'ihi ihe ụfọdụ ọ dị m ka enwere ngwọta dị mfe, dịka ọmụmaatụ Hidden=true na faịlụ .desktop na Linux. Kedu ihe kpatara na ị gaghị eme ka ozi "zoro ezo" bụrụ akụrụngwa na njirimara nke sistemụ faịlụ ahụ?

Ihe na-abụghị nke aghụghọ bụ aha (ụfọdụ) ngwa na-egosi menu, deskbar, ejigidere ya n'ụzọ.

maazị. waddlesplash na-akọwa nke a:

"Deskbar" na nke a kwesịrị ịghọta dị ka ụdị okwu izugbe (n'otu aka ahụ dị ka "taskbar", nke na-ezo aka ma ngwa Windows na echiche izugbe). Ọfọn, ebe ọ bụ na nke a deskbar, ọ bụghị "Deskbar", nke a nwekwara ike ịghọta n'otu ụzọ ahụ.

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme
2 "ihe fọrọ nke nta ka ọ bụrụ otu" akwụkwọ ndekọ aha nwere ngwa n'ime ha

Kedu ihe kpatara enwere akwụkwọ ndekọ aha 2 nwere ngwa, yana gịnị kpatara QtQuickApplication m ji bụrụ otu, mana ọ bụghị na nke ọzọ? (E kwuwerị, nke a abụghị otu usoro, mana onye ọrụ nke abụọ, nke ga-aghọta m n'onwe m).
Enwere m mgbagwoju anya ma echere m na nke a kwesịrị ịdị n'otu.

okwu site n'aka mr. waddlesplash

Ngwa ngwa nwere ngwa na-adịghị mkpa na menu. Mana ọnọdụ dị na menu kwesịrị imeziwanye ya, iji mee ka ọ na-ahazi ya.

Ngwa, ma ọ bụ na ọ gaghị eme 😉

Anọ m na-eche: ọ dị mkpa n'ezie ịkwado ngwa n'ime /system/apps, ọ bụrụ na ndị ọrụ hụ ha n'ebe ahụ, ọ bụ ihe na-adịghị mma. Ma eleghị anya, ọ ga-aka mma itinye ha n'ebe ọzọ ebe onye ọrụ agaghị ezute ha? Dị nnọọ ka ọ na-mere na Mac OS X, ebe ọdịnaya nke ngwugwu .app, nke na-ekwesịghị ịhụ anya onye ọrụ na /Applications, na-ezo n'ime omimi /Sistemụ/Library/…“`.

Kedu maka ịdabere?

Echere m na ọ bara uru ịkọwapụta dabere n'ụzọ ụfọdụ, nri? Enwere ike were Qt dị ka akụkụ amanyere n'iwu nke nrụnye Haiku na ndabara? Mba! Ejighi ndabara tinye Qt. Onye na-ewu ngwugwu nwere ike ịchọpụta ndabere na-akpaghị aka site na ịlele faịlụ ELF? A gwara m na HaikuPorter na-eme nke a n'ezie, mana package Mba. Nke ahụ bụ n'ihi na ọ bụ naanị "onye nrụpụta ngwugwu" na-emepụta faịlụ n'onwe ya hpkg.

Ekwesịrị ime ka Haiku bụrụ ọkaibe site n'ịgbakwunye amụma na ngwugwu ekwesịghị ịdabere na ngwugwu na mpụga Haiku? haikuports? (Ọ ga-amasị m, n'ihi na amụma dị otú ahụ ga-eme ka ihe dịkwuo mfe - sistemụ ahụ ga-enwe ike dozie ndabere nke ngwugwu ọ bụla ebudatara na ebe ọ bụla na-akpaghị aka, na-enweghị iji isi mmalite ngwugwu.)

maazị. waddlesplash na-akọwa:

Anyị agaghị achọ ịmachi nnwere onwe nke ndị mmepe nke ukwuu, n'ihi na o doro anya na ọ bụrụ na CompanyX chọrọ ịkwado usoro ngwanrọ nke ya na ndabere (na ya mere ebe nchekwa), ọ ga-eme ya kpamkpam.

N'okwu ahụ, ọ nwere ike ịba uru ịkwado na ngwugwu ndị ọzọ zere ịdabere na ihe ọ bụla etinyeghị na haikuports site na iji ngwa ahụ na-ebukọ ihe niile achọrọ. Ma echere m na nke a bụ isiokwu maka isiokwu n'ọdịnihu n'usoro isiokwu a. [Onye ode akwụkwọ ọ na-aga n'ihu AppImage? - ihe ruru. onye ntụgharị okwu]

Na-agbakwụnye akara ngosi ngwa

Gịnị ma ọ bụrụ na m chọrọ itinye otu n'ime akara ngosi arụnyere nke ọma na akụrụngwa nke ngwa m mepụtara ọhụrụ? Ọ na-apụta na nke a bụ isiokwu dị ịtụnanya, ya mere ọ ga-abụ ihe ndabere maka isiokwu na-esote.

Otu esi hazie ngwa na-aga n'ihu na-ewuli?

Cheedị echiche ọrụ dị ka Inkscape (ee, amaara m na ọ kabeghị na Haiku, mana ọ dabara adaba igosipụta na ya). Ha nwere ebe nchekwa koodu isi mmalite https://gitlab.com/inkscape/inkscape.
Mgbe ọ bụla mmadụ na-eme mgbanwe ha na ebe nchekwa ahụ, a na-arụ ọrụ pipeline, mgbe nke ahụ gasịrị, a na-anwale mgbanwe ndị ahụ na-akpaghị aka, wuo ya, ma tinye ngwa ahụ n'ime ngwugwu dị iche iche, gụnyere AppImage maka Linux (ngwugwu ngwa nke nwere ike ibudata maka ule mpaghara n'agbanyeghị agbanyeghị. ihe nwere ike ma ọ bụ enweghị ike ịwụnye na sistemụ [Amaara m ya! - ihe ruru. onye ntụgharị okwu]). Otu ihe ahụ na-eme na arịrịọ njikọ alaka alaka ọ bụla, yabụ ị nwere ike budata ngwa arụnyere na koodu ahụ akwadoro na arịrịọ njikọ tupu ijikọ.

Ụbọchị nke ise m na Haiku: ka anyị bunye ụfọdụ mmemme
Jikọta arịrịọ na iwu ụlọ yana ikike ibudata ọnụọgụ abụọ ekpokọtara ma ọ bụrụ na ihe owuwu ahụ gara nke ọma (akara na akwụkwọ ndụ akwụkwọ ndụ)

Ihe owuwu a na-arụ n'ime igbe Docker. GitLab na-enye ndị na-agba ọsọ n'efu na Linux, echere m na ọ ga-ekwe omume ịgụnye ndị na-agba ọsọ nke gị (n'agbanyeghị, ahụghị m ka nke a ga-esi arụ ọrụ maka usoro dị ka Haiku, nke m maara na enweghị Docker ma ọ bụ otu, ma maka FreeBSD enweghị Docker, yabụ nsogbu a abụghị nke Haiku pụrụ iche).

Dị ka o kwesịrị, enwere ike iwulite ngwa Haiku n'ime akpa Docker maka Linux. N'ọnọdụ a, enwere ike ịme mgbakọ maka Haiku n'ime pipelines dị ugbu a. Enwere ndị nchịkọta obe? Ma ọ bụ ka m ga-eṅomi Haiku niile n'ime akpa Docker na-eji ihe dịka QEMU/KVM (na-eche na ọ ga-arụ ọrụ otú ahụ n'ime Docker)? Site n'ụzọ, ọtụtụ ọrụ na-eji ụkpụrụ ndị yiri ya. Dịka ọmụmaatụ, Scribus na-eme nke a - ọ dịlarị maka Haiku. Otu ụbọchị ụbọchị ga-abịa mgbe m nwere ike izipu dị otú ahụ Dọrọ arịrịọ na ọrụ ndị ọzọ ka ịgbakwunye nkwado Haiku.

Otu n'ime ndị mmepe na-akọwa:

Maka ọrụ ndị ọzọ na-achọ ịmepụta ngwugwu n'onwe ha, a na-akwado usoro CMake/CPack oge niile. Enwere ike ịkwado usoro ihe nrụpụta ndị ọzọ site n'ịkpọ mmemme iwu ihe ngwugwu ozugbo, nke dị mma ma ọ bụrụ na ndị mmadụ nwere mmasị na ya. Ahụmahụ na-egosi: ruo ugbu a enwebeghị mmasị dị ukwuu, ya mere haikuporter rụrụ ọrụ dị ka adaba maka anyị, ma, n'ikpeazụ, ụzọ abụọ ahụ kwesịrị ịrụkọ ọrụ ọnụ. Anyị kwesịrị iwebata otu ngwaọrụ maka sọftụwia na-ewu ụlọ site na Linux ma ọ bụ sistemụ arụmọrụ sava ọ bụla (Emebere Haiku ka ọ na-agba ọsọ na sava).

Ana m ekele ekele. Ndị ọrụ Linux oge niile na-ebu ibu ndị a niile na ngwongwo ndị ọzọ (nchekwa, njikwa siri ike, wdg) nke dị mkpa maka sistemụ arụmọrụ sava, mana ọ bụghị maka nkeonwe. Ya mere ekwenyere m kpamkpam na inwe ike wuo ngwa Haiku na Linux bụ ụzọ aga.

nkwubi

Ịbufe ngwa POSIX na Haiku ga-ekwe omume, mana ọ nwere ike ịdị ọnụ karịa ka nrụgharị a na-ahụkarị. M ga-anọgidesi ike na nke a ogologo oge ma ọ bụrụ na ọ bụghị maka enyemaka nke ndị mmadụ site na ọwa #haiku na netwọk irc.freenode.net. Ma ọbụna ha ahụghị ozugbo ihe na-ezighị ezi.

Ngwa e dere na Qt bụ ihe dị mfe wepụrụ. M na-etinye ọnụ a mfe ngosi ngwa na-enweghị nsogbu ọ bụla.

Ịrụ ngwugwu maka ngwa dị mfe dịkwa mfe, ma ọ bụ naanị maka "ndị a tọhapụrụ n'ọdịnala", ya bụ. inwe akwụkwọ ndekọ aha koodu isi mmalite emebere maka nkwado na haikuports. Maka iwu na-aga n'ihu (wulite maka mgbanwe ọ bụla) na GitHub, ihe niile dị ka ọ dịghị mfe. N'ebe a, Haiku na-enwe mmetụta dịka nkesa Linux karịa nsonaazụ na Mac, ebe ị pịa bọtịnụ "Mee" na XCode ị ga-enweta ngwugwu. .app, dị njikere itinye n'ime onyonyo diski .dmg, akwadoro maka nbudata na weebụsaịtị m.
Ịga n'ihu na-ewu ngwa dabere na sistemụ arụmọrụ "ihe nkesa", dịka ọmụmaatụ, Linux, ọ ga-ekwe omume ma ọ bụrụ na enwere ọchịchọ sitere n'aka ndị mmepe, mana ugbu a, ọrụ Haiku nwere ọrụ ndị ọzọ na-arụsi ọrụ ike.

Gbalịa ya n'onwe gị! E kwuwerị, ọrụ Haiku na-enye ihe oyiyi maka booting site na DVD ma ọ bụ USB, emepụtara ежедневно. Iji wụnye, naanị budata onyonyo a wee kpọọ ya ọkụ na draịvụ USB site na iji Etcher

Enwere ajụjụ? Anyị na-akpọ gị òkù ka ị na-asụ Russian telegram ọwa.

Nyochaa mperi: Otu esi agba onwe gị n'ụkwụ na C na C++. Nchịkọta Ntụziaka Haiku OS

si onye ode akwukwo ntụgharị asụsụ: nke a bụ edemede nke ise n'usoro gbasara Haiku.

Ndepụta akụkọ: Nke mbụ Nke abụọ Nke atọ Nke anọ

isi: www.habr.com

Tinye a comment