Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii

TL; DR: A newbie ri Haiku fun igba akọkọ, gbiyanju lati gbe diẹ ninu awọn eto lati Linux aye.

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii
Eto gbigbe Haiku akọkọ mi, ti akopọ ni ọna kika hpkg rẹ

Laipe Mo ṣe awari Haiku, ẹrọ iṣẹ ṣiṣe iyalẹnu ti o dara fun awọn PC.
Loni Emi yoo kọ bi a ṣe le gbe awọn eto tuntun si ẹrọ iṣẹ ṣiṣe. Idojukọ akọkọ jẹ apejuwe ti iriri akọkọ ti yi pada si Haiku lati oju wiwo ti olupilẹṣẹ Linux kan. Mo tọrọ gafara fun eyikeyi awọn aṣiṣe aṣiwere ti Mo ṣe ni ọna, nitori ko tii paapaa ọsẹ kan lati igba akọkọ ti Mo ṣe igbasilẹ Haiku.

Mo fẹ lati ṣaṣeyọri awọn ibi-afẹde mẹta:

  • Ṣe ibudo ohun elo CLI ti o rọrun
  • Ibudo ohun elo lati GUI to Qt
  • Lẹhinna ṣajọ wọn ni ọna kika hpkg (niwọn igba ti Mo tun n ronu nipa imudọgba AppDir ati AppImage fun Haiku…)

Jẹ ká bẹrẹ. Ni awọn apakan iwe и idagbasokebi daradara bi ninu wiki lati HaikuPorts Mo ti ri itọsọna ọtun. Iwe PDF lori ayelujara paapaa wa BeOS: Gbigbe ohun elo Unix kan.
Awọn oju-iwe 467 - ati pe eyi wa lati 1997! O jẹ ẹru lati wo inu, ṣugbọn Mo nireti fun ohun ti o dara julọ. Awọn ọrọ ti Olùgbéejáde jẹ iwuri: "o gba akoko pipẹ nitori BeOS ko ni ifaramọ POSIX," ṣugbọn Haiku "fun apakan pupọ julọ" ti wa tẹlẹ.

Gbigbe ohun elo CLI ti o rọrun

Ero akọkọ ni lati gbe ohun elo naa avrdude, ṣugbọn, bi o ti wa ni jade, eyi ti wa tẹlẹ ṣe ni ojo ti oti pe seyin.

Gbiyanju akọkọ: ko si nkankan lati wo

Ohun ti Emi ko le loye ni pe tẹlẹ Awọn ohun elo ti wa ni gbigbe si Haiku fun ọdun 10 ju lọ - botilẹjẹpe otitọ pe OS funrararẹ ko paapaa ẹya 1.0 sibẹsibẹ.

Igbiyanju keji: nilo lati tun kọ

Nitorina Emi yoo lo ọwọ-770, CLI fun iṣakoso Arákùnrin P-Touch 770 itẹwe ti mo lo lati tẹ awọn aami.
Mo tẹjade awọn aami oriṣiriṣi lori rẹ, ati pe o le ti rii tẹlẹ ninu nkan ti tẹlẹ. Ni diẹ sẹyin, Mo kowe kekere GUI wrapper eto ni Python (niwon o ti wa ni Gtk +, o yoo ni lati wa ni tun-kọ, ati awọn ti o jẹ kan ti o dara idi lati ko eko).

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii
Arakunrin P-Touch 770 itẹwe aami. Ṣe yoo ṣiṣẹ pẹlu Haiku?

Oluṣakoso package Haiku mọ nipa awọn ile-ikawe ati awọn aṣẹ, nitorinaa ti MO ba gba ifiranṣẹ “ko le rii libintl” nigbati o nṣiṣẹ configure - Mo kan ifilọlẹ pkgman install devel:libintl ati awọn ti a beere package yoo ri. Bakanna pkgman install cmd:rsync. O dara, ati bẹbẹ lọ.

Ayafi nigbati eyi ko ṣiṣẹ:

/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

