Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil

TL; DR: Chonaic newbie Haiku don chéad uair, ag iarraidh roinnt clár a phortáil ón domhan Linux.

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil
Mo chéad chlár portáilte Haiku, pacáistithe i bhformáid hpkg

Le déanaí Fuair ​​​​mé amach Haiku, córas oibriúcháin iontach maith do ríomhairí pearsanta.
Inniu beidh mé ag foghlaim conas cláir nua a phortáil chuig an gcóras oibriúcháin seo. Is é an príomhfhócas ná cur síos ar an gcéad taithí ar aistriú go Haiku ó thaobh forbróra Linux de. Gabh mo leithscéal as aon bhotúin dúr a rinne mé ar an mbealach, mar níl seachtain fiú ó d’íoslódáil mé Haiku den chéad uair.

Ba mhaith liom trí sprioc a bhaint amach:

  • Port feidhmchlár simplí CLI
  • Port iarratas ó GUI go Qt
  • Ansin pacáiste iad i bhformáid hpkg (toisc go bhfuil mé fós ag smaoineamh ar AppDir agus AppImage a oiriúnú do Haiku...)

Ar aghaidh linn. I rannóga an doiciméadú и Forbairt, chomh maith le wiki ó HaikuPorts fuair mé an treo ceart. Tá fiú leabhar PDF ar líne BeOS: Feidhmchlár Unix a aistriú.
467 leathanach - agus tá sé seo ó 1997! Tá sé scanrúil breathnú taobh istigh, ach tá súil agam don chuid is fearr. Is ábhar misnigh é focail an fhorbróra: “thóg sé tamall fada toisc nach raibh BeOS comhlíontach POSIX,” ach tá Haiku “den chuid is mó” mar sin cheana féin.

Feidhmchlár simplí CLI a iompar

Ba é an chéad smaoineamh an t-iarratas a phortáil uaigneas, ach, mar a d'éirigh sé amach, tá sé seo cheana féin déanta fadó fadó.

An chéad iarracht: faic le féachaint

An rud nach féidir liom a thuiscint ná sin cheana féin Tá aipeanna aistrithe go Haiku le breis agus 10 mbliana - in ainneoin nach bhfuil an OS féin fiú leagan 1.0 fós.

An dara iarracht: gá athscríobh

Mar sin úsáidfidh mé tadhaill-770, CLI chun an printéir Brother P-Touch 770 a rialú a úsáidim chun lipéid a phriontáil.
Priontálann mé lipéid éagsúla air, agus b’fhéidir go bhfaca tú cheana san alt roimhe seo. Beagán níos luaithe, scríobh mé clár fillte GUI beag i Python (toisc go bhfuil sé i Gtk+, beidh sé riachtanach é a athscríobh, agus is cúis mhaith é seo le foghlaim).

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil
Printéir lipéad Brother P-Touch 770 An oibreoidh sé le Haiku?

Tá eolas ag bainisteoir pacáiste Haiku faoi leabharlanna agus orduithe, mar sin má fhaighim teachtaireacht "ní féidir liom libintl a aimsiú" agus mé ag rith configure - I seoladh díreach pkgman install devel:libintl agus beidh an pacáiste riachtanach le fáil. Mar an gcéanna pkgman install cmd:rsync. Bhuel, etc.

Ach amháin nuair nach n-oibríonn sé 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

B'fhéidir go bhfuil udev ró-bhunaithe ar Linux agus mar sin níl sé ann do Haiku. Rud a chiallaíonn go gcaithfidh mé an cód foinse atá mé ag iarraidh a thiomsú a chur in eagar.
Eh, ní féidir leat léim thar do cheann, agus níl a fhios agam fiú cá háit le tosú.

Tríú iarracht

Bheadh ​​sé go deas a bheith tmate do Haiku, ansin ligfinn d’fhorbróirí Haiku nascadh le mo sheisiún críochfoirt – ar eagla go n-imíonn rud éigin mícheart. Tá na treoracha simplí go leor:

./autogen.sh
./configure
make
make install

Breathnaíonn go maith, mar sin cén fáth nach mbainfidh tú triail as ar 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

Sa chéim seo osclaíonn mé HaikuDepot agus cuardaigh curses.
Fuarthas rud éigin a thug leid dom fiosrú níos inniúla:

/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

Arís chuaigh mé go HaikuDepot, agus, ar ndóigh, fuair devel:msgpack_c_cpp_devel. Cad iad na hainmneacha aisteacha 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

Ag an gcéim seo, thuig mé go dteastaíonn i bhfad níos mó eolais ná mar a theastaíonn le haghaidh atógáil simplí chun clár a aistriú go Haiku.
Labhair mé leis na forbróirí cairdiúil Haiku, casadh sé amach go bhfuil fabht i msgpack, agus tar éis cúpla nóiméad a fheiceáil mé paiste i HaikuPorts. Is féidir liom a fheiceáil le mo shúile féin conas an pacáiste ceartaithe ag dul anseo (buildslave - meaisíní fíorúla).

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil
Ag tógáil an msgpack ceartaithe ar buildmaster

Idir amanna cuirim paiste chuig in aghaidh an tsrutha chun tacaíocht Haiku a chur le msgpack.

Cúig nóiméad ina dhiaidh sin, tá an msgpack nuashonraithe ar fáil cheana féin in 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.

Gan choinne go maith. An ndúirt mé é sin?!

Fillim ar ais go dtí an bhunfhadhb:

/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

Anois tá an chuma ar an scéal nach bhfuil an locht ar msgpack. Tá mé ag trácht 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.

Bhuel, seo linn arís... Dála an scéil:

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

An tUasal. waddlesplash insíonn sé duit cá háit le tochailt:

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

Anseo phost mé config.log.

Mhínigh siad dom go bhfuil rud éigin eile i libnetwork chomh maith le libresolv ar Haiku. De réir dealraimh ní mór an cód a chur in eagar tuilleadh. Is gá smaoineamh…

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

An cheist shíoraí: cad atá ar siúl?

/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 rud céanna, ach amháin i bpróifíl. Googled agus fuair sé seo. Má chuireann tú -lssp Cuidíonn “uaireanta”, déanaim iarracht:

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

WOW! Tá sé ag tosú! Ach…

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

Déanfaidh mé iarracht dífhabhtú comhad anseo:

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

Tá “Droch-aitheantas calafoirt” cosúil le cárta gnó cheana féin haiku. B'fhéidir go bhfuil tuairim ag duine cad atá mícheart agus conas é a shocrú? Más ea, nuashonróidh mé an t-alt. Nasc le GitHub.

Ag aistriú an fheidhmchláir GUI go Qt.

Roghnaím feidhmchlár simplí QML.

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

Tá sé an-simplí. Níos lú ná nóiméad!

Feidhmchláir phacáistithe i hpkg ag baint úsáide as haikuporter agus haikuports.

Cad ba cheart dom tosú leis? Níl aon doiciméadú simplí ann, téim chuig an gcainéal #haiku ar irc.freenode.net agus cloisim:

  • Foireann package - bealach ísealleibhéil chun pacáistí a chruthú. Don chuid is mó, is leor PackageInfo di, mar a thuairiscítear san alt "É a dhéanamh isteach i bpacáiste ceart .hpkg"
  • Ní mór dom rud éigin a dhéanamh den sórt sin
  • Is féidir é a úsáid hpkg cruthaitheoir (tuairteanna sé dom, tuairisciú earráide)

Níl sé soiléir cad atá le déanamh. Is dóigh liom go bhfuil treoirleabhar stíle Hello World do thosaitheoirí ag teastáil uaim, go hidéalach físeán. Bheadh ​​sé go deas réamhrá áisiúil a bheith agat ar HaikuPorter freisin, mar a dhéantar in GNU dia duit.

Léigh mé an méid seo a leanas:

haikuporter is uirlis é chun comhthionscadail phacáiste a chruthú do Haiku. Úsáideann sé stór HaikuPorts mar bhunáit do gach pacáiste. Úsáidtear oidis Haikuporter chun pacáistí a chruthú.

Ina theannta sin, faighim amach:

Ní gá oidis a stóráil i stóráil HaikuPorts. Is féidir leat stór eile a dhéanamh, na hoidis a chur ann, agus ansin haikuporter a dhíriú air.

