Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa

TL; DR: A newbie akaona Haiku kekutanga, achiedza kutakura mamwe mapurogiramu kubva kuLinux world.

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa
Yangu yekutanga Haiku ported program, yakaiswa mune yayo hpkg fomati

Munguva pfupi yapfuura Ndakawana Haiku, inoshamisa yakanaka inoshanda sisitimu yePC.
Nhasi ini ndichadzidza nzira yekuisa zvirongwa zvitsva kune ino inoshanda sisitimu. Chinonyanya kutariswa irondedzero yechiitiko chekutanga chekuchinja kuHaiku kubva pakuona kweanovandudza Linux. Ndinokumbira ruregerero nokuda kwezvikanganiso zveupenzi zvandakaita munzira, sezvo pasina kana vhiki kubva pandakatanga kudhaunirodha Haiku.

Ndinoda kuzadzisa zvinangwa zvitatu:

  • Port iri nyore CLI application
  • Port an application kubva kuGUI kuenda kuQt
  • Wobva waaisa muhpkg fomati (sezvo ndichiri kufunga nezve kugadzirisa AppDir uye AppImage yeHaiku...)

Ngatitangei. Muzvikamu zvinyorwa ΠΈ budiriropamwe ne wiki Vasai kubva kuHaikuPorts ndakawana gwara chairo. Iko kune kunyange online PDF bhuku BeOS: Kuisa Unix Chikumbiro.
467 mapeji - uye izvi zvinobva muna 1997! Zvinotyisa kutarisa mukati, asi ndinovimba pane zvakanakisa. Mashoko emugadziri anokurudzira: "yakatora nguva yakareba nokuti BeOS yakanga isiri POSIX-inoenderana," asi Haiku "kune chikamu chikuru" chatove chakadaro.

Kutakura iri nyore CLI application

Pfungwa yekutanga yaive yekuisa application avrdude, asi, sezvazvakazoitika, izvi zvatove yakagadzirwa kare kare.

Chekutanga edza: hapana chekuona

Chandisinganzwisise ndechekuti nechekare Mapurogiramu akaiswa kuHaiku kweanopfuura makore gumi - zvisinei nekuti iyo OS pachayo haisati yatombo vhezheni 1.0.

Kuedza kwechipiri: inoda kunyorazve

Saka ndichashandisa patouch-770, CLI yekudzora printa yeHama P-Touch 770 yandinoshandisa kuprinda mavara.
Ini ndinodhinda mavara akasiyana pairi, uye iwe unogona kunge watozviona mune yapfuura chinyorwa. Nguva pfupi yapfuura, ndakanyora diki GUI wrapper chirongwa muPython (sezvo iri muGtk +, ichafanirwa kunyorwazve, uye ichi chikonzero chakanaka chekudzidza).

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa
Hama P-Touch 770 label printer. Ichashanda neHaiku here?

Iyo Haiku package maneja anoziva nezve maraibhurari nemirairo, saka kana ndikawana "handigone kuwana libintl" meseji kana uchimhanya. configure - Ndichangotanga pkgman install devel:libintl uye pasuru inodiwa ichawanikwa. Saizvozvowo pkgman install cmd:rsync. Zvakanaka, nezvimwewo.

Kunze kwekunge izvi zvisingashande:

/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

Zvichida udev yakanyanyisa Linux-yakavakirwa uye saka haipo yeHaiku. Zvinoreva kuti ini ndinofanira kugadzirisa iyo kodhi kodhi yandiri kuedza kuunganidza.
Ehe, haugone kusvetuka pamusoro wako, uye handitomboziva pekutangira.

Chechitatu kuedza

Zvingave zvakanaka kuva nazvo tmate yeHaiku, ipapo ndaizobvumira vagadziri veHaiku kuti vabatanidze kune yangu terminal sesheni - kana chimwe chinhu chikatadza. Mirayiridzo yacho iri nyore:

./autogen.sh
./configure
make
make install

Inotaridzika zvakanaka, saka wadii kuiedza paHaiku?

/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

