Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam

TL; DR: Ib tus neeg tshiab pom Haiku thawj zaug, sim xa qee qhov kev pab cuam los ntawm Linux ntiaj teb.

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam
Kuv thawj Haiku ported program, ntim rau hauv nws hom hpkg

Tsis ntev tas los Kuv nrhiav tau Haiku, ib qho kev ua haujlwm zoo heev rau PCs.
Niaj hnub no kuv yuav kawm yuav ua li cas ports tshiab cov kev pab cuam rau no operating system. Lub hom phiaj tseem ceeb yog cov lus piav qhia ntawm thawj qhov kev paub ntawm kev hloov mus rau Haiku los ntawm qhov pom ntawm Linux tus tsim tawm. Kuv thov txim rau tej yam ruam uas kuv tau ua nyob rau hauv txoj kev, vim nws tseem tsis tau ib lub lim tiam txij li thaum kuv thawj downloaded Haiku.

Kuv xav ua kom tiav peb lub hom phiaj:

  • Chaw nres nkoj ib daim ntawv thov CLI yooj yim
  • Chaw nres nkoj ib daim ntawv thov los ntawm GUI rau Qt
  • Tom qab ntawd ntim lawv hauv hpkg hom (vim kuv tseem xav txog kev hloov kho AppDir thiab AppImage rau Haiku ...)

Cia peb pib. Hauv ntu cov ntaub ntawv ΠΈ kev loj hlobxyab ntawv thiab wiki los ntawm HaikuPorts kuv pom txoj kev yog. Tseem muaj ib phau ntawv PDF online BeOS: Porting a Unix Application.
467 nplooj ntawv - thiab qhov no yog los ntawm 1997! Nws txaus ntshai los saib sab hauv, tab sis kuv vam tias qhov zoo tshaj plaws. Tus tsim tawm cov lus txhawb nqa: "nws siv sijhawm ntev vim tias BeOS tsis yog POSIX-ua raws," tab sis Haiku "feem ntau" yog qhov zoo li ntawd.

Porting ib daim ntawv thov CLI yooj yim

Thawj qhov kev xav yog qhov chaw nres nkoj ntawm daim ntawv thov avdiaj, tab sis, raws li nws muab tawm, qhov no yog twb ua tiav ntev dhau los.

Thawj sim: tsis muaj dab tsi los saib

Qhov kuv tsis nkag siab yog qhov ntawd lawm Cov apps tau raug xa mus rau Haiku rau ntau tshaj 10 xyoo - txawm tias qhov tseeb tias OS nws tus kheej tsis yog version 1.0 tseem tsis tau.

Kev sim thib ob: yuav tsum tau sau dua

Yog li kuv yuav siv npo-770, CLI rau kev tswj hwm Brother P-Touch 770 tshuab luam ntawv uas kuv siv los luam cov ntawv.
Kuv luam ntau daim ntawv lo rau ntawm nws, thiab tej zaum koj twb pom nws nyob rau hauv tsab xov xwm dhau los. Ib me ntsis ua ntej, kuv tau sau ib qhov kev pab cuam me me GUI wrapper hauv Python (vim nws yog nyob rau hauv Gtk +, nws yuav tsum tau rov sau dua, thiab qhov no yog qhov laj thawj zoo los kawm).

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam
Tij Laug P-Touch 770 lub tshuab luam ntawv yuav ua haujlwm nrog Haiku?

Tus thawj tswj hwm pob Haiku paub txog cov tsev qiv ntawv thiab cov lus txib, yog li kuv tau txais cov lus "tsis tuaj yeem nrhiav libintl" thaum khiav configure - Kuv nyuam qhuav tso tawm pkgman install devel:libintl thiab cov pob yuav tsum tau pom. Ib yam li ntawd pkgman install cmd:rsync. Zoo, thiab lwm yam.

Tsuas yog thaum qhov no tsis ua haujlwm:

/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