Díreach mar a theastaíonn uaim - mura bhfuil tú ag lorg bealach chun an pacáiste a scaoileadh go poiblí. Ach is ábhar é seo do phost eile.

Suiteáil 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

Oideas a scríobh

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
}

An t-oideas a chur le chéile

Sábháilim an comhad faoin ainm QtQuickApp-1.0.recipe, ina dhiaidh sin a sheolaim aikuporter -S ./QuickApp-1.0.recipe. Seiceáiltear spleáchais do gach pacáiste sa stór haikuports, a thógann roinnt ama. Rachaidh mé chun caife a fháil.

Cén fáth ar domhan ar chóir an tseiceáil seo a dhéanamh ar mo mheaisín áitiúil, agus ní go lárnach ar an bhfreastalaí uair amháin do gach duine?

Dar leis an Uas. waddlesplash:

Mar sin is féidir leat aon chomhad a athscríobh sa stór 😉 Is féidir leat é seo a bharrfheabhsú beagán, agus an fhaisnéis riachtanach á ríomh nuair is gá, mar is fíor-annamh a dhéantar na hathruithe deiridh.

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

Tarlaíonn sé nach bhfuil a leithéid de rud ann agus comhad oidis rialta ina bhfuil cód foinse d'fheidhmchláir. Ní mór duit é a choinneáil i stór i bhformáid HaikuPorts.

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

Déanann an fíric seo an tionól níos deacra. Ní maith liom go háirithe é, ach is dóigh liom go bhfuil sé riachtanach ionas go mbeidh na bogearraí foinse oscailte ar fad le feiceáil i HaikuPorts sa deireadh.

Faighim na rudaí seo a 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.

Céard atá mícheart? Tar éis irc a léamh déanaim:

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

Tá ceist spéisiúil tagtha chun cinn. Má chuireann mé seiceam leis an oideas - an mbeidh sé ag teacht leis an gealltanas git is déanaí maidir le comhtháthú leanúnach? (Deimhníonn an forbróir: "Ní oibreoidh sé. Tá na hoidis deartha le bheith measartha cobhsaí.")

Le haghaidh spraoi, cuir leis an t-oideas:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Níl sé sásta fós:

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

Cad atá á dhéanamh aige? Tar éis an tsaoil, is stór git é seo, tá an cód ann go díreach cheana féin, níl aon rud le díphacáil. Ó mo thaobh, ba chóir go mbeadh an uirlis cliste go leor gan díphacáil a lorg má tá sé os cionn an url GitHub.

B’fhéidir go n-oibreoidh uri git://

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

Anois gearánann sé mar seo:

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

Hmm, cén fáth a bhfuil gach rud chomh casta sin, cén fáth nach féidir leat “obair a dhéanamh”? Tar éis an tsaoil, níl sé chomh neamhchoitianta rud éigin a thógáil ó GitHub. Cibé an uirlisí é a oibríonn ar an bpointe boise, gan gá le socrú, nó mar a thugaim "fussing" air.

B'fhéidir go n-oibreoidh sé mar seo:

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

Ní hea. Faighim an earráid aisteach seo fós agus déanaim, mar a thuairiscítear anseo

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

Táim ag bogadh beagán níos faide, ach cén fáth go bhfuil sé ag screadaíl orm (níl GitHub slán!) Agus fós ag iarraidh rud éigin a dhíphacáil.

De réir An tUasal. waddlesplash:

Bhuel, tá, ba é an chúis an fonn a sheiceáil sláine na sonraí a fuarthas le haghaidh tionóil. Is é ceann de na roghanna ná seiceálacha na cartlainne a fhíorú, ach is féidir leat, ar ndóigh, comhaid aonair hash, nach gcuirfear i bhfeidhm iad, mar gheall ar tógann sé i bhfad níos faide. Is é an toradh atá air seo ná “neamhshlándáil” git agus VCS eile. Is dócha go mbeidh sé seo amhlaidh i gcónaí, ós rud é go bhfuil sé éasca go leor cartlann a chruthú ar GitHub agus go minic níos tapúla. Bhuel, sa todhchaí, b'fhéidir nach mbeidh an teachtaireacht earráide chomh flashy... (ní dhéanaimid oidis den sórt sin a chumasc i HaikuPorts a thuilleadh).

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