Mune ino nhanho ndinovhura HaikuDepot uye kutsvaga curses.
Chimwe chinhu chakawanikwa, chakandipa zano remubvunzo une hunyanzvi:

/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

Zvakare ndakaenda kuHaikuDepot, uye, hongu, ndakawana devel:msgpack_c_cpp_devel. Ndeapi aya mazita anoshamisa?

/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

Padanho iri, ndakaona kuti kuendesa chirongwa kuHaiku kunoda ruzivo rwakawanda kupfuura runodiwa pakuvakazve nyore.
Ndakataura nevagadziri veHaiku vane hushamwari, zvinoonekwa kuti kune bug mumsgpack, uye mushure memaminitsi mashoma ndinoona chigamba muHaikuPorts. Ndiri kuona nemeso angu kuti yakagadziriswa sei pasuru kuenda kuno (buildslave - virtual machines).

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa
Kuvaka iyo yakagadziriswa msgpack pane buildmaster

Pakati penguva ndinotumira chigamba kumusoro kwerwizi kuwedzera Haiku rutsigiro kune msgpack.

Maminitsi mashanu gare gare, iyo yakagadziridzwa msgpack yatovepo muHaiku:

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

Zvakanaka zvisingatarisirwi. Ndati here?!

Ndinodzokera kudambudziko rekutanga:

/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

Ikozvino zvinoita sekunge msgpack haina mhosva. Ndiri kutaura IMAXLABEL Π² tty.c saka:

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

Mhinduro:

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.

Zvakanaka, hezvino tinoenda zvakare ... Nenzira:

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

mr. waddlesplash inokuudza pekuchera:

/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 ndakaisa config.log.

Vakanditsanangurira kuti pane chimwe chinhu mu libnetwork mukuwedzera kune libresolv paHaiku. Zviri pachena kuti code inoda kugadziridzwa mberi. Unofanira kufunga…

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

Mubvunzo usingaperi: chii chiri kuitika?

/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

Chinhu chimwe chete, muprofile chete. Googled uye akawana izvi. Kana ukawedzera -lssp "dzimwe nguva" inobatsira, ndinoedza:

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

Wow! Zviri kutanga! Asi…

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

Ndichaedza kugadzirisa faira pano:

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

"Bad port ID" yakatoita sebhizinesi kadhi haiku. Zvichida mumwe munhu ane pfungwa kuti chii chakaipa uye sei kugadzirisa? Kana zvakadaro, ndichavandudza chinyorwa. Batanidza ne GitHub.

Kuendesa iyo GUI application kuQt.

Ini ndinosarudza yakapusa QML application.

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

Kureruka chaiko. isingasviki miniti!

Kurongedza maapplication muhpkg uchishandisa haikuporter uye haikuports.

Ndinofanira kutanga nei? Iko hakuna zvinyorwa zviri nyore, ndinoenda kuchiteshi che #haiku pa irc.freenode.net ndinzwe:

  • chikwata package - nzira yakaderera-yepamusoro yekugadzira mapakeji. Kazhinji, PackageInfo inomukwanira, sezvinotsanangurwa muchikamu "Kuita kuti ive yakakodzera .hpkg package"
  • Ndinofanira kuita chimwe chinhu zvakadaro
  • Unogona kushandisa hpkg-musiki (zvinondirwadza, kushuma kukanganisa)

Hazvina kujeka zvekuita. Ini ndinofungidzira ini ndinoda iyo Hello World maitiro ekutanga gwara, yakanaka vhidhiyo. Zvingave zvakanaka kuvawo nesumo iri nyore kuHaikuPorter, sezvinoitwa muGNU mhoro.

Ndakaverenga zvinotevera:

haikuporter chishandiso chekugadzira zvakajairika mapakeji mapurojekiti eHaiku. Iyo inoshandisa iyo HaikuPorts repository sehwaro hwese mapakeji. Haikuporter mabikirwo anoshandiswa kugadzira mapakeji.

Uyezve, ndinoona kuti:

Iko hakuna chikonzero chekuchengeta mabikirwo muHaikuPorts kuchengetedza. Iwe unogona kugadzira imwe repository, isa mabikirwo mairi, uye wozonongedza haikuporter kwairi.

Izvo zvandinoda - kana ndisiri kutsvaga nzira yekuburitsa pachena iyo package. Asi iyi inyaya yeimwe post.

Kuisa haikuporter uye 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

Kunyora resipi

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
}

Kuunganidza resipi

Ndinochengetedza faira pasi pezita QtQuickApp-1.0.recipe, mushure mezvo ndinovhura aikuporter -S ./QuickApp-1.0.recipe. Dependencies inotariswa kune ese mapakeji mune repository haikuports, izvo zvinotora nguva. Ndichaenda kunotora kofi.

Sei pasi pano ichi cheki ichifanirwa kuitwa pamushini wangu wepanzvimbo, uye kwete nechepakati pane server kamwe kune wese munhu?

Sekutaura kwaMr. waddlesplash:

Nekuda kwekuti iwe unokwanisa kunyorazve chero faira mune repository πŸ˜‰ Unogona kukwidziridza izvi zvishoma, uchiverenga iyo inodiwa ruzivo kana ichidikanwa, nekuti shanduko dzekupedzisira dzakaitwa hadziwanzo.

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

Zvinoitika kuti hakuna chinhu chakadai seyakajairwa resipi faira rine yako application source code. Iwe unofanirwa kuichengeta mune repository mune iyo HaikuPorts fomati.

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

Izvi zvinoita kuti gungano rinyanye kunetsa. Ini handizvifarire zvakanyanya, asi ndinofunga zvakakosha kuti pakupedzisira ese akavhurika sosi software aonekwe muHaikuPorts.

Ndinowana zvinotevera:

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

Chii chanetsa? Mushure mekuverenga irc ndinoita:

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

Mubvunzo unofadza wamuka. Kana ndikawedzera cheki kune resipi - ichaenderana neyazvino git kuzvipira yekuenderera mberi nekubatanidzwa? (Mugadziri anotsinhira kuti: "Hazvishande. Mabikirwo akagadzirwa kuti anyatsogadzikana.")

Kuti unakidzwe, wedzera kune resipi:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Kunyange zvakadaro hausati wagutsikana:

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

Arikuitei? Mushure mezvose, iyi git repository, iyo kodhi yatovepo zvakananga, hapana chekusunungura. Kubva pamaonero angu, chishandiso chinofanira kuve chakangwara zvakakwana kuti usatarise unpacker kana iri pamusoro peGitHub url.

Zvichida uri git:// ichashanda

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

Zvino inonyunyuta seizvi:

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

Hmm, nei zvinhu zvese zvakaoma, sei iwe usingagone "kungoshanda"? Mushure mezvose, hazvisi izvo zvisina kujairika kuvaka chimwe chinhu kubva kuGitHub. Zvingave zvishandiso zvinoshanda ipapo ipapo, pasina kudikanwa kwekugadziriswa, kana sezvandinodaidza kuti "kukakavara".

Pamwe ichashanda seizvi:

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

Kwete. Ndichiri kuwana iyi inoshamisa kukanganisa uye ndoita, sezvatsanangurwa pano

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

Ndiri kuenderera mberi zvishoma, asi nei ichidanidzira kwandiri (GitHub haina kuchengeteka!) Uye ndichiri kuedza kusunungura chimwe chinhu.

Maererano ne mr. waddlesplash:

Ehe, hongu, chikonzero chaive chishuwo chekutarisa kutendeseka kweiyo data yakagamuchirwa yekuungana. Imwe yesarudzo ndeyekutarisa cheki cheiyo archive, asi iwe unogona, hongu, hashi yega mafaera, ayo asingazoitwe, nekuti. zvinotora nguva yakareba. Mhedzisiro yeiyi "kusachengeteka" kwegit uye imwe VCS. Izvi zvingangogara zvakadaro, sezvo kugadzira dura paGitHub kuri nyore uye kazhinji nekukurumidza. Zvakanaka, mune ramangwana, zvichida mharidzo yekukanganisa haizove yakanyanyisa ... (hatichabatanidza mapeji akadaro muHaikuPorts).

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

