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.
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).
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).
/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:
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
/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.
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
"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.
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.
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.")
~/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.
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".
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:
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
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.
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.
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.
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