As an sean-nós, téim ag iarraidh daoine maithe ar an gcainéal #haiku ar an líonra irc.freenode.net. Agus cá mbeinn gan iad? Tar éis an leid, thuig mé gur cheart dom a úsáid:

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

Ceart go leor, ba léir cad a dhéanann sé - íoslódálann sé cartlann leis an gcód foinse d'athbhreithniú áirithe. Tá sé dúr, ó mo thaobh, agus ní go díreach an rud a theastaigh uaim, is é sin, an t-athbhreithniú is déanaí a íoslódáil ón máistir-bhrainse.

Mhínigh duine de na forbróirí é ar an mbealach seo:

Tá ár CI féin againn, agus mar sin déanfar gach rud a chuirtear sa stór haikuports a phacáistiú do gach úsáideoir, agus nílimid ag iarraidh an baol a bheith ann “gach rud sa leagan is déanaí in aghaidh an tsrutha” a bhailiú agus a sheachadadh.

Tuigtear! In aon chás, seo an méid a tharla:

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

Déanann sé an ad infinitum seo arís. De réir dealraimh is earráid é seo (an bhfuil feidhmchlár ann? Níorbh fhéidir liom é a aimsiú).

С haikuporter agus stór haikuports Níl aon mhothú “just works” aige dó, ach mar fhorbróir, tá roinnt rudaí a thaitníonn liom faoi bheith ag obair le Haiku. Don chuid is mó, tá sé cosúil leis an tSeirbhís Tógála Oscailte, sraith uirlisí le haghaidh tógála Linux a thógáil: thar a bheith cumhachtach, le cur chuige córasach, ach overkill do m'iarratas beag "hello world".

Arís, de réir Mr. waddlesplash:

Go deimhin, tá HaikuPorter dian go leor de réir réamhshocraithe (móide tá modh lint chomh maith le modh dian chun é a dhéanamh níos déine fós!), Ach amháin toisc go gcruthaíonn sé pacáistí a oibreoidh, seachas díreach pacáistí a chruthú. Sin an fáth go ndéanann sé gearán faoi spleáchais neamhdhearbhaithe, leabharlanna nár iompórtáladh i gceart, leaganacha míchearta, etc. Is é an sprioc aon agus gach fadhb a ghabháil, lena n-áirítear cinn sa todhchaí, sula mbeidh a fhios ag an úsáideoir faoi (is é seo an fáth nach raibh sé indéanta avrdude a shuiteáil, toisc gur shonraigh an t-oideas spleáchas i ndáiríre). Ní pacáistí aonair amháin nó fiú leaganacha sonracha SO iad leabharlanna. Cinntíonn HaikuPorter go dtugtar faoi deara é seo go léir sna hoidis féin chun earráidí a sheachaint le linn forghníomhaithe.

I bprionsabal, tá bonn cirt leis an leibhéal déine seo agus córas oibriúcháin á chruthú, ach is cosúil go bhfuil feidhmchlár “hello world” ag baint leis nach bhfuil gá leis. Chinn mé triail a bhaint as rud éigin eile.

Feidhmchláir a thógáil i bhformáid hpkg ag baint úsáide as an ordú “cruthaigh pacáiste”.

B'fhéidir, seo An n-oibreoidh treoracha simplí níos fearr domsa?

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

Gan choinne go tapa, gan choinne simplí, éifeachtach gan choinne. Go díreach conas is maith liom é, iontach!

Suiteáil - cad é agus cén áit?

Bogtha an comhad QtQuickApp.hpkg go ~/config/packagesag baint úsáide as bainisteoir comhad, agus ina dhiaidh sin bhí QtQuickApp le feiceáil go draíochta ~/config/apps.
Arís, gan choinne go tapa, simplí agus éifeachtach. Iontach, dochreidte!

Ach... (cá mbeimis gan iad!)

Tá an app fós ar iarraidh ón liosta roghchlár apps agus QuickLaunch. Sílim go bhfuil a fhios agam cheana féin conas é a dheisiú. Sa bhainisteoir comhad bogaim QtQuickApp.hpkg ó ~/config/packages go /system/packages.

Níl, fós ar iarraidh. Réir dealraimh, chaill mé (go maith, agus na treoracha) rud éigin.