Tej zaum udev yog dhau Linux-based thiab yog li tsis muaj nyob rau Haiku. Qhov no txhais tau tias kuv yuav tsum tau hloov kho qhov chaws uas kuv tab tom sim muab tso ua ke.
Eh, koj tsis tuaj yeem dhia hla koj lub taub hau, thiab kuv tsis paub tias yuav pib qhov twg.

Thib peb sim

Nws yuav zoo rau muaj tmate rau Haiku, tom qab ntawd kuv yuav tso cai rau cov neeg tsim khoom Haiku txuas rau kuv lub davhlau ya nyob twg - yog tias muaj qee yam tsis raug. Cov lus qhia yog yooj yim heev:

./autogen.sh
./configure
make
make install

Saib zoo, yog li cas ho tsis sim nws ntawm 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

Hauv kauj ruam no kuv qhib HaikuDepot thiab tshawb curses.
Ib yam dab tsi tau pom, uas tau muab kuv txhais lus rau cov lus nug uas muaj peev xwm ntxiv:

/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

Ib zaug ntxiv kuv mus rau HaikuDepot, thiab, tau kawg, pom devel:msgpack_c_cpp_devel. Cov npe txawv txawv no yog dab tsi?

/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

Ntawm cov kauj ruam no, kuv pom tau hais tias kev xa ib qho kev pab cuam rau Haiku yuav tsum muaj kev paub ntau dua li qhov xav tau rau kev txhim kho yooj yim.
Kuv tham nrog tus phooj ywg Haiku tsim tawm, nws hloov tawm tias muaj kab laum hauv msgpack, thiab tom qab ob peb feeb kuv pom ib thaj hauv HaikuPorts. Kuv tuaj yeem pom nrog kuv tus kheej ob lub qhov muag yuav ua li cas kho pob mus ntawm no (Buildslave - virtual machines).

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam
Tsim kho msgpack ntawm buildmaster

Nyob rau hauv nruab nrab lub sij hawm kuv xa ib thaj rau saum ntxiv Haiku kev txhawb nqa rau msgpack.

Tsib feeb tom qab, cov tshiab msgpack twb muaj nyob rau hauv 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.

Tsis xav txog qhov zoo. Kuv hais li cas?!

Kuv rov qab mus rau qhov teeb meem qub:

/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

Tam sim no nws zoo li msgpack tsis ua txhaum. kuv tawm tswv yim IMAXLABEL Π² tty.c zoo li no:

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

Tshwm sim:

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.

Zoo, ntawm no peb mus dua ... Los ntawm txoj kev:

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

mr. waddlesplash qhia koj qhov twg yuav khawb:

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

Ntawm no kuv tso config.log.

Lawv tau piav qhia rau kuv tias muaj lwm yam hauv libnetwork ntxiv rau libresolv ntawm Haiku. Thaj chaws yuav tsum tau kho ntxiv. Yuav tsum xav…

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

Lo lus nug nyob mus ib txhis: dab tsi tshwm sim?

/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

Tib yam, tsuas yog hauv profile. Googled thiab pom qhov no. Yog koj ntxiv -lssp "qee zaum" pab, kuv sim:

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

Wow! Nws pib! Tab sis…

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

Kuv mam li sim mus debug ntaub ntawv ntawm no:

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

"Bad port ID" twb zoo li daim npav lag luam hais. Tej zaum ib tug neeg muaj lub tswv yim dab tsi tsis yog thiab yuav kho li cas? Yog tias muaj, kuv mam li hloov kho tsab xov xwm. Txuas rau GitHub.

Porting daim ntawv thov GUI rau Qt.

Kuv xaiv ib daim ntawv thov QML yooj yim.

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

Yooj yim tiag tiag. Tsawg dua ib feeb!

Ntim daim ntawv thov hauv hpkg siv haikuporter thiab haikuports.

Kuv yuav tsum pib nrog dab tsi? Tsis muaj ntaub ntawv yooj yim, kuv mus rau #haiku channel ntawm irc.freenode.net thiab hnov:

  • pab neeg package - theem qis los tsim cov pob khoom. Rau feem ntau, PackageInfo yog txaus rau nws, raws li tau piav nyob rau hauv seem "Ua rau hauv ib lub pob .hpkg"
  • Kuv yuav tsum ua ib yam dab tsi xws
  • Siv tau hpkg-creator (Nws poob rau kuv, kev qhia yuam kev)

