ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช

TL; DR: ืžืฉืชืžืฉ ื—ื“ืฉ ืจืื” ืืช Haiku ื‘ืคืขื ื”ืจืืฉื•ื ื”, ืžื ืกื” ืœื”ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช ืžืขื•ืœื ืœื™ื ื•ืงืก.

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช
ื”ืชื•ื›ื ื™ืช ื”ืจืืฉื•ื ื” ืฉืœื™ ื‘-Haiku ื”ืžื•ืขื‘ืจืช, ืืจื•ื–ื” ื‘ืคื•ืจืžื˜ hpkg ืฉืœื”

ืœืื—ืจื•ื ื” ื’ื™ืœื™ืชื™ ืืช Haiku, ืžืขืจื›ืช ื”ืคืขืœื” ืžืคืชื™ืขื” ืœื˜ื•ื‘ื” ืœืžื—ืฉื‘ื™ื ืื™ืฉื™ื™ื.
ื”ื™ื•ื ืืœืžื“ ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ืชื•ื›ื ื™ื•ืช ื—ื“ืฉื•ืช ืœืžืขืจื›ืช ื”ืคืขืœื” ื–ื•. ื”ืžื•ืงื“ ื”ืขื™ืงืจื™ ื”ื•ื ืชื™ืื•ืจ ื”ื—ื•ื•ื™ื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืžืขื‘ืจ ืœื”ื™ื™ืงื• ืžื ืงื•ื“ืช ืžื‘ื˜ื• ืฉืœ ืžืคืชื— ืœื™ื ื•ืงืก. ืื ื™ ืžืชื ืฆืœ ืขืœ ื›ืœ ื˜ืขื•ื™ื•ืช ืžื˜ื•ืคืฉื•ืช ืฉืขืฉื™ืชื™ ื‘ื“ืจืš, ืžื›ื™ื•ื•ืŸ ืฉืœื ืขื‘ืจ ืืคื™ืœื• ืฉื‘ื•ืข ืžืื– ืฉื”ื•ืจื“ืชื™ ืืช ื”ื™ื™ืงื• ืœืจืืฉื•ื ื”.

ืื ื™ ืจื•ืฆื” ืœื”ืฉื™ื’ ืฉืœื•ืฉ ืžื˜ืจื•ืช:

  • ื”ืขื‘ืจ ื™ื™ืฉื•ื CLI ืคืฉื•ื˜
  • ื”ืขื‘ืจ ื™ื™ืฉื•ื ืž-GUI ืœ-Qt
  • ืœืื—ืจ ืžื›ืŸ ืืจื•ื– ืื•ืชื ื‘ืคื•ืจืžื˜ hpkg (ืžื›ื™ื•ื•ืŸ ืฉืื ื™ ืขื“ื™ื™ืŸ ื—ื•ืฉื‘ ืขืœ ื”ืชืืžืช AppDir ื•-AppImage ืขื‘ื•ืจ Haiku...)

ื‘ื•ืื• ื ืชื—ื™ืœ. ื‘ืงื˜ืขื™ื ืชื™ืขื•ื“ ะธ ื”ืชืคืชื—ื•ืช, ื›ืžื• ื’ื ื‘ ื•ื™ืงื™ ืž- HaikuPorts ืžืฆืืชื™ ืืช ื”ื›ื™ื•ื•ืŸ ื”ื ื›ื•ืŸ. ื™ืฉ ืืคื™ืœื• ืกืคืจ PDF ืžืงื•ื•ืŸ BeOS: ื”ืขื‘ืจื” ืฉืœ ื™ื™ืฉื•ื ื™ื•ื ื™ืงืก.
467 ืขืžื•ื“ื™ื - ื•ื–ื” ืž-1997! ื–ื” ืžืคื—ื™ื“ ืœื”ืกืชื›ืœ ืคื ื™ืžื”, ืื‘ืœ ืื ื™ ืžืงื•ื•ื” ืœื˜ื•ื‘. ื“ื‘ืจื™ ื”ืžืคืชื— ืžืขื•ื“ื“ื™ื: "ื–ื” ืœืงื— ื”ืจื‘ื” ื–ืžืŸ ื›ื™ BeOS ืœื ื”ื™ื” ืชื•ืื POSIX", ืื‘ืœ Haiku "ืœืจื•ื‘" ื›ื‘ืจ ื›ื›ื”.

ื”ืขื‘ืจื” ืฉืœ ื™ื™ืฉื•ื CLI ืคืฉื•ื˜

ื”ืžื—ืฉื‘ื” ื”ืจืืฉื•ื ื” ื”ื™ื™ืชื” ืœื ื™ื™ื“ ืืช ื”ืืคืœื™ืงืฆื™ื” avrdude, ืื‘ืœ, ื›ืคื™ ืฉื”ืชื‘ืจืจ, ื–ื” ื›ื‘ืจ ืขืฉื• ืœืคื ื™ ื–ืžืŸ ืจื‘.

ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ: ืื™ืŸ ืžื” ืœืฆืคื•ืช

ืžื” ืฉืื ื™ ืœื ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ื–ื” ื›ื‘ืจ ืืคืœื™ืงืฆื™ื•ืช ื”ื•ืขื‘ืจื• ืœื”ื™ื™ืงื• ื‘ืžืฉืš ื™ื•ืชืจ ืž-10 ืฉื ื™ื - ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉืžืขืจื›ืช ื”ื”ืคืขืœื” ืขืฆืžื” ืขื“ื™ื™ืŸ ืœื ื’ืจืกื” 1.0.

ื ื™ืกื™ื•ืŸ ืฉื ื™: ืฆืจื™ืš ืœื›ืชื•ื‘ ืžื—ื“ืฉ

ืื– ืื ื™ ืืฉืชืžืฉ ptouch-770, CLI ืœืฉืœื™ื˜ื” ื‘ืžื“ืคืกืช Brother P-Touch 770 ืฉื‘ื” ืื ื™ ืžืฉืชืžืฉ ืœื”ื“ืคืกืช ืชื•ื•ื™ื•ืช.
ืื ื™ ืžื“ืคื™ืก ืขืœื™ื• ืชื•ื•ื™ื•ืช ืฉื•ื ื•ืช, ื•ืื•ืœื™ ื›ื‘ืจ ืจืื™ืชื ืืช ื–ื” ื‘ืžืืžืจ ื”ืงื•ื“ื. ืงืฆืช ืงื•ื“ื ืœื›ืŸ, ื›ืชื‘ืชื™ ืชื•ื›ื ื™ืช ืžืขื˜ืคืช GUI ืงื˜ื ื” ื‘-Python (ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ื‘-Gtk+, ื”ื™ื ืชืฆื˜ืจืš ืœื”ื™ื›ืชื‘ ืžื—ื“ืฉ, ื•ื–ื• ืกื™ื‘ื” ื˜ื•ื‘ื” ืœืœืžื•ื“).

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช
ืžื“ืคืกืช ืชื•ื•ื™ื•ืช Brother P-Touch 770. ื”ืื ื–ื” ื™ืขื‘ื•ื“ ืขื Haiku?

ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉืœ Haiku ื™ื•ื“ืข ืขืœ ืกืคืจื™ื•ืช ื•ืคืงื•ื“ื•ืช, ืื– ืื ืื ื™ ืžืงื‘ืœ ื”ื•ื“ืขืช "ืœื ืžื•ืฆื libintl" ื‘ื–ืžืŸ ื”ืคืขืœื” configure ืื ื™ ืจืง ืžืฉื’ืจ pkgman install devel:libintl ื•ื”ื—ื‘ื™ืœื” ื”ื ื“ืจืฉืช ืชื™ืžืฆื. ื›ึผึฐืžื•ึน ื›ึตืŸ pkgman install cmd:rsync. ื•ื‘ื›ืŸ ื•ื›ื•'.

ืืœื ืื ื–ื” ืœื ืขื•ื‘ื“:

/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

ืื•ืœื™ udev ืžื‘ื•ืกืก ืžื“ื™ ืขืœ ืœื™ื ื•ืงืก ื•ืœื›ืŸ ืื™ื ื• ืงื™ื™ื ืขื‘ื•ืจ Haiku. ืžื” ืฉืื•ืžืจ ืฉืื ื™ ืฆืจื™ืš ืœืขืจื•ืš ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืื ื™ ืžื ืกื” ืœื”ื“ืจ.
ืื”, ืืชื” ืœื ื™ื›ื•ืœ ืœืงืคื•ืฅ ืžืขืœ ื”ืจืืฉ, ื•ืื ื™ ืืคื™ืœื• ืœื ื™ื•ื“ืข ืžืื™ืคื” ืœื”ืชื—ื™ืœ.