Tar éis féachaint ar an táb "Ábhar" i HaikuDepot le haghaidh roinnt feidhmchlár eile, chonaic mé go bhfuil comhaid cosúil le /data/mimedb/application/x-vnd... is suntasaí fós é /data/deskbar/menu/Applications/….

Bhuel, cad ba cheart dom a chur ann? Tar ar...

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

Táim cinnte go n-oibreoidh an cleas seo, ach tá na ceisteanna fós ann: cén fáth a bhfuil sé seo riachtanach, cad chuige? Ceapaim go scriosann sé seo an tuiscint iomlán go bhfuil an córas chomh sofaisticiúil sin.

Mar a mhínigh an tUas. waddlesplash:

Uaireanta tá feidhmchláir ann a theastaíonn ó fheidhmchláir eile ach nach bhfuil sa roghchlár. Mar shampla, LegacyPackageInstaller i do scáileán, ag próiseáil cartlanna .pkg i bhformáid BeOS. Ba mhaith liom go ndéanfadh úsáideoirí iad a shuiteáil, ach beidh mearbhall mar thoradh ar a láithreacht sa roghchlár.

Ar chúis éigin feictear domsa go bhfuil réiteach níos simplí ann, mar shampla Hidden=true i gcomhaid .desktop ar Linux. Cén fáth nach mbeidh an fhaisnéis "i bhfolach" ina hacmhainn agus ina tréith de chuid an chórais comhad?

Rud nach bhfuil go háirithe subtle is ea ainm an fheidhmchláir (roinnt) a thaispeánann an roghchlár, deskbar, ceangailte go docht feadh na slí.

An tUasal. Míníonn waddlesplash é seo:

Ba cheart go dtuigfí “Barra Deisce” sa chás seo mar chineál téarma ginearálta (ar an mbealach céanna go mór le “tascbharra”, a thagraíonn d’fheidhmchlár Windows agus don choincheap ginearálta araon). Bhuel, ós rud é seo deskbar, ní “Deskbar”, is féidir é seo a thuiscint ar an mbealach céanna.

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil
2 chomhadlann "beagnach comhionann" le feidhmchláir iontu

Cén fáth a bhfuil 2 eolaire le feidhmchláir, agus freisin cén fáth go bhfuil mo QtQuickApplication i gceann amháin, ach nach bhfuil sa cheann eile? (Tar éis an tsaoil, ní córas amháin é seo, ach an dara húsáideoir, rud a bheadh ​​intuigthe domsa go pearsanta).
Tá mearbhall mór orm agus is dóigh liom gur cheart é seo a aontú.

trácht ón Uasal. waddlesplash

Tá feidhmchláir nach bhfuil ag teastáil sa roghchlár sa chatalóg Apps. Ach ní mór an cás leis an roghchlár a fheabhsú i ndáiríre, chun é a dhéanamh níos saincheaptha.

Iarratas, nó ní tharlóidh sé 😉