Kubva mutsika yekare, ndinoenda kunobvunza vanhu vakanaka pa #haiku chiteshi pane irc.freenode.net network. Uye ndaizovepi pasina ivo? Mushure mezano, ndakaona kuti ndinofanira kushandisa:

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

Zvakanaka, zvakava pachena zvazvinoita - inodhawunirodha archive ine kodhi kodhi yeimwe ongororo. Hupenzi, kubva pamaonero angu, uye kwete chaizvo zvandaida, kureva, kurodha yazvino kudzokorora kubva kubazi ratenzi.

Mumwe wevagadziri akazvitsanangura nenzira iyi:

Isu tine yedu CI, saka zvese zvakaiswa muhaikuports repository zvichaiswa kune vese vashandisi, uye isu hatidi kuisa pangozi kuunganidza nekuendesa "zvese zviri mushanduro yazvino kumusoro."

Kunzwisisa! Chero zvazvingava, izvi ndizvo zvakaitika:

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

Inodzokorora iyi ad infinitum. Zviripachena kuti uku kukanganisa (pane application here? Handina kuiwana).

Π‘ haikuporter uye repository haikuports Iyo haina "inongoshanda" kunzwa kwairi, asi semugadziri, pane zvimwe zvinhu zvandinoda nezvekushanda neHaiku. Kune chikamu chikuru, zvakafanana neOpen Build Service, seti yezvishandiso zvekuvaka Linux inovaka: ine simba zvakanyanya, ine yakarongeka maitiro, asi yakawandisa kune yangu diki "hello world" application.

Zvakare, maererano naMr. waddlesplash:

Chokwadi, HaikuPorter yakaomesesa nekusarudzika (pamwe kune lint modhi pamwe neyakaomesesa modhi kuti iite yakanyanya kuomarara!), Asi chete nekuti inogadzira mapakeji anozoshanda, pane kungogadzira mapakeji. Ndosaka achigunun’una pamusoro pekutsamira kusingazivikanwe, maraibhurari asina kutorwa kunze kwenyika nemazvo, shanduro dzisiridzo, nezvimwe. Chinangwa ndechekubata chero uye matambudziko ese, kusanganisira ramangwana, mushandisi asati aziva nezvazvo (ndicho chikonzero nei zvaisaita kuisa avrdude, nekuti kutsamira kwakanyatso kutsanangurwa mune resipi). Maraibhurari haangori mapakeji ega kana kunyange chaiwo maSO shanduro. HaikuPorter inova nechokwadi chekuti zvese izvi zvinocherechedzwa mumabikirwo pachazvo kudzivirira zvikanganiso panguva yekuurayiwa.

Muchidimbu, iyi nhanho yekuomarara inoruramiswa kana uchigadzira sisitimu yekushandisa, asi zvinoita sezvisina kufanira kwandiri kune "hello world" application. Ndakasarudza kuedza chimwe chinhu.

Kuvaka maapplication muhpkg fomati uchishandisa iyo "pakeji gadzira" kuraira

Pamwe, izvi Mirayiridzo iri nyore ichandiitira nani here?

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

Zvisingatarisirwi zvinokurumidza, zvisingatarisirwi zviri nyore, zvisingatarisirwi zvinoshanda. Ndizvo chaizvo zvandinoda, zvinoshamisa!

Installation - chii uye kupi?

Yakatamisa faira reQtQuickApp.hpkg kuenda ~/config/packagesuchishandisa maneja wefaira, mushure mezvo QtQuickApp yakaonekwa nemashiripiti mukati ~/config/apps.
Zvakare, zvisingatarisirwi zvinokurumidza, zviri nyore uye zvinobudirira. Zvinoshamisa, zvinoshamisa!

Asi ... (tingadai tiri kupi pasina ivo!)