Boya udev jẹ orisun Linux pupọ ati nitorinaa ko si fun Haiku. Eyi tumọ si pe Mo nilo lati ṣatunkọ koodu orisun ti Mo n gbiyanju lati ṣajọ.
Eh, o ko le fo lori ori rẹ, ati pe Emi ko paapaa mọ ibiti mo ti bẹrẹ.

Igbiyanju kẹta

Yoo dara lati ni tmate fun Haiku, lẹhinna Emi yoo gba awọn olupilẹṣẹ Haiku laaye lati sopọ si igba ebute mi - ti nkan kan ba jẹ aṣiṣe. Awọn ilana jẹ ohun rọrun:

./autogen.sh
./configure
make
make install

O dara, nitorina kilode ti o ko gbiyanju lori 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

Ni igbesẹ yii Mo ṣii HaikuDepot ati wa curses.
Ohun kan ti ri, eyiti o fun mi ni itọka fun ibeere ti o ni agbara diẹ sii:

/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

Lẹẹkansi Mo lọ si HaikuDepot, ati, dajudaju, ri devel:msgpack_c_cpp_devel. Kini awọn orukọ ajeji wọnyi?

/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

Ni igbesẹ yii, Mo rii pe gbigbe eto kan si Haiku nilo imọ pupọ diẹ sii ju ti o nilo fun atunṣe ti o rọrun.
Mo sọrọ si awọn oludasilẹ Haiku ọrẹ, o wa ni jade pe kokoro kan wa ninu msgpack, ati lẹhin iṣẹju diẹ Mo rii alemo kan ni HaikuPorts. Mo le rii pẹlu oju ara mi bii package ti a ṣe atunṣe nlo nibi (buildslave - foju ero).

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii
Ṣiṣe agbero msgpack ti a ṣe atunṣe lori buildmaster

Laarin awọn akoko Mo fi patch kan ranṣẹ si oke lati ṣafikun atilẹyin Haiku si msgpack.

Iṣẹju marun lẹhinna, msgpack imudojuiwọn ti wa tẹlẹ ni 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.

Lairotẹlẹ dara. Ṣe Mo ti sọ bẹ?!

Mo pada si iṣoro atilẹba:

/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

Bayi o dabi pe msgpack ko ni ẹbi. Mo n soro IMAXLABEL в tty.c bẹ:

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

Esi:

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.

O dara, nibi a tun lọ… Nipa ọna:

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

Ọgbẹni. waddlesplash sọ ibi ti o ti gbẹ:

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

Nibi ti mo ti Pipa config.log.

Nwọn si salaye fun mi pe o wa ni nkankan miran ni libnetwork ni afikun si libresolv on Haiku. Nkqwe koodu nilo lati ṣatunkọ siwaju sii. Nilo lati ronu…

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

Ibeere ayeraye: kini n ṣẹ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

Ohun kanna, nikan ni profaili. Googled ati ri eyi. Ti o ba fi kun -lssp “nigba miiran” ṣe iranlọwọ, Mo gbiyanju:

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

Iro ohun! O bẹrẹ! Sugbon…

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

Emi yoo gbiyanju lati ṣatunṣe faili nibi:

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

"ID ibudo buburu" ti dabi kaadi iṣowo kan haiku. Boya ẹnikan ni imọran ohun ti ko tọ ati bi o ṣe le ṣatunṣe rẹ? Ti o ba jẹ bẹ, Emi yoo ṣe imudojuiwọn nkan naa. Ọna asopọ si GitHub.

Gbigbe ohun elo GUI to Qt.

Mo yan ohun elo QML ti o rọrun.

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

Gan rọrun. O kere ju iṣẹju kan!

Awọn ohun elo iṣakojọpọ ni hpkg lilo haikuporter ati haikuports.

Kini o yẹ MO bẹrẹ pẹlu? Ko si iwe ti o rọrun, Mo lọ si ikanni #haiku lori irc.freenode.net ki o gbọ:

  • Egbe package - ọna kekere lati ṣẹda awọn idii. Fun apakan pupọ julọ, PackageInfo ti to fun u, bi a ti ṣe apejuwe rẹ ni apakan “Ṣiṣe o sinu package .hpkg to dara”
  • Mo nilo lati se nkankan iru
  • Le ṣee lo hpkg-olupilẹṣẹ (O ṣubu fun mi, aṣiṣe iroyin)

