An còigeamh latha agam le Haiku: port cuid de phrògraman

An còigeamh latha agam le Haiku: port cuid de phrògraman

TL; DR: Chunnaic newbie Haiku airson a 'chiad uair, a' feuchainn ri cuid de phrògraman a phortadh bho shaoghal Linux.

An còigeamh latha agam le Haiku: port cuid de phrògraman
A’ chiad phrògram portaichte Haiku agam, air a phacaigeadh ann an cruth hpkg

O chionn ghoirid Lorg mi Haiku, siostam obrachaidh iongantach math airson PCan.
An-diugh ionnsaichidh mi mar a chuireas tu prògraman ùra chun t-siostam obrachaidh seo. Is e am prìomh fhòcas tuairisgeul air a’ chiad eòlas air atharrachadh gu Haiku bho shealladh leasaiche Linux. Tha mi duilich airson mearachdan gòrach sam bith a rinn mi air an t-slighe, leis nach eil eadhon seachdain air a bhith ann bho luchdaich mi sìos Haiku an toiseach.

Tha mi airson trì amasan a choileanadh:

  • Port tagradh CLI sìmplidh
  • Port iarrtas bho GUI gu Qt
  • An uairsin pacaich iad ann an cruth hpkg (leis gu bheil mi fhathast a’ smaoineachadh air AppDir agus AppImage atharrachadh airson Haiku ...)

Feuch an tòisich sinn. Ann an earrannan na sgrìobhainnean и leasachadha bharrachd air wiki bho HaikuPorts lorg mi an t-slighe cheart. Tha eadhon leabhar PDF air-loidhne BeOS: A’ gluasad Iarrtas Unix.
467 duilleag - agus tha seo bho 1997! Tha e eagallach a bhith a’ coimhead a-staigh, ach tha mi an dòchas airson a’ chuid as fheàrr. Tha faclan an leasaiche misneachail: “thug e ùine mhòr leis nach robh BeOS a’ gèilleadh ri POSIX, ”ach tha Haiku“ airson a ’mhòr-chuid” mar-thà mar sin.

A’ giùlan tagradh CLI sìmplidh

B’ e a’ chiad bheachd a bh’ ann an tagradh a phortadh avrdude, ach, mar a thionndaidh e a-mach, tha seo mar-thà air a dhèanamh o chionn fhada.

Feuch an toiseach: chan eil dad ri fhaicinn

An rud nach urrainn dhomh a thuigsinn tha sin mu thràth Tha aplacaidean air a bhith air an giùlain gu Haiku airson còrr air 10 bliadhna - a dh’ aindeoin nach eil an OS fhèin eadhon dreach 1.0 fhathast.

An dàrna oidhirp: feumar ath-sgrìobhadh

Mar sin cleachdaidh mi suathadh-770, CLI airson smachd a chumail air a’ chlò-bhualadair Brother P-Touch 770 a bhios mi a’ cleachdadh airson bileagan a chlò-bhualadh.
Bidh mi a’ clò-bhualadh diofar bhileagan air, agus is dòcha gu bheil thu air fhaicinn san artaigil roimhe seo. Beagan na bu thràithe, sgrìobh mi prògram clò-bhualaidh beag GUI ann am Python (leis gu bheil e ann an Gtk +, feumar ath-sgrìobhadh, agus tha seo na adhbhar math airson ionnsachadh).

An còigeamh latha agam le Haiku: port cuid de phrògraman
Clò-bhualadair leubail Brother P-Touch 770. An obraich e le Haiku?

Tha fios aig manaidsear pacaid Haiku mu leabharlannan agus òrdughan, mar sin ma gheibh mi teachdaireachd “chan urrainn dhomh libintl a lorg” nuair a bhios mi a’ ruith configure - Tha mi dìreach a 'cur air bhog pkgman install devel:libintl agus lorgar am pasgan riatanach. mar an ceudna pkgman install cmd:rsync. Uill, etc.

Ach a-mhàin nuair nach obraich seo:

/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