Nws tsis paub meej tias yuav ua li cas. Kuv twv kuv xav tau Hello World style beginner's guide, ideal a video. Nws yuav zoo los kuj muaj kev qhia yooj yim rau HaikuPorter, zoo li ua tiav hauv GNU nyob zoo.

Kuv nyeem cov lus hauv qab no:

haikuporter yog ib qho cuab yeej los tsim cov phiaj xwm pob rau Haiku. Nws siv HaikuPorts repository ua lub hauv paus rau txhua pob. Haikuporter zaub mov txawv yog siv los tsim pob.

Tsis tas li ntawd, kuv paub tias:

Tsis tas yuav khaws cov zaub mov hauv HaikuPorts cia. Koj tuaj yeem ua lwm qhov chaw cia khoom, muab cov zaub mov tso rau hauv nws, thiab tom qab ntawd taw tes rau haikuporter rau nws.

Tsuas yog qhov kuv xav tau - yog tias tsis nrhiav txoj hauv kev los nthuav tawm lub pob. Tab sis qhov no yog lub ntsiab lus rau lwm tus ncej.

Txhim kho haikuporter thiab 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

Sau daim ntawv qhia

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
}

Sib sau ua ke daim ntawv qhia

Kuv khaws cov ntaub ntawv hauv qab lub npe QtQuickApp-1.0.recipe, tom qab uas kuv tso tawm aikuporter -S ./QuickApp-1.0.recipe. Dependencies raug tshuaj xyuas rau tag nrho cov pob khoom nyob rau hauv lub repository hais lus, uas siv qee lub sijhawm. Kuv mam mus noj kas fes.

Vim li cas hauv ntiaj teb no yuav tsum tau ua tiav daim tshev no ntawm kuv lub tshuab hauv zos, thiab tsis yog lub hauv paus ntawm server ib zaug rau txhua tus?

Raws li mr. waddlesplash:

Nrog rau qhov no koj tuaj yeem rov sau ib cov ntaub ntawv hauv qhov chaw khaws cia πŸ˜‰ Koj tuaj yeem ua kom zoo dua qhov no me ntsis, suav cov ntaub ntawv tsim nyog thaum xav tau, vim tias qhov kev hloov pauv kawg tau ua tsawg heev.

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

Nws hloov tawm tsis muaj ib yam li cov ntawv qhia zaub mov ib txwm muaj uas muaj koj daim ntawv thov qhov chaws. Koj yuav tsum khaws cia rau hauv qhov chaw cia hauv HaikuPorts hom.

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

Qhov tseeb no ua rau lub rooj sib txoos ntau cumbersome. Kuv tsis nyiam nws tshwj xeeb, tab sis kuv xav tias nws yog qhov tsim nyog kom thaum kawg txhua qhov qhib software yuav tshwm sim hauv HaikuPorts.

Kuv tau txais cov hauv qab no:

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

Dab tsi tsis yog? Tom qab nyeem irc kuv ua:

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

Ib lo lus nug nthuav tau tshwm sim. Yog tias kuv ntxiv ib daim tshev rau hauv daim ntawv qhia - nws puas yuav phim qhov tseeb git cog lus rau kev koom ua ke tas li? (Tus tsim tawm lees paub: "Nws yuav tsis ua haujlwm. Cov zaub mov txawv yog tsim los kom ruaj khov.")

Rau kev lom zem, ntxiv rau daim ntawv qhia:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Tseem tsis txaus siab:

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

Nws ua dab tsi? Tom qab tag nrho, qhov no yog git repository, tus lej yog twb muaj ncaj qha, tsis muaj dab tsi los qhib. Los ntawm kuv qhov kev xav, lub cuab yeej yuav tsum ntse txaus kom tsis txhob saib rau lub unpacker yog tias nws nyob saum GitHub url.

Tej zaum uri git: // yuav ua haujlwm

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