ื ื™ืกื™ื•ืŸ ืฉืœื™ืฉื™

ื–ื” ื™ื”ื™ื” ื ื—ืžื“ ืœืงื‘ืœ tmate ืขื‘ื•ืจ Haiku, ืื– ื”ื™ื™ืชื™ ืžืืคืฉืจ ืœืžืคืชื—ื™ Haiku ืœื”ืชื—ื‘ืจ ืœืกืฉืŸ ื”ื˜ืจืžื™ื ืœ ืฉืœื™ - ืœืžืงืจื” ืฉืžืฉื”ื• ื™ืฉืชื‘ืฉ. ื”ื”ื•ืจืื•ืช ื“ื™ ืคืฉื•ื˜ื•ืช:

./autogen.sh
./configure
make
make install

ื ืจืื” ื˜ื•ื‘, ืื– ืœืžื” ืœื ืœื ืกื•ืช ืืช ื–ื” ื‘ื”ื™ื™ืงื•?

/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

ื‘ืฉืœื‘ ื–ื” ืื ื™ ืคื•ืชื— ืืช HaikuDepot ื•ืžื—ืคืฉ curses.
ื ืžืฆื ืžืฉื”ื• ืฉื ืชืŸ ืœื™ ืจืžื– ืœืฉืื™ืœืชื” ืžื•ื›ืฉืจืช ื™ื•ืชืจ:

/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

ืฉื•ื‘ ื”ืœื›ืชื™ ืœ- HaikuDepot, ื•ื›ืžื•ื‘ืŸ, ืžืฆืืชื™ devel:msgpack_c_cpp_devel. ืžื” ื–ื” ื”ืฉืžื•ืช ื”ืžื•ื–ืจื™ื ื”ืืœื”?

/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

ื‘ืฉืœื‘ ื–ื”, ื”ื‘ื ืชื™ ืฉื”ืขื‘ืจืช ืชื•ื›ื ื™ืช ืœื”ื™ื™ืงื• ื“ื•ืจืฉืช ื”ืจื‘ื” ื™ื•ืชืจ ื™ื“ืข ืžืžื” ืฉื“ืจื•ืฉ ืœื‘ื ื™ื™ื” ืžื—ื“ืฉ ืคืฉื•ื˜ื”.
ื“ื™ื‘ืจืชื™ ืขื ืžืคืชื—ื™ Haiku ื”ื™ื“ื™ื“ื•ืชื™ื™ื, ืžืกืชื‘ืจ ืฉื™ืฉ ื‘ืื’ ื‘-msgpack, ื•ืื—ืจื™ ื›ืžื” ื“ืงื•ืช ืื ื™ ืจื•ืื” ืชื™ืงื•ืŸ ื‘- HaikuPorts. ืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ื‘ืžื• ืขื™ื ื™ ืื™ืš ื”ื—ื‘ื™ืœื” ืžืชื•ืงื ืช ื”ื•ืœืš ืœื›ืืŸ (buildslave - ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช).

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช
ื‘ื ื™ื™ืช ื”-sgpack ื”ืžืชื•ืงืŸ ื‘-buildmaster

ื‘ื™ืŸ ื”ื–ืžื ื™ื ืื ื™ ืฉื•ืœื— ื˜ืœืื™ ืœืžืขืœื” ื”ื–ืจื ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืชืžื™ื›ืช Haiku ืœ-msgpack.

ื—ืžืฉ ื“ืงื•ืช ืœืื—ืจ ืžื›ืŸ, ื”-msgpack ื”ืžืขื•ื“ื›ืŸ ื›ื‘ืจ ื–ืžื™ืŸ ื‘ื”ื™ื™ืงื•:

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

ื˜ื•ื‘ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™. ื”ืื ืืžืจืชื™ ืืช ื–ื”?!

ืื ื™ ื—ื•ื–ืจ ืœื‘ืขื™ื” ื”ืžืงื•ืจื™ืช:

/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

ื›ืขืช ื ืจืื” ืฉ-msgpack ืœื ืืฉืžื”. ืื ื™ ืžื’ื™ื‘ IMAXLABEL ะฒ tty.c ืœื›ืŸ you

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

ืชื•ืฆืื”:

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.

ื•ื‘ื›ืŸ, ื”ื’ืขื ื• ืฉื•ื‘... ื“ืจืš ืื’ื‘:

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

ืื“ื•ืŸ. waddlesplash ืื•ืžืจ ืœืš ืื™ืคื” ืœื—ืคื•ืจ:

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

ื›ืืŸ ืคืจืกืžืชื™ config.log.

ื”ื ื”ืกื‘ื™ืจื• ืœื™ ืฉื™ืฉ ืขื•ื“ ืžืฉื”ื• ื‘-libnetwork ื‘ื ื•ืกืฃ ืœ-libresolv ื‘-Haiku. ื›ื ืจืื” ืฉืฆืจื™ืš ืœืขืจื•ืš ืขื•ื“ ืืช ื”ืงื•ื“. ืฆืจื™ืš ืœื—ืฉื•ื‘โ€ฆ

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

ื”ืฉืืœื” ื”ื ืฆื—ื™ืช: ืžื” ืงื•ืจื”?

/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

ืื•ืชื• ื“ื‘ืจ, ืจืง ื‘ืคืจื•ืคื™ืœ. ืขืฉื” ื’ื•ื’ืœ ื• ืžืฆื ืืช ื–ื”. ืื ืชื•ืกื™ืฃ -lssp "ืœืคืขืžื™ื" ืขื•ื–ืจ, ืื ื™ ืžื ืกื”:

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

ื•ื•ืื•! ื–ื” ืžืชื—ื™ืœ! ืื‘ืœโ€ฆ

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

ืื ื™ ืื ืกื” ืœื ืคื•ืช ื‘ืื’ื™ื ืงื•ื‘ืฅ ื›ืืŸ:

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

"ืžื–ื”ื” ื™ืฆื™ืื” ื’ืจื•ืข" ื”ื•ื ื›ื‘ืจ ื›ืžื• ื›ืจื˜ื™ืก ื‘ื™ืงื•ืจ ื”ื™ื™ืงื•. ืื•ืœื™ ืœืžื™ืฉื”ื• ื™ืฉ ืจืขื™ื•ืŸ ืžื” ืœื ื‘ืกื“ืจ ื•ืื™ืš ืœืชืงืŸ ืืช ื–ื”? ืื ื›ืŸ, ืืขื“ื›ืŸ ืืช ื”ืžืืžืจ. ืงื™ืฉื•ืจ ืœ GitHub.

ื”ืขื‘ืจืช ื™ื™ืฉื•ื ื”-GUI ืœ-Qt.

ืื ื™ ื‘ื•ื—ืจ ื‘ืืคืœื™ืงืฆื™ื™ืช 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!

ืžืžืฉ ืคืฉื•ื˜. ืคื—ื•ืช ืžื“ืงื”!

ืืจื™ื–ื” ืฉืœ ื™ื™ืฉื•ืžื™ hpkg ื‘ืืžืฆืขื•ืช haikuporter ื•- haikuports.

ืขื ืžื” ืื ื™ ืฆืจื™ืš ืœื”ืชื—ื™ืœ? ืื™ืŸ ืชื™ืขื•ื“ ืคืฉื•ื˜, ืื ื™ ื”ื•ืœืš ืœืขืจื•ืฅ #haiku ื‘-irc.freenode.net ื•ืฉื•ืžืข:

  • ืงื‘ื•ืฆื” package - ื“ืจืš ื‘ืจืžื” ื ืžื•ื›ื” ืœื™ืฆื•ืจ ื—ื‘ื™ืœื•ืช. ืœืจื•ื‘, PackageInfo ืžืกืคื™ืง ืœื”, ื›ืคื™ ืฉืžืชื•ืืจ ื‘ืกืขื™ืฃ "ื”ืคื™ื›ืชื” ืœื—ื‘ื™ืœืช .hpkg ื ื›ื•ื ื”"
  • ืื ื™ ืฆืจื™ืš ืœืขืฉื•ืช ืžืฉื”ื• ั‚ะฐะบะพะต
  • ื ื™ืชืŸ ืœื”ืฉืชืžืฉ hpkg-creator (ื–ื” ืงื•ืจืก ืœื™, ื“ื™ื•ื•ื— ืฉื’ื™ืื•ืช)