N'fheadar: an bhfuil sé fíor-riachtanach iarratais a óstáil i /system/apps, má fheiceann úsáideoirí ann iad, tá sé neamh-inmhianaithe. B'fhéidir go mbeadh sé níos fearr iad a chur in áit eile nach dtiocfaidh an t-úsáideoir i dteagmháil leo? Díreach mar a dhéantar é i Mac OS X, áit a bhfuil ábhar na bpacáistí .app, nár cheart a bheith le feiceáil ag an úsáideoir i /Applications, i bhfolach i ndoimhneacht /System/Library/…“`.

Cad faoi spleáchais?

Sílim gur fiú na spleáchais a shonrú ar bhealach éigin, ceart? An féidir Qt a mheas mar chuid éigeantach de shuiteáil Haiku de réir réamhshocraithe? Ní hea! Níl Qt suiteáilte de réir réamhshocraithe. An féidir le tógálaí pacáiste spleáchais a bhrath go huathoibríoch trí chomhaid ELF a sheiceáil? Dúradh liom go ndéanann HaikuPorter é seo i ndáiríre, ach package Níl. Sin toisc nach bhfuil ann ach "tógálaí pacáiste" a chruthaíonn comhaid ina aonar hpkg.

Ar cheart Haiku a dhéanamh níos sofaisticiúla trí pholasaí a chur leis nár cheart go mbeadh spleáchas ar phacáistí lasmuigh de Haiku ag pacáiste? haikuports? (Ba mhaith liom, mar go ndéanfadh a leithéid de pholasaí rudaí i bhfad níos éasca - bheadh ​​an córas in ann spleáchais gach pacáiste a íoslódálfar ó áit ar bith a réiteach go huathoibríoch, gan a bheith ag baint úsáide as foinsí pacáiste breise.)

An tUasal. Míníonn waddlesplash:

Níor mhaith linn saoirse na bhforbróirí a theorannú an oiread sin, toisc go bhfuil sé soiléir má tá CompanyX ag iarraidh a shraith bogearraí féin a thacú le spleáchais (agus mar sin stór), déanfaidh sé sin go hiomlán faoi shaoirse.

Sa chás sin, b’fhéidir gurbh fhiú a mholadh go seachnódh pacáistí tríú páirtí spleáchas ar rud ar bith nach bhfuil san áireamh i haikuports trí gach rud a theastaíonn a phacáistiú go hiomlán leis an bhfeidhmchlár. Ach is dóigh liom gur ábhar é seo d'alt amach anseo sa tsraith seo. [An bhfuil an t-údar ag dul i dtreo AppImage? — thart. aistritheoir]

Ag cur deilbhín feidhmchláir leis

Cad a tharlóidh má theastaíonn uaim ceann de na deilbhíní néata ionsuite a chur le hacmhainní m’fheidhmchláir nuachruthaithe? Tarlaíonn sé gur ábhar iontach é seo, mar sin beidh sé mar bhunús don chéad alt eile.

Conas tógálacha iarratais leanúnacha a eagrú?

Samhlaigh tionscadal cosúil le Inkscape (tá, tá a fhios agam nach bhfuil sé ar fáil fós i Haiku, ach tá sé áisiúil é a thaispeáint air). Tá stór cód foinse acu https://gitlab.com/inkscape/inkscape.
Gach uair a gheallann duine a n-athruithe ar an stór, seoltar píblínte tógála, ina dhiaidh sin déantar na hathruithe a thástáil go huathoibríoch, a thógáil, agus an feidhmchlár a phacáistiú i bpacáistí éagsúla, lena n-áirítear AppImage for Linux (pacáiste feidhmchláir neamhspleách is féidir a íoslódáil le haghaidh tástála áitiúil beag beann ar cad is féidir nó nach féidir a shuiteáil ar an gcóras [Bhí a fhios agam é! — thart. aistritheoir]). Tarlaíonn an rud céanna le gach iarratas cumaiscthe brainse, ionas gur féidir leat an feidhmchlár a tógadh ón gcód atá molta san iarratas cumaisc a íoslódáil roimh chumasc.

Mo chúigiú lá le Haiku: déanaimis roinnt clár a phortáil
Cumaisc iarratais le stádas tógála agus an cumas na dénártha tiomsaithe a íoslódáil má éiríonn leis an tógáil (marcáilte le glas)

Ritheann an tógáil i gcoimeádáin Docker. Cuireann GitLab reathaithe saor in aisce ar fáil ar Linux, agus is dóigh liom go bhféadfadh sé go bhféadfaí do reathaí féin a áireamh (dála an scéil, ní fheicim conas a n-oibreodh sé seo do chórais cosúil le Haiku, a bhfuil a fhios agam nach bhfuil Docker nó a chomhionann acu, ach freisin do FreeBSD níl aon Docker ann, mar sin ní fadhb uathúil í an fhadhb seo le Haiku).

Go hidéalach, is féidir feidhmchláir Haiku a thógáil taobh istigh de choimeádán Docker le haghaidh Linux. Sa chás seo, is féidir an tionól do Haiku a thabhairt isteach sna píblínte atá ann cheana féin. An bhfuil tras-thiomsaitheoirí ann? Nó ar cheart dom aithris a dhéanamh ar gach ceann de Haiku taobh istigh de choimeádán Docker ag baint úsáide as rud éigin cosúil le QEMU/KVM (ag glacadh leis go n-oibreoidh sé mar sin taobh istigh de Docker)? Dála an scéil, úsáideann go leor tionscadal prionsabail den chineál céanna. Mar shampla, déanann Scribus é seo - tá sé ar fáil cheana féin do Haiku. Lá amháin a thiocfaidh an lá nuair is féidir liom a sheoladh den sórt sin Tarraing iarratais chuig tionscadail eile chun tacaíocht Haiku a chur leis.

Míníonn ceann de na forbróirí:

I gcás tionscadal eile ar mian leo pacáistí a chruthú iad féin, tacaítear leis an modh rialta CMake/CPack. Is féidir tacú le córais tógála eile trí ghlaoch a chur ar chlár tógála an phacáiste go díreach, rud atá ceart go leor má tá suim ag daoine ann. Léiríonn taithí: go dtí seo ní raibh mórán suime ann, agus mar sin d'oibrigh haikuporter chomh áisiúil dúinn, ach, ar deireadh thiar, ba cheart go n-oibreodh an dá mhodh le chéile. Ba cheart dúinn sraith uirlisí a thabhairt isteach le haghaidh bogearraí tras-thógála ó Linux nó ó aon chóras oibriúcháin freastalaí eile (níl Haiku deartha le reáchtáil ar fhreastalaithe).

Tugaim ubhagán seasta. Déanann úsáideoirí rialta Linux an t-ualach breise seo go léir agus an bagáiste breise (slándáil, rialú docht, etc.) atá riachtanach do chóras oibriúcháin freastalaí, ach ní le haghaidh ceann pearsanta. Mar sin aontaím go hiomlán gurb é an bealach is fearr le haipeanna Haiku a thógáil ar Linux.

Conclúid

Is féidir iarratais POSIX a aistriú chuig Haiku, ach d’fhéadfadh sé a bheith níos costasaí ná gnáth-atógáil. Is cinnte go mbeinn i bhfostú leis seo ar feadh i bhfad mura mbeadh sé chun cabhair a fháil ó dhaoine ón gcainéal #haiku ar líonra irc.freenode.net. Ach fiú ní raibh siad i gcónaí a fheiceáil láithreach cad a bhí mícheart.

Is eisceacht éasca iad iarratais scríofa i Qt. Chuir mé feidhmchlár taispeána simplí le chéile gan aon fhadhbanna.

Tá sé éasca go leor pacáiste a chruthú le haghaidh feidhmchláir shimplí freisin, ach ní dhéantar ach do na cinn “a scaoiltear go traidisiúnta”, i.e. a bhfuil cartlanna cód foinse leaganacha atá beartaithe le haghaidh tacaíochta i haikuports. Le tógáil leanúnach (tógáil le haghaidh gach gealltanas athruithe) le GitHub, is cosúil nach bhfuil gach rud chomh simplí. Anseo mothaíonn Haiku níos cosúla le dáileadh Linux ná an toradh ar Mac, áit a bhfaigheann tú pacáiste nuair a chliceálann tú ar an gcnaipe “Build” in XCode .app, réidh le cur isteach i íomhá diosca .dmg, ullmhaithe le híoslódáil ar mo shuíomh Gréasáin.
Is dóichí go mbeifear in ann feidhmchláir a thógáil go leanúnach bunaithe ar chóras oibriúcháin “freastalaí”, mar shampla, Linux, má bhíonn éileamh ó fhorbróirí, ach faoi láthair tá tascanna eile níos práinní ag baint le tionscadal Haiku.

Bain triail as tú féin! Tar éis an tsaoil, soláthraíonn an tionscadal Haiku íomhánna le haghaidh tosaithe ó DVD nó USB, ginte laethúil. Chun é a shuiteáil, níl le déanamh ach an íomhá a íoslódáil agus é a scríobh chuig tiomáint flash ag baint úsáide as Etcher

An bhfuil aon cheist agat? Tugaimid cuireadh duit chuig an Rúisis ina labhraítear cainéal teileagraim.

Forbhreathnú earráide: Conas tú féin a shoot sa chos i C agus C ++. Bailiúchán oidis Haiku OS

Ó an t-údar aistriúchán: seo é an cúigiú alt sa tsraith faoi Haiku.

Liosta alt: An chéad An dara An tríú Ceathrú

Foinse: will.com

Add a comment