Tam sim no nws yws li no:

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

Hmm, vim li cas txhua yam nyuaj heev, vim li cas koj tsis tuaj yeem "tsuas yog ua haujlwm"? Tom qab tag nrho, nws tsis yog qhov tsis yooj yim los tsim ib yam dab tsi los ntawm GitHub. Seb nws yog cov cuab yeej ua haujlwm tam sim ntawd, tsis tas yuav teeb tsa, lossis raws li kuv hu nws "fussing".

Tej zaum nws yuav ua haujlwm zoo li no:

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

Tsis yog. Kuv tseem tau txais qhov yuam kev txawv txawv no thiab ua, raws li tau piav qhia ntawm no

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

Kuv tab tom tsiv me ntsis ntxiv, tab sis vim li cas nws thiaj qw rau kuv (GitHub tsis ruaj ntseg!) thiab tseem sim qhib ib yam dab tsi.

Raws li mr. waddlesplash:

Zoo, yog, yog vim li cas yog lub siab xav los xyuas qhov tseeb ntawm cov ntaub ntawv tau txais los ua ke. Ib qho ntawm cov kev xaiv yog los txheeb xyuas cov checksum ntawm cov ntaub ntawv, tab sis koj tuaj yeem, tau kawg, hash ib tus neeg cov ntaub ntawv, uas yuav tsis raug siv, vim nws yuav siv sij hawm ntev dua. Qhov tshwm sim ntawm qhov no yog "kev tsis ruaj ntseg" ntawm git thiab lwm yam VCS. Qhov no feem ntau yuav yog qhov xwm txheej, txij li kev tsim cov ntaub ntawv khaws tseg ntawm GitHub yog qhov yooj yim heev thiab feem ntau sai dua. Zoo, yav tom ntej, tej zaum cov lus yuam kev yuav tsis yog flashy ... (peb tsis muab cov zaub mov zoo li no hauv HaikuPorts lawm).

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

Tawm ntawm tus cwj pwm qub, kuv mus nug cov neeg zoo ntawm #haiku channel ntawm irc.freenode.net network. Thiab kuv yuav nyob qhov twg tsis muaj lawv? Tom qab cov lus qhia, kuv pom tau tias kuv yuav tsum siv:

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

Okay, nws tau paub meej tias nws ua dab tsi - nws rub tawm cov ntaub ntawv nrog cov cai ntawm kev hloov kho tshiab. Nws yog ruam, los ntawm kuv qhov kev xav, thiab tsis yog qhov kuv xav tau, piv txwv li, rub tawm qhov hloov kho tshiab los ntawm tus tswv ceg.

Ib tug ntawm cov developers piav nws li no:

Peb muaj peb tus kheej CI, yog li txhua yam uas tau muab tso rau hauv haikuports repository yuav raug ntim rau txhua tus neeg siv, thiab peb tsis xav kom pheej hmoo sau thiab xa "txhua yam hauv qhov tseeb version upstream."

To taub! Txawm li cas los xij, qhov no tau tshwm sim:

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

Nws rov ua qhov ad infinitum. Pom tau tias qhov no yog qhov yuam kev (puas muaj daim ntawv thov? Kuv nrhiav tsis tau).

Π‘ haikuporter thiab repository hais lus Nws tsis muaj qhov "tsuas yog ua haujlwm" rau nws, tab sis raws li tus tsim tawm, muaj qee yam kuv nyiam ua haujlwm nrog Haiku. Rau feem ntau, nws zoo ib yam li Open Build Service, ib txheej ntawm cov cuab yeej rau kev tsim Linux tsim: muaj zog heev, nrog rau txoj hauv kev, tab sis overkill rau kuv daim ntawv thov "nyob zoo ntiaj teb" me me.

Ib zaug ntxiv, raws li mr. waddlesplash:

Tseeb tiag, HaikuPorter yog nruj heev los ntawm lub neej ntawd (ntxiv rau muaj hom lint nrog rau hom nruj kom nws nruj dua!), tab sis tsuas yog vim nws tsim cov pob khoom uas yuav ua haujlwm, tsis yog tsim cov pob xwb. Tias yog vim li cas nws yws txog qhov tsis lees paub qhov kev cia siab, cov tsev qiv ntawv tsis raug xa tawm kom raug, cov ntawv tsis raug, thiab lwm yam. Lub hom phiaj yog txhawm rau ntes txhua yam teeb meem, suav nrog yav tom ntej, ua ntej tus neeg siv paub txog nws (qhov no yog vim li cas nws tsis tuaj yeem nruab avrdude, vim tias qhov kev vam khom tau teev tseg hauv daim ntawv qhia). Cov tsev qiv ntawv tsis yog ib pob khoom nkaus xwb lossis txawm tias SO versions tshwj xeeb. HaikuPorter xyuas kom meej tias tag nrho cov no tau pom nyob rau hauv cov zaub mov txawv ntawm lawv tus kheej kom tsis txhob ua yuam kev thaum ua tiav.

Hauv cov ntsiab lus, qhov kev nruj me ntsis no yog qhov tsim nyog thaum tsim lub operating system, tab sis nws zoo li tsis tsim nyog rau kuv rau daim ntawv thov "nyob zoo ntiaj teb". Kuv txiav txim siab sim ua lwm yam.

Tsim cov ntawv thov hauv hpkg hom siv "pob tsim" hais kom ua

Tej zaum, qhov no Cov lus qhia yooj yim puas yuav ua haujlwm zoo dua rau kuv?

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

Kev npaj txhij txog sai, npaj txhij txog yooj yim, npaj txhij txog ua haujlwm zoo. Raws nraim li kuv nyiam nws, amazing!

Installation - dab tsi thiab qhov twg?

Hloov cov ntaub ntawv QtQuickApp.hpkg rau ~/config/packagessiv tus thawj tswj cov ntaub ntawv, tom qab uas QtQuickApp magically tshwm nyob rau hauv ~/config/apps.
Ntxiv dua thiab, poob ceeb thawj sai, yooj yim thiab siv tau. Amazing, zoo kawg!

Tab sis ... (qhov twg peb yuav tsis muaj lawv!)

Lub app tseem ploj lawm los ntawm cov ntawv qhia zaub mov apps thiab QuickLaunch. Kuv xav tias kuv twb paub yuav kho li cas. Hauv tus thawj tswj ntaub ntawv kuv txav QtQuickApp.hpkg ntawm ~/config/packages rau /system/packages.

Tsis yog, tseem ploj lawm. Thaj, kuv (zoo, thiab cov lus qhia) nco ib yam dab tsi.

Tau saib ntawm "Cov ntsiab lus" tab hauv HaikuDepot rau qee qhov kev thov, kuv pom tias muaj cov ntaub ntawv zoo li /data/mimedb/application/x-vnd... dab tsi tseem ceeb tshaj yog /data/deskbar/menu/Applications/….

Zoo, kuv yuav tsum muab dab tsi rau ntawd? Los ntawm...

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

Kuv paub tseeb tias qhov kev ua kom yuam kev no yuav ua haujlwm, tab sis cov lus nug tseem nyob: vim li cas qhov no tsim nyog, nws yog dab tsi? Kuv xav tias qhov no rhuav tshem tag nrho cov kev xav tias lub system yog li sophisticated.

Raws li tau piav qhia los ntawm Mr. waddlesplash:

Qee zaum muaj cov ntawv thov uas lwm daim ntawv thov xav tau tab sis tsis nyob hauv cov ntawv qhia zaub mov. Piv txwv li, LegacyPackageInstaller hauv koj lub screenshot, ua .pkg archives hauv BeOS hom. Kuv xav kom cov neeg siv nruab lawv, tab sis lawv qhov muaj nyob hauv cov ntawv qhia zaub mov yuav ua rau tsis meej pem.

Rau qee qhov nws zoo li rau kuv tias muaj kev daws teeb meem yooj yim dua, piv txwv li Hidden=true hauv cov ntaub ntawv .desktop ntawm Linux. Vim li cas ho tsis ua kom cov ntaub ntawv "pob ntseg" yog cov khoom siv thiab tus cwj pwm ntawm cov ntaub ntawv kaw lus?