Is dòcha gu bheil udev ro stèidhichte air Linux agus mar sin chan eil e ann airson Haiku. Tha sin a’ ciallachadh gum feum mi an còd tùsail a tha mi a’ feuchainn ri chur ri chèile a dheasachadh.
Eh, chan urrainn dhut leum thairis air do cheann, agus chan eil fios agam eadhon càite an tòisich thu.

An treas oidhirp

Bhiodh e math a bhith tmate airson Haiku, an uairsin leigeadh le luchd-leasachaidh Haiku ceangal ris an t-seisean deireannach agam - air eagal ’s gun tèid rudeigin ceàrr. Tha an stiùireadh gu math sìmplidh:

./autogen.sh
./configure
make
make install

A’ coimhead math, mar sin carson nach fheuch thu e air 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

Anns a’ cheum seo bidh mi a’ fosgladh HaikuDepot agus a’ sgrùdadh curses.
Chaidh rudeigin a lorg, a thug beachd dhomh air ceist nas comasaiche:

/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

A-rithist chaidh mi gu HaikuDepot, agus, gu dearbh, lorg devel:msgpack_c_cpp_devel. Dè na h-ainmean neònach a tha seo?

/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

Aig a’ cheum seo, thuig mi gu bheil feum air tòrr a bharrachd eòlais airson prògram a ghiùlan gu Haiku na tha a dhìth airson ath-thogail sìmplidh.
Bhruidhinn mi ris an luchd-leasachaidh càirdeil Haiku, tha e coltach gu bheil biast ann am msgpack, agus às deidh beagan mhionaidean chì mi bad ann an HaikuPorts. Chì mi le mo shùilean fhèin mar a tha am pasgan ceartaichte a' dol an seo (buildslave - innealan mas-fhìor).

An còigeamh latha agam le Haiku: port cuid de phrògraman
A’ togail an msgpack ceartaichte air buildmaster

Eadar amannan bidh mi a’ cur badan suas an abhainn gus taic Haiku a chur ri msgpack.

Còig mionaidean às deidh sin, tha am pasgan msg ùraichte ri fhaighinn mu thràth ann an 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.

Gun dùil math. An e sin a thuirt mi?!

Tillidh mi air ais chun duilgheadas tùsail:

/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

A-nis tha e a’ coimhead coltach nach eil msgpack as coireach. Tha mi a' toirt beachd IMAXLABEL в tty.c mar seo:

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

Toradh:

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.

Uill, seo sinn a-rithist... Co-dhiù:

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

Mgr. fras-gheala ag innse dhut càite an tèid thu:

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

An seo chuir mi post config.log.

Mhìnich iad dhomh gu bheil rudeigin eile ann an libnetwork a bharrachd air libresolv air Haiku. A rèir choltais, feumar an còd a dheasachadh tuilleadh. Feumaidh smaoineachadh…

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

A’ cheist shìorraidh: dè tha dol?

/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

An aon rud, dìreach ann am pròifil. Googled agus lorg seo. Ma chuireas tu -lssp Bidh “uaireannan” a’ cuideachadh, bidh mi a’ feuchainn:

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

Wow! Tha e a' tòiseachadh! Ach…

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

Feuchaidh mi ri debug faidhle an seo:

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

Tha “Droch ID port” mar-thà coltach ri cairt gnìomhachais haiku. Is dòcha gu bheil beachd aig cuideigin dè a tha ceàrr agus ciamar a chuireas e ceart e? Ma tha, bheir mi ùrachadh air an artaigil. Ceangal gu GitHub.

A’ gluasad an aplacaid GUI gu Qt.

Bidh mi a’ taghadh tagradh QML sìmplidh.

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

Dìreach sìmplidh. Nas lugha na mionaid!

Tagraidhean pacaidh ann an hpkg a’ cleachdadh haikuporter agus haikuports.