Ko ṣe kedere kini lati ṣe. Mo gboju le won Mo nilo a Hello World ara akobere ká guide, apere a fidio. Yoo dara lati tun ni ifihan irọrun si HaikuPorter, bi o ti ṣe ni GNU hello.

Mo n ka nkan wọnyi:

haikuporter jẹ ọpa fun ṣiṣẹda awọn iṣẹ akanṣe ti o wọpọ fun Haiku. O nlo ibi ipamọ HaikuPorts bi ipilẹ fun gbogbo awọn idii. Awọn ilana Haikuporter ni a lo lati ṣẹda awọn idii.

Ni afikun, Mo rii pe:

Ko si iwulo lati tọju awọn ilana ni ibi ipamọ HaikuPorts. O le ṣe ibi ipamọ miiran, fi awọn ilana sinu rẹ, ati lẹhinna tọka haikuporter si.

O kan ohun ti Mo nilo - ti ko ba n wa ọna lati tu package naa silẹ ni gbangba. Ṣugbọn eyi jẹ koko-ọrọ fun ifiweranṣẹ miiran.

Fifi haikuporter ati 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

Kikọ ohunelo

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
}

Nto ohunelo

Mo fi faili pamọ labẹ orukọ QtQuickApp-1.0.recipe, lẹhin eyi ni mo ṣe ifilọlẹ aikuporter -S ./QuickApp-1.0.recipe. Awọn igbẹkẹle ti ṣayẹwo fun gbogbo awọn idii ninu ibi ipamọ haikuports, eyi ti o gba diẹ ninu awọn akoko. Emi yoo lọ gba kofi diẹ.

Kilode ti o wa lori ile aye yẹ ki o ṣe ayẹwo yii lori ẹrọ agbegbe mi, kii ṣe ni aarin lori olupin ni ẹẹkan fun gbogbo eniyan?

Gege bi Mr. waddlesplash:

Pẹlu iru pe o le tun atunkọ eyikeyi faili ni ibi ipamọ 😉 O le mu eyi pọ si diẹ, ṣe iṣiro alaye pataki nigbati o nilo, nitori awọn iyipada ti o kẹhin ti o ṣọwọn.

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

O wa ni pe ko si iru nkan bii faili ohunelo deede ti o ni koodu orisun ohun elo rẹ ninu. O nilo lati tọju rẹ ni ibi ipamọ ni ọna kika HaikuPorts.

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

Otitọ yii jẹ ki apejọ naa jẹ diẹ sii. Emi ko fẹran rẹ ni pataki, ṣugbọn Mo ro pe o jẹ dandan ki bajẹ gbogbo sọfitiwia orisun ṣiṣi yoo han ni HaikuPorts.

Mo gba nkan wọnyi:

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

Kini aṣiṣe? Lẹhin kika irc Mo ṣe:

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

Ibeere ti o nifẹ si ti dide. Ti MO ba ṣafikun checksum kan si ohunelo - yoo jẹ ibamu git tuntun fun isọpọ lemọlemọfún bi? (Olugbese naa jẹrisi: “Kii yoo ṣiṣẹ. Awọn ilana jẹ apẹrẹ lati jẹ iduroṣinṣin diẹ.”)

Fun igbadun, ṣafikun si ohunelo naa:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Sibẹ ko ni itẹlọrun:

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

Kí ló ń ṣe? Lẹhinna, eyi jẹ ibi ipamọ git, koodu ti wa tẹlẹ taara, ko si nkankan lati ṣii. Lati oju-ọna mi, ọpa yẹ ki o jẹ ọlọgbọn to lati ma wa fun unpacker ti o ba wa loke url GitHub.

Boya uri git:// yoo ṣiṣẹ

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

Bayi o kerora bi eleyi:

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

