Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena

TL; DR: Watsopano adawona Haiku kwa nthawi yoyamba, akuyesera kuyika mapulogalamu ena kuchokera ku Linux world.

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena
Pulogalamu yanga yoyamba yojambulidwa ya Haiku, yoyikidwa mumtundu wake wa hpkg

Posachedwa Ndinapeza Haiku, njira yabwino yopangira ma PC.
Lero ndiphunzira momwe ndingayikitsire mapulogalamu atsopano ku kachitidwe kameneka. Cholinga chachikulu ndikulongosola za zomwe zidachitika posinthira ku Haiku kuchokera pamalingaliro a wopanga Linux. Ndikupepesa chifukwa cha zolakwa zilizonse zopusa zomwe ndidapanga panjira, popeza sipanapite ngakhale sabata kuchokera pomwe ndidatsitsa Haiku.

Ndikufuna kukwaniritsa zolinga zitatu:

  • Ikani pulogalamu yosavuta ya CLI
  • Ikani pulogalamu kuchokera ku GUI kupita ku Qt
  • Kenako aziyika mu mtundu wa hpkg (popeza ndimaganiza zosintha AppDir ndi AppImage ya Haiku...)

Tiyeni tiyambe. M'magawo zolemba ΠΈ chitukuko, komanso wiki kuchokera ku HaikuPorts ndinapeza njira yoyenera. Palinso buku la intaneti la PDF BeOS: Kuyika Unix Application.
masamba 467 - ndipo izi zikuchokera mu 1997! Ndizowopsa kuyang'ana mkati, koma ndikuyembekeza zabwino. Mawu a wopanga mapulogalamuwa amalimbikitsa: "zinatenga nthawi yaitali chifukwa BeOS sinali yogwirizana ndi POSIX," koma Haiku "kwambiri" ali kale monga choncho.

Kuyika pulogalamu yosavuta ya CLI

Lingaliro loyamba linali kuyika pulogalamuyo avrdude, koma, monga momwe zinakhalira, izi ziri kale ndachita kalekale.

Yesani choyamba: palibe choti muwone

Zomwe sindingathe kuzimvetsa ndizakuti kale Mapulogalamu akhala akutumizidwa ku Haiku kwa zaka zopitilira 10 - ngakhale kuti OS palokha sinasinthe 1.0 panobe.

Kuyesera kwachiwiri: muyenera kulembanso

Ndiye ndigwiritsa ntchito kukwera - 770, CLI yoyang'anira chosindikizira cha M'bale P-Touch 770 chomwe ndimagwiritsa ntchito kusindikiza zilembo.
Ndimasindikiza zilembo zosiyanasiyana pamenepo, ndipo mwina mwaziwona kale m'nkhani yapitayi. M'mbuyomu, ndidalemba pulogalamu yaying'ono ya GUI ku Python (popeza ili mu Gtk +, iyenera kulembedwanso, ndipo ichi ndi chifukwa chabwino chophunzirira).

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena
Chosindikizira chosindikizira cha M'bale P-Touch 770. Kodi chidzagwira ntchito ndi Haiku?

Woyang'anira phukusi la Haiku amadziwa za malaibulale ndi malamulo, ndiye ngati ndipeza uthenga "sikupeza libintl" ndikathamanga. configure - Ndikungoyambitsa pkgman install devel:libintl ndipo phukusi lofunikira lidzapezeka. Momwemonso pkgman install cmd:rsync. Chabwino, etc.

Kupatula ngati izi sizikugwira ntchito:

/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

Mwina udev ndiwokhazikika pa Linux ndipo kulibe ku Haiku. Izi zikutanthauza kuti ndikufunika kusintha code code yomwe ndikuyesera kupanga.
Eya, sungalumphe pamutu pako, ndipo sindikudziwa komwe ndingayambire.

Yesani kachitatu

Zingakhale zabwino kukhala nazo tmate kwa Haiku, ndiye ndikanalola opanga Haiku kuti alumikizane ndi gawo langa lomaliza - ngati china chake chalakwika. Malangizowo ndi osavuta:

./autogen.sh
./configure
make
make install

