Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye

TL, DR: Wani sabonbie ya ga Haiku a karon farko, yana ƙoƙarin tura wasu shirye-shirye daga duniyar Linux.

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye
Shirin Haiku na farko da aka aika, an tattara shi cikin tsarinsa na hpkg

Kwanan nan Na gano Haiku, babban tsarin aiki mai kyau na PC.
A yau zan koyi yadda ake tura sabbin shirye-shirye zuwa wannan tsarin aiki. Babban abin da aka fi mayar da hankali shine bayanin ƙwarewar farko na canzawa zuwa Haiku daga ra'ayi na mai haɓaka Linux. Ina neman afuwar duk wani wawan kuskure da na tafka a hanya, domin ko mako guda kenan da fara downloading na Haiku.

Ina so in cim ma burina guda uku:

  • Matsar da aikace-aikacen CLI mai sauƙi
  • Sanya aikace-aikacen daga GUI zuwa Qt
  • Sannan shirya su a tsarin hpkg (tunda har yanzu ina tunanin daidaita AppDir da AppImage don Haiku...)

Mu fara. A cikin sassan takardun shaida и ci gabakazalika wiki daga HaikuPorts na sami hanya madaidaiciya. Akwai ma littafin PDF na kan layi BeOS: Shigar da Aikace-aikacen Unix.
467 shafuka - kuma wannan daga 1997 ne! Yana da ban tsoro duba ciki, amma ina fatan mafi kyau. Kalmomin masu haɓakawa suna ƙarfafawa: "ya ɗauki lokaci mai tsawo saboda BeOS bai dace da POSIX ba," amma Haiku "ga mafi yawancin" ya riga ya kasance kamar haka.

Canja wurin aikace-aikacen CLI mai sauƙi

Tunani na farko shine shigar da aikace-aikacen avrdude, amma, kamar yadda ya juya, wannan ya riga ya kasance aikata da dadewa.

Gwada farko: babu abin kallo

Abin da ba zan iya gane shi ba shi ne An aika da aikace-aikacen zuwa Haiku sama da shekaru 10 - duk da cewa OS kanta ba ma version 1.0 ba tukuna.

Ƙoƙari na biyu: buƙatar sake rubutawa

Don haka zan yi amfani shafi-770, CLI don sarrafa firinta na Brother P-Touch 770 wanda nake amfani da shi don buga takalmi.
Ina buga lakabi iri-iri a kansa, kuma mai yiwuwa kun riga kun gani a labarin da ya gabata. A baya kadan, na rubuta ƙaramin shirin nade na GUI a cikin Python (tun yana cikin Gtk+, dole ne a sake rubuta shi, kuma wannan shine kyakkyawan dalili na koyo).

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye
Brother P-Touch 770 label printer. Zai yi aiki da Haiku?

Manajan fakitin Haiku ya san game da ɗakunan karatu da umarni, don haka idan na sami saƙon "ba zan iya samun libintl" lokacin da nake aiki ba. configure - Na ƙaddamar kawai pkgman install devel:libintl kuma za a sami kunshin da ake buƙata. Hakanan pkgman install cmd:rsync. To, da sauransu.

Sai dai lokacin da wannan baya aiki:

/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

Wataƙila udev ya kasance tushen Linux kuma don haka babu shi don Haiku. Wato ina buƙatar gyara lambar tushe da nake ƙoƙarin haɗawa.
Eh, ba za ku iya tsalle kan ku ba, kuma ban ma san ta inda zan fara ba.

Gwaji na uku

Zai yi kyau a samu tmate na Haiku, to zan ƙyale masu haɓaka Haiku su haɗa zuwa zaman tasha - idan wani abu ya faru. Umarnin suna da sauƙi:

./autogen.sh
./configure
make
make install

Yayi kyau, to me yasa ba gwada shi akan Haiku ba?

/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

A cikin wannan mataki na buɗe HaikuDepot kuma bincika curses.
An sami wani abu, wanda ya ba ni alamar tambaya mafi cancanta:

/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 sake zuwa HaikuDepot, kuma, ba shakka, samu devel:msgpack_c_cpp_devel. Menene waɗannan baƙin sunaye?

/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

A wannan matakin, na gane cewa aika shirin zuwa Haiku yana buƙatar ƙarin ilimi fiye da yadda ake buƙata don sake ginawa mai sauƙi.
Na yi magana da abokan haɓaka Haiku, ya zama akwai matsala a cikin msgpack, kuma bayan ƴan mintuna na ga faci a HaikuPorts. Ina iya gani da idona yadda kunshin da aka gyara zuwa nan (buildslave - kama-da-wane inji).

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye
Gina fakitin msgpack da aka gyara akan ginin ginin

A tsakanin lokuta na aika faci zuwa sama don ƙara tallafin Haiku zuwa msgpack.

Bayan mintuna biyar, an riga an sabunta msgpack a 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.

Da kyau ba zato ba tsammani. Nace haka?!

Na dawo kan matsalar ta asali:

/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

Yanzu yana kama da msgpack ba shi da laifi. Ina yin sharhi IMAXLABEL в tty.c kamar wannan:

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

Sakamako:

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.

To, mu sake komawa... Af!

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

Mr. waddlesplash yana gaya muku inda za ku tono:

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

Anan nayi posting config.log.

Sun bayyana mani cewa akwai wani abu a cikin libnetwork ban da libresolv akan Haiku. Da alama lambar tana buƙatar ƙara gyarawa. Bukatar tunani…

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

Tambaya ta har abada: menene ke faruwa?

/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

Haka abu, kawai a profile. Googled da sami wannan. Idan kun ƙara -lssp "wani lokaci" yana taimakawa, na gwada:

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

Kai! Yana farawa! Amma…

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

Zan yi kokarin gyara kuskure fayil a nan:

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

"Bad tashar jiragen ruwa ID" ya riga ya zama kamar katin kasuwanci haiku. Wataƙila wani yana da ra'ayin abin da ba daidai ba kuma yadda za a gyara shi? Idan haka ne, zan sabunta labarin. Hanyar zuwa GitHub.

Canja wurin aikace-aikacen GUI zuwa Qt.

Na zaɓi aikace-aikacen QML mai sauƙi.

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

Mai sauqi qwarai. Kasa da minti daya!

Aikace-aikacen tattarawa a cikin hpkg ta amfani da haikuporter da haikuports.

Me zan fara da shi? Babu wani abu mai sauƙi, na je tashar #haiku akan irc.freenode.net in ji:

  • tawagar package - ƙananan hanya don ƙirƙirar fakiti. Ga mafi yawancin, PackageInfo ya ishe ta, kamar yadda aka bayyana a cikin sashin "Samar da shi cikin kunshin .hpkg da ya dace"
  • Ina bukatan yin wani abu irin wannan
  • Za a iya amfani hpkg- mahalicci (Yana damun ni, rahoton kuskure)

Ba a bayyana abin da za a yi ba. Ina tsammanin ina buƙatar jagorar mafari salon duniya Hello, da kyau bidiyo. Zai yi kyau a sami gabatarwa mai dacewa ga HaikuPorter, kamar yadda ake yi a GNU sannu.

Ina karanta kamar haka:

haikuporter kayan aiki ne don ƙirƙirar ayyukan fakiti na gama gari don Haiku. Yana amfani da ma'ajiyar HaikuPorts azaman tushe ga duk fakiti. Ana amfani da girke-girke na Haikuporter don ƙirƙirar fakiti.

Har ila yau, na gano cewa:

Babu buƙatar adana girke-girke a ma'ajiyar HaikuPorts. Kuna iya yin wani ma'ajiyar, saka girke-girke a ciki, sannan ku nuna masa haikuporter.