Dab tsi yog qhov tshwj xeeb tsis meej yog lub npe ntawm (qee) daim ntawv thov uas qhia cov ntawv qhia zaub mov, deskbar, rigidly khi raws txoj kev.

mr. waddlesplash piav qhia qhov no:

"Deskbar" nyob rau hauv cov ntaub ntawv no yuav tsum to taub raws li ib tug general lub sij hawm (nyob rau hauv ntau tib txoj kev raws li "taskbar", uas yog hais txog ob qho tib si Windows daim ntawv thov thiab lub ntsiab lus dav dav). Zoo, txij li qhov no deskbar, tsis yog "Deskbar", qhov no kuj tuaj yeem nkag siab zoo ib yam.

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam
2 "yuav luag zoo tib yam" cov npe nrog cov ntawv thov hauv lawv

Vim li cas thiaj muaj 2 phau ntawv teev npe nrog cov ntawv thov, thiab vim li cas kuv QtQuickApplication hauv ib qho, tab sis tsis nyob rau lwm qhov? (Tom qab tag nrho, qhov no tsis yog ib qho system, tab sis tus neeg siv thib ob, uas yuav nkag siab rau kuv tus kheej).
Kuv yeej tsis meej pem thiab kuv xav tias qhov no yuav tsum koom ua ke.

comment los ntawm mr. waddlesplash

Cov Apps catalog muaj cov ntawv thov uas tsis xav tau hauv cov ntawv qhia zaub mov. Tab sis qhov xwm txheej nrog cov ntawv qhia zaub mov tiag tiag yuav tsum tau txhim kho, ua kom nws hloov tau ntau dua.

Daim ntawv thov, lossis nws yuav tsis tshwm sim πŸ˜‰