ืœื ื‘ืจื•ืจ ืžื” ืœืขืฉื•ืช. ืื ื™ ืžื ื™ื— ืฉืื ื™ ืฆืจื™ืš ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื ื‘ืกื’ื ื•ืŸ Hello World, ื‘ืื•ืคืŸ ืื™ื“ื™ืืœื™ ืกืจื˜ื•ืŸ. ื–ื” ื™ื”ื™ื” ื ื—ืžื“ ืœืงื‘ืœ ื’ื ื”ื™ื›ืจื•ืช ื ื•ื—ื” ืขื HaikuPorter, ื›ืคื™ ืฉื ืขืฉื” ื‘-GNU hello.

ืงืจืืชื™ ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

haikuporter ื”ื•ื ื›ืœื™ ืœื™ืฆื™ืจืช ืคืจื•ื™ืงื˜ื™ ื—ื‘ื™ืœื” ื ืคื•ืฆื™ื ืขื‘ื•ืจ Haiku. ื”ื•ื ืžืฉืชืžืฉ ื‘ืžืื’ืจ HaikuPorts ื›ื‘ืกื™ืก ืœื›ืœ ื”ื—ื‘ื™ืœื•ืช. ืžืชื›ื•ื ื™ ื”ื™ื™ืงื•ืคื•ืจื˜ืจ ืžืฉืžืฉื™ื ืœื™ืฆื™ืจืช ื—ื‘ื™ืœื•ืช.

ื‘ื ื•ืกืฃ, ืื ื™ ืžื’ืœื” ืฉ:

ืื™ืŸ ืฆื•ืจืš ืœืื—ืกืŸ ืžืชื›ื•ื ื™ื ื‘ืื—ืกื•ืŸ 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

ื›ืชื™ื‘ืช ืžืชื›ื•ืŸ

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
}

ื”ืจื›ื‘ืช ื”ืžืชื›ื•ืŸ

ืื ื™ ืฉื•ืžืจ ืืช ื”ืงื•ื‘ืฅ ืชื—ืช ื”ืฉื QtQuickApp-1.0.recipe, ืฉืœืื—ืจื™ื• ืื ื™ ืžืฉื™ืง aikuporter -S ./QuickApp-1.0.recipe. ื”ืชืœื•ืช ื ื‘ื“ืงื•ืช ืขื‘ื•ืจ ื›ืœ ื”ื—ื‘ื™ืœื•ืช ื‘ืžืื’ืจ ื”ื™ื™ืงื•ืคื•ืจื˜ื™ื, ื•ื–ื” ืœื•ืงื— ืงืฆืช ื–ืžืŸ. ืื ื™ ืืœืš ืœืฉืชื•ืช ืงืคื”.

ืœืžื” ืœืขื–ืื–ืœ ื‘ื“ื™ืงื” ื–ื• ืฆืจื™ื›ื” ืœื”ืชื‘ืฆืข ื‘ืžื—ืฉื‘ ื”ืžืงื•ืžื™ ืฉืœื™, ื•ืœื ื‘ืื•ืคืŸ ืžืจื›ื–ื™ ื‘ืฉืจืช ืคืขื ืื—ืช ืœื›ื•ืœื?

ืœื“ื‘ืจื™ ืžืจ. waddlesplash:

ืขื ื›ื–ื” ืฉืืชื” ื™ื›ื•ืœ ืœืฉื›ืชื‘ ื›ืœ ืงื•ื‘ืฅ ื‘ืžืื’ืจ ๐Ÿ˜‰ ืืชื” ื™ื›ื•ืœ ืœื™ื™ืขืœ ืืช ื–ื” ืงืฆืช, ืœื—ืฉื‘ ืืช ื”ืžื™ื“ืข ื”ื“ืจื•ืฉ ื‘ืขืช ื”ืฆื•ืจืš, ื›ื™ ื”ืฉื™ื ื•ื™ื™ื ื”ืื—ืจื•ื ื™ื ืฉื‘ื•ืฆืขื• ื”ื ื“ื™ ื ื“ื™ืจื™ื.

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

ืžืกืชื‘ืจ ืฉืื™ืŸ ื“ื‘ืจ ื›ื–ื” ืงื•ื‘ืฅ ืžืชื›ื•ื ื™ื ืจื’ื™ืœ ืฉืžื›ื™ืœ ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืฉืœืš. ืืชื” ืฆืจื™ืš ืœืฉืžื•ืจ ืื•ืชื• ื‘ืžืื’ืจ ื‘ืคื•ืจืžื˜ HaikuPorts.

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

ืขื•ื‘ื“ื” ื–ื• ื”ื•ืคื›ืช ืืช ื”ื”ืจื›ื‘ื” ืœืžืกื•ืจื‘ืœืช ื™ื•ืชืจ. ืื ื™ ืœื ืื•ื”ื‘ ืืช ื–ื” ื‘ืžื™ื•ื—ื“, ืื‘ืœ ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ื”ื›ืจื—ื™ ื›ื“ื™ ืฉื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื›ืœ ืชื•ื›ื ื•ืช ื”ืงื•ื“ ื”ืคืชื•ื— ื™ื•ืคื™ืขื• ื‘- HaikuPorts.

ืื ื™ ืžืงื‘ืœ ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

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

ืžื” ืœื ื‘ืกื“ืจ? ืœืื—ืจ ืงืจื™ืืช irc ืื ื™ ืขื•ืฉื”:

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

ืขืœืชื” ืฉืืœื” ืžืขื ื™ื™ื ืช. ืื ืื•ืกื™ืฃ ืฆ'ืงsum ืœืžืชื›ื•ืŸ - ื”ืื ื”ื•ื ื™ืชืื™ื ืœ-git commit ื”ืขื“ื›ื ื™ ื‘ื™ื•ืชืจ ืœืื™ื ื˜ื’ืจืฆื™ื” ืžืชืžืฉื›ืช? (ื”ืžืคืชื— ืžืืฉืจ: "ื–ื” ืœื ื™ืขื‘ื•ื“. ื”ืžืชื›ื•ื ื™ื ืžืชื•ื›ื ื ื™ื ืœื”ื™ื•ืช ื™ืฆื™ื‘ื™ื ื™ื—ืกื™ืช.")

ื‘ืฉื‘ื™ืœ ื”ื›ื™ืฃ ื”ื•ืกื™ืคื• ืœืžืชื›ื•ืŸ:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

ืขื“ื™ื™ืŸ ืœื ืžืจื•ืฆื”:

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

ืžื” ื”ื•ื ืขื•ืฉื”? ืื—ืจื™ ื”ื›ืœ, ื–ื” ืžืื’ืจ git, ื”ืงื•ื“ ื›ื‘ืจ ืฉื ื™ืฉื™ืจื•ืช, ืื™ืŸ ืžื” ืœืคืจื•ืง. ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœื™, ื”ื›ืœื™ ืฆืจื™ืš ืœื”ื™ื•ืช ื—ื›ื ืžืกืคื™ืง ื›ื“ื™ ืœื ืœื—ืคืฉ ืคื•ืจืง ืื ื”ื•ื ืžืขืœ ื›ืชื•ื‘ืช ื”ืืชืจ ืฉืœ GitHub.

ืื•ืœื™ uri git:// ื™ืขื‘ื•ื“

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

ืขื›ืฉื™ื• ื–ื” ืžืชืœื•ื ืŸ ื›ื›ื”:

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

ื”ืžืž, ืœืžื” ื”ื›ืœ ื›ืœ ื›ืš ืžืกื•ื‘ืš, ืœืžื” ืืชื” ืœื ื™ื›ื•ืœ "ืคืฉื•ื˜ ืœืขื‘ื•ื“"? ืื—ืจื™ ื”ื›ืœ, ื–ื” ืœื ื›ืœ ื›ืš ื ื“ื™ืจ ืœื‘ื ื•ืช ืžืฉื”ื• ืž-GitHub. ื‘ื™ืŸ ืื ืžื“ื•ื‘ืจ ื‘ื›ืœื™ื ืฉืขื•ื‘ื“ื™ื ืžื™ื“, ืœืœื ืฆื•ืจืš ื‘ื”ื’ื“ืจื”, ืื• ื›ืคื™ ืฉืื ื™ ืงื•ืจื ืœื–ื” "ื”ืชืขืกืงื•ืช".

ืื•ืœื™ ื–ื” ื™ืขื‘ื•ื“ ื›ื›ื”:

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