Kawai abin da nake buƙata - idan ba neman hanyar da za a fito da kunshin a bainar jama'a ba. Amma wannan batu ne don wani post.

Sanya haikuporter da 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

Rubuta girke-girke

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
}

Haɗa girke-girke

Na ajiye fayil ɗin ƙarƙashin sunan QtQuickApp-1.0.recipe, bayan haka na kaddamar aikuporter -S ./QuickApp-1.0.recipe. Ana duba abubuwan dogaro ga duk fakitin da ke cikin ma'ajiyar haikuports, wanda ke ɗaukar ɗan lokaci. Zan je in sha kofi.

Me yasa a duniya yakamata a yi wannan rajistan akan injina na gida, kuma ba a tsakiya akan sabar sau ɗaya ga kowa ba?

A cewar Mr. waddlesplash:

Tare da irin wannan za ku iya sake rubuta kowane fayil a cikin ma'ajiyar 😉 Kuna iya inganta wannan kaɗan, ƙididdige mahimman bayanan lokacin da ake buƙata, saboda canje-canjen da aka yi na ƙarshe ba su da yawa.

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

Ya zama babu wani abu kamar fayil ɗin girke-girke na yau da kullun wanda ya ƙunshi lambar tushe na aikace-aikacen ku. Kuna buƙatar adana shi a cikin ma'ajiya a cikin tsarin HaikuPorts.

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

Wannan gaskiyar ta sa taron ya zama mai wahala. Ba na son shi musamman, amma ina ganin ya zama dole domin a ƙarshe duk buɗaɗɗen software za su bayyana a HaikuPorts.

Ina samun mai zuwa:

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

Me ke faruwa? Bayan karanta irc na yi:

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

Tambaya mai ban sha'awa ta taso. Idan na ƙara checksum zuwa girke-girke - shin zai dace da sabuwar git don ci gaba da haɗin kai? (Mai haɓakawa ya tabbatar da cewa: "Ba zai yi aiki ba. An tsara girke-girke don zama ɗan kwanciyar hankali.")

Don jin daɗi, ƙara zuwa girke-girke:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Har yanzu ban gamsu ba:

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

Me yake yi? Bayan haka, wannan ma'ajiyar git ce, lambar ta riga ta can kai tsaye, babu abin da za a buɗe. Daga ra'ayi na, kayan aiki ya kamata ya zama mai wayo don kada ya nemi mai ɗaukar kaya idan yana sama da GitHub url.

Wataƙila uri git:// zai yi aiki

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

Yanzu yana korafi kamar haka:

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

Hmm, me yasa komai yake da rikitarwa, me yasa ba za ku iya "aiki kawai" ba? Bayan haka, ba sabon abu ba ne don gina wani abu daga GitHub. Ko kayan aikin da ke aiki nan da nan, ba tare da buƙatar saiti ba, ko kuma kamar yadda na kira shi "fussing".

Wataƙila zai yi aiki kamar haka:

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

A'a. Har yanzu ina samun wannan kuskuren ban mamaki kuma na aikata, kamar yadda aka bayyana anan

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

Ina matsawa kaɗan kaɗan, amma me yasa yake kururuwa a kaina (GitHub ba shi da tsaro!) Kuma har yanzu yana ƙoƙarin kwashe wani abu.

A cewar Mr. waddlesplash:

To, a, dalilin shine sha'awar duba amincin bayanan da aka karɓa don taro. Ɗaya daga cikin zaɓuɓɓukan shine tabbatar da adadin kuɗin ajiyar kayan tarihi, amma kuna iya, ba shakka, zana fayilolin mutum ɗaya, waɗanda ba za a aiwatar da su ba, saboda yana ɗaukar tsayi da yawa. Sakamakon wannan shine "rashin tsaro" na git da sauran VCS. Wataƙila hakan zai kasance koyaushe, tunda ƙirƙirar rumbun adana bayanai akan GitHub abu ne mai sauƙi kuma sau da yawa cikin sauri. To, a nan gaba, watakila saƙon kuskure ba zai zama mai haske sosai ba... (ba mu ƙara haɗa irin wannan girke-girke a 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

