O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame

TL; AMA: O se tagata fou na vaʻaia Haiku mo le taimi muamua, taumafai e faʻapipiʻi nisi o polokalame mai le lalolagi Linux.

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame
O la'u polokalame muamua na feavea'i Haiku, afifi i lona hpkg format

Talu ai nei Na ou mauaina Haiku, ose faiga fa'ate'ia lelei mo PC.
O le asō o le a ou aʻoaʻoina ai pe faʻafefea ona faʻapipiʻi polokalame fou i lenei faiga faʻaoga. O le taulaiga autu o se faʻamatalaga o le aafiaga muamua o le fesuiaʻi i Haiku mai le manatu o se Linux developer. Ou te faatoese atu mo soʻo se mea valea na ou faia i luga o le ala, ona e leʻi atoa se vaiaso talu ona ou sii maia le Haiku.

Ou te fia ausia sini e tolu:

  • Tu'u se talosaga faigofie CLI
  • Tu'u se talosaga mai le GUI i le Qt
  • Ona afifiina lea i le hpkg format (talu ai o loʻo ou mafaufau pea e faʻafetaui le AppDir ma le AppImage mo Haiku ...)

Tatou amata. I vaega tusitusiga и atinaefaʻapea foʻi i totonu tasi e faaaogaina mai HaikuPorts Na ou maua le itu sa'o. E iai foʻi se tusi PDF i luga ole laiga BeOS: Tuuina atu o se Unix Application.
467 itulau - ma e mai le 1997! E taufaafefe le tilotilo i totonu, ae ou te faamoemoe mo le mea sili. O le faʻamalosia o upu a le atinaʻe: "na umi se taimi ona o le BeOS e leʻi tausisia POSIX," ae o Haiku "mo le tele o vaega" ua faʻapea.

Tuuina atu o se talosaga CLI faigofie

O le manatu muamua o le tuʻuina atu lea o le talosaga avrdude, ae, e pei ona aliali mai, o lea ua uma faia ua leva.

Taumafai muamua: leai se mea e matamata ai

O le mea e le mafai ona ou malamalama i ai o lena ua uma O fa'aoga ua lafo i Haiku mo le silia ma le 10 tausaga - e ui lava i le mea moni e faapea o le OS lava ia e leʻo le version 1.0.

Taumafai lona lua: mana'omia le toe tusi

O lea o le a ou faʻaaogaina pa'u-770, CLI mo le puleaina o le lomitusi Brother P-Touch 770 lea ou te faʻaaogaina e lolomi ai igoa.
Ou te lolomia igoa eseese i luga, ma atonu ua uma ona e vaai i ai i le tusiga muamua. I sina taimi muamua atu, na ou tusia ai se polokalame afifi GUI i le Python (talu ai i le Gtk +, e tatau ona toe tusia, ma o se mafuaaga lelei lea e aʻoaʻo ai).

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame
Uso P-Touch 770 lomitusi igoa. E aoga ma Haiku?

O le Haiku package manager e iloa e uiga i faletusi ma poloaiga, o lea afai ou te maua se "le mafai ona maua le libintl" savali pe a tamoe configure - Fa'atoa ou fa'alauiloa pkgman install devel:libintl ma o le a maua le afifi manaomia. E faapena foi pkgman install cmd:rsync. Ia, ma isi.

Se'i vagana ua le aoga lenei mea:

/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

Masalo o le udev e faʻavae tele i Linux ma o lea e le o iai mo Haiku. O lona uiga ou te manaʻomia le faʻasaʻoina o le code source o loʻo ou taumafai e faʻapipiʻi.
E, e le mafai ona e oso i luga o lou ulu, ma ou te le iloa foi po o fea e amata ai.

Taumafai lona tolu

E manaia pe a maua tmate mo Haiku, ona ou fa'atagaina lea o le au atina'e Haiku e fa'afeso'ota'i i la'u sauniga fa'agata - ne'i iai se mea e tupu. O faatonuga e fai si faigofie:

./autogen.sh
./configure
make
make install

E foliga lelei, aisea la e le taumafai ai i luga o 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

I lenei laʻasaga ou te tatalaina HaikuDepot ma suʻe curses.
Na maua se mea, lea na ou maua ai se faʻataʻitaʻiga mo se fesili e sili atu ona agavaa:

/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

Na ou toe alu i HaikuDepot, ma, ioe, maua devel:msgpack_c_cpp_devel. O a nei igoa uiga ese?

/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

I lenei laʻasaga, na ou iloa ai o le faʻapipiʻiina o se polokalama i Haiku e manaʻomia ai le tele o le malamalama nai lo le manaʻomia mo se toe faʻaleleia faigofie.
Na ou talanoa i le au atinaʻe faauo Haiku, e foliga mai o loʻo i ai se pusa i le msgpack, ma a maeʻa ni nai minute ou te vaʻai i se patch i HaikuPorts. E mafai ona ou vaʻai i ou lava mata pe faʻafefea ona faʻasaʻoina le afifi alu iinei (buildslave - masini masini).

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame
Fausia le msgpack fa'asa'o ile buildmaster

I le va o taimi ou te auina atu ai se patch i luga e fa'aopoopo le lagolago a Haiku i le msgpack.

I le lima minute mulimuli ane, ua uma ona maua le msgpack fou i 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.

E lei mafaufauina lelei. Na ou fai atu lena mea?!

Ou te toe foi i tua i le faafitauli muamua:

/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

O lea e foliga mai e le o sese le msgpack. O lea ou te fai atu IMAXLABEL в tty.c faʻapea:

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

Taunuʻuga:

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.

Ia, o lea ua tatou toe o atu... I le ala:

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

Mr. vaddlesplash ta'u atu ia te oe le mea e eli ai:

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

O lea na ou lafoina config.log.

Na latou faamatala mai ia te aʻu o loʻo i ai se isi mea i le libnetwork e faʻaopoopo i le libresolv i Haiku. E foliga mai e manaʻomia ona toe faʻaleleia atili le code. E tatau ona mafaufau…

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

O le fesili e faavavau: o le a le mea o tupu?

/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

O le mea lava e tasi, naʻo le talaaga. Googled ma maua lenei. Afai e te faaopoopo -lssp "O nisi taimi" fesoasoani, ou te taumafai:

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

Oka! Ua amata! Ae…

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

O le a ou taumafai e debug faila iinei:

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

O le "Bad port ID" ua pei o se kata pisinisi haiku. Atonu ei ai se manatu o se tasi po o le a le mea ua faaletonu ma pe faapefea ona toe faaleleia? Afai o lea, o le a ou faʻafouina le tusiga. So'oga i GitHub.

Tu'u le talosaga GUI ile Qt.

Ou te filifilia se talosaga QML faigofie.

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

E matua faigofie lava. E itiiti ifo i le minute!

Fa'apipi'i tusi talosaga i hpkg fa'aaoga haikuporter ma haikuports.

O le a le mea e tatau ona ou amata ai? E leai ni faʻamaumauga faigofie, ou te alu i le #haiku alalaupapa ile irc.freenode.net ma faʻalogo:

  • au package - o se auala maualalo e fai ai afifi. Mo le tele o vaega, PackageInfo ua lava mo ia, e pei ona faamatalaina i le vaega "Faia i totonu o se pusa .hpkg talafeagai"
  • E tatau ona ou faia se mea mea faapena
  • E mafai ona faʻaaoga hpkg-foafoa (e paʻu mo aʻu, lipoti sese)

E le o manino le mea e fai. Ou te masalo ou te manaʻomia se taʻiala mo le amataga o le Talofa World, sili o se vitio. E manaia foi le i ai o se folasaga talafeagai i HaikuPorter, e pei ona faia i le GNU hello.

Sa ou faitau i mea nei:

haikuporter ose meafaigaluega mo le fatuina o poloketi masani mo Haiku. E fa'aogaina le fale teu oloa HaikuPorts e fai ma fa'avae mo afifi uma. Haikuporter recipes e faʻaaogaina e fai ai afifi.

E le gata i lea, ua ou iloa e faapea:

E leai se mea e manaʻomia e teu ai fua i totonu o le teuina o HaikuPorts. E mafai ona e faia se isi faleteuoloa, tuu i ai fua o fua, ona faasino lea i ai le haikuporter.