ืœื. ืื ื™ ืขื“ื™ื™ืŸ ืžืงื‘ืœ ืืช ื”ืฉื’ื™ืื” ื”ืžื•ื–ืจื” ื”ื–ื• ื•ืขื•ืฉื”, ื›ืคื™ ืฉืžืชื•ืืจ ื›ืืŸ

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

ืื ื™ ืžืชืงื“ื ืงืฆืช ื™ื•ืชืจ, ืื‘ืœ ืœืžื” ื–ื” ืฆื•ืจื— ืขืœื™ื™ (GitHub ืœื ืžืื•ื‘ื˜ื—!) ื•ืขื“ื™ื™ืŸ ืžื ืกื” ืœืคืจื•ืง ืžืฉื”ื•.

ืขืœ ืคื™ ืื“ื•ืŸ. waddlesplash:

ื•ื‘ื›ืŸ, ื›ืŸ, ื”ืกื™ื‘ื” ื”ื™ื™ืชื” ื”ืจืฆื•ืŸ ืœื‘ื“ื•ืง ืืช ืชืงื™ื ื•ืช ื”ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœื• ืœื”ืจื›ื‘ื”. ืื—ืช ื”ืืคืฉืจื•ื™ื•ืช ื”ื™ื ืœืืžืช ืืช ืกื›ื•ื ื”ื‘ื“ื™ืงื” ืฉืœ ื”ืืจื›ื™ื•ืŸ, ืืš ื ื™ืชืŸ, ื›ืžื•ื‘ืŸ, ืœื’ื™ื‘ื•ื‘ ืงื‘ืฆื™ื ื‘ื•ื“ื“ื™ื, ืืฉืจ ืœื ื™ื•ืฉืžื•, ืžื›ื™ื•ื•ืŸ ื–ื” ืœื•ืงื— ื”ืจื‘ื” ื™ื•ืชืจ ื–ืžืŸ. ื”ืชื•ืฆืื” ืฉืœ ื–ื” ื”ื™ื "ื—ื•ืกืจ ื”ื‘ื™ื˜ื—ื•ืŸ" ืฉืœ git ื•-VCS ืื—ืจื™ื. ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื–ื” ืชืžื™ื“ ื™ื”ื™ื” ื”ืžืฆื‘, ืžื›ื™ื•ื•ืŸ ืฉื™ืฆื™ืจืช ืืจื›ื™ื•ืŸ ื‘- GitHub ื”ื™ื ื“ื™ ืงืœื” ื•ืœืขื™ืชื™ื ืžื”ื™ืจื” ื™ื•ืชืจ. ื•ื‘ื›ืŸ, ื‘ืขืชื™ื“, ืื•ืœื™ ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ืœื ืชื”ื™ื” ื›ืœ ื›ืš ื ื•ืฆืฆืช... (ืื ื—ื ื• ื›ื‘ืจ ืœื ืžืžื–ื’ื™ื ืžืชื›ื•ื ื™ื ื›ืืœื” ื‘- 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

ืžืชื•ืš ื”ืจื’ืœ ื™ืฉืŸ, ืื ื™ ื”ื•ืœืš ืœืฉืื•ืœ ืื ืฉื™ื ื˜ื•ื‘ื™ื ื‘ืขืจื•ืฅ #haiku ื‘ืจืฉืช irc.freenode.net. ื•ืื™ืคื” ื”ื™ื™ืชื™ ื‘ืœืขื“ื™ื”ื? ืœืื—ืจ ื”ืจืžื–, ื”ื‘ื ืชื™ ืฉืขืœื™ ืœื”ืฉืชืžืฉ ื‘:

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

ืื•ืงื™ื™, ื”ืชื‘ืจืจ ืžื” ื–ื” ืขื•ืฉื” - ื–ื” ืžื•ืจื™ื“ ืืจื›ื™ื•ืŸ ืขื ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื’ืจืกื” ืžืกื•ื™ืžืช. ื–ื” ื˜ื™ืคืฉื™, ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœื™, ื•ืœื ื‘ื“ื™ื•ืง ืžื” ืฉืจืฆื™ืชื™, ื›ืœื•ืžืจ ืœื”ื•ืจื™ื“ ืืช ื”ื’ืจืกื” ื”ืื—ืจื•ื ื” ืžื”ืกื ื™ืฃ ื”ืจืืฉื™.

ืื—ื“ ื”ืžืคืชื—ื™ื ื”ืกื‘ื™ืจ ื–ืืช ื›ืš:

ื™ืฉ ืœื ื• CI ืžืฉืœื ื•, ื›ืš ืฉื›ืœ ืžื” ืฉืžืžื•ืงื ื‘ืžืื’ืจ haikuports ื™ื™ืืจื– ืขื‘ื•ืจ ื›ืœ ื”ืžืฉืชืžืฉื™ื, ื•ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ืกืชื›ืŸ ื‘ืื™ืกื•ืฃ ื•ืžืกื™ืจืช "ื”ื›ืœ ื‘ื’ืจืกื” ื”ืื—ืจื•ื ื” ื‘ืžืขืœื” ื”ื–ืจื".

ืžื•ื‘ืŸ! ื‘ื›ืœ ืžืงืจื” ื–ื” ืžื” ืฉืงืจื”:

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

ื–ื” ื—ื•ื–ืจ ืขืœ ื–ื” ืขื“ ืื™ื ืกื•ืฃ. ื›ื ืจืื” ืฉื–ื• ืฉื’ื™ืื” (ื™ืฉ ืืคืœื™ืงืฆื™ื”? ืœื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ืื•ืชื”).

ะก haikuporter ื•ืžืื’ืจ ื”ื™ื™ืงื•ืคื•ืจื˜ื™ื ืื™ืŸ ืœื–ื” ืชื—ื•ืฉื” ืฉืœ "ืคืฉื•ื˜ ืขื•ื‘ื“", ืื‘ืœ ื‘ืชื•ืจ ืžืคืชื—, ื™ืฉ ื›ืžื” ื“ื‘ืจื™ื ืฉืื ื™ ืื•ื”ื‘ ื‘ืขื‘ื•ื“ื” ืขื Haiku. ืœืจื•ื‘, ื–ื” ื“ื•ืžื” ืœ-Open Build Service, ืกื˜ ื›ืœื™ื ืœื‘ื ื™ื™ืช ืžื‘ื ื™ื ืฉืœ ืœื™ื ื•ืงืก: ื—ื–ืง ื‘ืžื™ื•ื—ื“, ืขื ื’ื™ืฉื” ืฉื™ื˜ืชื™ืช, ืื‘ืœ ืžื•ื’ื–ื ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื” ื”ืงื˜ื ื” ืฉืœื™ "ื”ืœื• ืขื•ืœื".

ืฉื•ื‘, ืœื“ื‘ืจื™ ืžืจ. waddlesplash:

ื•ืื›ืŸ, HaikuPorter ื”ื•ื ื“ื™ ืงืคื“ื ื™ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ื‘ื ื•ืกืฃ ื™ืฉ ืžืฆื‘ ืžื•ืš ื›ืžื• ื’ื ืžืฆื‘ ืงืคื“ื ื™ ื›ื“ื™ ืœื”ื—ืžื™ืจ ืขื•ื“ ื™ื•ืชืจ!), ืื‘ืœ ืจืง ื‘ื’ืœืœ ืฉื”ื•ื ื™ื•ืฆืจ ื—ื‘ื™ืœื•ืช ืฉื™ืขื‘ื“ื•, ื•ืœื ืจืง ื™ืฆื™ืจืช ื—ื‘ื™ืœื•ืช. ืœื›ืŸ ื”ื•ื ืžืชืœื•ื ืŸ ืขืœ ืชืœื•ืช ืœื ืžื•ื›ืจื–ืช, ืกืคืจื™ื•ืช ืฉืœื ื™ื•ื‘ืื• ื›ืจืื•ื™, ื’ืจืกืื•ืช ืฉื’ื•ื™ื•ืช ื•ื›ื•'. ื”ืžื˜ืจื” ื”ื™ื ืœืชืคื•ืก ืืช ื›ืœ ื”ื‘ืขื™ื•ืช, ื›ื•ืœืœ ืขืชื™ื“ื™ื•ืช, ืœืคื ื™ ืฉื”ืžืฉืชืžืฉ ื™ื•ื“ืข ืขืœื™ื”ืŸ (ื–ื• ื”ืกื™ื‘ื” ืฉืœื ื ื™ืชืŸ ื”ื™ื” ืœื”ืชืงื™ืŸ avrdude, ื›ื™ ื”ืชืœื•ืช ืœืžืขืฉื” ืฆื•ื™ื ื” ื‘ืžืชื›ื•ืŸ). ืกืคืจื™ื•ืช ืื™ื ืŸ ืจืง ื—ื‘ื™ืœื•ืช ื‘ื•ื“ื“ื•ืช ืื• ืืคื™ืœื• ื’ืจืกืื•ืช SO ืกืคืฆื™ืคื™ื•ืช. HaikuPorter ืžื‘ื˜ื™ื— ืฉื›ืœ ื–ื” ื™ื™ืฉืžืจ ื‘ืžืชื›ื•ื ื™ื ืขืฆืžื ื›ื“ื™ ืœืžื ื•ืข ื˜ืขื•ื™ื•ืช ื‘ืžื”ืœืš ื”ื‘ื™ืฆื•ืข.

ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ืจืžืช ื”ื”ืงืคื“ื” ื”ื–ื• ืžื•ืฆื“ืงืช ื‘ืขืช ื™ืฆื™ืจืช ืžืขืจื›ืช ื”ืคืขืœื”, ืื‘ืœ ื–ื” ื ืจืื” ืœื™ ืžื™ื•ืชืจ ืขื‘ื•ืจ ื™ื™ืฉื•ื "ืฉืœื•ื ืขื•ืœื". ื”ื—ืœื˜ืชื™ ืœื ืกื•ืช ืžืฉื”ื• ืื—ืจ.