Daga tsohuwar al'ada, zan tambayi mutanen kirki akan tashar #haiku akan hanyar sadarwar irc.freenode.net. Kuma ina zan kasance ba tare da su ba? Bayan bayyanar, na gane cewa ya kamata in yi amfani da:

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

Da kyau, ya bayyana a fili abin da yake yi - yana zazzage rumbun adana bayanai tare da lambar tushe na wani bita. Yana da wauta, daga ra'ayi na, kuma ba daidai abin da nake so ba, wato, zazzage sabon bita daga babban reshe.

Ɗaya daga cikin masu haɓakawa ya bayyana shi kamar haka:

Muna da namu CI, don haka duk abin da aka sanya a cikin ma'ajiyar haikuports za a shirya shi ga duk masu amfani, kuma ba ma so mu yi kasadar tattarawa da isar da "komai a cikin sabon sigar sama."

An fahimta! Ko ta yaya, abin da ya faru ke nan:

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

Yana maimaita wannan ad infinitum. A fili wannan kuskure ne (akwai aikace-aikace? Ban same shi ba).

С haikuporter da ma'ajiya haikuports Ba shi da "aiki kawai" jin shi, amma a matsayin mai haɓakawa, akwai wasu abubuwan da nake so game da aiki tare da Haiku. Ga mafi yawancin, yana kama da Buɗe Gina Sabis, saitin kayan aikin gina Linux: mai ƙarfi sosai, tare da tsari mai tsari, amma wuce gona da iri don ƙaramin aikace-aikacen "sannu duniya".

Bugu da kari, a cewar Mr. waddlesplash:

Tabbas, HaikuPorter yana da tsattsauran ra'ayi ta tsohuwa (tare da akwai yanayin lint da kuma yanayin ƙaƙƙarfan don sanya shi ya fi tsauri!), Amma kawai saboda yana ƙirƙirar fakiti waɗanda za su yi aiki, maimakon ƙirƙirar fakiti kawai. Shi ya sa yake korafin abin dogaro da ba a bayyana ba, dakunan karatu ba a shigo da su yadda ya kamata, ba daidai ba, da dai sauransu. Manufar ita ce a kama kowace matsala, ciki har da na gaba, kafin mai amfani ya san game da shi (wannan shine dalilin da ya sa ba a iya shigar da avrdude ba, saboda an ƙayyade ainihin dogara a cikin girke-girke). Dakunan karatu ba fakitin mutum ɗaya ba ne ko ma takamaiman nau'ikan SO. HaikuPorter yana tabbatar da cewa ana lura da duk wannan a cikin girke-girke da kansu don guje wa kurakurai yayin aiwatarwa.

A ka'ida, wannan matakin tsauri ya cancanta lokacin ƙirƙirar tsarin aiki, amma yana da alama ba lallai ba ne a gare ni don aikace-aikacen "sannu duniya". Na yanke shawarar gwada wani abu dabam.

Gina aikace-aikacen a cikin tsarin hpkg ta amfani da umarnin "fakitin ƙirƙira".

Zai iya zama, wannan Shin umarni masu sauƙi za su yi mini aiki mafi kyau?

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

Ba zato ba tsammani, mai sauƙi mai sauƙi, mai tasiri ba zato ba tsammani. Daidai yadda nake son shi, ban mamaki!

Shigarwa - menene kuma a ina?

Matsar da fayil ɗin QtQuickApp.hpkg zuwa ~/config/packagesta amfani da mai sarrafa fayil, bayan haka QtQuickApp da sihiri ya bayyana a ciki ~/config/apps.
Bugu da ƙari, ba zato ba tsammani da sauri, mai sauƙi da tasiri. Abin mamaki, abin mamaki!

Amma ... (inda za mu kasance ba tare da su ba!)