Dè bu chòir dhomh tòiseachadh le? Chan eil sgrìobhainnean sìmplidh ann, thèid mi chun t-seanail #haiku air irc.freenode.net agus cluinnidh mi:

  • sgioba package - dòigh ìre ìosal airson pasganan a chruthachadh. Airson a 'mhòr-chuid, tha PackageInfo gu leòr dhi, mar a chaidh a mhìneachadh san earrann "A 'dèanamh pasgan .hpkg ceart"
  • Feumaidh mi rudeigin a dhèanamh leithid
  • Faodar a chleachdadh hpkg-cruthachaidh (tha e a' bualadh orm, aithris mearachd)

Chan eil e soilleir dè a nì thu. Tha mi creidsinn gu bheil feum agam air stiùireadh tòiseachaidh stoidhle Hello World, bhidio mas fheàrr. Bhiodh e math cuideachd ro-ràdh goireasach a bhith agad mu HaikuPorter, mar a tha air a dhèanamh ann an GNU hello.

Tha mi a’ leughadh na leanas:

haikuporter na inneal airson pròiseactan pacaid cumanta a chruthachadh airson Haiku. Bidh e a’ cleachdadh stòr HaikuPorts mar bhunait airson a h-uile pasgan. Bithear a’ cleachdadh reasabaidhean Haikuporter gus pasganan a chruthachadh.

A bharrachd air an sin, tha mi a’ faighinn a-mach gu bheil:

Chan eil feum air reasabaidhean a stòradh ann an stòradh HaikuPorts. Faodaidh tu stòr eile a dhèanamh, cuir na reasabaidhean ann, agus an uairsin comharraich haikuporter thuige.

Dìreach na tha a dhìth orm - mura h-eil mi a’ coimhead airson dòigh air a’ phacaid a leigeil ma sgaoil gu poblach. Ach seo cuspair airson post eile.

A’ stàladh haikuporter agus 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

A 'sgrìobhadh reasabaidh

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
}

A 'cruinneachadh an reasabaidh

Sàbhail mi am faidhle fon ainm QtQuickApp-1.0.recipe, às deidh sin cuiridh mi air bhog aikuporter -S ./QuickApp-1.0.recipe. Bithear a’ sgrùdadh eisimeileachd airson a h-uile pasgan san stòr haikuports, a bheir beagan ùine. Thèid mi a dh'fhaighinn cofaidh.

Carson air an talamh a bu chòir an sgrùdadh seo a dhèanamh air an inneal ionadail agam, agus chan ann sa mheadhan air an fhrithealaiche aon uair airson a h-uile duine?

A rèir Mhgr. fras-gheala:

Le leithid gun urrainn dhut faidhle sam bith ath-sgrìobhadh san stòr 😉 Faodaidh tu seo a bharrachadh beagan, a’ tomhas an fhiosrachaidh riatanach nuair a bhios feum air, oir tha na h-atharrachaidhean mu dheireadh a chaidh a dhèanamh gu math tearc.

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

Tha e a’ tionndadh a-mach nach eil leithid de rud ann ri faidhle reasabaidh àbhaisteach anns a bheil còd stòr an tagraidh agad. Feumaidh tu a chumail ann an stòr ann an cruth HaikuPorts.

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

Tha an fhìrinn seo a 'dèanamh a' cho-chruinneachadh nas duilghe. Cha toil leam e gu sònraichte, ach tha mi a’ smaoineachadh gu bheil e riatanach gus am bi a h-uile bathar-bog stòr fosgailte mu dheireadh a’ nochdadh ann an HaikuPorts.

Gheibh mi na leanas:

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

Dè tha ceàrr? Às deidh dhomh irc a leughadh nì mi:

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