ื‘ื ื™ื™ืช ื™ื™ืฉื•ืžื™ื ื‘ืคื•ืจืžื˜ hpkg ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” "package create".

ืื•ืœื™ ื–ื” ื”ืื ื”ื•ืจืื•ืช ืคืฉื•ื˜ื•ืช ื™ืขื‘ื“ื• ื˜ื•ื‘ ื™ื•ืชืจ ืขื‘ื•ืจื™?

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

ืžื”ื™ืจ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™, ืคืฉื•ื˜ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™, ื™ืขื™ืœ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™. ื‘ื“ื™ื•ืง ืื™ืš ืฉืื ื™ ืื•ื”ื‘ ืืช ื–ื”, ืžื“ื”ื™ื!

ื”ืชืงื ื” - ืžื” ื•ืื™ืคื”?

ื”ืขื‘ื™ืจ ืืช ื”ืงื•ื‘ืฅ QtQuickApp.hpkg ืืœ ~/config/packagesื‘ืืžืฆืขื•ืช ืžื ื”ืœ ืงื‘ืฆื™ื, ืฉืœืื—ืจื™ื• ื”ื•ืคื™ืข QtQuickApp ื‘ืฆื•ืจื” ืงืกื•ืžื” ~/config/apps.
ืฉื•ื‘, ืžื”ื™ืจ, ืคืฉื•ื˜ ื•ื™ืขื™ืœ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™. ืžื“ื”ื™ื, ืœื ื™ื™ืืžืŸ!

ืื‘ืœ... (ืื™ืคื” ื”ื™ื™ื ื• ื‘ืœืขื“ื™ื”ื!)

ื”ืืคืœื™ืงืฆื™ื” ืขื“ื™ื™ืŸ ื—ืกืจื” ื‘ืจืฉื™ืžืช ืชืคืจื™ื˜ื™ ื”ืืคืœื™ืงืฆื™ื•ืช ื•ื‘-QuickLaunch. ืื ื™ ื—ื•ืฉื‘ ืฉืื ื™ ื›ื‘ืจ ื™ื•ื“ืข ืื™ืš ืœืชืงืŸ ืืช ื–ื”. ื‘ืžื ื”ืœ ื”ืงื‘ืฆื™ื ืื ื™ ืžืขื‘ื™ืจ ืืช QtQuickApp.hpkg ืž-~/config/packages ืœ-/system/packages.

ืœื, ืขื“ื™ื™ืŸ ื—ืกืจ. ื›ื ืจืื” ืฉืคืกืคืกืชื™ ืžืฉื”ื• (ื•ื‘ื›ืŸ, ื•ื”ื”ื•ืจืื•ืช).

ืœืื—ืจ ืฉื”ืกืชื›ืœืชื™ ืขืœ ื”ื›ืจื˜ื™ืกื™ื™ื” "ืชื•ื›ืŸ" ื‘- HaikuDepot ืขื‘ื•ืจ ื›ืžื” ื™ื™ืฉื•ืžื™ื ืื—ืจื™ื, ืจืื™ืชื™ ืฉื™ืฉ ืงื‘ืฆื™ื ื›ืžื• /data/mimedb/application/x-vnd... ืžื” ืฉืขื•ื“ ื™ื•ืชืจ ืžื“ื”ื™ื ื”ื•ื /data/deskbar/menu/Applications/โ€ฆ.

ื•ื‘ื›ืŸ, ืžื” ืื ื™ ืฆืจื™ืš ืœืฉื™ื ืฉื? ื‘ื—ื™ื™ืš...

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

ืื ื™ ื“ื™ ื‘ื˜ื•ื— ืฉื”ื˜ืจื™ืง ื”ื–ื” ื™ืขื‘ื•ื“, ืื‘ืœ ื ื•ืชืจื• ืฉืืœื•ืช: ืœืžื” ื–ื” ื ื—ื•ืฅ, ื‘ืฉื‘ื™ืœ ืžื” ื–ื” ื ื•ืขื“? ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ื”ื•ืจืก ืืช ื”ืจื•ืฉื ื”ื›ืœืœื™ ืฉื”ืžืขืจื›ืช ื›ืœ ื›ืš ืžืชื•ื—ื›ืžืช.

ื›ืคื™ ืฉื”ืกื‘ื™ืจ ืžืจ. waddlesplash:

ืœืคืขืžื™ื ื™ืฉ ืืคืœื™ืงืฆื™ื•ืช ืฉืืคืœื™ืงืฆื™ื•ืช ืื—ืจื•ืช ืฆืจื™ื›ื•ืช ืื‘ืœ ืœื ื ืžืฆืื•ืช ื‘ืชืคืจื™ื˜. ืœื“ื•ื’ืžื”, LegacyPackageInstaller ื‘ืฆื™ืœื•ื ื”ืžืกืš ืฉืœืš, ืขื™ื‘ื•ื“ ืืจื›ื™ื•ื ื™ .pkg ื‘ืคื•ืจืžื˜ BeOS. ื”ื™ื™ืชื™ ืจื•ืฆื” ืฉืžืฉืชืžืฉื™ื ื™ืชืงื™ืŸ ืื•ืชื, ืื‘ืœ ื”ื ื•ื›ื—ื•ืช ืฉืœื”ื ื‘ืชืคืจื™ื˜ ืชื•ื‘ื™ืœ ืœื‘ืœื‘ื•ืœ.

ืžืฉื•ื ืžื” ื ืจืื” ืœื™ ืฉื™ืฉ ืคืชืจื•ืŸ ืคืฉื•ื˜ ื™ื•ืชืจ, ืœืžืฉืœ Hidden=true ื‘ืงื‘ืฆื™ื .desktop ืขืœ ืœื™ื ื•ืงืก. ืžื“ื•ืข ืœื ืœื”ืคื•ืš ืืช ื”ืžื™ื“ืข ื”"ื ืกืชืจ" ืœืžืฉืื‘ ื•ืชื›ื•ื ื” ืฉืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื?

ืžื” ืฉืœื ืขื“ื™ืŸ ื‘ืžื™ื•ื—ื“ ื”ื•ื ื”ืฉื ืฉืœ (ืื™ื–ื•ืฉื”ื™) ืืคืœื™ืงืฆื™ื” ืฉืžืฆื™ื’ื” ืืช ื”ืชืคืจื™ื˜, deskbar, ืงืฉื•ืจ ื‘ื ื•ืงืฉื•ืช ืœืื•ืจืš ื”ื“ืจืš.

ืื“ื•ืŸ. waddlesplash ืžืกื‘ื™ืจ ืืช ื–ื”:

ื™ืฉ ืœื”ื‘ื™ืŸ ืืช "ืฉื•ืจืช ื”ืฉื•ืœื—ืŸ" ื‘ืžืงืจื” ื–ื” ื›ืกื•ื’ ืฉืœ ืžื•ื ื— ื›ืœืœื™ (ื‘ื“ื•ืžื” ืœ"ืฉื•ืจืช ื”ืžืฉื™ืžื•ืช", ื”ืžืชื™ื™ื—ืก ื”ืŸ ืœืืคืœื™ืงืฆื™ื™ืช Windows ื•ื”ืŸ ืœืžื•ืฉื’ ื”ื›ืœืœื™). ื•ื‘ื›ืŸ, ืžืื– ื–ื” deskbar, ืœื "ืกืจื’ืœ ื”ืฉื•ืœื—ืŸ", ื ื™ืชืŸ ื’ื ืœื”ื‘ื™ืŸ ื–ืืช ื‘ืฆื•ืจื” ื“ื•ืžื”.

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช
2 ืกืคืจื™ื•ืช "ื›ืžืขื˜ ื–ื”ื•ืช" ืขื ืืคืœื™ืงืฆื™ื•ืช ื‘ื”ืŸ

ืœืžื” ื™ืฉ 2 ืกืคืจื™ื•ืช ืขื ื™ื™ืฉื•ืžื™ื, ื•ื’ื ืœืžื” ื”-QtQuickApplication ืฉืœื™ ื ืžืฆื ื‘ืื—ืช, ืื‘ืœ ืœื ื‘ืื—ืจืช? (ื”ืจื™ ื–ื” ืœื ืžืขืจื›ืช ืื—ืช, ืืœื ืžืฉืชืžืฉ ืฉื ื™, ืžื” ืฉื™ื”ื™ื” ืžื•ื‘ืŸ ืœื™ ืื™ืฉื™ืช).
ืื ื™ ืžืžืฉ ืžื‘ื•ืœื‘ืœ ื•ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ืฆืจื™ืš ืœื”ื™ื•ืช ืžืื•ื—ื“.

ื”ืขืจื” ืฉืœ ืžืจ. waddlesplash

ืงื˜ืœื•ื’ ื”ืืคืœื™ืงืฆื™ื•ืช ืžื›ื™ืœ ื™ื™ืฉื•ืžื™ื ืฉืื™ื ื ื ื—ื•ืฆื™ื ื‘ืชืคืจื™ื˜. ืื‘ืœ ื”ืžืฆื‘ ืขื ื”ืชืคืจื™ื˜ ื‘ืืžืช ืฆืจื™ืš ืœื”ืฉืชืคืจ, ื›ื“ื™ ืœื”ืคื•ืš ืื•ืชื• ืœื”ืชืืžื” ืื™ืฉื™ืช ื™ื•ืชืจ.

ื™ื™ืฉื•ื, ืื• ืฉื–ื” ืœื ื™ืงืจื” ๐Ÿ˜‰