Pau lava le mea ou te manaʻomia - pe a le o suʻeina se auala e faʻasalalau faʻalauaʻitele le afifi. Ae o se autu lenei mo se isi pou.

Fa'apipi'i haikuporter ma 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

Tusia o se fua

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
}

Fa'apotopoto le fua

Ou te faasaoina le faila i lalo o le igoa QtQuickApp-1.0.recipe, a uma ona ou tatalaina aikuporter -S ./QuickApp-1.0.recipe. E siaki fa'alagolago mo afifi uma ile fale teu oloa haikuports, lea e umi se taimi. Ou te alu e aumai se kofe.

Aisea e tatau ai i luga o le fogaeleele ona faia lenei siaki i luga o laʻu masini i le lotoifale, ae le o le totonugalemu i luga o le 'auʻaunaga e tasi mo tagata uma?

E tusa ai ma le saunoaga a Mr. vaddlesplash:

Faatasi ai ma se mea e mafai ai ona e toe tusia soʻo se faila i totonu o le fale teu oloa 😉 E mafai ona e faʻaogaina lenei mea itiiti, faʻatusatusaina faʻamatalaga talafeagai pe a manaʻomia, aua o suiga mulimuli na faia e seasea lava.

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

E foliga mai e leai se mea e pei o se faila masani o fua o loʻo i ai le faʻailoga puna o lau talosaga. E tatau ona e teuina i totonu o se fale teu oloa i le faatulagaga HaikuPorts.

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

O lenei mea moni e atili ai ona faigata le faʻapotopotoga. Ou te le fiafia i ai, ae ou te manatu e tatau ina ia iu lava ina faʻaalia uma polokalama faʻapipiʻi i HaikuPorts.

Ou te mauaina mea nei:

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

O le a le mea sese? A uma ona faitau le irc ou te faia:

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

Ua tulai mai se fesili manaia. Afai ou te faʻaopoopoina se siaki tupe i le fua - e fetaui ma le git commit lata mai mo le faʻaauauina faʻatasi? (Ua faʻamaonia e le faʻatupuina: "E le aoga. O fualaʻau ua mamanuina ina ia mautu lelei.")

Mo le fiafia, faʻaopoopo i le fua:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

E le'i faamalieina lava:

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

O le a lana mea o fai? A uma mea uma, o le git repository, o le code o loʻo i ai saʻo, e leai se mea e tatalaina. Mai loʻu manatu, o le meafaigaluega e tatau ona lava le atamai e aua le suʻeina se unpacker pe afai o loʻo i luga aʻe o le GitHub url.

Atonu o le a aoga le uri git://

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

O lea ua faitio faapea:

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

Hmm, aisea e faigata tele ai mea uma, aisea e le mafai ai ona e "galue"? A uma, e le o se mea e le masani ai le fausiaina o se mea mai GitHub. Pe o mea faigaluega e galue i le taimi lava lena, e aunoa ma le manaʻomia o se seti, pe pei ona ou taʻua o le "fussing".

Atonu o le a galue e pei o lenei:

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

Leai. Ou te maua pea lenei mea sese uiga ese ma fai, e pei ona faamatalaina iinei

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

O loʻo ou agai i luma, ae aisea ua ee mai ai ia te aʻu (GitHub e le saogalemu!) Ma o loʻo taumafai pea e tatala se mea.

E tusa ai Mr. vaddlesplash:

Ia, ioe, o le mafuaʻaga o le manaʻo e siaki le faʻamaoni o faʻamaumauga na maua mo le faʻapotopotoga. O se tasi o filifiliga o le faʻamaonia lea o le siakiina o le archive, ae e mafai, ioe, faʻapipiʻi faila taʻitasi, lea o le a le faʻatinoina, aua e umi se taimi. O le taunuuga o lenei mea o le "le saogalemu" o git ma isi VCS. E foliga mai o le tulaga lea i taimi uma, talu ai o le fatuina o se faʻamaumauga i luga o GitHub e faigofie tele ma masani ona vave. Ia, i le lumanaʻi, atonu o le a le faʻafefeteina le feʻau sese ... (matou te le toe tuʻufaʻatasia ia meaʻai i 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

Ona o le masani tuai, ou te alu e fesili i tagata lelei i luga o le ala #haiku i luga ole irc.freenode.net network. Ma o fea ou te i ai e aunoa ma i latou? Ina ua uma le faʻamatalaga, na ou iloa e tatau ona ou faʻaaogaina:

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

Lelei, na manino le mea e fai - na te siiina mai se faʻamaumauga faʻatasi ai ma le faʻailoga autu o se toe iloiloga. E valea, mai loʻu manatu, ae le o le mea tonu lea ou te manaʻo ai, o le sii mai lea o le toe iloiloga lata mai mai le matai lala.

Na faʻamatalaina e se tasi o atinaʻe i le auala lenei:

E i ai a matou lava CI, o mea uma e tuʻuina i totonu o le fale teu oloa haikuports o le a faʻapipiʻiina mo tagata uma e faʻaoga, ma matou te le manaʻo e lamatia le aoina ma le tuʻuina atu o "mea uma i le lomiga lata mai i luga."

Malamalama! I soo se tulaga, o le mea lenei na tupu:

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

E toe fai lenei ad infinitum. E foliga mai o se mea sese lenei (e i ai se talosaga? E le mafai ona ou mauaina).

С haikuporter ma fale teu oloa haikuports E leai se lagona "na'o le galue" i ai, ae i le avea ai ma se atina'e, ei ai nisi mea ou te fiafia i ai e uiga i le galulue faatasi ma Haiku. Mo le tele o vaega, e tutusa ma le Open Build Service, o se seti o meafaigaluega mo le fausiaina o Linux e fausia: matua mamana, faʻatasi ai ma se faiga faʻapitoa, ae sili atu mo laʻu talosaga laitiiti "hello world".

Toe, e tusa ai ma le saunoaga a Mr. vaddlesplash:

O le mea moni, o le HaikuPorter e matua fa'amalo lava (fa'atasi ai ma le fa'aogaina o le lint fa'apea fo'i ma se faiga fa'apitoa e fa'asili atili ai!), Ae na'o le fa'atupuina o afifi o le a aoga, nai lo le na'o le faia o afifi. O le mea lena na ia faitio ai e uiga i faʻalagolago e leʻi taʻutaʻua, faletusi e leʻi faʻaulufaleina lelei, faʻamatalaga sese, ma isi. O le sini o le puʻeina o soʻo se faʻafitauli uma, e aofia ai ma le lumanaʻi, aʻo leʻi iloa e le tagata faʻaoga (o le mea lea na le mafai ai ona faʻapipiʻi le avrdude, ona o le faʻalagolago na faʻamaonia moni i le fua). O faletusi e le na'o ni afifi ta'ito'atasi po'o ni fa'amatalaga patino SO. HaikuPorter faʻamautinoa o nei mea uma o loʻo matauina i totonu o fualaʻau lava ia e aloese ai mai mea sese i le taimi o le faʻatinoga.

I le mataupu faavae, o lenei tulaga o le malosi e faʻamaonia pe a fatuina se faiga faʻaogaina, ae e foliga mai e le manaʻomia ia te aʻu mo se talosaga "hello world". Sa ou filifili e faataitai se isi mea.

Fausiaina o talosaga i le hpkg format e faʻaaoga ai le "package create" poloaiga

Atonu o le, uila Pe o le a sili atu ona lelei faatonuga faigofie mo aʻu?

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

Faʻafuaseʻi vave, faʻafuaseʻi faigofie, faʻafuaseʻi le aoga. E pei lava ou te fiafia i ai, ofoofogia!

Fa'atonu - o le a ma o fea?

Sii le faila QtQuickApp.hpkg i ~/config/packagesfa'aaoga se faila faila, mulimuli ane fa'ailoga fa'ailoga QtQuickApp ~/config/apps.
Toe, vave fa'afuase'i, faigofie ma aoga. E ofoofogia, ofoofogia!

Ae... (o fea tatou te iai pe a aunoa ma i latou!)

O loʻo misi pea le app mai le lisi lisi lisi ma QuickLaunch. Ou te manatu ua uma ona ou iloa le auala e faaleleia ai. I le faila faila ou te siitia QtQuickApp.hpkg mai ~/config/packages i /system/packages.

Leai, o lo'o misi lava. E foliga mai, sa ou (lelei, ma faatonuga) na misia se mea.

Ina ua uma ona ou tilotilo i le "Contents" tab i HaikuDepot mo nisi talosaga, na ou iloa ai o loʻo i ai faila e pei o. /data/mimedb/application/x-vnd... o le mea e sili atu ona ofoofogia /data/deskbar/menu/Applications/….

Ia, o le a le mea e tatau ona ou tuʻuina iina? Sau loa...

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

Ou te mautinoa o le a aoga lenei togafiti, ae o loʻo tumau pea fesili: aisea e tatau ai, o le a le mea e fai? Ou te manatu o lenei mea e faʻaleagaina ai le manatu lautele o le faiga e matua faʻapitoa.

E pei ona faamatalaina e Mr. vaddlesplash:

O nisi taimi e iai tusi talosaga e mana'omia e isi tusi talosaga ae le o iai i le lisi. Mo se fa'ata'ita'iga, LegacyPackageInstaller i lau fa'amalama, fa'agaoioi .pkg fa'amaumauga i le fa'asologa o le BeOS. Ou te manaʻo i tagata faʻaoga e faʻapipiʻi, ae o lo latou i ai i le lisi o le a taʻitaʻia ai le fenumiai.

Mo nisi mafuaʻaga e foliga mai ia te aʻu o loʻo i ai se fofo faigofie, mo se faʻataʻitaʻiga Hidden=true i faila .desktop luga ole Linux. Aisea e le avea ai faʻamatalaga "natia" o se punaoa ma uiga o le faila faila?

O le mea e sili ona le faʻapitoa o le igoa o (nisi) talosaga e faʻaalia ai le lisi, deskbar, saisai malosi i le ala.

Mr. waddlesplash faʻamatalaina lenei mea:

"Deskbar" i lenei tulaga e tatau ona malamalama o se ituaiga o faaupuga lautele (i le auala lava e tasi e pei o le "taskbar", lea e faasino i le Windows application ma le manatu lautele). Ia, talu mai lenei mea deskbar, ae le o le "Deskbar", e mafai foi ona malamalama i se auala talitutusa.

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame
2 tusi "toetoe lava tutusa" ma fa'aoga i totonu

Aisea ua i ai 2 directories ma talosaga, ma aisea foi loʻu QtQuickApplication i le tasi, ae le o le isi? (A uma mea uma, e le o se tasi faiga, ae o se tagata faʻaoga lona lua, lea e mafai ona malamalama ia te aʻu lava ia).
Ou te matua le mautonu ma ou te manatu e tatau ona tuufaatasia lenei mea.

faamatalaga a Mr. vaddlesplash

O le Apps catalog o loʻo i ai tusi talosaga e le manaʻomia ile lisi. Ae o le tulaga i le lisi e manaʻomia moni lava ona faʻaleleia, ina ia sili atu ona faʻaogaina.

Fa'aoga, a leai o le a le tupu 😉

Na ou mafaufau: e matua manaʻomia le faʻafeiloaʻi o talosaga i totonu /system/apps, afai e vaʻaia e tagata faʻaoga iina, e le manaʻomia. Masalo e sili atu le tuʻuina i se isi nofoaga e le faʻafeiloaʻi ai le tagata faʻaoga? E pei lava ona faia i le Mac OS X, lea o loʻo i totonu o afifi .app, lea e le tatau ona iloa e le tagata faʻaoga i totonu /Applications, lafi i le loloto o / System/Library/…“`.

Ae faapefea tagata faalagolago?

Ou te manatu e aoga le faʻamaonia o faʻalagolago i se isi itu, saʻo? E mafai ona manatu Qt o se vaega fa'atulafonoina o le fa'apipi'iina o Haiku e ala i le fa'aletonu? Leai! Qt e le faʻapipiʻiina e ala i le faaletonu. E mafai e se faufale afifi ona otometi ona iloa faʻalagolago e ala i le siakiina o faila ELF? Na taʻu mai ia te aʻu e faia e HaikuPorter lenei mea, ae package Leai. E mafua ona ua na o se "fausia pusa" e na o le fatuina o faila na o ia hpkg.

Pe tatau ea ona fa'amanino atili le Haiku e ala i le fa'aopoopoina o se faiga fa'avae e le tatau ona fa'alagolago se afifi i afifi i fafo atu o Haiku? haikuports? (Ou te manaʻo i ai, aua o sea faiga faʻavae o le a sili atu ona faigofie mea - o le a mafai e le faiga ona otometi ona foia le faʻalagolago i soʻo se afifi e sii mai i soʻo se mea, e aunoa ma le faʻafefeina ma faʻapipiʻi punaoa faaopoopo.)

Mr. fa'amatala e waddlesplash:

Matou te le manaʻo e faʻatapulaʻaina le saʻolotoga o tagata atiaʻe, aua e manino lava afai e manaʻo le KamupaniX e lagolago lana lava seti o polokalama faʻatasi ma faʻalagolago (ma o se fale teu oloa), o le a faia atoatoa.

I lena tulaga, atonu e aoga le fautuaina o afifi vaega lona tolu e aloese mai le faalagolago i soo se mea e le o aofia ai i haikuports e ala i le afifiina atoa o mea uma e manaʻomia i le talosaga. Ae ou te manatu o se autu lea mo se tala i le lumanai i lenei faasologa. [O le tusitala o agai atu i le AppImage? - tusa. fa'aliliu]

Fa'aopoopoina se fa'aikona talosaga

Ae a pe a ou manaʻo e faʻaopoopo se tasi o ata faʻapipiʻi lelei i totonu o punaoa o laʻu talosaga fou na fatuina? E foliga mai o se autu ofoofogia lenei, o lea o le a avea ma faavae mo le isi mataupu.

E fa'afefea ona fa'atulaga faiga fa'aauau?

Vaai faalemafaufau i se poloketi e pei o Inkscape (ioe, ou te iloa e leʻi maua i Haiku, ae e faigofie ona faʻaalia i luga). O lo'o iai a latou fa'amaumauga fa'apogai https://gitlab.com/inkscape/inkscape.
Soo se taimi lava e faia ai e se tasi a latou suiga i le fale teu oloa, e faʻalauiloa ai laina paipa, pe a maeʻa ona faʻataʻitaʻiina suiga, fausia, ma faʻapipiʻiina le talosaga i totonu o afifi eseese, e aofia ai le AppImage mo Linux (o se pusa talosaga tutoʻatasi e mafai ona sii mai mo suʻega faʻapitonuʻu tusa lava pe mea e ono fa'apipi'i pe leai fo'i i luga ole faiga [Na ou iloaina! - tusa. fa'aliliu]). O le mea lava lea e tasi e tupu i talosaga tuʻufaʻatasia uma, ina ia mafai ona e sii maia le talosaga na fausia mai le faʻailoga ua faʻatulagaina i le talosaga tuʻufaʻatasia aʻo leʻi tuʻufaʻatasia.

O a'u aso lona lima ma Haiku: se'i o tatou fa'agasolo ni polokalame
Fa'atasi talosaga ma tulaga faufale ma le mafai ona fa'apipi'i fa'atasiga fa'atasi pe a manuia le faufale (fa'ailoga i le lanu meamata)

O le fausiaina e alu i totonu o pusa Docker. GitLab ofo fua tagata tamoʻe i luga o Linux, ma ou te manatu e ono mafai ona aofia ai au lava tagata tamoʻe (i le ala, ou te le iloa pe faʻapefea ona aoga lenei mea mo faiga e pei o Haiku, lea ou te iloa e leai se Docker pe tutusa, ae faʻapea foʻi mo FreeBSD e leai se Docker, o lea o lenei faʻafitauli e le faʻapitoa i Haiku).

O le mea lelei, o talosaga Haiku e mafai ona fausia i totonu o se pusa Docker mo Linux. I lenei tulaga, o le faʻapotopotoga mo Haiku e mafai ona faʻafeiloaʻi i paipa o loʻo iai. E i ai ni tagata e tu'ufa'atasia? Pe tatau ona ou faʻataʻitaʻiina uma Haiku i totonu o se pusa Docker e faʻaaoga ai se mea e pei o QEMU / KVM (faapea o le a aoga i totonu o Docker)? I le ala, o le tele o galuega faatino e faʻaaogaina mataupu faavae tutusa. Mo se faʻataʻitaʻiga, e faia e Scribus lenei mea - ua uma ona avanoa mo Haiku. E i ai se aso e oo mai ai le aso e mafai ai ona ou auina atu faapena Toso talosaga i isi poloketi e fa'aopoopo le lagolago a Haiku.

O loʻo faʻamatalaina e se tasi o atinaʻe:

Mo isi galuega fa'atino e mana'o e fai afifi latou lava, o lo'o lagolagoina le auala masani CMake/CPack. O isi faiga faufale e mafai ona lagolagoina e ala i le valaʻau saʻo o le polokalama faufale, e lelei pe a fiafia tagata i ai. O faʻamatalaga faʻaalia: e oʻo mai i le taimi nei e leʻi tele se fiafia, o lea na galue ai le haikuporter e faigofie mo i matou, ae, mulimuli ane, e tatau ona galulue faʻatasi auala uma e lua. E tatau ona matou faʻalauiloaina se seti o meafaigaluega mo le faʻaogaina o masini komepiuta mai Linux poʻo soʻo se isi lava polokalama faʻaogaina o le server (E leʻi fuafuaina Haiku e taʻavale i luga o sapalai).

Ou te tuuina atu se patipati. O lo'o fa'aaogaina masani a Linux latou te tauaveina uma nei uta fa'aopoopo ma ato fa'aopoopo (saogalemu, fa'atonuga fa'apitoa, ma isi) e mana'omia mo se faiga fa'agaoioi a le 'au'aunaga, ae le o se mea patino. O lea ou te ioe atoatoa o le mafai ona fausia Haiku apps i luga o Linux o le auala lea e alu ai.

iʻuga

O le tu'uina atu o talosaga POSIX i Haiku e mafai, ae atonu e sili atu le taugata nai lo le toe fauina masani. E mautinoa lava o le a ou tumau i lenei mea mo se taimi umi pe ana le seanoa le fesoasoani a tagata mai le #haiku channel i luga o le irc.freenode.net network. Ae e oo lava foi ia i latou e lei vave ona iloa le mea ua sese.

Talosaga tusia i le Qt o se tuusaunoaga faigofie. Ou te tuufaatasia se talosaga demo faigofie e aunoa ma ni faafitauli.

Fausiaina o se afifi mo talosaga faigofie e fai lava si faigofie, ae naʻo mo "faʻasaʻo masani", i.e. o lo'o i ai fa'amaumauga fa'amaumauga fa'apogai ua fa'atulagaina mo le lagolago i haikuports. Mo le faʻaauauina o le fausiaina (fausia mo faʻatonuga uma o suiga) ma GitHub, e foliga mai e le faigofie mea uma. O iinei e lagona ai e Haiku le sili atu o le tufatufaina atu o Linux nai lo le taunuuga i luga o le Mac, lea e te kiliki ai le "Fausia" faamau i le XCode e te maua ai se afifi. .app, sauni e fa'aofi i totonu o se ata tisiki .dmg, saunia mo le download i luga o laʻu upega tafaʻilagi.
Faʻaauau le fausiaina o talosaga e faʻavae i luga o se faiga faʻaogaina "server", mo se faʻataʻitaʻiga, Linux, o le a sili atu ona mafai pe a iai se manaʻoga mai tagata atiaʻe, ae o le taimi nei o le Haiku poloketi o loʻo i ai isi galuega sili atu ona mamafa.

Taumafai oe lava ia! A uma mea uma, o le Haiku poloketi e maua ai ata mo le faʻaosoina mai le DVD poʻo le USB, faʻatupuina ежедневно. Ina ia faʻapipiʻi, naʻo le downloadina o le ata ma susunu i le USB flash drive e faʻaaoga ai Etcher

E iai ni fesili? Matou te valaaulia oe i le gagana Rusia telegram alaata.

Fa'amatalaga sese: E faʻafefea ona fana oe ile vae ile C ma C++. Haiku OS Recipe Collection

Mai tusitala faaliliuga: o le lona lima lea o mataupu i le faasologa e uiga i Haiku.

Lisi o tala: Muamua Le lua Tolu Tulaga fa

puna: www.habr.com

Faaopoopo i ai se faamatalaga