Tha ceist inntinneach air èirigh. Ma chuireas mi checksum ris an reasabaidh - am bi e a rèir an gealltanas git as ùire airson amalachadh leantainneach? (Tha an leasaiche a 'dearbhadh: "Chan obraich e. ​​Tha na reasabaidhean air an dealbhadh gus a bhith an ìre mhath seasmhach.")

Airson spòrs, cuir ris an reasabaidh:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Chan eil mi riaraichte fhathast:

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

Dè tha e a' dèanamh? Às deidh na h-uile, is e stòr git a tha seo, tha an còd mar-thà ann gu dìreach, chan eil dad ri dhì-phapadh. Bho mo bheachd-sa, bu chòir don inneal a bhith sgiobalta gu leòr gun a bhith a’ coimhead airson dì-phaca ma tha e os cionn an url GitHub.

Is dòcha gun obraich uri git://

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

A-nis tha e a’ gearan mar seo:

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

Hmm, carson a tha a h-uile dad cho toinnte, carson nach urrainn dhut “dìreach obrachadh”? Às deidh na h-uile, chan eil e cho neo-àbhaisteach rudeigin a thogail bho GitHub. Ge bith an e innealan a th ’ann a bhios ag obair anns a’ bhad, gun fheum air stèidheachadh, no mar a chanas mi ris “fussing”.

Is dòcha gun obraich e mar seo:

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

Chan eil. Tha mi fhathast a’ faighinn a’ mhearachd neònach seo agus a’ dèanamh, mar a tha air a mhìneachadh an seo

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

Tha mi a’ gluasad beagan nas fhaide, ach carson a tha e a’ sgreuchail orm (chan eil GitHub tèarainte!) Agus fhathast a’ feuchainn ri rudeigin a dhì-phapadh.

A rèir Mgr. fras-gheala:

Uill, tha, b 'e an t-adhbhar am miann sgrùdadh a dhèanamh air ionracas an dàta a fhuaireadh airson co-chruinneachadh. Is e aon de na roghainnean sgrùdadh a dhèanamh air an tasglann, ach faodaidh tu, gu dearbh, hash faidhlichean fa leth, nach tèid a bhuileachadh, oir bheir e fada nas fhaide. Mar thoradh air an seo tha “mì-thèarainteachd” git agus VCS eile. Tha e coltach gum bi seo fìor an-còmhnaidh, leis gu bheil cruthachadh tasglann air GitHub gu math furasta agus gu tric nas luaithe. Uill, san àm ri teachd, is dòcha nach bi an teachdaireachd mearachd cho sgiobalta ... (cha bhith sinn a’ ceangal a leithid de reasabaidhean ann an HaikuPorts tuilleadh).

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

A-mach à seann chleachdadh, bidh mi a’ faighneachd do dhaoine math air an t-sianal #haiku air lìonra irc.freenode.net. Agus càite am bithinn às an aonais? Às deidh an sanas, thuig mi gum bu chòir dhomh a chleachdadh:

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

Gu ceart, dh'fhàs e soilleir dè a bhios e a 'dèanamh - bidh e a' luchdachadh sìos tasglann le còd tùsail ath-sgrùdaidh sònraichte. Tha e gòrach, bho mo shealladh, agus chan e dìreach na bha mi ag iarraidh, is e sin, an ath-sgrùdadh as ùire a luchdachadh sìos bhon phrìomh mheur.

Mhìnich aon den luchd-leasachaidh e mar seo:

Tha an CI againn fhèin, agus mar sin bidh a h-uile càil a thèid a chuir ann an stòr haikuports air a phacaigeadh airson a h-uile neach-cleachdaidh, agus chan eil sinn airson cunnart a bhith a’ cruinneachadh agus a ’lìbhrigeadh“ a h-uile dad san dreach as ùire suas an abhainn. ”

Thuig! Ann an suidheachadh sam bith, is e seo a thachair:

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

Bidh e ag ath-aithris an ad infinitum seo. A rèir choltais is e mearachd a tha seo (a bheil tagradh ann? Cha b’ urrainn dhomh a lorg).

С haikuporter agus tasgaidh haikuports Chan eil faireachdainn “dìreach ag obair” aige ris, ach mar leasaiche, tha cuid de rudan as toil leam mu bhith ag obair le Haiku. Airson a 'mhòr-chuid, tha e coltach ris an t-Seirbheis Togail Fosgailte, seata innealan airson togail Linux a thogail: air leth cumhachdach, le dòigh-obrach eagarach, ach a' toirt thairis air an tagradh beag "hello world" agam.

A-rithist, a rèir Mhgr. fras-gheala:

Gu dearbh, tha HaikuPorter gu math teann gu bunaiteach (a bharrachd air sin tha modh lint a bharrachd air modh teann gus a dhèanamh eadhon nas cruaidhe!), Ach a-mhàin air sgàth gu bheil e a’ cruthachadh phasganan a dh’ obraicheas, seach a bhith dìreach a’ cruthachadh phasganan. Sin as coireach gu bheil e a’ gearan mu eisimeileachd neo-fhoillsichte, leabharlannan nach deach a thoirt a-steach gu ceart, dreachan ceàrr, msaa. Is e an t-amas a bhith a 'glacadh duilgheadas sam bith, a' gabhail a-steach feadhainn san àm ri teachd, mus bi fios aig an neach-cleachdaidh mu dheidhinn (is e seo as coireach nach robh e comasach avrdude a stàladh, oir bha an eisimeileachd air a shònrachadh anns an reasabaidh). Chan e dìreach pasganan fa leth a th’ ann an leabharlannan no eadhon dreachan SO sònraichte. Bidh HaikuPorter a’ dèanamh cinnteach gu bheilear a’ cumail seo uile anns na reasabaidhean fhèin gus mearachdan a sheachnadh aig àm cur gu bàs.

Ann am prionnsapal, tha an ìre teann seo air fhìreanachadh nuair a chruthaicheas tu siostam obrachaidh, ach tha e coltach nach eil feum air dhomh airson tagradh “hello world”. Cho-dhùin mi rudeigin eile fheuchainn.

A’ togail thagraidhean ann an cruth hpkg a’ cleachdadh an àithne “cruthaich pasgan”.

Dh ’fhaodadh a bhith, seo Am bi stiùireadh sìmplidh ag obair nas fheàrr dhòmhsa?

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

Gu math luath, gun dùil sìmplidh, gun dùil èifeachdach. Dìreach mar as toil leam e, iongantach!

Stàladh - dè agus càite?

Ghluais am faidhle QtQuickApp.hpkg gu ~/config/packagesa’ cleachdadh manaidsear faidhle, às deidh sin nochd QtQuickApp gu draoidheil ~/config/apps.
A-rithist, gun dùil luath, sìmplidh agus èifeachdach. Iongantach, do-chreidsinneach!

Ach... (càit am biodh sinn às an aonais!)

Tha an aplacaid fhathast a dhìth bho liosta clàr nan aplacaidean agus QuickLaunch. Tha mi a’ smaoineachadh gu bheil fios agam mu thràth mar a chuireas mi ceart e. Anns a 'mhanaidsear faidhle gluaisidh mi QtQuickApp.hpkg bho ~/config/packages gu /system/packages.

Chan eil, fhathast a dhìth. A rèir choltais, bha mi (uill, agus an stiùireadh) ag ionndrainn rudeigin.

An dèidh sùil a thoirt air an taba “Contents” ann an HaikuDepot airson cuid de thagraidhean eile, chunnaic mi gu bheil faidhlichean mar /data/mimedb/application/x-vnd... is e an rud a tha eadhon nas iongantaiche /data/deskbar/menu/Applications/….

Uill, dè a bu chòir dhomh a chuir ann? Siuthad...

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

Tha mi gu math cinnteach gun obraich an cleas seo, ach tha na ceistean ann fhathast: carson a tha seo riatanach, carson a tha e? Tha mi a’ smaoineachadh gu bheil seo a’ milleadh a’ bheachd iomlan gu bheil an siostam cho sòlaimte.

Mar a mhìnich Mgr. fras-gheala:

Aig amannan tha tagraidhean ann a dh’ fheumas tagraidhean eile ach nach eil sa chlàr. Mar eisimpleir, LegacyPackageInstaller anns an ath-sgrìn agad, a 'giullachd tasglannan .pkg ann an cruth BeOS. Bu mhath leam luchd-cleachdaidh an stàladh, ach bidh an làthaireachd sa chlàr a’ leantainn gu troimh-chèile.

Airson adhbhar air choireigin tha e coltach riumsa gu bheil fuasgladh nas sìmplidh ann, mar eisimpleir Hidden=true ann am faidhlichean .desktop air Linux. Carson nach dèan thu am fiosrachadh “falaichte” na ghoireas agus na fheart den t-siostam faidhle?

Is e an rud nach eil gu sònraichte seòlta ainm an aplacaid (cuid) a sheallas a’ chlàr, deskbar, ceangailte gu teann air an t-slighe.

Mgr. Tha waddlesplash a’ mìneachadh seo:

Bu chòir “Deskbar” sa chùis seo a bhith air a thuigsinn mar sheòrsa de theirm coitcheann (san aon dòigh ri “barr-obrach”, a tha a’ toirt iomradh air an dà chuid tagradh Windows agus air a’ bhun-bheachd coitcheann). Uill, bhon a tha seo deskbar, chan e “Deskbar”, faodar seo a thuigsinn san aon dòigh.

An còigeamh latha agam le Haiku: port cuid de phrògraman
2 chlàr “cha mhòr co-ionann” le tagraidhean annta

Carson a tha 2 chlàr ann le tagraidhean, agus cuideachd carson a tha mo QtQuickApplication ann an aon, ach chan ann san fhear eile? (Às deidh na h-uile, chan e aon siostam a tha seo, ach dàrna neach-cleachdaidh, a bhiodh furasta a thuigsinn dhomh gu pearsanta).
Tha mi gu math troimh-chèile agus tha mi a 'smaoineachadh gum bu chòir seo a bhith aonaichte.

beachd le Mgr. fras-gheala

Ann an catalog nan Apps tha tagraidhean nach eil a dhìth sa chlàr. Ach feumar an suidheachadh leis a’ chlàr a leasachadh gu mòr, gus a dhèanamh nas freagarraiche.

Iarrtas, no cha tachair e 😉

Bha mi a’ smaoineachadh: a bheil e dha-rìribh riatanach aoigheachd a thoirt do thagraidhean a-steach /system/apps, ma chì luchd-cleachdaidh iad an sin, chan eil e ion-mhiannaichte. Is dòcha gum biodh e na b’ fheàrr an cur ann an àite eile far nach coinnich an neach-cleachdaidh riutha? Dìreach mar a tha e air a dhèanamh ann am Mac OS X, far a bheil na tha ann am pasganan .app, nach bu chòir a bhith ri fhaicinn don neach-cleachdaidh ann /Applications, a’ falach ann an doimhneachd /System/Library/…“`.

Dè mu dheidhinn eisimeileachd?

Tha mi a’ smaoineachadh gum b’ fhiach na eisimeileachd a shònrachadh dòigh air choireigin, ceart? An urrainnear Qt a mheas mar phàirt riatanach de stàladh Haiku a ghnàth? Chan eil! Chan eil Qt air a stàladh gu bunaiteach. An urrainn do neach-togail pacaid eisimeileachd a lorg gu fèin-ghluasadach le bhith a’ sgrùdadh faidhlichean ELF? Chaidh innse dhomh gu bheil HaikuPorter dha-rìribh a’ dèanamh seo, ach package Chan eil. Tha sin air sgàth 's gur e "neach-togail pacaid" a th' ann a tha dìreach a' cruthachadh fhaidhlichean leis fhèin hpkg.

Am bu chòir Haiku a bhith air a dhèanamh nas ionnsaichte le bhith a’ cur poileasaidh ris nach bu chòir do phasgan a bhith an urra ri pacaidean taobh a-muigh Haiku? haikuports? (Bu mhath leam, oir dhèanadh poileasaidh mar seo cùisean gu math nas fhasa - bhiodh e comasach don t-siostam eisimeileachd gach pasgan a chaidh a luchdachadh sìos bho àite sam bith fhuasgladh gu fèin-ghluasadach, gun a bhith a’ dol timcheall le stòran pacaid a bharrachd.)

Mgr. Tha waddlesplash a’ mìneachadh:

Cha bu mhath leinn saorsa luchd-leasachaidh a chuingealachadh cho mòr, oir tha e follaiseach ma tha CompanyX airson taic a thoirt don t-seata bathar-bog aca fhèin le eisimeileachd (agus mar sin stòr), nì e sin gu tur gu saor.

Anns a ’chùis sin, is dòcha gum b’ fhiach a bhith a ’moladh gun seachain pasganan treas-phàrtaidh eisimeileachd air rud sam bith nach eil air a ghabhail a-steach ann an haikuports le bhith a’ pacadh gu tur a h-uile dad a tha a dhìth leis an tagradh. Ach tha mi a’ smaoineachadh gur e cuspair a tha seo airson artaigil san t-sreath seo san àm ri teachd. [A bheil an t-ùghdar a’ dèanamh air AppImage? — mu thuairmeas. eadar-theangair]

A’ cur ìomhaigh tagraidh ris

Dè ma tha mi airson aon de na h-ìomhaighean grinn togte a chuir ri goireasan an tagraidh ùr agam? Tha e a 'tionndadh a-mach gur e cuspair iongantach a tha seo, agus mar sin bidh e na bhunait airson an ath artaigil.

Ciamar a chuireas tu togail tagraidh leantainneach air dòigh?

Smaoinich air pròiseact mar Inkscape (tha, tha mi mothachail nach eil e fhathast ri fhaighinn ann an Haiku, ach tha e goireasach a thaisbeanadh air). Tha stòr còd stòr aca https://gitlab.com/inkscape/inkscape.
Gach uair a nì cuideigin na h-atharrachaidhean aca air an stòr, thèid pìoban togail a chuir air bhog, às deidh sin thèid na h-atharrachaidhean a dhearbhadh gu fèin-ghluasadach, an togail, agus an tagradh air a phacaigeadh ann an grunn phasganan, nam measg AppImage airson Linux (pasgan tagraidh leis fhèin a ghabhas luchdachadh sìos airson deuchainn ionadail ge bith. dè dh’ fhaodadh a bhith air a stàladh air an t-siostam no nach eil [Bha fios agam air! — mu thuairmeas. eadar-theangair]). Bidh an aon rud a’ tachairt leis a h-uile iarrtas co-aonaidh meur, gus an urrainn dhut an tagradh a chaidh a thogail a luchdachadh sìos bhon chòd a chaidh a mholadh san iarrtas aonaidh mus tèid thu còmhla.

An còigeamh latha agam le Haiku: port cuid de phrògraman
Cuir còmhla iarrtasan le inbhean togail agus an comas na binaries cruinnichte a luchdachadh sìos ma tha an togail soirbheachail (air a chomharrachadh ann an uaine)

Bidh an togail a’ ruith ann an soithichean Docker. Tha GitLab a’ tabhann ruitheadairean an-asgaidh air Linux, agus tha mi a’ smaoineachadh gur dòcha gum biodh e comasach na ruitheadairean agad fhèin a thoirt a-steach (co-dhiù, chan eil mi a’ faicinn mar a dh’ obraicheadh ​​​​seo airson siostaman mar Haiku, a tha fios agam nach eil Docker no a leithid ann, ach cuideachd airson FreeBSD chan eil Docker ann, agus mar sin chan eil an duilgheadas seo sònraichte do Haiku).

Mas fheàrr, faodar tagraidhean Haiku a thogail am broinn soitheach Docker airson Linux. Anns an t-suidheachadh seo, faodar an co-chruinneachadh airson Haiku a thoirt a-steach do na pìoban a th’ ann mar-thà. A bheil crois-chruinneachaidh ann? No am bu chòir dhomh atharrais a dhèanamh air Haiku gu lèir taobh a-staigh soitheach Docker a’ cleachdadh rudeigin mar QEMU / KVM (a ’gabhail ris gun obraich e mar sin taobh a-staigh Docker)? Air an t-slighe, tha mòran phròiseactan a 'cleachdadh phrionnsabalan coltach ris. Mar eisimpleir, bidh Scribus a’ dèanamh seo - tha e ri fhaighinn mu thràth airson Haiku. Aon latha thig an latha nuair as urrainn dhomh a chuir leithid sin Tarraing iarrtasan gu pròiseactan eile gus taic Haiku a chur ris.

Tha aon den luchd-leasachaidh a’ mìneachadh:

Airson pròiseactan eile a tha airson pasganan a chruthachadh iad fhèin, thathas a’ toirt taic don dòigh àbhaisteach CMake/CPack. Faodar taic a thoirt do shiostaman togail eile le bhith a’ gairm prògram togail a’ phacaid gu dìreach, rud a tha ceart gu leòr ma tha ùidh aig daoine ann. Tha eòlas a 'sealltainn: gu ruige seo chan eil mòran ùidh air a bhith ann, agus mar sin dh'obraich haikuporter cho freagarrach dhuinn, ach, aig a' cheann thall, bu chòir an dà dhòigh obrachadh còmhla. Bu chòir dhuinn seata innealan a thoirt a-steach airson bathar-bog tar-thogail bho Linux no siostam obrachaidh frithealaiche sam bith eile (chan eil Haiku air a dhealbhadh gus ruith air frithealaichean).

Bidh mi a 'toirt seachad gèilleadh seasmhach. Bidh luchd-cleachdaidh cunbhalach Linux a’ giùlan an luchd a bharrachd seo agus bagannan a bharrachd (tèarainteachd, smachd teann, msaa) a tha riatanach airson siostam obrachaidh frithealaiche, ach chan ann airson fear pearsanta. Mar sin tha mi ag aontachadh gu tur gur e a bhith comasach air aplacaidean Haiku a thogail air Linux an dòigh air adhart.

co-dhùnadh

Tha e comasach tagraidhean POSIX a ghluasad gu Haiku, ach dh’ fhaodadh gum bi e nas daoire na ath-thogail àbhaisteach. Bhithinn gu cinnteach an sàs ann an seo airson ùine mhòr mura biodh e airson cuideachadh bho dhaoine bhon t-sianal #haiku air lìonra irc.freenode.net. Ach eadhon cha robh iad an-còmhnaidh a 'faicinn dè bha ceàrr.

Tha tagraidhean sgrìobhte ann an Qt na eisgeachd furasta. Chuir mi ri chèile tagradh demo sìmplidh gun duilgheadas sam bith.

Tha e gu math furasta pasgan a thogail airson tagraidhean sìmplidh, ach dìreach airson feadhainn “air an leigeil ma sgaoil gu traidiseanta”, i.e. le dreachan de thasglannan còd stòr airson taic ann an haikuports. Airson togail leantainneach (togail airson gach gealltanas atharrachaidhean) le GitHub, tha e coltach nach eil a h-uile dad cho sìmplidh. An seo tha Haiku a’ faireachdainn nas coltaiche ri cuairteachadh Linux na an toradh air Mac, far am faigh thu pasgan nuair a phutas tu air a’ phutan “Build” ann an XCode .app, deiseil airson a chuir a-steach do ìomhaigh diosc .dmg, air ullachadh airson luchdachadh sìos air an làrach-lìn agam.
Tha e glè choltach gum bi togail leantainneach de thagraidhean stèidhichte air siostam obrachaidh “frithealaiche”, mar eisimpleir, Linux, comasach ma tha iarrtas ann bho luchd-leasachaidh, ach aig an àm seo tha gnìomhan eile, nas èiginnich aig pròiseact Haiku.

Feuch e thu fhèin! Às deidh na h-uile, tha pròiseact Haiku a 'toirt seachad ìomhaighean airson booting bho DVD no USB, air an gineadh ежедневно. Gus a stàladh, dìreach luchdaich sìos an ìomhaigh agus sgrìobh e gu draibhear flash a ’cleachdadh Sgòthan geala

A bheil ceist sam bith agad? Tha sinn a 'toirt cuireadh dhut gu Ruiseanach sianal telegram.

Sealladh farsaing air mearachd: Mar a loisgeas tu thu fhèin nad chas ann an C agus C ++. Cruinneachadh reasabaidhean Haiku OS

bho ùghdar eadar-theangachadh: seo an còigeamh artaigil san t-sreath mu Haiku.

Liosta de na h-artaigilean: A 'chiad fhear An dàrna fear An treas fear An ceathramh

Source: www.habr.com

Cuir beachd ann