ืชื”ื™ืชื™: ื”ืื ื‘ืืžืช ื™ืฉ ืฆื•ืจืš ืœืืจื— ืืคืœื™ืงืฆื™ื•ืช /system/apps, ืื ืžืฉืชืžืฉื™ื ืจื•ืื™ื ืื•ืชื ืฉื, ื–ื” ืœื ืจืฆื•ื™. ืื•ืœื™ ืขื“ื™ืฃ ืœืžืงื ืื•ืชื ื‘ืžืงื•ื ืื—ืจ ืฉื‘ื• ื”ืžืฉืชืžืฉ ืœื ื™ืชืงืœ ื‘ื”ื? ื‘ื“ื™ื•ืง ื›ืžื• ืฉื–ื” ื ืขืฉื” ื‘-Mac OS X, ืฉื‘ื• ื”ืชื•ื›ืŸ ืฉืœ ื—ื‘ื™ืœื•ืช .app, ืืฉืจ ืœื ืืžื•ืจ ืœื”ื™ื•ืช ื’ืœื•ื™ ืœืžืฉืชืžืฉ ื‘ /Applications, ืžืชื—ื‘ื ื‘ืžืขืžืงื™ /System/Library/โ€ฆโ€œ`.

ืžื” ืœื’ื‘ื™ ืชืœื•ืช?

ืื ื™ ื—ื•ืฉื‘ ืฉื›ื“ืื™ ืœืฆื™ื™ืŸ ืืช ื”ืชืœื•ืช ืื™ื›ืฉื”ื•, ื ื›ื•ืŸ? ื”ืื Qt ื™ื›ื•ืœ ืœื”ื™ื—ืฉื‘ ื›ื—ืœืง ื—ื•ื‘ื” ืžื”ืชืงื ืช Haiku ื›ื‘ืจื™ืจืช ืžื—ื“ืœ? ืœื! Qt ืื™ื ื• ืžื•ืชืงืŸ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ื”ืื ื‘ื•ื ื” ื—ื‘ื™ืœื•ืช ื™ื›ื•ืœ ืœื–ื”ื•ืช ืชืœื•ืช ืื•ื˜ื•ืžื˜ื™ืช ืขืœ ื™ื“ื™ ื‘ื“ื™ืงืช ืงื‘ืฆื™ ELF? ืืžืจื• ืœื™ ืฉื”ืื™ืงื•ืคื•ืจื˜ืจ ื‘ืืžืช ืขื•ืฉื” ืืช ื–ื”, ืื‘ืœ package ืœื. ื–ื” ื‘ื’ืœืœ ืฉื–ื” ืจืง "ื‘ื•ื ื” ื—ื‘ื™ืœื•ืช" ืฉืคืฉื•ื˜ ื™ื•ืฆืจ ืงื‘ืฆื™ื ื‘ืขืฆืžื• hpkg.

ื”ืื ื™ืฉ ืœืฉืคืจ ืืช ื”ื™ื™ืงื• ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืžื“ื™ื ื™ื•ืช ืœืคื™ื” ืœื—ื‘ื™ืœื” ืื™ืŸ ืชืœื•ืช ื‘ื—ื‘ื™ืœื•ืช ืžื—ื•ืฅ ืœื”ื™ื™ืงื•? haikuports? (ื”ื™ื™ืชื™ ืจื•ืฆื”, ื›ื™ ืžื“ื™ื ื™ื•ืช ื›ื–ื• ืชืงืœ ื”ืจื‘ื” ื™ื•ืชืจ ืขืœ ื”ื“ื‘ืจื™ื - ื”ืžืขืจื›ืช ืชื•ื›ืœ ืœืคืชื•ืจ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืืช ื”ืชืœื•ืช ืฉืœ ื›ืœ ื—ื‘ื™ืœื” ืฉื”ื•ืจื“ื• ืžื›ืœ ืžืงื•ื, ืžื‘ืœื™ ืœื”ืชืขืกืง ืขื ืžืงื•ืจื•ืช ื—ื‘ื™ืœื” ื ื•ืกืคื™ื.)

ืื“ื•ืŸ. waddlesplash ืžืกื‘ื™ืจ:

ืœื ื”ื™ื™ื ื• ืจื•ืฆื™ื ืœื”ื’ื‘ื™ืœ ื›ืœ ื›ืš ืืช ื”ื—ื•ืคืฉ ืฉืœ ืžืคืชื—ื™ื, ื›ื™ ื‘ืจื•ืจ ืฉืื CompanyX ืจื•ืฆื” ืœืชืžื•ืš ื‘ืกื˜ ืชื•ื›ื ื•ืช ืžืฉืœื” ืขื ืชืœื•ืช (ื•ืœื›ืŸ ืžืื’ืจ), ื”ื™ื ืชืขืฉื” ื–ืืช ื‘ืื•ืคืŸ ื—ื•ืคืฉื™ ืœื—ืœื•ื˜ื™ืŸ.

ื‘ืžืงืจื” ื›ื–ื”, ืื•ืœื™ ื›ื“ืื™ ืœื”ืžืœื™ืฅ โ€‹โ€‹ืœื—ื‘ื™ืœื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ืœื”ื™ืžื ืข ืžืชืœื•ืช ื‘ื›ืœ ื“ื‘ืจ ืฉืื™ื ื• ื›ืœื•ืœ ื‘-haikuports ืขืœ ื™ื“ื™ ืืจื™ื–ื” ืžืœืื” ืฉืœ ื›ืœ ื”ื“ืจื•ืฉ ืขื ื”ืืคืœื™ืงืฆื™ื”. ืื‘ืœ ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ื ื•ืฉื ืœืžืืžืจ ืขืชื™ื“ื™ ื‘ืกื“ืจื” ื–ื•. [ื”ืื ื”ืžื—ื‘ืจ ื”ื•ืœืš ืœื›ื™ื•ื•ืŸ AppImage? - ืžืฉื•ืขืจ. ืžึฐืชื•ึผืจื’ึฐืžึธืŸ]

ื”ื•ืกืคืช ืกืžืœ ืืคืœื™ืงืฆื™ื”

ืžื” ืื ืื ื™ ืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืืช ืื—ื“ ืžื”ืกืžืœื™ื ื”ืžื•ื‘ื ื™ื ื”ืžืกื•ื“ืจื™ื ืœืžืฉืื‘ื™ื ืฉืœ ื”ื™ื™ืฉื•ื ื”ื—ื“ืฉ ืฉืœื™ ืฉื ื•ืฆืจ? ืžืกืชื‘ืจ ืฉื–ื”ื• ื ื•ืฉื ืžื“ื”ื™ื ื•ืœื›ืŸ ื”ื•ื ื™ื”ื•ื•ื” ืืช ื”ื‘ืกื™ืก ืœืžืืžืจ ื”ื‘ื.

ื›ื™ืฆื“ ืœืืจื’ืŸ ื‘ื ื™ื™ืช ืืคืœื™ืงืฆื™ื•ืช ืžืชืžืฉื›ืช?

ื“ืžื™ื™ื ื• ืคืจื•ื™ืงื˜ ื›ืžื• Inkscape (ื›ืŸ, ืื ื™ ืžื•ื“ืข ืœื›ืš ืฉื”ื•ื ืขื“ื™ื™ืŸ ืœื ื–ืžื™ืŸ ื‘ื”ื™ื™ืงื•, ืื‘ืœ ื ื•ื— ืœื”ืฆื’ื” ื‘ื•). ื™ืฉ ืœื”ื ืžืื’ืจ ืงื•ื“ ืžืงื•ืจ https://gitlab.com/inkscape/inkscape.
ื‘ื›ืœ ืคืขื ืฉืžื™ืฉื”ื• ืžื‘ืฆืข ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœื• ื‘ืžืื’ืจ, ืžื•ืคืขืœื™ื ืฆื™ื ื•ืจื•ืช ื‘ื ื™ื™ื”, ืฉืœืื—ืจื™ื”ื ื”ืฉื™ื ื•ื™ื™ื ื ื‘ื“ืงื™ื, ื ื‘ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ื•ื”ืืคืœื™ืงืฆื™ื” ื ืืจื–ืช ื‘ื—ื‘ื™ืœื•ืช ืฉื•ื ื•ืช, ื›ื•ืœืœ AppImage ืขื‘ื•ืจ Linux (ื—ื‘ื™ืœืช ืืคืœื™ืงืฆื™ื•ืช ืขืฆืžืื™ืช ืฉื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืœื‘ื“ื™ืงื” ืžืงื•ืžื™ืช ืœืœื ืงืฉืจ ืžื” ืขืฉื•ื™ ืœื”ื™ื•ืช ืžื•ืชืงืŸ ื‘ืžืขืจื›ืช ืื• ืœื [ื™ื“ืขืชื™! - ืžืฉื•ืขืจ. ืžึฐืชื•ึผืจื’ึฐืžึธืŸ]). ืื•ืชื• ื“ื‘ืจ ืงื•ืจื” ื‘ื›ืœ ื‘ืงืฉืช ืžื™ื–ื•ื’ ืกื ื™ืคื™ื, ื›ืš ืฉืชื•ื›ืœ ืœื”ื•ืจื™ื“ ืืช ื”ืืคืœื™ืงืฆื™ื” ื”ื‘ื ื•ื™ื” ืžื”ืงื•ื“ ื”ืžื•ืฆืข ื‘ื‘ืงืฉืช ื”ืžื™ื–ื•ื’ ืœืคื ื™ ื”ืžื™ื–ื•ื’.

ื”ื™ื•ื ื”ื—ืžื™ืฉื™ ืฉืœื™ ืขื ื”ื™ื™ืงื•: ื‘ื•ื ื ืขื‘ื™ืจ ื›ืžื” ืชื•ื›ื ื™ื•ืช
ืžื™ื–ื•ื’ ื‘ืงืฉื•ืช ืขื ืกื˜ื˜ื•ืกื™ื ืฉืœ ื‘ื ื™ื™ื” ื•ื™ื›ื•ืœืช ืœื”ื•ืจื™ื“ ืืช ื”ืงื‘ืฆื™ื ื”ื‘ื™ื ืืจื™ื™ื ื”ืงื•ืžืคื™ืœื™ื™ื ืื ื”ื‘ื ื™ื™ื” ื”ืฆืœื™ื—ื” (ืžืกื•ืžืŸ ื‘ื™ืจื•ืง)

ื”-build ืคื•ืขืœ ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœ Docker. GitLab ืžืฆื™ืขื” ืจืฆื™ื ื‘ื—ื™ื ื ื‘ืœื™ื ื•ืงืก, ื•ืื ื™ ื—ื•ืฉื‘ ืฉืื•ืœื™ ืืคืฉืจ ืœื›ืœื•ืœ ืจืฆื™ื ืžืฉืœืš (ืื’ื‘, ืื ื™ ืœื ืจื•ืื” ืื™ืš ื–ื” ื™ืขื‘ื•ื“ ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื›ืžื• Haiku, ืฉืื ื™ ื™ื•ื“ืข ืฉืื™ืŸ ืœื”ืŸ Docker ืื• ืžืงื‘ื™ืœื”, ืื‘ืœ ื’ื ืขื‘ื•ืจ FreeBSD ืื™ืŸ Docker, ืื– ื‘ืขื™ื” ื–ื• ืื™ื ื” ื™ื™ื—ื•ื“ื™ืช ืœื”ื™ื™ืงื•).

ื‘ืื•ืคืŸ ืื™ื“ื™ืืœื™, ื ื™ืชืŸ ืœื‘ื ื•ืช ื™ื™ืฉื•ืžื™ Haiku ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ Docker ืขื‘ื•ืจ ืœื™ื ื•ืงืก. ื‘ืžืฆื‘ ื–ื”, ื ื™ืชืŸ ืœื”ื›ื ื™ืก ืืช ื”ืžื›ืœื•ืœ ืขื‘ื•ืจ ื”ื™ื™ืงื• ืœืฆื™ื ื•ืจื•ืช ืงื™ื™ืžื™ื. ื”ืื ื™ืฉ ืžื”ื“ืจื™ื ืฆื•ืœื‘ื™ื? ืื• ืฉืขืœื™ ืœื—ืงื•ืช ืืช ื›ืœ ื”ื™ื™ืงื• ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ Docker ื‘ืืžืฆืขื•ืช ืžืฉื”ื• ื›ืžื• QEMU/KVM (ื‘ื”ื ื—ื” ืฉื–ื” ื™ืขื‘ื•ื“ ื›ืš ื‘ืชื•ืš Docker)? ืื’ื‘, ืคืจื•ื™ืงื˜ื™ื ืจื‘ื™ื ืžืฉืชืžืฉื™ื ื‘ืขืงืจื•ื ื•ืช ื“ื•ืžื™ื. ืœื“ื•ื’ืžื”, Scribus ืขื•ืฉื” ื–ืืช - ื–ื” ื›ื‘ืจ ื–ืžื™ืŸ ืขื‘ื•ืจ Haiku. ื™ื•ื ืื—ื“ ื™ื‘ื•ื ื”ื™ื•ื ืฉื‘ื• ืื•ื›ืœ ืœืฉืœื•ื— ื›ื–ื” ืžืฉื•ืš ื‘ืงืฉื•ืช ืœืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืชืžื™ื›ืช Haiku.

ืื—ื“ ื”ืžืคืชื—ื™ื ืžืกื‘ื™ืจ:

ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื ื”ืžืขื•ื ื™ื™ื ื™ื ืœื™ืฆื•ืจ ื—ื‘ื™ืœื•ืช ื‘ืขืฆืžื, ืฉื™ื˜ืช CMake/CPack ื”ืจื’ื™ืœื” ื ืชืžื›ืช. ื ื™ืชืŸ ืœืชืžื•ืš ื‘ืžืขืจื›ื•ืช ื‘ื ื™ื™ื” ืื—ืจื•ืช ืขืœ ื™ื“ื™ ืงืจื™ืื” ื™ืฉื™ืจื” ืœืชื•ื›ื ื™ืช ื”ื‘ื ื™ื™ื” ืฉืœ ื”ื—ื‘ื™ืœื”, ื•ื–ื” ื‘ืกื“ืจ ืื ืื ืฉื™ื ืžืชืขื ื™ื™ื ื™ื ื‘ื”. ื”ื ื™ืกื™ื•ืŸ ืžืœืžื“: ืขื“ ื›ื” ืœื ื”ื™ื™ืชื” ืขื ื™ื™ืŸ ืจื‘, ืื– ื”ื™ื™ืงื•ืคื•ืจื˜ืจ ืขื‘ื“ ื›ืžื• ืฉืฆืจื™ืš ืขื‘ื•ืจื ื•, ืื‘ืœ, ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ, ืฉืชื™ ื”ืฉื™ื˜ื•ืช ืฆืจื™ื›ื•ืช ืœืขื‘ื•ื“ ื™ื—ื“. ืขืœื™ื ื• ืœื”ืฆื™ื’ ืกื˜ ื›ืœื™ื ืœืชื•ื›ื ื•ืช ืฆื•ืœื‘ื•ืช ืž-Linux ืื• ื›ืœ ืžืขืจื›ืช ื”ืคืขืœื” ืื—ืจืช ืฉืœ ืฉืจืชื™ื (Haiku ืœื ื ื•ืขื“ ืœืจื•ืฅ ืขืœ ืฉืจืชื™ื).

ืื ื™ ื ื•ืชืŸ ื›ืคื™ื™ื ืกื•ืขืจืช. ืžืฉืชืžืฉื™ ืœื™ื ื•ืงืก ืจื’ื™ืœื™ื ื ื•ืฉืื™ื ืืช ื›ืœ ื”ืขื•ืžืก ื”ื ื•ืกืฃ ื”ื–ื” ื•ื”ืžื˜ืขืŸ ื”ื ื•ืกืฃ ื”ื–ื” (ืื‘ื˜ื—ื”, ื‘ืงืจื” ืงืคื“ื ื™ืช ื•ื›ื•') ื”ื“ืจื•ืฉ ืœืžืขืจื›ืช ื”ืคืขืœื” ืฉืœ ืฉืจืช, ืื‘ืœ ืœื ืœืžืขืจื›ืช ื”ืคืขืœื” ืื™ืฉื™ืช. ืื– ืื ื™ ืžืกื›ื™ื ืœื—ืœื•ื˜ื™ืŸ ืฉื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช ืืคืœื™ืงืฆื™ื•ืช ื”ื™ื™ืงื• ื‘ืœื™ื ื•ืงืก ื”ื™ื ื”ื“ืจืš ืœืœื›ืช.

ืžืกืงื ื”

ื”ืขื‘ืจื” ืฉืœ ื™ื™ืฉื•ืžื™ POSIX ืœื”ื™ื™ืงื• ืืคืฉืจื™ืช, ืืš ืขืฉื•ื™ื” ืœื”ื™ื•ืช ื™ืงืจื” ื™ื•ืชืจ ืžืืฉืจ ื‘ื ื™ื™ื” ืžื—ื“ืฉ ื˜ื™ืคื•ืกื™ืช. ื‘ื”ื—ืœื˜ ื”ื™ื™ืชื™ ืชืงื•ืข ืขื ื–ื” ืœื”ืจื‘ื” ื–ืžืŸ ืืœืžืœื ื”ืขื–ืจื” ืฉืœ ืื ืฉื™ื ืžืขืจื•ืฅ #haiku ื‘ืจืฉืช irc.freenode.net. ืื‘ืœ ืืคื™ืœื• ื”ื ืœื ืชืžื™ื“ ืจืื• ืžื™ื“ ืžื” ืœื ื‘ืกื“ืจ.

ื™ื™ืฉื•ืžื™ื ืฉื ื›ืชื‘ื• ื‘-Qt ื”ื ื—ืจื™ื’ ืงืœ. ื”ืจื›ื‘ืชื™ ื™ื™ืฉื•ื ื”ื“ื’ืžื” ืคืฉื•ื˜ ืœืœื ื‘ืขื™ื•ืช.

ื‘ื ื™ื™ืช ื—ื‘ื™ืœื” ืœื™ื™ืฉื•ืžื™ื ืคืฉื•ื˜ื™ื ื”ื™ื ื’ื ื“ื™ ืงืœื”, ืื‘ืœ ืจืง ืขื‘ื•ืจ ืืœื” "ืฉืฉื•ื—ืจืจื• ื‘ืื•ืคืŸ ืžืกื•ืจืชื™", ื›ืœื•ืžืจ. ื‘ืขืœ ืืจื›ื™ื•ื ื™ ืงื•ื“ ืžืงื•ืจ ืžื ื•ืกื—ื™ื ื”ืžื™ื•ืขื“ื™ื ืœืชืžื™ื›ื” ื‘-haikuports. ืขื‘ื•ืจ ื‘ื ื™ื™ื” ืžืชืžืฉื›ืช (ื‘ื ื™ื™ื” ืขื‘ื•ืจ ื›ืœ ืžื—ื•ื™ื‘ื•ืช ืฉืœ ืฉื™ื ื•ื™ื™ื) ืขื GitHub, ื ืจืื” ืฉื”ื›ืœ ืœื ื›ืœ ื›ืš ืคืฉื•ื˜. ื›ืืŸ ื”ื™ื™ืงื• ืžืจื’ื™ืฉ ื™ื•ืชืจ ื›ืžื• ื”ืคืฆืช ืœื™ื ื•ืงืก ืžืืฉืจ ื”ืชื•ืฆืื” ื‘-Mac, ื›ืืฉืจ ื›ืฉืืชื” ืœื•ื—ืฅ ืขืœ ื›ืคืชื•ืจ "Build" ื‘-XCode ืืชื” ืžืงื‘ืœ ื—ื‘ื™ืœื” .app, ืžื•ื›ืŸ ืœื”ื›ื ืก ืœืชืžื•ื ืช ื“ื™ืกืง .dmg, ืžื•ื›ืŸ ืœื”ื•ืจื“ื” ื‘ืืชืจ ืฉืœื™.
ื‘ื ื™ื™ื” ืจืฆื™ืคื” ืฉืœ ืืคืœื™ืงืฆื™ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืžืขืจื›ืช ื”ืคืขืœื” "ืฉืจืช", ืœืžืฉืœ, ืœื™ื ื•ืงืก, ืชืชืืคืฉืจ ื›ื›ืœ ื”ื ืจืื” ืื โ€‹โ€‹ื™ื”ื™ื” ื‘ื™ืงื•ืฉ ืžื”ืžืคืชื—ื™ื, ืื‘ืœ ื›ืจื’ืข ืœืคืจื•ื™ืงื˜ Haiku ื™ืฉ ืžืฉื™ืžื•ืช ืื—ืจื•ืช, ื“ื—ื•ืคื•ืช ื™ื•ืชืจ.

ื ืกื” ื–ืืช ื‘ืขืฆืžืš! ืื—ืจื™ ื”ื›ืœ, ืคืจื•ื™ืงื˜ Haiku ืžืกืคืง ืชืžื•ื ื•ืช ืœืืชื—ื•ืœ ืž-DVD ืื• USB, ืฉื ื•ืฆืจื• ื™ื•ืžื™. ื›ื“ื™ ืœื”ืชืงื™ืŸ, ืคืฉื•ื˜ ื”ื•ืจื“ ืืช ื”ืชืžื•ื ื” ื•ื›ืชื•ื‘ ืื•ืชื” ืœื›ื•ื ืŸ ื”ื‘ื–ืง ื‘ืืžืฆืขื•ืช ื—ึธืจึธื˜

ื™ืฉ ืœืš ืฉืืœื•ืช? ืื ื• ืžื–ืžื™ื ื™ื ืื•ืชืš ืœื“ื•ื‘ืจื™ ืจื•ืกื™ืช ืขืจื•ืฅ ืžื‘ืจืง.

ืกืงื™ืจืช ืฉื’ื™ืื•ืช: ืื™ืš ืœื™ืจื•ืช ืœืขืฆืžืš ื‘ืจื’ืœ ื‘-C ื•-C++. ืื•ืกืฃ ืžืชื›ื•ื ื™ื ืฉืœ Haiku OS

ืžืŸ ื”ืžื—ื‘ืจ ืชืจื’ื•ื: ื–ื”ื• ื”ืžืืžืจ ื”ื—ืžื™ืฉื™ ื‘ืกื“ืจื” ืขืœ ื”ื™ื™ืงื•.

ืจืฉื™ืžืช ืžืืžืจื™ื: ะŸะตั€ะฒะฐั ื‘ ะขั€ะตั‚ัŒั ืจื‘ื™ืขื™ืช

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”