Kuv xav tsis thoob: nws puas tsim nyog los tuav cov ntawv thov hauv /system/apps, yog tias cov neeg siv pom lawv nyob ntawd, nws yog qhov tsis xav tau. Tej zaum nws yuav zoo dua los muab lawv tso rau hauv lwm qhov chaw uas tus neeg siv yuav tsis ntsib lawv? Ib yam li nws tau ua tiav hauv Mac OS X, qhov twg cov ntsiab lus ntawm pob .app, uas yuav tsum tsis txhob pom rau tus neeg siv hauv /Applications, nkaum hauv qhov tob ntawm /System/Library/β€¦β€œ`.

Yuav ua li cas yog dependencies?

Kuv xav tias nws tsim nyog qhia qhov kev vam meej, txoj cai? Qt puas tuaj yeem suav tias yog qhov yuav tsum tau ua ntawm Haiku installation los ntawm lub neej ntawd? Tsis yog! Qt tsis tau teeb tsa los ntawm lub neej ntawd. Cov neeg tsim khoom puas tuaj yeem kuaj xyuas cov ntaub ntawv ELF? Kuv tau hais tias HaikuPorter yeej ua qhov no, tab sis package Tsis muaj. Tias yog vim nws tsuas yog "pob khoom tsim" uas tsuas yog tsim cov ntaub ntawv ntawm nws tus kheej hpkg.

Haiku puas yuav tsum tau ua kom zoo dua los ntawm kev ntxiv txoj cai hais tias ib pob yuav tsum tsis txhob muaj kev vam khom rau cov pob khoom sab nraud ntawm Haiku? haikuports? (Kuv xav, vim tias txoj cai no yuav ua rau ntau yam yooj yim dua - lub kaw lus yuav tuaj yeem daws qhov kev cia siab ntawm txhua pob rub tawm los ntawm txhua qhov chaw, tsis muaj kev cuam tshuam nrog cov pob khoom ntxiv.)

mr. waddlesplash piav qhia:

Peb tsis xav txwv txoj kev ywj pheej ntawm cov neeg tsim tawm ntau heev, vim nws pom tseeb tias yog CompanyX xav txhawb nqa nws tus kheej cov software nrog kev vam khom (thiab yog li lub chaw cia khoom), nws yuav ua li ntawd dawb do kiag li.

Nyob rau hauv tas li ntawd, nws yuav tsim nyog hais tias cov neeg thib peb tej pob khoom tsis txhob dependencies ntawm ib yam dab tsi uas tsis muaj nyob rau hauv haikuports los ntawm tag nrho cov ntim txhua yam xav tau nrog daim ntawv thov. Tab sis kuv xav tias qhov no yog lub ntsiab lus rau yav tom ntej tsab xov xwm nyob rau hauv no series. [Puas yog tus sau mus rau AppImage? - kwv yees. tus txhais lus]

Ntxiv ib daim ntawv thov icon

Yuav ua li cas yog tias kuv xav ntxiv ib qho zoo nkauj built-in icons rau cov peev txheej ntawm kuv daim ntawv thov tsim tshiab? Nws hloov tawm tias qhov no yog lub ntsiab lus zoo kawg nkaus, yog li nws yuav yog lub hauv paus rau tsab xov xwm tom ntej.

Yuav ua li cas npaj cov ntawv thov txuas ntxiv tsim?

Xav txog qhov project zoo li Inkscape (yog, kuv paub tias nws tseem tsis tau muaj nyob hauv Haiku, tab sis nws yooj yim los tso rau ntawm nws). Lawv muaj ib tug code repository https://gitlab.com/inkscape/inkscape.
Txhua zaus ib tus neeg ua txhaum lawv cov kev hloov pauv rau lub chaw cia khoom, tsim cov kav dej xa tawm, tom qab ntawd cov kev hloov pauv tau raug sim, tsim, thiab daim ntawv thov ntim rau hauv ntau lub pob, suav nrog AppImage rau Linux (ib daim ntawv thov ib leeg uas tuaj yeem rub tawm rau kev sim hauv zos txawm li cas los xij. dab tsi yuav los yog tsis tau nruab rau hauv lub system [Kuv paub nws! - kwv yees. tus txhais lus]). Tib yam tshwm sim nrog txhua ceg kev thov kev sib koom ua ke, yog li koj tuaj yeem rub tawm daim ntawv thov tsim los ntawm cov cai uas tau thov hauv kev thov ua ke ua ntej kev sib koom ua ke.

Hnub thib tsib nrog Haiku: cia peb muab qee qhov kev pab cuam
Sib koom ua ke thov nrog tsim cov xwm txheej thiab muaj peev xwm rub tawm cov ntawv sau ua ke yog tias tsim tau tiav (cim ntsuab)

Kev tsim ua haujlwm hauv Docker ntim. GitLab muaj kev khiav dawb ntawm Linux, thiab kuv xav tias nws yuav muaj peev xwm suav nrog koj tus kheej khiav (los ntawm txoj kev, kuv tsis pom tias qhov no yuav ua haujlwm li cas rau cov tshuab zoo li Haiku, uas kuv paub tias tsis muaj Docker lossis sib npaug, tab sis kuj rau FreeBSD tsis muaj Docker, yog li qhov teeb meem no tsis tshwj xeeb rau Haiku).

Qhov zoo tshaj plaws, Haiku daim ntawv thov tuaj yeem tsim hauv Docker thawv rau Linux. Hauv qhov xwm txheej no, kev sib dhos rau Haiku tuaj yeem nkag mus rau hauv cov kav dej uas twb muaj lawm. Puas muaj cross compilers? Los yog kuv yuav tsum ua raws li tag nrho Haiku hauv Docker thawv siv qee yam xws li QEMU / KVM (piv txwv tias nws yuav ua haujlwm li ntawd hauv Docker)? Los ntawm txoj kev, ntau qhov project siv cov ntsiab lus zoo sib xws. Piv txwv li, Scribus ua qhov no - nws twb muaj rau Haiku. Muaj ib hnub yuav tuaj thaum kuv tuaj yeem xa tuaj xws li Rub thov mus rau lwm qhov haujlwm ntxiv rau Haiku kev txhawb nqa.

Ib tug ntawm cov developers piav qhia:

Rau lwm cov haujlwm uas xav tsim cov pob khoom lawv tus kheej, CMake / CPack txoj kev tau txais kev txhawb nqa. Lwm lub tshuab tsim tuaj yeem txhawb nqa los ntawm kev hu rau pob khoom tsim cov kev pab cuam ncaj qha, uas yog qhov zoo yog tias tib neeg txaus siab rau nws. Kev paub qhia: txog tam sim no tsis tau muaj kev txaus siab ntau, yog li haikuporter ua haujlwm yooj yim rau peb, tab sis, thaum kawg, ob txoj hauv kev yuav tsum ua haujlwm ua ke. Peb yuav tsum qhia cov txheej txheem rau kev tsim software los ntawm Linux lossis lwm qhov kev ua haujlwm ntawm lub server (Haiku tsis yog tsim los khiav ntawm servers).

Kuv muab ib tug sawv ovation. Cov neeg siv Linux li niaj zaus nqa tag nrho cov khoom siv ntxiv no thiab lub hnab nqa khoom ntxiv (kev nyab xeeb, kev tswj hwm nruj, thiab lwm yam) uas tsim nyog rau lub server ua haujlwm, tab sis tsis yog rau tus kheej. Yog li kuv pom zoo tag nrho tias muaj peev xwm tsim Haiku apps ntawm Linux yog txoj hauv kev mus.

xaus

Porting POSIX daim ntawv thov rau Haiku yog ua tau, tab sis tej zaum yuav kim dua li kev tsim kho dua tshiab. Kuv yeej yuav nyam nrog qhov no ntev ntev yog tias nws tsis yog rau kev pab ntawm cov neeg los ntawm #haiku channel ntawm irc.freenode.net network. Tab sis txawm lawv tsis tau pom tam sim ntawd qhov tsis raug.

Cov ntawv thov sau hauv Qt yog qhov tshwj xeeb yooj yim. Kuv muab tso ua ke ib qho yooj yim demo daim ntawv thov yam tsis muaj teeb meem.

Tsim ib pob rau daim ntawv thov yooj yim kuj yog ib qho yooj yim heev, tab sis tsuas yog rau "tso tawm" ib txwm muaj, piv txwv li. muaj versioned qhov chaws archives npaj rau kev txhawb nqa hauv haikuports. Rau kev txhim kho txuas ntxiv (tsim rau txhua qhov kev cog lus ntawm kev hloov pauv) nrog GitHub, txhua yam zoo li tsis yooj yim. Ntawm no Haiku xav tias zoo li Linux faib ntau dua li qhov tshwm sim ntawm Mac, qhov twg thaum koj nyem lub pob "Tsim" hauv XCode koj tau txais pob. .app, npaj tau muab tso rau hauv daim duab disk .dmg, npaj rau download ntawm kuv lub vev xaib.
Kev tsim kho txuas ntxiv ntawm cov ntawv thov raws li "server" operating system, piv txwv li, Linux, feem ntau yuav ua tau yog tias muaj kev thov los ntawm cov neeg tsim khoom, tab sis tam sim no Haiku project muaj lwm yam, ntau txoj haujlwm.

Sim koj tus kheej! Tom qab tag nrho, Haiku project muab cov duab rau booting ntawm DVD lossis USB, generated Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Txhawm rau nruab, tsuas yog rub tawm cov duab thiab sau rau hauv flash drive siv Etcher

Koj puas muaj lus nug? Peb caw koj mus rau Lavxias teb sab-hais lus telegram channel.

yuam kev txheej txheem cej luam: Yuav ua li cas tua koj tus kheej hauv ko taw hauv C thiab C ++. Haiku OS Recipe Collection

Ntawm qhov tus sau txhais lus: qhov no yog tsab xov xwm thib tsib hauv series txog Haiku.

Daim ntawv teev cov kab lus: Ua Ntej Qhov thib ob Thib peb Thib plaub

Tau qhov twg los: www.hab.com

Ntxiv ib saib