Har yanzu app ɗin yana ɓacewa daga jerin menu na ƙa'idodin da QuickLaunch. Ina tsammanin na riga na san yadda zan gyara shi. A cikin mai sarrafa fayil na motsa QtQuickApp.hpkg daga ~/config/packages zuwa /system/packages.

A'a, har yanzu babu. A bayyane, ni (da kyau, da umarnin) sun rasa wani abu.

Bayan duba shafin "Contents" a cikin HaikuDepot don wasu aikace-aikace, na ga cewa akwai fayiloli kamar /data/mimedb/application/x-vnd... abin da ya fi ban mamaki shi ne /data/deskbar/menu/Applications/….

To, me zan sa a wurin? Ku zo...

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

Na tabbata cewa wannan dabarar za ta yi aiki, amma tambayoyin sun kasance: me yasa wannan ya zama dole, menene? Ina tsammanin wannan yana lalata ra'ayin gaba ɗaya cewa tsarin yana da haɓaka sosai.

Kamar yadda Mr. waddlesplash:

Wani lokaci akwai aikace-aikacen da wasu aikace-aikacen ke buƙata amma basa cikin menu. Misali, LegacyPackageInstaller a cikin hoton hotonku, sarrafa .pkg archives a tsarin BeOS. Ina son masu amfani su sanya su, amma kasancewar su a cikin menu zai haifar da rudani.

Don wasu dalilai yana gani a gare ni cewa akwai mafita mafi sauƙi, misali Hidden=true cikin fayiloli .desktop na Linux. Me yasa ba za a mai da bayanan "boye" hanya da sifa na tsarin fayil ba?

Abin da ba shi da dabara musamman shine sunan (wasu) aikace-aikacen da ke nuna menu, deskbar, daure da daure a hanya.

Mr. waddlesplash yayi bayanin wannan:

"Deskbar" a cikin wannan yanayin ya kamata a fahimci shi azaman nau'in kalma na gaba ɗaya (kamar yadda "taskbar", wanda ke nufin duka aikace-aikacen Windows da ra'ayi na gaba ɗaya). To, tun da wannan deskbar, ba “Deskbar” ba, ana iya fahimtar wannan kuma ta irin wannan hanya.

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye
2 "kusan iri ɗaya" kundin adireshi tare da aikace-aikace a cikinsu

Me yasa akwai kundayen adireshi 2 tare da aikace-aikace, kuma me yasa QtQuickApplication dina yake a ɗaya, amma ba cikin ɗayan ba? (Bayan haka, wannan ba tsarin ɗaya bane, amma mai amfani na biyu, wanda zai iya fahimta da kaina).
Gaskiya na rude kuma ina ganin ya kamata a hade wannan.

sharhi daga Mr. waddlesplash

Katalojin Apps ya ƙunshi aikace-aikacen da ba a buƙata a cikin menu. Amma halin da ake ciki tare da menu da gaske yana buƙatar haɓakawa, don ƙara haɓaka shi.

Aikace-aikacen, ko ba zai faru ba 😉

