Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena

Tsiku langa lachisanu ndi Haiku: tiyeni tinyamule mapulogalamu ena

TL; DR: Woyamba kumene akuona Haiku koyamba, akuyesera kufalitsa mapulogalamu ena ochokera padziko lonse lapansi Linux.

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 ndingatumizire mapulogalamu atsopano ku operating system iyi. Cholinga chachikulu ndi kufotokoza zomwe ndakumana nazo poyamba nditasintha kupita ku Haiku kuchokera pamalingaliro a wopanga mapulogalamu. LinuxPepani chifukwa cha zolakwa zilizonse zopusa zomwe ndinachita panjira, chifukwa pasanathe sabata imodzi kuchokera pamene ndinatsitsa Haiku koyamba.

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 Sizikumveka ngati "zikugwira ntchito basi," koma monga wopanga mapulogalamu, pali zinthu zina zomwe ndimakonda pogwira ntchito ndi Haiku. Zimafanana kwambiri ndi Open Build Service—zida zomangira nyumba. Linux: yamphamvu kwambiri, yokhala ndi njira yolongosoka, koma yoposa momwe ndingathere pulogalamu yanga yaying'ono ya "dziko la hello".

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 LinuxBwanji osapanga chidziwitso "chobisika" kukhala gwero komanso 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 mawu wamba (pafupifupi ofanana ndi "taskbar", omwe amatanthauza zonse ziwiri pulogalamu Windows, ndi lingaliro lonse). Chabwino, popeza izi ndi 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 munthu akasintha zinthu zake ku malo osungiramo zinthu, mapaipi omangira amayambika, kenako kusinthako kumayesedwa, kumangidwa, ndipo pulogalamuyo imayikidwa m'maphukusi osiyanasiyana, kuphatikizapo AppImage ya Linux (phukusi la pulogalamu yodziyimira payokha yomwe ingatsitsidwe kuti iyesedwe m'deralo mosasamala kanthu za zomwe zingayikidwe kapena zomwe sizingayikidwe pa dongosololi [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)

Kapangidwe kake kamagwira ntchito m'mabokosi a Docker. GitLab imapereka ma runners aulere pa Linux, ndipo ndikuganiza kuti zingatheke kulumikiza ma custom runners (mwa njira, sindikudziwa momwe izi zingagwirire ntchito pamakina monga Haiku, omwe ndikudziwa kuti alibe Docker kapena china chilichonse chonga icho, koma FreeBSD ilibenso Docker, kotero vutoli silili la Haiku lokha).

Mwabwino kwambiri, ntchito zomangira Haiku zitha kuchitika mkati mwa chidebe cha Docker cha LinuxMunkhaniyi, kumanga kwa Haiku kungaphatikizidwe mu mapaipi omwe alipo. Kodi pali ma cross-compilers? Kapena ndiyenera kutsanzira Haiku yonse mkati mwa chidebe cha Docker pogwiritsa ntchito chinthu ngati QEMU/KVM (poganiza kuti imagwira ntchito mwanjira imeneyo mkati mwa Docker)? Mwa njira, mapulojekiti ambiri amagwiritsa ntchito mfundo zofanana. Mwachitsanzo, Scribus amachita izi—zilipo kale ku Haiku. Tsiku lina, ndidzatha kutumiza zotere Kokani zopempha kumapulojekiti ena kuti muwonjezere thandizo la Haiku.

Mmodzi mwa opanga akufotokoza:

Kwa mapulojekiti ena omwe akufuna kupanga ma phukusi awoawo, njira yodziwika bwino ya CMake/CPack imathandizidwa. Machitidwe ena omangira amatha kuthandizidwa poyitanitsa wopanga ma phukusi mwachindunji, zomwe zingakhale bwino ngati anthu atakhala ndi chidwi. Zochitika zikuwonetsa kuti palibe chidwi chachikulu chomwe chakhalapo mpaka pano, kotero haikuporter yatigwirira ntchito, koma pamapeto pake, njira zonse ziwiri ziyenera kugwira ntchito limodzi. Tiyenera kuyambitsa zida zamapulogalamu omanga kuchokera ku Linux kapena makina ena aliwonse ogwiritsira ntchito seva (Haiku siinapangidwe kuti izigwira ntchito pa ma seva).

Anthu okonda kugwiritsa ntchito nthawi zonse akuwomba m'manja Linux Amanyamula katundu wowonjezera ndi katundu wonse (chitetezo, kuwongolera mwamphamvu, ndi zina zotero) zomwe makina ogwiritsira ntchito seva amafunikira, koma osati kompyuta. Chifukwa chake, ndikuvomereza kwathunthu kuti kuthekera kopanga mapulogalamu a Haiku pa Linux - njira yoyenera.

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 la mapulogalamu osavuta ndikosavuta, koma kokha pa mapulogalamu "omwe amatulutsidwa mwachizolowezi", kutanthauza omwe ali ndi ma code osinthidwa omwe cholinga chake ndi kuthandizira mu haikuports. Pa zomangamanga zopitilira (kumanga kwa mgwirizano uliwonse), zinthu sizili zosavuta ndi GitHub. Pano, Haiku imawoneka ngati kugawa. Linux, kuposa zotsatira pa Mac, pomwe kudina batani la "Mangani" mu Xcode kumapanga phukusi .app, yokonzeka kuyikidwa mu chithunzi cha disk .dmg, yokonzekera kutsitsa patsamba langa.
Kusonkhanitsa mosalekeza mapulogalamu kutengera makina ogwiritsira ntchito a "seva", mwachitsanzo, Linux, mwina zingatheke ngati pali kufunikira kwa opanga mapulogalamu, koma pakadali pano pulojekiti ya Haiku ili ndi ntchito zina zofunika kwambiri.

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

Gulani kuchititsa kodalirika kwamasamba okhala ndi chitetezo cha DDoS, ma seva a VPS VDS Gulani malo odalirika osungira mawebusayiti okhala ndi chitetezo cha DDoS, ma seva a VPS VDS | ProHoster