Zikuwoneka bwino, bwanji osayesa pa 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

Mu sitepe iyi ndikutsegula HaikuDepot ndikusaka curses.
Chinachake chapezedwa, chomwe chidandipatsa lingaliro lafunso labwino kwambiri:

/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

Apanso ndinapita ku HaikuDepot, ndipo, ndithudi, ndinapeza devel:msgpack_c_cpp_devel. Kodi mayina achilendowa ndi ati?

/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

Pa sitepe iyi, ndinazindikira kuti kunyamula pulogalamu ku Haiku kumafuna chidziwitso chochuluka kusiyana ndi chofunikira pakumanganso kosavuta.
Ndinalankhula ndi ochezeka Haiku Madivelopa, likukhalira pali cholakwika msgpack, ndipo patapita mphindi zochepa ndikuwona chigamba mu HaikuPorts. Ndikutha kuona ndi maso anga momwe phukusi lokonzedwa kupita kuno (buildslave - makina enieni).

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena
Kumanga msgpack wokonzedwa pa buildmaster

Pakati pa nthawi ndimatumiza chigamba kumtunda kuwonjezera thandizo la Haiku ku msgpack.

Patadutsa mphindi zisanu, msgpack yosinthidwa ikupezeka kale ku 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.

Zabwino mosayembekezereka. Ndanena kuti?!

Ndikubwerera ku vuto loyamba:

/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

Tsopano zikuwoneka ngati msgpack ilibe cholakwika. Ndikupereka ndemanga IMAXLABEL Π² tty.c kotero:

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

Zotsatira:

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.

Chabwino, apa tikupitanso ... Mwa njira:

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

Bambo. waddlesplash imakuuzani komwe muyenera kukumba:

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

Apa ndalemba config.log.

Anandifotokozera kuti pali china chake mu libnetwork kuwonjezera pa libresolv pa Haiku. Zikuoneka kuti code iyenera kusinthidwanso. Zoyenera kuganiza…

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

Funso losatha: chikuchitika ndi chiyani?

/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

Zomwezo, mu mbiri yokha. Googled ndi anapeza izi. Ngati muwonjezera -lssp "nthawi zina" zimathandiza, ndimayesa:

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

Oo! Ikuyamba! Koma…

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

Ndiyesera kukonza wapamwamba pano:

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

"ID yoyipa yadoko" ili kale ngati khadi la bizinesi haiku. Mwinamwake wina ali ndi lingaliro chomwe chiri cholakwika ndi momwe angachikonzere? Ngati ndi choncho, ndisintha nkhaniyo. Lumikizani ku GitHub.

Kutumiza pulogalamu ya GUI ku Qt.

Ndimasankha pulogalamu ya QML yosavuta.

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

Zosavuta kwenikweni. Pasanathe mphindi imodzi!

Kuyika mapulogalamu mu hpkg pogwiritsa ntchito haikuporter ndi haikuports.

Ndiyambe ndi chiyani? Palibe zolembedwa zosavuta, ndimapita ku njira ya #haiku pa irc.freenode.net ndikumva:

  • timu package - njira yotsika yopangira mapaketi. Kwa mbali zambiri, PackageInfo ndi yokwanira kwa iye, monga momwe tafotokozera mu gawo "Kupanga kukhala phukusi loyenera la .hpkg"
  • Ndifunika kuchitapo kanthu zotere
  • Angagwiritse ntchito hpkg-mlengi (Zinandivuta kwa ine, malipoti olakwika)

Sizikudziwika chochita. Ndikuganiza kuti ndikufunika chiwongolero choyambira kalembedwe ka Hello World, vidiyo yabwino. Zingakhale zabwino kukhalanso ndi mawu oyamba osavuta ku HaikuPorter, monga zimachitikira ku GNU moni.

Ndinawerenga zotsatirazi:

haikuporter ndi chida chopangira mapulojekiti wamba a Haiku. Imagwiritsa ntchito chosungira cha HaikuPorts ngati maziko a phukusi lonse. Maphikidwe a Haikuporter amagwiritsidwa ntchito popanga mapaketi.