Iyo app ichiri kushaikwa kubva kuapp menu list uye QuickLaunch. Ndinofunga kuti ndinotoziva kugadzirisa. Mumaneja wefaira ndinofambisa QtQuickApp.hpkg kubva ~/config/packages kuenda ku/system/packages.

Kwete, ndichiri kushaikwa. Sezviri pachena, ini (zvakanaka, uye mirairo) ndakapotsa chimwe chinhu.

Ndakatarisa iyo "Zviri mukati" tab muHaikuDepot yemamwe maapplication, ndakaona kuti kune mafaera akaita se. /data/mimedb/application/x-vnd... chinotoshamisa ndechekuti /data/deskbar/menu/Applications/….

Zvakanaka, chii chandinofanira kuisa ipapo? Handeyi nazvo...

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

Ndine chokwadi chekuti hunyengeri huchashanda, asi mibvunzo inosara: nei izvi zvichidikanwa, ndezvei? Ini ndinofunga izvi zvinoparadza fungidziro yakazara yekuti sisitimu yakanyanyisa.

Sezvakatsanangurwa naMr. waddlesplash:

Dzimwe nguva kune maapplication anodiwa nemamwe maapplication asi asiri mumenyu. Semuyenzaniso, LegacyPackageInstaller muscreenshot yako, kugadzirisa .pkg archives muBeOS format. Ndinoda kuti vashandisi vaise, asi kuvapo kwavo mumenyu kunotungamira mukuvhiringidzika.

Nokuda kwechimwe chikonzero zvinoratidzika kwandiri kuti kune mhinduro iri nyore, somuenzaniso Hidden=true mumafaira .desktop paLinux. Wadii kuita iyo "yakavanzika" ruzivo ive sosi uye hunhu hwefaira system?

Chinonyanya kusava nehanya izita re (rimwe) application inoratidza menyu, deskbar, akasungwa zvakasimba munzira.

mr. waddlesplash inotsanangura izvi:

"Deskbar" mune iyi kesi inofanirwa kunzwisiswa semhando yezwi rakajairwa (nenzira yakafanana se "taskbar", iyo inoreva zvese Windows application uye pfungwa yakajairika). Zvakanaka, kubva izvi deskbar, kwete "Deskbar", izvi zvinogonawo kunzwisiswa nenzira yakafanana.

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa
2 "yakafanana" madhairekitori ane maapplication mazviri

Sei paine 2 madhairekitori ane maapplication, uyezve nei yangu QtQuickApplication iri mune imwe, asi isiri mune imwe? (Mushure mezvose, iyi haisi imwe system imwe, asi yechipiri mushandisi, izvo zvingave zvinonzwisisika kwandiri pachangu).
Ndakavhiringika uye ndinofunga izvi zvinofanirwa kuve zvakabatana.

zvakataurwa na mr. waddlesplash

Iyo Apps catalogue ine maapplication asiri kudiwa mumenyu. Asi mamiriro ane menyu anoda chaizvo kuvandudzwa, kuti awedzere kurongeka.

Kushandisa, kana kuti hazvizoitike πŸ˜‰