Hmm, kilode ti ohun gbogbo jẹ idiju, kilode ti o ko le “ṣiṣẹ nikan”? Lẹhinna, kii ṣe loorekoore lati kọ nkan lati GitHub. Boya awọn irinṣẹ ti o ṣiṣẹ lẹsẹkẹsẹ, laisi iwulo fun iṣeto, tabi bi MO ṣe pe ni “fussing”.

Boya o yoo ṣiṣẹ bi eleyi:

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

Bẹẹkọ. Mo tun gba aṣiṣe ajeji yii ati ṣe, bi apejuwe nibi

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

Mo n gbe siwaju diẹ, ṣugbọn kilode ti o n pariwo si mi (GitHub ko ni aabo!) Ati pe o tun n gbiyanju lati tu nkan kan silẹ.

Gegebi Ọgbẹni. waddlesplash:

O dara, bẹẹni, idi naa ni ifẹ lati ṣayẹwo otitọ ti data ti a gba fun apejọ. Ọkan ninu awọn aṣayan ni lati mọ daju awọn checksum ti ile ifi nkan pamosi, ṣugbọn o le, dajudaju, hash awọn faili kọọkan, eyiti kii yoo ṣe imuse, nitori o gba Elo to gun. Abajade eyi ni “ailewu” ti git ati VCS miiran. Eyi yoo ṣee ṣe nigbagbogbo nigbagbogbo, nitori ṣiṣẹda ile-ipamọ lori GitHub jẹ irọrun pupọ ati nigbagbogbo yiyara. O dara, ni ọjọ iwaju, boya ifiranṣẹ aṣiṣe kii yoo jẹ didan… (a ko dapọ mọ iru awọn ilana ni 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

Lati iwa atijọ, Mo lọ beere lọwọ awọn eniyan rere lori ikanni #haiku lori nẹtiwọki irc.freenode.net. Ati nibo ni Emi yoo wa laisi wọn? Lẹhin itọka naa, Mo rii pe MO yẹ ki n lo:

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

O dara, o han gbangba ohun ti o ṣe - o ṣe igbasilẹ igbasilẹ pẹlu koodu orisun ti atunyẹwo kan. O jẹ aṣiwere, lati oju-ọna mi, ati kii ṣe deede ohun ti Mo fẹ, eyun, lati ṣe igbasilẹ atunyẹwo tuntun lati ẹka titunto si.

Ọkan ninu awọn olupilẹṣẹ ṣe alaye rẹ ni ọna yii:

A ni CI tiwa, nitorinaa ohun gbogbo ti a gbe sinu ibi ipamọ haikuports yoo jẹ akopọ fun gbogbo awọn olumulo, ati pe a ko fẹ lati ṣe eewu gbigba ati jiṣẹ “ohun gbogbo ni ẹya tuntun ni oke.”

Oye! Ni eyikeyi idiyele, eyi ni ohun ti o ṣẹlẹ:

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

O tun yi ad infinitum. Nkqwe eyi jẹ aṣiṣe (Ṣe ohun elo kan wa? Emi ko le rii).

С haikuporter ati ibi ipamọ haikuports Ko ni imọlara “o kan ṣiṣẹ”, ṣugbọn bi olupilẹṣẹ, awọn nkan kan wa ti Mo nifẹ nipa ṣiṣẹ pẹlu Haiku. Fun apakan pupọ julọ, o jọra si Iṣẹ Kọ Ṣii, ṣeto awọn irinṣẹ fun kikọ Linux: lagbara pupọju, pẹlu ọna eto, ṣugbọn apọju fun ohun elo “hello agbaye” kekere mi.

Lẹẹkansi, ni ibamu si Mr. waddlesplash:

Lootọ, HaikuPorter jẹ ohun ti o muna nipasẹ aiyipada (pẹlu ipo lint bi daradara bi ipo ti o muna lati jẹ ki o muna diẹ sii!), Ṣugbọn nitori pe o ṣẹda awọn idii ti yoo ṣiṣẹ, dipo ki o kan ṣiṣẹda awọn idii. Ti o ni idi ti o kerora nipa awọn igbẹkẹle ti a ko sọ, awọn ile-ikawe ti a ko wọle daradara, awọn ẹya ti ko tọ, ati bẹbẹ lọ. Ibi-afẹde ni lati yẹ eyikeyi ati gbogbo awọn iṣoro, pẹlu awọn ọjọ iwaju, ṣaaju ki olumulo to mọ nipa rẹ (eyi ni idi ti ko ṣee ṣe lati fi sori ẹrọ avrdude, nitori pe a ti sọ pato igbẹkẹle gangan ninu ohunelo naa). Awọn ile-ikawe kii ṣe awọn idii ẹni kọọkan tabi paapaa awọn ẹya SO pato. HaikuPorter ṣe idaniloju pe gbogbo eyi ni a ṣe akiyesi ni awọn ilana funrararẹ lati yago fun awọn aṣiṣe lakoko ipaniyan.

Ni ipilẹ, ipele lile yii jẹ idalare nigbati o ṣẹda ẹrọ ṣiṣe, ṣugbọn o dabi pe ko ṣe pataki si mi fun ohun elo “hello agbaye”. Mo pinnu lati gbiyanju nkan miiran.

Ṣiṣe awọn ohun elo ni ọna kika hpkg nipa lilo aṣẹ “ṣẹda idii”.

Boya, eyi Ṣe awọn itọnisọna rọrun yoo ṣiṣẹ dara julọ fun mi?

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

Iyara lairotẹlẹ, rọrun lairotẹlẹ, munadoko lairotẹlẹ. Gangan bi mo ṣe fẹran rẹ, iyalẹnu!

Fifi sori - kini ati nibo?

Ti gbe faili QtQuickApp.hpkg si ~/config/packageslilo oluṣakoso faili, lẹhin eyi ti QtQuickApp magically han ni ~/config/apps.
Lẹẹkansi, iyara lairotẹlẹ, rọrun ati munadoko. Iyalẹnu, iyalẹnu!

Ṣugbọn ... (nibo ni a yoo wa laisi wọn!)

Ìfilọlẹ naa tun nsọnu lati atokọ akojọ awọn ohun elo ati QuickLaunch. Mo ro pe mo ti mọ tẹlẹ bi o ṣe le ṣatunṣe. Ni oluṣakoso faili ni mo gbe QtQuickApp.hpkg lati ~ / konfigi/packages to /system/packages.

Rara, ṣi sonu. Nkqwe, Mo (daradara, ati awọn ilana) padanu nkankan.

Lẹhin ti wo taabu “Awọn akoonu” ni HaikuDepot fun diẹ ninu awọn ohun elo miiran, Mo rii pe awọn faili wa bi /data/mimedb/application/x-vnd... ohun ti ani diẹ o lapẹẹrẹ ni /data/deskbar/menu/Applications/….

O dara, kini MO yẹ ki n fi sibẹ? Kọja siwaju...

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

Mo ni idaniloju pe ẹtan yii yoo ṣiṣẹ, ṣugbọn awọn ibeere wa: kilode ti eyi ṣe pataki, kini o jẹ fun? Mo ro pe eyi run awọn ìwò sami ti awọn eto jẹ ki fafa.

Gẹgẹbi alaye nipasẹ Ọgbẹni. waddlesplash:

Nigba miiran awọn ohun elo wa ti awọn ohun elo miiran nilo ṣugbọn ko si ninu akojọ aṣayan. Fun apẹẹrẹ, LegacyPackageInstaller ninu sikirinifoto rẹ, ṣiṣe awọn ile-ipamọ .pkg ni ọna kika BeOS. Emi yoo fẹ awọn olumulo lati fi wọn sii, ṣugbọn wiwa wọn ninu akojọ aṣayan yoo ja si iporuru.

Fun idi kan o dabi si mi pe o wa ojutu ti o rọrun, fun apẹẹrẹ Hidden=true ninu awọn faili .desktop lori Linux. Kilode ti o ko ṣe alaye "farasin" ni orisun ati abuda ti eto faili naa?

Ohun ti kii ṣe arekereke paapaa ni orukọ (diẹ ninu) ohun elo ti o ṣafihan akojọ aṣayan, deskbar, rigidly ti so pẹlú awọn ọna.

Ọgbẹni. waddlesplash ṣe alaye eyi:

“Ile tabili” ninu ọran yii yẹ ki o loye bi iru ọrọ gbogbogbo (ni ọna kanna bi “iṣẹ-ṣiṣe”, eyiti o tọka si mejeeji ohun elo Windows ati imọran gbogbogbo). O dara, lati igba yii deskbar, kii ṣe "Deskbar", eyi tun le loye ni ọna kanna.

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii
Awọn ilana 2 "fere aami kanna" pẹlu awọn ohun elo ninu wọn

Kí nìdí ni o wa 2 ilana pẹlu awọn ohun elo, ki o si tun idi ti mi QtQuickApplication ninu ọkan, sugbon ko ni awọn miiran? (Lẹhinna, eyi kii ṣe eto kan, ṣugbọn olumulo keji, eyiti yoo jẹ oye fun mi tikalararẹ).
Mo ni idamu gaan ati pe Mo ro pe eyi yẹ ki o jẹ iṣọkan.

ọrọìwòye Mr. waddlesplash

Awọn Apps katalogi ni awọn ohun elo ti ko nilo ninu akojọ aṣayan. Ṣugbọn ipo pẹlu akojọ aṣayan nilo lati ni ilọsiwaju gaan, lati jẹ ki o ṣe isọdi diẹ sii.

Ohun elo, tabi kii yoo ṣẹlẹ 😉

Mo ṣe iyalẹnu: ṣe o jẹ dandan gaan lati gbalejo awọn ohun elo ni /system/apps, ti o ba ti awọn olumulo ri wọn nibẹ, o jẹ undesirable. Boya yoo dara lati gbe wọn si aaye miiran nibiti olumulo ko ni pade wọn? Gẹgẹ bi o ti ṣe ni Mac OS X, nibiti awọn akoonu ti awọn idii .app, eyi ti ko yẹ ki o han si olumulo ni /Applications, fifipamọ sinu awọn ijinle /System/Library/…“`.

Kini nipa awọn igbẹkẹle?

Mo ro pe o tọ si pato awọn igbẹkẹle bakan, otun? Le Qt wa ni kà a dandan apa ti awọn Haiku fifi sori nipa aiyipada? Bẹẹkọ! Qt ko fi sori ẹrọ nipasẹ aiyipada. Njẹ olupilẹṣẹ package le ṣe awari awọn igbẹkẹle laifọwọyi nipa ṣiṣe ayẹwo awọn faili ELF? Mo ti so fun wipe HaikuPorter kosi ṣe eyi, ṣugbọn package Rara. Iyẹn jẹ nitori pe o kan “akọle idii” ti o kan ṣẹda awọn faili lori tirẹ hpkg.

Ṣe o yẹ ki Haiku jẹ ilọsiwaju diẹ sii nipa fifi eto imulo kun pe package ko yẹ ki o ni awọn igbẹkẹle lori awọn idii ni ita Haiku? haikuports? (Mo fẹ lati, nitori iru eto imulo kan yoo jẹ ki awọn nkan rọrun pupọ - eto naa yoo ni anfani lati yanju awọn igbẹkẹle ti gbogbo package ti o ṣe igbasilẹ lati ibikibi, laisi idoti ni ayika pẹlu awọn orisun package afikun.)

Ọgbẹni. waddlesplash ṣe alaye:

A kii yoo fẹ lati ṣe idinwo ominira ti awọn olupilẹṣẹ pupọ, nitori o han gbangba pe ti CompanyX ba fẹ lati ṣe atilẹyin eto sọfitiwia tirẹ pẹlu awọn igbẹkẹle (ati nitorinaa ibi ipamọ), yoo ṣe bẹ patapata larọwọto.

Ni ọran yẹn, o le tọsi iṣeduro pe awọn idii ẹnikẹta yago fun awọn igbẹkẹle lori ohunkohun ti ko si ninu haikuports nipa iṣakojọpọ ohun gbogbo ti o nilo pẹlu ohun elo naa. Ṣugbọn Mo ro pe eyi jẹ koko-ọrọ fun nkan iwaju ni jara yii. [Ṣe onkọwe nlọ si AppImage? - isunmọ. onitumọ]

Fifi aami ohun elo kan kun

Kini ti MO ba fẹ ṣafikun ọkan ninu awọn aami afinju ti a ṣe sinu awọn orisun ti ohun elo tuntun ti a ṣẹda? O wa ni jade pe eyi jẹ koko-ọrọ iyalẹnu, nitorinaa yoo jẹ ipilẹ fun nkan atẹle.

Bii o ṣe le ṣeto awọn kikọ ohun elo lemọlemọfún?

Fojuinu iṣẹ akanṣe bii Inkscape (bẹẹni, Mo mọ pe ko tii wa ni Haiku, ṣugbọn o rọrun lati ṣafihan lori rẹ). Wọn ni ibi ipamọ koodu orisun kan https://gitlab.com/inkscape/inkscape.
Ni gbogbo igba ti ẹnikan ba ṣe awọn ayipada wọn si ibi ipamọ naa, a ṣe ifilọlẹ awọn opo gigun ti epo, lẹhin eyi ti awọn ayipada ti ni idanwo laifọwọyi, kọ, ati ohun elo ti a ṣajọpọ sinu ọpọlọpọ awọn idii, pẹlu AppImage fun Linux (papọ ohun elo imurasilẹ ti o le ṣe igbasilẹ fun idanwo agbegbe laibikita ohun ti o le tabi ko le fi sori ẹrọ lori awọn eto [Mo ti mọ! - isunmọ. onitumọ]). Ohun kanna ni o ṣẹlẹ pẹlu gbogbo ibeere iṣọpọ ẹka, nitorinaa o le ṣe igbasilẹ ohun elo ti a ṣe lati inu koodu ti a dabaa ninu ibeere iṣọpọ ṣaaju iṣọpọ.

Ọjọ karun mi pẹlu Haiku: jẹ ki a gbe awọn eto diẹ sii
Dapọ awọn ibeere pẹlu awọn ipo kikọ ati agbara lati ṣe igbasilẹ awọn alakomeji ti o ṣajọpọ ti kikọ ba ṣaṣeyọri (ti samisi ni alawọ ewe)

Kọ nṣiṣẹ ni Docker awọn apoti. GitLab nfunni ni awọn asare ọfẹ lori Linux, ati pe Mo ro pe o le ṣee ṣe lati pẹlu awọn aṣaju tirẹ (nipasẹ ọna, Emi ko rii bii eyi yoo ṣe ṣiṣẹ fun awọn eto bii Haiku, eyiti Mo mọ pe ko ni Docker tabi deede, ṣugbọn tun fun FreeBSD ko si Docker, nitorinaa iṣoro yii kii ṣe alailẹgbẹ si Haiku).

Bi o ṣe yẹ, awọn ohun elo Haiku le ṣe sinu apoti Docker kan fun Lainos. Ni ipo yii, apejọ fun Haiku le ṣe afihan sinu awọn opo gigun ti o wa tẹlẹ. O wa nibẹ agbelebu compilers? Tabi o yẹ ki n farawe gbogbo Haiku inu apo Docker kan nipa lilo nkan bii QEMU/KVM (a ro pe yoo ṣiṣẹ ni ọna yẹn inu Docker)? Nipa ọna, ọpọlọpọ awọn iṣẹ akanṣe lo awọn ilana kanna. Fun apẹẹrẹ, Scribus ṣe eyi - o ti wa tẹlẹ fun Haiku. Ni ojo kan ọjọ yoo wa nigbati mo le firanṣẹ iru Fa awọn ibeere si awọn iṣẹ akanṣe miiran lati ṣafikun atilẹyin Haiku.

Ọkan ninu awọn olupilẹṣẹ ṣe alaye:

Fun awọn iṣẹ akanṣe miiran ti nfẹ lati ṣẹda awọn idii funrararẹ, ọna CMake/CPack deede ni atilẹyin. Awọn ọna ṣiṣe kikọ miiran le ṣe atilẹyin nipasẹ pipe eto kikọ package taara, eyiti o dara ti eniyan ba nifẹ si. Iriri fihan: titi di isisiyi ko si anfani pupọ, nitorinaa haikuporter ṣiṣẹ bi o rọrun fun wa, ṣugbọn, nikẹhin, awọn ọna mejeeji yẹ ki o ṣiṣẹ papọ. A yẹ ki o ṣafihan eto awọn irinṣẹ fun sọfitiwia ile-agbelebu lati Lainos tabi ẹrọ iṣẹ olupin miiran (Haiku ko ṣe apẹrẹ lati ṣiṣẹ lori awọn olupin).

Mo fun a duro Ovation. Awọn olumulo Linux deede gbe gbogbo ẹru afikun yii ati ẹru afikun (aabo, iṣakoso to muna, ati bẹbẹ lọ) ti o jẹ pataki fun ẹrọ ṣiṣe olupin, ṣugbọn kii ṣe fun ọkan ti ara ẹni. Nitorinaa Mo gba patapata pe ni anfani lati kọ awọn ohun elo Haiku lori Linux ni ọna lati lọ.

ipari

Gbigbe awọn ohun elo POSIX si Haiku ṣee ṣe, ṣugbọn o le jẹ gbowolori diẹ sii ju atunkọ aṣoju lọ. Emi yoo dajudaju duro pẹlu eyi fun igba pipẹ ti kii ṣe fun iranlọwọ ti awọn eniyan lati ikanni #haiku lori nẹtiwọọki irc.freenode.net. Ṣugbọn paapaa wọn ko nigbagbogbo wo ohun ti ko tọ lẹsẹkẹsẹ.

Awọn ohun elo ti a kọ sinu Qt jẹ imukuro ti o rọrun. Mo fi ohun elo demo kan papọ laisi awọn iṣoro eyikeyi.

Ṣiṣepọ package fun awọn ohun elo ti o rọrun tun rọrun pupọ, ṣugbọn fun awọn “itusilẹ aṣa” nikan, ie. nini awọn iwe ipamọ koodu orisun ti ikede ti a pinnu fun atilẹyin ni haikuports. Fun kikọ lemọlemọfún (kọ fun gbogbo awọn iyipada ti awọn ayipada) pẹlu GitHub, ohun gbogbo dabi pe ko rọrun. Nibi Haiku kan lara diẹ sii bi pinpin Linux ju abajade lọ lori Mac kan, nibiti o ba tẹ bọtini “Kọ” ni XCode o gba idii kan .app, setan lati fi sii sinu aworan disk kan .dmg, pese sile fun igbasilẹ lori oju opo wẹẹbu mi.
Ilọsiwaju ti awọn ohun elo ti o da lori ẹrọ ṣiṣe “olupin” kan, fun apẹẹrẹ, Lainos, yoo ṣee ṣe pupọ julọ ti ibeere ba wa lati ọdọ awọn olupilẹṣẹ, ṣugbọn ni akoko yii iṣẹ akanṣe Haiku ni miiran, awọn iṣẹ ṣiṣe titẹ diẹ sii.

Gbiyanju o funrararẹ! Lẹhinna, iṣẹ Haiku pese awọn aworan fun booting lati DVD tabi USB, ti ipilẹṣẹ ежедневно. Lati fi sori ẹrọ, kan ṣe igbasilẹ aworan naa ki o sun si kọnputa filasi USB nipa lilo Etcher

Ni ibeere? A pe o si Russian-soro ikanni telegram.

Akopọ aṣiṣe: Bii o ṣe le taworan ararẹ ni ẹsẹ ni C ati C ++. Haiku OS Ohunelo Gbigba

Lati onkowe itumọ: eyi ni nkan karun ninu jara nipa Haiku.

Akojọ awọn nkan: Ni igba akọkọ ti Ekeji Kẹta Ẹkẹrin

orisun: www.habr.com

Fi ọrọìwòye kun