Kuonjezerapo, ndinapeza kuti:

Palibe chifukwa chosungira maphikidwe mu HaikuPorts yosungirako. Mukhoza kupanga malo ena, kuika maphikidwe mmenemo, ndiyeno kuloza haikuporter kwa izo.

Zomwe ndikufunika - ngati sindikufuna njira yotulutsira phukusili poyera. Koma uwu ndi mutu wa positi ina.

Kuyika haikuporter ndi 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

Kulemba Chinsinsi

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
}

Kusonkhanitsa Chinsinsi

Ndimasunga fayilo pansi pa dzina QtQuickApp-1.0.recipe, pambuyo pake ndikuyambitsa aikuporter -S ./QuickApp-1.0.recipe. Zodalira zimafufuzidwa pamaphukusi onse omwe ali munkhokwe haikuports, zomwe zimatenga nthawi. Ndipita kukatenga khofi.

Chifukwa chiyani chekechi chiyenera kuchitika padziko lapansi pamakina anga akumaloko, osati pa seva kamodzi kwa aliyense?

Malinga ndi mr. waddlesplash:

Ndi kotero kuti mutha kulembanso fayilo iliyonse munkhokwe πŸ˜‰ Mutha kukulitsa izi pang'ono, kuwerengera zofunikira pakafunika, chifukwa zosintha zomaliza ndizosowa.

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

Zikuwonekeratu kuti palibenso fayilo yokhazikika yomwe imakhala ndi magwero a pulogalamu yanu. Muyenera kuyisunga mumtundu wa HaikuPorts.

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

Izi zimapangitsa kuti msonkhano ukhale wovuta kwambiri. Sindimakonda kwambiri, koma ndikuganiza kuti ndizofunikira kuti mapulogalamu onse otseguka aziwonekera ku HaikuPorts.

Ndikupeza zotsatirazi:

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

Chavuta ndi chiyani? Nditawerenga irc ndimachita:

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

Funso lochititsa chidwi labuka. Ngati ndiwonjezera cheke pazakudya - kodi zingafanane ndi zomwe git yapangapo kuti iphatikizidwe mosalekeza? (Wopanga akutsimikizira kuti: "Sizigwira ntchito. Maphikidwe apangidwa kuti azikhala osasunthika.")

Kuti musangalale, onjezani ku Chinsinsi:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Simunakhutirebe:

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

Kodi iye akuchita chiyani? Kupatula apo, iyi ndi git repository, code ilipo kale mwachindunji, palibe choti mutulutse. Kuchokera kumalingaliro anga, chidacho chiyenera kukhala chanzeru mokwanira kuti musayang'ane unpacker ngati ili pamwamba pa GitHub url.

Mwina uri git:// idzagwira ntchito

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

Tsopano ikudandaula motere:

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

Hmm, chifukwa chiyani zonse ndizovuta, bwanji simungathe "kungogwira ntchito"? Kupatula apo, sizachilendo kupanga china kuchokera ku GitHub. Kaya ndi zida zomwe zimagwira ntchito nthawi yomweyo, popanda kufunikira kokhazikitsa, kapena momwe ndimatchulira "kukangana".

Mwina zikhala motere:

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

Ayi. Ndimapezabe cholakwika chodabwitsa ichi ndikuchita, monga tafotokozera apa

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

Ndikupita patsogolo pang'ono, koma bwanji ukundikuwa (GitHub sitetezeka!) Ndikuyesera kumasula chinachake.

Malingana ndi Bambo. waddlesplash:

Chabwino, inde, chifukwa chake chinali chikhumbo choyang'ana kukhulupirika kwa deta yomwe idalandilidwa kuti isonkhe. Chimodzi mwazosankha ndikutsimikizira cheke chazosungidwa, koma mutha, ndithudi, mafayilo amtundu uliwonse, omwe sangagwire ntchito, chifukwa zimatenga nthawi yayitali. Zotsatira za izi ndi "kusatetezeka" kwa git ndi VCS ina. Izi zitha kukhala choncho nthawi zonse, popeza kupanga zosungidwa pa GitHub ndikosavuta komanso mwachangu. Chabwino, m'tsogolomu, mwinamwake uthenga wolakwika sudzakhala wonyezimira ... (sitiphatikizanso maphikidwe otere ku 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

Chifukwa cha chizolowezi chakale, ndimapita kukafunsa anthu abwino panjira ya #haiku pa netiweki ya irc.freenode.net. Ndipo ndikanakhala kuti popanda iwo? Pambuyo pa chidziwitso, ndinazindikira kuti ndiyenera kugwiritsa ntchito:

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

Chabwino, zinadziwika bwino zomwe zimachita - zimatsitsa zakale zomwe zili ndi gwero la kukonzanso kwina. Ndizopusa, m'malingaliro mwanga, osati ndendende zomwe ndimafuna, mwachitsanzo, kutsitsa kusinthidwa kwaposachedwa kuchokera kunthambi yayikulu.

Mmodzi mwa opanga adafotokoza motere:

Tili ndi CI yathu, kotero zonse zomwe zimayikidwa m'nkhokwe ya haikuports zidzapakidwa kwa onse ogwiritsa ntchito, ndipo sitikufuna kuyika pachiwopsezo chosonkhanitsa ndikupereka "zonse zaposachedwa kumtunda."

Zamveka! Mulimonsemo, izi ndi zomwe zidachitika:

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

Ikubwereza malondawa infinitum. Zikuwoneka kuti ichi ndi cholakwika (kodi pali pulogalamu? Sindinayipeze).

Π‘ haikuporter ndi posungira haikuports Zilibe "ntchito chabe" kumverera kwa izo, koma monga mapulogalamu, pali zinthu zina zomwe ndimakonda kugwira ntchito ndi Haiku. Kwa mbali zambiri, ndizofanana ndi Open Build Service, zida zomangira Linux zimamanga: zamphamvu kwambiri, ndi njira yokhazikika, koma kupitilira pulogalamu yanga yaing'ono ya "hello world".

Apanso, malinga ndi Mr. waddlesplash:

Zowonadi, HaikuPorter ndiyokhazikika mwachisawawa (kuphatikizanso pali lint mode komanso njira yolimba kuti ikhale yolimba kwambiri!), Koma chifukwa imapanga mapaketi omwe angagwire ntchito, m'malo mongopanga mapaketi. Ichi ndichifukwa chake amadandaula za kudalira kosadziwika, malaibulale omwe sanatumizidwe bwino, mitundu yolakwika, ndi zina zambiri. Cholinga chake ndikugwira mavuto aliwonse, kuphatikiza amtsogolo, wogwiritsa ntchito asanadziwe (ndicho chifukwa chake sikunali kotheka kukhazikitsa avrdude, chifukwa kudalira kudafotokozedwa kwenikweni mu Chinsinsi). Malaibulale si phukusi lapadera kapenanso mitundu ina ya SO. HaikuPorter imawonetsetsa kuti zonsezi zimawonedwa m'maphikidwe okha kuti apewe zolakwika pakuphedwa.

M'malo mwake, kukhwima uku kumakhala koyenera popanga makina ogwiritsira ntchito, koma zikuwoneka kuti sizofunikira kwa ine kuti ndigwiritse ntchito "hello world". Ndinaganiza zoyesa zina.

Kupanga mapulogalamu mumtundu wa hpkg pogwiritsa ntchito lamulo la "package create".

Mwina, izi Kodi malangizo osavuta angandigwire bwino?

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

Mosayembekezereka, zosavuta mosayembekezereka, zogwira mtima mosayembekezereka. Ndendende momwe ndimakondera, zodabwitsa!

Kuyika - chiyani komanso kuti?

Anasuntha fayilo ya QtQuickApp.hpkg ku ~/config/packagespogwiritsa ntchito woyang'anira mafayilo, pambuyo pake QtQuickApp idawonekera mwamatsenga ~/config/apps.
Apanso, mosayembekezereka mofulumira, zosavuta komanso zothandiza. Zodabwitsa, zodabwitsa!

Koma... (tikanakhala kuti popanda iwo!)

Pulogalamuyi ikusowabe pamndandanda wamapulogalamu apulogalamu ndi QuickLaunch. Ndikuganiza kuti ndikudziwa kale kukonza. Mu woyang'anira mafayilo ndimasuntha QtQuickApp.hpkg kuchoka ku ~/config/packages kupita ku /system/packages.

Ayi, ndikusowabe. Mwachiwonekere, ine (chabwino, ndi malangizo) ndinaphonya chinachake.

Nditayang'ana pa "Zamkatimu" ku HaikuDepot pazogwiritsa ntchito zina, ndidawona kuti pali mafayilo ngati /data/mimedb/application/x-vnd... chodabwitsa kwambiri ndi /data/deskbar/menu/Applications/….

Chabwino, ndiyika chiyani pamenepo? Inu...

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

Ndine wotsimikiza kuti chinyengo ichi chidzagwira ntchito, koma mafunso akadali: chifukwa chiyani izi zili zofunika, ndi chiyani? Ndikuganiza kuti izi zikuwononga malingaliro onse kuti dongosololi ndi lapamwamba kwambiri.

Monga adafotokozera Mr. waddlesplash:

Nthawi zina pamakhala mapulogalamu omwe mapulogalamu ena amafunikira koma sapezeka pa menyu. Mwachitsanzo, LegacyPackageInstaller mu chithunzi chanu, kukonza .pkg zakale mumtundu wa BeOS. Ndikufuna kuti ogwiritsa ntchito awayikire, koma kupezeka kwawo mumenyu kumabweretsa chisokonezo.

Pazifukwa zina zikuwoneka kwa ine kuti pali njira yosavuta, mwachitsanzo Hidden=true mu mafayilo .desktop pa Linux. Bwanji osapanga chidziwitso "chobisika" kukhala gwero ndi mawonekedwe a fayilo?

Chomwe sichidziwika kwambiri ndi dzina la (ena) pulogalamu yomwe ikuwonetsa menyu, deskbar, womangidwa molimba m’njira.

Bambo. waddlesplash akufotokoza izi:

"Deskbar" pankhaniyi iyenera kumveka ngati liwu wamba (mofanana ndi "taskbar", yomwe imatanthawuza zonse za Windows application komanso lingaliro wamba). Chabwino, popeza izi deskbar, osati "Deskbar", izi zitha kumvekanso chimodzimodzi.

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena
2 "pafupifupi ofanana" akalozera okhala ndi ntchito mmenemo

Chifukwa chiyani pali maulalo 2 omwe ali ndi mapulogalamu, komanso chifukwa chiyani QtQuickApplication yanga ili mu imodzi, koma osati ina? (Kupatula apo, iyi si dongosolo limodzi, koma wogwiritsa ntchito wachiwiri, zomwe zingamveke kwa ine ndekha).
Ndasokonezeka kwambiri ndipo ndikuganiza kuti izi ziyenera kugwirizana.

ndemanga ya mr. waddlesplash

Kalozera wa Mapulogalamuwa ali ndi mapulogalamu omwe safunikira pa menyu. Koma zomwe zili ndi menyu zimayenera kukonzedwanso, kuti zikhale zosinthika makonda.

Kugwiritsa ntchito, kapena sizichitika πŸ˜‰

Ndidadzifunsa: kodi ndikofunikira kuchititsa mapulogalamu /system/apps, ngati ogwiritsa ntchito amaziwona pamenepo, sizoyenera. Mwina zingakhale bwino kuziyika pamalo ena pomwe wosuta sangakumane nazo? Monga momwe zimachitikira mu Mac OS X, pomwe zili m'maphukusi .app, zomwe siziyenera kuwoneka kwa wogwiritsa ntchito /Applications, kubisala mu kuya kwa /System/Library/β€¦β€œ`.

Nanga bwanji zodalira?

Ndikuganiza kuti ndikofunikira kutchula zodalira mwanjira ina, sichoncho? Kodi Qt ingatengedwe ngati gawo lovomerezeka pakukhazikitsa kwa Haiku mwachisawawa? Ayi! Qt sinayikidwe mwachisawawa. Kodi wopanga phukusi angazindikire okha kudalira mwa kuyang'ana mafayilo a ELF? Ndinauzidwa kuti HaikuPorter kwenikweni amachita izi, koma package Ayi. Ndi chifukwa ndi "wopanga phukusi" omwe amangopanga mafayilo okha hpkg.

Kodi Haiku iyenera kukhala yapamwamba kwambiri powonjezera ndondomeko kuti phukusi lisakhale ndi zodalira pa phukusi kunja kwa Haiku? haikuports? (Ndikufuna, chifukwa ndondomeko yotereyi ingapangitse zinthu kukhala zosavuta - dongosololi lidzatha kuthetsa zodalira pa phukusi lililonse lotsitsidwa kulikonse, popanda kusokoneza ndi zina zowonjezera phukusi.)

Bambo. waddlesplash akufotokoza kuti:

Sitikufuna kuchepetsa ufulu wa omanga kwambiri, chifukwa ndizodziwikiratu kuti ngati CompanyX ikufuna kuthandizira pulogalamu yakeyake ndi zodalira (ndipo posungira), idzachita momasuka.

Zikatero, kungakhale koyenera kuvomereza kuti mapaketi a chipani chachitatu apewe kudalira chilichonse chomwe sichinaphatikizidwe mu haikuports pakulongedza zonse zofunika ndi pulogalamuyi. Koma ndikuganiza kuti uwu ndi mutu wankhani yamtsogolo mumndandanda uno. [Kodi wolemba akupita ku AppImage? - pafupifupi. womasulira]

Kuyika chizindikiro cha pulogalamu

Nanga bwanji ngati ndikufuna kuwonjezera chimodzi mwazithunzi zomangidwa bwino pazida zomwe ndapanga kumene? Zikuoneka kuti uwu ndi mutu wodabwitsa, kotero udzakhala maziko a nkhani yotsatira.

Momwe mungapangire mapulogalamu osalekeza?

Ingoganizirani pulojekiti ngati Inkscape (inde, ndikudziwa kuti siyinapezeke ku Haiku, koma ndiyosavuta kuwonetsa). Iwo ali ndi source code repository https://gitlab.com/inkscape/inkscape.
Nthawi iliyonse wina akasintha zosungirako, mapaipi amamanga amakhazikitsidwa, pambuyo pake zosinthazo zimayesedwa zokha, zimamangidwa, ndikuyika pulogalamuyo m'mapaketi osiyanasiyana, kuphatikiza AppImage ya Linux (phukusi lodziyimira lokha lomwe litha kutsitsidwa kuti liyesedwe kwanuko mosasamala kanthu za kuyesedwa kwanuko. zomwe zingayikidwe kapena ayi pa dongosolo [Ndinadziwa! - pafupifupi. womasulira]). Zomwezo zimachitika ndi pempho lililonse lophatikizira nthambi, kuti mutha kutsitsa pulogalamu yomwe idapangidwa kuchokera pamakina omwe akufunsidwa musanaphatikize.

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena
Gwirizanitsani zopempha ndi ziwerengero zomanga komanso kuthekera kotsitsa ma binaries omwe aphatikizidwa ngati kumangako kukuyenda bwino (cholembedwa chobiriwira)

Ntchitoyi imayendetsedwa muzotengera za Docker. GitLab imapereka othamanga aulere pa Linux, ndipo ndikuganiza kuti zitha kukhala zotheka kuphatikiza othamanga anu (mwa njira, sindikuwona momwe izi zingagwirire ntchito machitidwe ngati Haiku, omwe ndikudziwa kuti alibe Docker kapena ofanana, koma komanso kwa FreeBSD kulibe Docker, kotero vutoli si la Haiku yokha).

Momwemo, mapulogalamu a Haiku amatha kumangidwa mkati mwa chidebe cha Docker cha Linux. Zikatero, msonkhano wa Haiku ukhoza kuyambitsidwa mu mapaipi omwe alipo. Kodi pali ma cross compilers? Kapena nditsanzire Haiku yonse mkati mwa chidebe cha Docker pogwiritsa ntchito china chake ngati QEMU/KVM (poganiza kuti izigwira ntchito motere mkati mwa Docker)? Mwa njira, mapulojekiti ambiri amagwiritsa ntchito mfundo zofanana. Mwachitsanzo, Scribus amachita izi - zilipo kale ku Haiku. Tsiku lina ndidzatumiza zotere Kokani zopempha kumapulojekiti ena kuti muwonjezere thandizo la Haiku.

Mmodzi mwa opanga akufotokoza:

Kwa mapulojekiti ena omwe akufuna kupanga mapaketi okha, njira yanthawi zonse ya CMake/CPack imathandizidwa. Machitidwe ena omanga amatha kuthandizidwa poyimbira pulogalamu yomanga phukusi mwachindunji, zomwe zili bwino ngati anthu ali nazo chidwi. Zochitika zikuwonetsa: mpaka pano sipanakhalepo chidwi chochuluka, kotero haikuporter inagwira ntchito ngati yabwino kwa ife, koma, pamapeto pake, njira zonsezi ziyenera kugwirira ntchito limodzi. Tiyenera kuyambitsa zida zomangira mapulogalamu osiyanasiyana kuchokera ku Linux kapena makina ena aliwonse a seva (Haiku sinapangidwe kuti iziyenda pa maseva).

Ndikupereka mokweza. Ogwiritsa ntchito nthawi zonse a Linux amanyamula katundu wowonjezera woterewu ndi katundu wowonjezera (chitetezo, kulamulira mwamphamvu, ndi zina zotero) zomwe ndizofunikira pa makina ogwiritsira ntchito seva, koma osati payekha. Chifukwa chake ndikuvomereza kwathunthu kuti kutha kupanga mapulogalamu a Haiku pa Linux ndi njira yopitira.

Pomaliza

Kuyika mapulogalamu a POSIX kupita ku Haiku ndikotheka, koma kungakhale okwera mtengo kuposa kumanganso wamba. Ndikadakhala ndi izi kwa nthawi yayitali pakadapanda thandizo la anthu ochokera kunjira ya #haiku pa netiweki ya irc.freenode.net. Koma ngakhale iwo sanali kuona mwamsanga vuto.

Mapulogalamu olembedwa mu Qt ndiosavuta. Ndayika pulogalamu yachiwonetsero yosavuta popanda vuto lililonse.

Kupanga phukusi lazosavuta kugwiritsa ntchito ndikosavuta, koma kwa "omasulidwa mwachikhalidwe", i.e. kukhala ndi zolemba zakale zomwe zidapangidwa kuti zizithandizira ku haikuports. Pakumanga kosalekeza (kumanga pazosintha zilizonse) ndi GitHub, chilichonse chikuwoneka kuti sichophweka. Apa Haiku akumva ngati kugawa kwa Linux kuposa zotsatira za Mac, pomwe mukadina batani la "Build" mu XCode mumapeza phukusi. .app, yokonzeka kuyikidwa mu chithunzi cha disk .dmg, yokonzekera kutsitsa patsamba langa.
Kumanga mosalekeza kwa mapulogalamu ozikidwa pa "seva" yoyendetsera ntchito, mwachitsanzo, Linux, zitha kukhala zotheka ngati pakufunika kuchokera kwa opanga, koma pakadali pano polojekiti ya Haiku ili ndi ntchito zina, zolimbikira.

Yesani nokha! Kupatula apo, polojekiti ya Haiku imapereka zithunzi zoyambira kuchokera ku DVD kapena USB, zopangidwa Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Kuti muyike, ingotsitsani chithunzicho ndikuchiwotcha ku USB flash drive pogwiritsa ntchito Msika

Muli ndi mafunso? Tikukuitanani ku olankhula Chirasha uthengawo njira.

Zolakwika mwachidule: Momwe mungadziwombera pamapazi mu C ndi C ++. Haiku OS Recipe Collection

kuchokera wolemba kumasulira: iyi ndi nkhani yachisanu pamndandanda wa Haiku.

Mndandanda wa zolemba: Yoyamba Yachiwiri Chachitatu Chachinayi

Source: www.habr.com

Kuwonjezera ndemanga