Na yi mamaki: shin da gaske wajibi ne a shigar da aikace-aikace a ciki /system/apps, idan masu amfani sun gan su a can, ba a so. Wataƙila zai fi kyau a sanya su a wani wuri inda mai amfani ba zai haɗu da su ba? Kamar dai yadda ake yi a Mac OS X, inda abubuwan da ke cikin kunshin .app, wanda bai kamata a ga mai amfani a ciki ba /Applications, boye cikin zurfin /System/Library/…“`.

Game da abin dogaro fa?

Ina ganin yana da daraja fayyace abin dogaro ko ta yaya, daidai? Za a iya ɗaukar Qt a matsayin wani ɓangare na tilas na shigarwa Haiku ta tsohuwa? A'a! Qt ba a shigar da shi ta tsohuwa ba. Shin maginin fakiti na iya gano abubuwan dogaro ta atomatik ta duba fayilolin ELF? An gaya mini cewa HaikuPorter a zahiri yana yin wannan, amma package A'a. Wannan saboda kawai "fakitin magini" ne wanda kawai ke ƙirƙirar fayiloli da kansa hpkg.

Shin ya kamata a sanya Haiku ya zama mafi ƙwarewa ta hanyar ƙara manufofin cewa kunshin bai kamata ya dogara da fakitin da ke wajen Haiku ba? haikuports? (Ina so, saboda irin wannan manufar za ta sauƙaƙe abubuwa da yawa - tsarin zai iya magance abubuwan dogaro da kowane fakitin da aka zazzage daga ko'ina ta atomatik, ba tare da yin rikici tare da ƙarin tushen fakitin ba.)

Mr. waddlesplash yayi bayani:

Ba za mu so mu iyakance 'yancin masu haɓakawa sosai ba, saboda a bayyane yake cewa idan CompanyX yana so ya goyi bayan tsarin nasa na software tare da abin dogara (sabili da haka wurin ajiya), zai yi haka gaba daya kyauta.

A wannan yanayin, yana iya zama darajar bayar da shawarar cewa fakitin ɓangare na uku su guji dogaro akan duk wani abu da ba a haɗa su a cikin haikuports ta hanyar tattara duk abin da ake buƙata tare da aikace-aikacen gaba ɗaya. Amma ina tsammanin wannan batu ne don labarin nan gaba a cikin wannan jerin. [Shin marubucin yana kan hanyar zuwa AppImage? - kimanin. mai fassara]

Ƙara gunkin aikace-aikacen

Me zai faru idan ina so in ƙara ɗaya daga cikin ingantattun gumakan da aka gina a cikin albarkatun sabuwar aikace-aikacena? Ya bayyana cewa wannan batu ne mai ban mamaki, don haka zai zama tushen labarin na gaba.

Yadda za a tsara ci gaba da gina aikace-aikacen?

Ka yi tunanin wani aiki kamar Inkscape (eh, na san cewa ba a samuwa a Haiku ba, amma ya dace a nuna shi). Suna da wurin ajiyar lambar tushe https://gitlab.com/inkscape/inkscape.
A duk lokacin da wani ya yi canje-canjen su a wurin ajiyar, ana ƙaddamar da bututun mai, bayan haka za a gwada sauye-sauye ta atomatik, a gina su, kuma a haɗa aikace-aikacen cikin fakiti daban-daban, gami da AppImage na Linux (kunshin aikace-aikacen da ke tsaye wanda za a iya saukewa don gwaji na gida ba tare da la'akari da shi ba. abin da za a iya ko ba za a iya shigar a kan tsarin ba [Na sani! - kimanin. mai fassara]). Haka abin yake faruwa tare da kowane buƙatun haɗin reshe, don haka zaku iya zazzage aikace-aikacen da aka gina daga lambar da aka tsara a cikin buƙatar haɗakarwa kafin haɗawa.

Rana ta biyar tare da Haiku: bari mu kawo wasu shirye-shirye
Haɗa buƙatun tare da matakan ginawa da ikon zazzage abubuwan binaries da aka haɗa idan ginin ya yi nasara (alama a kore)

Ginin yana gudana a cikin kwantena Docker. GitLab yana ba da masu gudu kyauta akan Linux, kuma ina tsammanin zai yiwu a haɗa da naku masu gudu (a hanya, ban ga yadda wannan zai yi aiki ga tsarin kamar Haiku ba, wanda na san ba shi da Docker ko makamancin haka, amma Hakanan don FreeBSD babu Docker, don haka wannan matsalar ba ta musamman ga Haiku ba).

Da kyau, ana iya gina aikace-aikacen Haiku a cikin akwati Docker don Linux. A wannan yanayin, ana iya shigar da taron Haiku a cikin bututun da ke akwai. Akwai masu tara giciye? Ko zan yi koyi da duk Haiku a cikin akwati Docker ta amfani da wani abu kamar QEMU/KVM (yana zaton zai yi aiki haka a cikin Docker)? Af, ayyuka da yawa suna amfani da ka'idodi iri ɗaya. Misali, Scribus yana yin wannan - an riga an sami Haiku. Wata rana zai zo da zan iya aikawa такие Ja buƙatun zuwa wasu ayyuka don ƙara tallafin Haiku.

Daya daga cikin masu haɓakawa yayi bayani:

Don sauran ayyukan da ke son ƙirƙirar fakitin da kansu, ana tallafawa hanyar CMake/CPack na yau da kullun. Sauran tsarin ginawa ana iya tallafawa ta hanyar kiran shirin ginin kunshin kai tsaye, wanda ke da kyau idan mutane suna sha'awar sa. Kwarewa ya nuna: har yanzu ba a sami sha'awa sosai ba, don haka haikuporter yayi aiki kamar yadda ya dace a gare mu, amma, a ƙarshe, duka hanyoyin ya kamata suyi aiki tare. Ya kamata mu gabatar da saitin kayan aikin don software na giciye daga Linux ko kowane tsarin aiki na uwar garken (ba a tsara Haiku don aiki akan sabar ba).

Na yi tabo. Masu amfani da Linux na yau da kullun suna ɗaukar duk wannan ƙarin kaya da ƙarin kaya (tsaro, kulawa mai ƙarfi, da sauransu) waɗanda ke da mahimmanci ga tsarin aiki na uwar garken, amma ba don na sirri ba. Don haka na yarda gaba ɗaya cewa samun damar gina Haiku apps akan Linux shine hanyar da za a bi.

ƙarshe

Aiwatar da aikace-aikacen POSIX zuwa Haiku yana yiwuwa, amma yana iya zama mafi tsada fiye da yadda aka saba ginawa. Tabbas zan makale da wannan na dogon lokaci idan ba don taimakon mutane daga tashar #haiku akan hanyar sadarwar irc.freenode.net ba. Amma ko da yaushe ba su ga abin da ba daidai ba.

Aikace-aikacen da aka rubuta a cikin Qt ban da sauƙi ne. Na haɗa aikace-aikacen demo mai sauƙi ba tare da wata matsala ba.

Gina fakitin don aikace-aikace masu sauƙi kuma yana da sauƙi, amma kawai don "saki na al'ada", watau. samun ingantaccen rumbun adana bayanan tushe da aka yi niyya don tallafi a haikuports. Don ci gaba da ginawa (gina ga kowane sadaukarwar canje-canje) tare da GitHub, komai da alama bai zama mai sauƙi ba. Anan Haiku yana jin kamar rarraba Linux fiye da sakamakon akan Mac, inda lokacin da ka danna maɓallin "Gina" a cikin XCode zaka sami kunshin. .app, shirye don sakawa cikin hoton diski .dmg, an shirya don saukewa akan gidan yanar gizona.
Ci gaba da gina aikace-aikace bisa tsarin aiki na “uwar garken”, alal misali, Linux, da alama zai yuwu idan akwai buƙata daga masu haɓakawa, amma a halin yanzu aikin Haiku yana da wasu ayyuka masu mahimmanci.

Gwada shi da kanku! Bayan haka, aikin Haiku yana ba da hotuna don yin booting daga DVD ko USB, wanda aka haifar ежедневно. Don shigarwa, kawai zazzage hoton kuma rubuta shi zuwa filasha ta amfani da shi Etcher

Kuna da wasu tambayoyi? Muna gayyatar ku zuwa harshen Rashanci tashar telegram.

Duban kuskure: Yadda ake harbi kanka a ƙafa a C da C++. Haiku OS tarin girke-girke

daga marubuci fassarar: wannan shine labari na biyar a cikin jerin abubuwan da suka shafi Haiku.

Jerin labarai: Na farko Na biyu Na uku Na hudu

source: www.habr.com

Add a comment