Ndakashamisika: zvinonyatso fanirwa kubata maapplication mukati /system/apps, kana vashandisi vakazviona ipapo, hazvidiwe. Zvichida zvingava nani kuvaisa kune imwe nzvimbo iyo mushandisi asingasangane navo? Sezvakangoita muMac OS X, uko zviri mukati memapakeji .app, iyo isingafanirwe kuonekwa kune mushandisi mukati /Applications, kuhwanda mukati me /System/Library/β€¦β€œ`.

Zvakadiniko nezve dependencies?

Ini ndinofunga zvakakodzera kutsanangura zvinotsamira neimwe nzira, handiti? Ko Qt inogona kutorwa sechikamu chinosungirwa chekumisikidzwa kweHaiku nekukasira? Kwete! Qt haina kuiswa nekukasira. Mugadziri wepasuru anogona kuona otomatiki kutsamira nekutarisa ELF mafaera? Ndakaudzwa kuti HaikuPorter inoita izvi, asi package Aihwa. Imhaka yekuti ingori "package builder" inongogadzira mafaera ega hpkg.

Haiku inofanira kuitwa yakaomesesa nekuwedzera mutemo wekuti pasuru haifanirwe kuve neinotsamira pamapakeji kunze kweHaiku? haikuports? (Ndinoda, nekuti mutemo wakadaro uchaita kuti zvinhu zvive nyore - iyo sisitimu yaizokwanisa kugadzirisa otomatiki kutsamira kwepakiti yega yega yakatorwa kubva chero kupi, pasina kukanganisa nemamwe mapakeji masosi.)

mr. waddlesplash anotsanangura:

Hatingade kudzikisira rusununguko rwevagadziri zvakanyanya, nekuti zviri pachena kuti kana CompanyX ichida kutsigira yayo seti yesoftware ine zvinotsamira (uye nekudaro repository), inozviita zvakasununguka.

Muchiitiko ichocho, zvingave zvakakodzera kurumbidza kuti mapakeji echitatu adzivise kutsamira pane chero chinhu chisina kubatanidzwa mune haikuports nekurongedza zvakakwana zvese zvinodiwa nechishandiso. Asi ndinofunga kuti iyi inyaya yenyaya yeramangwana mune ino nhevedzano. [Munyori ari kunanga kuAppImage? β€” approx. muturikiri]

Kuwedzera chiratidzo cheapp

Ko kana ini ndichida kuwedzera imwe yeakashambidzika akavakirwa-mukati zviwanikwa kune yangu ichangobva kugadzirwa application? Zvinoitika kuti iyi inyaya inoshamisa, saka ichava hwaro hwechinyorwa chinotevera.

Maitiro ekuronga inoenderera application inovaka?

Fungidzira purojekiti yakaita seInkscape (hongu, ndinoziva kuti haisati yawanikwa muHaiku, asi iri nyore kuratidza pairi). Vane source code repository https://gitlab.com/inkscape/inkscape.
Pese kana mumwe munhu aita shanduko kune repository, mapaipi ekuvaka anotangwa, mushure mezvo shanduko dzinoyedzwa otomatiki, kuvakwa, uye application inoiswa mumapakeji akasiyana siyana, kusanganisira AppImage yeLinux (yakamira yakamira application package inogona kudhawunirodherwa kuongororwa munharaunda zvisinei. chii chinogona kana kusaiswa pane system [Ndaizviziva! - approx. muturikiri]) Chinhu chimwe chete chinoitika nebazi rega rega rekubatanidza chikumbiro, saka unogona kudhawunirodha chikumbiro chakavakwa kubva kune kodhi yakarongwa muchikumbiro chekubatanidza usati wasangana.

Zuva rangu rechishanu neHaiku: ngatiisei zvirongwa
Batanidza zvikumbiro nemaitiro ekuvaka uye kugona kurodha akaunganidzwa mabhinari kana chivakwa chikabudirira (chakacherechedzwa negirini)

Iyo inovaka inomhanya muDocker midziyo. GitLab inopa vamhanyi vemahara paLinux, uye ndinofunga zvingaite kuti ubatanidze vako vanomhanya (nenzira, ini handisi kuona kuti izvi zvingashanda sei kune masisitimu akaita seHaiku, andinoziva kuti haana Docker kana yakaenzana, asi zvakare yeFreeBSD hapana Docker, saka dambudziko iri harina rakasarudzika kuHaiku).

Zvakanaka, Haiku zvikumbiro zvinogona kuvakwa mukati meDocker mudziyo weLinux. Mumamiriro ezvinhu aya, gungano reHaiku rinogona kuunzwa mumapaipi aripo. Pane macross compilers here? Kana kuti nditevedzere yese yeHaiku mukati memudziyo weDocker ndichishandisa chimwe chinhu chakaita seQEMU/KVM (ndichifunga kuti ichashanda saizvozvo mukati meDocker)? Nenzira, mapurojekiti mazhinji anoshandisa nheyo dzakafanana. Semuenzaniso, Scribus anoita izvi - yatovepo kuHaiku. Rimwe zuva richasvika randichatuma akadaro Dhonza zvikumbiro kune mamwe mapurojekiti ekuwedzera Haiku rutsigiro.

Mumwe wevagadziri anotsanangura:

Kune mamwe mapurojekiti anoda kugadzira mapakeji ivo pachavo, iyo yenguva dzose CMake/CPack nzira inotsigirwa. Mamwe masisitimu ekuvaka anogona kutsigirwa nekufonera iyo package yekuvaka chirongwa zvakananga, izvo zvakanaka kana vanhu vachizvifarira. Chiitiko chinoratidza: kusvika parizvino hapasati kwave nekufarira kwakawanda, saka haikuporter yakashanda seyakanakira isu, asi, pakupedzisira, nzira mbiri dzinofanira kushanda pamwechete. Isu tinofanirwa kuunza seti yezvishandiso zvekuyambuka-kuvaka software kubva kuLinux kana chero imwe server inoshanda sisitimu (Haiku haina kugadzirwa kuti ishande pamaseva).

Ndinopa mhere mhere. Vashandisi veLinux venguva dzose vanotakura zvese izvi zvekuwedzera mutoro uye mukwende wekuwedzera (chengetedzo, kutonga kwakasimba, nezvimwewo) izvo zvinodiwa kune server inoshanda sisitimu, asi kwete kune yega. Saka ndinobvuma zvachose kuti kukwanisa kuvaka Haiku mapurogiramu paLinux ndiyo nzira yekuenda nayo.

mhedziso

Kutakura POSIX zvikumbiro kuHaiku zvinogoneka, asi zvinogona kunge zvichidhura kupfuura zvakajairwa kuvakazve. Ini zvechokwadi ndingadai ndakabatikana neizvi kwenguva yakareba dai pasina rubatsiro rwevanhu kubva ku #haiku chiteshi pane irc.freenode.net network. Asi kunyange ivo vaisakurumidza kuona kuti chii chakanga chakaipa.

Zvishandiso zvakanyorwa muQt zviri nyore kusarudzika. Ini ndakaisa pamwe yakapusa demo application pasina matambudziko.

Kuvaka pasuru yezvishandiso zviri nyore zvakare zvakareruka, asi chete kune "zvagara zvaburitswa" izvo, i.e. kuva neshanduro yekodhi kodhi archives yakagadzirirwa kutsigirwa mune haikuports. Kune inoenderera kuvaka (kuvaka kune yega kuzvipira kwekuchinja) neGitHub, zvese zvinoita kunge zvisiri nyore. Pano Haiku inonzwa senge kugoverwa kweLinux pane mhedzisiro paMac, apo iwe paunodzvanya bhatani re "Build" muXCode unowana package. .app, yakagadzirira kuiswa mumufananidzo wedhisiki .dmg, yakagadzirirwa kurodha pawebhusaiti yangu.
Kuenderera mberi kwekuvaka kwezvikumbiro kunoenderana ne "server" inoshanda sisitimu, semuenzaniso, Linux, inogoneka kana paine kudiwa kubva kune vanogadzira, asi panguva ino iyo Haiku purojekiti ine mamwe, anonyanya kudzvanya mabasa.

Edza iwe pachako! Mushure mezvose, iyo Haiku purojekiti inopa mifananidzo yekubhoti kubva kuDVD kana USB, yakagadzirwa Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Kuisa, ingo dhawunirodha chifananidzo uye wochipisa kune USB flash drive uchishandisa Etcher

Une mibvunzo? Tinokukoka iwe kune vanotaura chiRussian teregiramu chiteshi.

Mhedziso yemhosho: Maitiro ekupfura iwe pachako mutsoka muC uye C ++. Haiku OS Recipe Collection

kubva munyori shanduro: ichi ndicho chinyorwa chechishanu munhevedzano yeHaiku.

Rondedzero yezvinyorwa: Kutanga Yechipiri Chechitatu Chechina

Source: www.habr.com

Voeg