හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු

TL; ඩී: නවකයෙක් පළමු වරට හයිකු දුටුවේ, ලිනක්ස් ලෝකයෙන් සමහර වැඩසටහන් පෝට් කිරීමට උත්සාහ කරමින්.

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු
මගේ පළමු හයිකු වැඩසටහන, එහි hpkg ආකෘතියෙන් ඇසුරුම් කර ඇත

මෑතකදී මම PC සඳහා පුදුම සහගත ලෙස හොඳ මෙහෙයුම් පද්ධතියක් වන Haiku සොයාගත්තා.
මම අද ඉගෙන ගන්නම් මේ මෙහෙයුම් පද්ධතියට අලුත් වැඩසටහන් Port කරන හැටි. ප්රධාන අවධානය යොමු වන්නේ Linux සංවර්ධකයෙකුගේ දෘෂ්ටි කෝණයෙන් හයිකු වෙත මාරු වීමේ පළමු අත්දැකීම විස්තර කිරීමයි. මම හයිකු මුලින්ම ඩවුන්ලෝඩ් කරලා තවම සතියක්වත් නැති නිසා මගදී කරපු මෝඩ වැරදි වලට සමාව ඉල්ලනවා.

මට ඉලක්ක තුනක් සාක්ෂාත් කර ගැනීමට අවශ්‍යයි:

  • සරල CLI යෙදුමක් වරාය
  • GUI සිට Qt වෙත යෙදුමක් ගෙනයන්න
  • ඉන්පසු ඒවා hpkg ආකෘතියෙන් ඇසුරුම් කරන්න (මම තවමත් AppDir සහ AppImage හයිකු සඳහා අනුවර්තනය කිරීම ගැන සිතන බැවින්...)

අපි පටන් ගනිමු. අංශවල ප්‍රලේඛනය и වර්ධනයමෙන්ම විකි HaikuPorts වෙතින් මම නිවැරදි දිශාව සොයා ගතිමි. ඔන්ලයින් PDF පොතක් පවා තියෙනවා BeOS: Unix යෙදුමක් පෝට් කිරීම.
පිටු 467 - සහ මෙය 1997 සිට! ඇතුල බලන්න බයයි, නමුත් මම හොඳම දේ බලාපොරොත්තු වෙනවා. සංවර්ධකයාගේ වචන දිරිගන්වන සුළුය: "BeOS POSIX-අනුකූල නොවන නිසා එය බොහෝ කාලයක් ගත විය", නමුත් Haiku "බොහෝ දුරට" දැනටමත් එසේ ය.

සරල CLI යෙදුමක් පෝට් කිරීම

මුලින්ම හිතුවේ Application එක Port කරන්න avrdude, නමුත්, එය සිදු වූ පරිදි, මෙය දැනටමත් ය කර ඇත බොහෝ කලකට පෙර.

පළමු උත්සාහය: නැරඹීමට කිසිවක් නැත

මට තේරුම් ගත නොහැකි දේ දැනටමත් එයයි යෙදුම් වසර 10 කට වැඩි කාලයක් හයිකු වෙත ගෙන ගොස් ඇත - මෙහෙයුම් පද්ධතිය තවමත් 1.0 අනුවාදය පවා නොමැති බව තිබියදීත්.

දෙවන උත්සාහය: නැවත ලිවිය යුතුය

ඒ නිසා මම පාවිච්චි කරන්නම් ptouch-770, ලේබල් මුද්‍රණය කිරීමට මා භාවිතා කරන Brother P-Touch 770 මුද්‍රණ යන්ත්‍රය පාලනය කිරීම සඳහා CLI.
මම එය මත විවිධ ලේබල් මුද්‍රණය කරමි, ඔබ එය දැනටමත් පෙර ලිපියේ දැක ඇති. ටිකක් කලින් මම Python වල පොඩි GUI wrapper program එකක් ලිව්වා (Gtk+ වල තියෙන නිසා ආයෙ ලියන්න වෙයි, මේක ඉගෙන ගන්න හොඳ හේතුවක්).

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු
සහෝදරයා P-Touch 770 ලේබල් මුද්‍රණ යන්ත්‍රය. එය හයිකු සමඟ ක්‍රියා කරයිද?

හයිකු පැකේජ කළමනාකරු පුස්තකාල සහ විධාන ගැන දනී, එබැවින් මට ධාවනය වන විට "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 ලිනක්ස් මත පදනම් වූවක් නිසා හයිකු සඳහා නොපවතී. ඒ කියන්නේ මම compile කරන්න හදන source code එක edit කරන්න ඕනේ.
ඔහ්, ඔබට ඔබේ හිසට උඩින් පනින්න බැහැ, මම කොහෙන් පටන් ගන්නද කියලා මම දන්නේ නැහැ.

තුන්වන උත්සාහය

තිබුණා නම් හොඳයි tmate හයිකු සඳහා, එවිට මම හයිකු සංවර්ධකයින්ට මගේ පර්යන්ත සැසියට සම්බන්ධ වීමට ඉඩ දෙමි - යම් දෙයක් වැරදී ගියහොත්. උපදෙස් තරමක් සරල ය:

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

මෙම පියවරේදී, හයිකු වෙත වැඩසටහනක් ගෙනයාමට සරල නැවත ගොඩනැගීමට අවශ්‍ය ප්‍රමාණයට වඩා වැඩි දැනුමක් අවශ්‍ය බව මට වැටහුණි.
මම මිත්‍රශීලී හයිකු සංවර්ධකයින් සමඟ කතා කළෙමි, එය msgpack හි දෝෂයක් ඇති බව පෙනේ, මිනිත්තු කිහිපයකට පසු මම HaikuPorts හි පැච් එකක් දකිමි. නිවැරදි කළ පැකේජය මගේම දෑසින් මට පෙනේ මෙතනට යනවා (buildslave - virtual machines).

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු
Buildmaster මත නිවැරදි කරන ලද msgpack ගොඩනැගීම

ඔය අතරේ මම upstream එකට පැච් එකක් යවනවා msgpack වෙත Haiku සහාය එක් කිරීමට.

මිනිත්තු පහකට පසුව, යාවත්කාලීන කළ msgpack දැනටමත් 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.

අනපේක්ෂිත ලෙස හොඳයි. මම එහෙම කිව්වද?!

මම නැවත මුල් ගැටලුව වෙත ආපසු:

/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 ඒ නිසා:

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.

හයිකු වල libresolv වලට අමතරව තවත් දෙයක් libnetwork වල ඇති බව ඔවුන් මට පැහැදිලි කලා. පෙනෙන විදිහට, කේතය තවදුරටත් සංස්කරණය කළ යුතුය. හිතන්න ඕනේ…

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!

ඇත්තටම සරලයි. විනාඩියකට වඩා අඩු කාලයක්!

haikuporter සහ haikuports භාවිතයෙන් hpkg හි යෙදුම් ඇසුරුම් කිරීම.

මා ආරම්භ කළ යුත්තේ කුමක් ද? සරල ලියකියවිලි නොමැත, මම irc.freenode.net හි #haiku නාලිකාවට ගොස් මෙසේ අසමි:

  • කණ්ඩායම package - පැකේජ නිර්මාණය කිරීමට පහත් මට්ටමේ ක්රමයක්. බොහෝ දුරට, "එය නිසි .hpkg පැකේජයක් බවට පත් කිරීම" කොටසේ විස්තර කර ඇති පරිදි, PackageInfo ඇයට ප්‍රමාණවත් වේ.
  • මට දෙයක් කරන්න ඕන එවැනි
  • භාවිතා කළ හැකිය hpkg-නිර්මාතෘ (එය මට කඩා වැටේ, දෝෂ වාර්තා කිරීම)

කුමක් කළ යුතුද යන්න පැහැදිලි නැත. මම හිතන්නේ මට හෙලෝ වර්ල්ඩ් විලාසිතාවේ ආරම්භක මාර්ගෝපදේශයක් අවශ්‍යයි, ඉතා සුදුසු වීඩියෝවක්. GNU hello හි සිදු කර ඇති පරිදි, HaikuPorter සඳහා පහසු හැඳින්වීමක් ද තිබීම සතුටක්.

මම පහත සඳහන් දේ කියෙව්වා:

haikuporter හයිකු සඳහා පොදු පැකේජ ව්‍යාපෘති නිර්මාණය කිරීමේ මෙවලමකි. එය සියලුම පැකේජ සඳහා පදනමක් ලෙස HaikuPorts ගබඩාව භාවිතා කරයි. පැකේජ නිර්මාණය කිරීම සඳහා හයිකුපෝටර් වට්ටෝරු භාවිතා කරයි.

ඊට අමතරව, මම එය සොයා ගන්නේ:

HaikuPorts ගබඩාවේ වට්ටෝරු ගබඩා කිරීම අවශ්‍ය නොවේ. ඔබට වෙනත් ගබඩාවක් සාදා, එහි වට්ටෝරු දමා, පසුව එය haikuporter යොමු කරන්න.

මට අවශ්‍ය දේ - පැකේජය ප්‍රසිද්ධියේ මුදා හැරීමට ක්‍රමයක් සොයන්නේ නැතිනම්. නමුත් මෙය වෙනත් ලිපියක් සඳහා මාතෘකාවකි.

haikuporter සහ 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!

සිත්ගන්නා ප්රශ්නයක් පැන නැගී ඇත. මම වට්ටෝරුවට චෙක්සම් එකක් එකතු කළහොත් - එය අඛණ්ඩ ඒකාබද්ධ කිරීම සඳහා නවතම git කැපවීම සමඟ ගැළපේද? (සංවර්ධකයා තහවුරු කරයි: "එය ක්‍රියා නොකරනු ඇත. වට්ටෝරු සාපේක්ෂව ස්ථායී වීමට සැලසුම් කර ඇත.")

විනෝදය සඳහා, වට්ටෝරුවට එකතු කරන්න:

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 ගබඩාවකි, කේතය දැනටමත් කෙලින්ම ඇත, unpack කිරීමට කිසිවක් නැත. මගේ දෘෂ්ටිකෝණයට අනුව, මෙවලම GitHub url ට ඉහළින් තිබේ නම් එය ඉවත් කරන්නෙකු සොයන්නේ නැති තරම් බුද්ධිමත් විය යුතුය.

සමහරවිට 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

පරණ පුරුද්දෙන් මම irc.freenode.net ජාලයේ #haiku නාලිකාවේ හොඳ අයගෙන් අහන්න යනවා. ඔවුන් නොමැතිව මම කොහේද? ඉඟියෙන් පසුව, මම භාවිතා කළ යුතු බව මට වැටහුණි:

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 සහ ගබඩාව හයිකුපෝර්ට්ස් එයට "නිකම් වැඩ" හැඟීමක් නැත, නමුත් සංවර්ධකයෙකු ලෙස, මම හයිකු සමඟ වැඩ කිරීමට කැමති සමහර දේවල් තිබේ. බොහෝ දුරට, එය Linux ගොඩනැගීම් තැනීමේ මෙවලම් කට්ටලයක් වන Open Build Service හා සමාන වේ: අතිශයින්ම බලවත්, ක්‍රමානුකූල ප්‍රවේශයක් සමඟ, නමුත් මගේ කුඩා "hello world" යෙදුම සඳහා overkill.

නැවතත්, Mrට අනුව. waddlesplash:

ඇත්ත වශයෙන්ම, HaikuPorter පෙරනිමියෙන් තරමක් දැඩි වේ (එසේම එය වඩාත් දැඩි කිරීමට lint මාදිලියක් මෙන්ම දැඩි මාදිලියක් ඇත!), නමුත් එය හුදෙක් පැකේජ නිර්මාණය කරනවාට වඩා වැඩ කරන පැකේජ නිර්මාණය කරන නිසා පමණි. ප්‍රකාශ නොකළ යැපුම්, පුස්තකාල නිසි ලෙස ආනයනය නොකිරීම, වැරදි අනුවාද ආදිය ගැන ඔහු පැමිණිලි කරන්නේ එබැවිනි. ඉලක්කය වන්නේ පරිශීලකයා ඒ ගැන දැන ගැනීමට පෙර අනාගත ගැටළු ඇතුළුව ඕනෑම සහ සියලු ගැටලු අල්ලා ගැනීමයි (මෙම හේතුව නිසා avrdude ස්ථාපනය කිරීමට නොහැකි විය, මන්ද යැපීම ඇත්ත වශයෙන්ම වට්ටෝරුවෙහි දක්වා ඇත). පුස්තකාල යනු තනි පැකේජ හෝ නිශ්චිත SO අනුවාද පමණක් නොවේ. ක්‍රියාත්මක කිරීමේදී දෝෂ මඟහරවා ගැනීම සඳහා වට්ටෝරු තුළම මේ සියල්ල නිරීක්ෂණය කරන බව HaikuPorter සහතික කරයි.

ප්‍රතිපත්තිමය වශයෙන්, මෙහෙයුම් පද්ධතියක් නිර්මාණය කිරීමේදී මෙම මට්ටමේ දැඩිභාවය යුක්ති සහගත ය, නමුත් එය “හලෝ වර්ල්ඩ්” යෙදුමක් සඳහා මට අනවශ්‍ය බව පෙනේ. මම වෙනත් දෙයක් උත්සාහ කිරීමට තීරණය කළා.

"package create" විධානය භාවිතයෙන් hpkg ආකෘතියෙන් යෙදුම් ගොඩනැගීම

සමහරවිට, මේ සරල උපදෙස් මට වඩා හොඳින් ක්‍රියා කරයිද?

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, BeOS ආකෘතියෙන් .pkg ලේඛනාගාර සැකසීම. පරිශීලකයින් ඒවා ස්ථාපනය කිරීමට මම කැමතියි, නමුත් මෙනුවේ ඔවුන්ගේ පැමිණීම ව්‍යාකූලත්වයට හේතු වේ.

කිසියම් හේතුවක් නිසා, උදාහරණයක් ලෙස, සරල විසඳුමක් ඇති බව මට පෙනේ Hidden=true ගොනු තුළ .desktop ලිනක්ස් මත. "සැඟවුණු" තොරතුරු ගොනු පද්ධතියේ සම්පතක් සහ ගුණාංගයක් බවට පත් නොකරන්නේ මන්ද?

විශේෂයෙන් සියුම් නොවන දෙය නම් මෙනුව පෙන්වන (සමහර) යෙදුම්වල නමයි, deskbar, මාර්ගය දිගේ තදින් බැඳ ඇත.

මහතා. waddlesplash මෙය පැහැදිලි කරයි:

මෙම නඩුවේ “ඩෙස්ක්බාර්” සාමාන්‍ය යෙදුමක් ලෙස තේරුම් ගත යුතුය (වින්ඩෝස් යෙදුම සහ සාමාන්‍ය සංකල්පය යන දෙකම සඳහන් කරන “කාර්ය තීරුව” හා සමානව). හොඳයි, මෙතැන් සිට deskbar, "ඩෙස්ක්බාර්" නොවේ, මෙය ද ඒ හා සමාන ආකාරයකින් තේරුම් ගත හැකිය.

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු
යෙදුම් සහිත "පාහේ සමාන" නාමාවලි 2ක්

යෙදුම් සමඟ නාමාවලි 2 ක් ඇත්තේ ඇයි, සහ මගේ QtQuickApplication එකක, නමුත් අනෙක් එකක නැත්තේ ඇයි? (සියල්ලට පසු, මෙය එක් පද්ධතියක් නොවේ, නමුත් දෙවන පරිශීලක එකකි, එය මට පෞද්ගලිකව තේරුම් ගත හැකිය).
මම ඇත්තටම ව්‍යාකූල වී ඇති අතර මෙය ඒකාබද්ධ කළ යුතු යැයි මම සිතමි.

අදහස් දැක්වීම Mr. waddlesplash

යෙදුම් නාමාවලියෙහි මෙනුවේ අවශ්‍ය නොවන යෙදුම් අඩංගු වේ. නමුත් මෙනුව සමඟ තත්වය ඇත්ත වශයෙන්ම වැඩිදියුණු කළ යුතු අතර, එය වඩාත් අභිරුචිකරණය කළ හැකිය.

අයදුම් කිරීම, නැතහොත් එය සිදු නොවනු ඇත 😉

මම කල්පනා කළා: යෙදුම් සත්කාරකත්වය සැපයීම ඇත්තෙන්ම අවශ්‍යද? /system/apps, පරිශීලකයන් ඔවුන් එහි දකින්නේ නම්, එය නුසුදුසු ය. සමහර විට ඒවා පරිශීලකයාට හමු නොවන වෙනත් ස්ථානයක තැබීම වඩා හොඳද? පැකේජ වල අන්තර්ගතය ඇති Mac OS X හි සිදු කර ඇති ආකාරයටම .app, භාවිතා කරන්නාට නොපෙනිය යුතුය /Applications, /පද්ධතිය/පුස්තකාලය/...“` ගැඹුරේ සැඟවී සිටීම.

යැපීම් ගැන කුමක් කිව හැකිද?

මම හිතන්නේ කෙසේ හෝ පරායත්තයන් සඳහන් කිරීම වටී, හරිද? Qt පෙරනිමියෙන් හයිකු ස්ථාපනයේ අනිවාර්ය කොටසක් ලෙස සැලකිය හැකිද? නැහැ! Qt පෙරනිමියෙන් ස්ථාපනය කර නැත. පැකේජ සාදන්නෙකුට ELF ගොනු පරීක්ෂා කිරීමෙන් පරායත්තතා ස්වයංක්‍රීයව හඳුනාගත හැකිද? HaikuPorter ඇත්තටම මේක කරන බව මට කිව්වා, නමුත් package නැත. එයට හේතුව එය තනිවම ගොනු නිර්මාණය කරන "පැකේජ සාදන්නෙකු" පමණක් වන බැවිනි hpkg.

පැකේජයකට හයිකුවෙන් පිටත පැකේජ මත යැපීම් නොතිබිය යුතුය යන ප්‍රතිපත්තියක් එකතු කිරීමෙන් හයිකු වඩාත් සංකීර්ණ කළ යුතුද? haikuports? (මම කැමතියි, එවැනි ප්‍රතිපත්තියක් දේවල් ගොඩක් පහසු කරන නිසා - අමතර පැකේජ මූලාශ්‍ර සමඟ පටලවා නොගෙන, ඕනෑම තැනක සිට බාගත කරන සෑම පැකේජයකම පරායත්තතා ස්වයංක්‍රීයව විසඳා ගැනීමට පද්ධතියට හැකි වනු ඇත.)

මහතා. waddlesplash පැහැදිලි කරයි:

සංවර්ධකයින්ගේ නිදහස එතරම් සීමා කිරීමට අපි කැමති නැත, මන්ද CompanyX හට පරායත්තතා (සහ එබැවින් ගබඩාවක්) සමඟ තමන්ගේම මෘදුකාංග කට්ටලයට සහාය වීමට අවශ්‍ය නම් එය සම්පූර්ණයෙන්ම නිදහසේ එය කරන බව පැහැදිලිය.

එම අවස්ථාවෙහිදී, තෙවන පාර්ශවීය පැකේජ, යෙදුම සමඟ අවශ්‍ය සියල්ල සම්පුර්ණයෙන්ම ඇසුරුම් කිරීමෙන් හයිකුපෝර්ට්ස්හි ඇතුළත් කර නොමැති කිසිවක් මත යැපීම් වළක්වා ගැනීම නිර්දේශ කිරීම වටී. නමුත් මෙය මෙම ලිපි මාලාවේ ඉදිරි ලිපියකට මාතෘකාවක් යැයි සිතමි. [කර්තෘ AppImage දෙසට ගමන් කරයිද? - ආසන්න වශයෙන්. පරිවර්තක]

යෙදුම් නිරූපකයක් එකතු කිරීම

මගේ අලුතින් සාදන ලද යෙදුමේ සම්පත් වෙත පිළිවෙලට ගොඩනඟන ලද අයිකනවලින් එකක් එක් කිරීමට මට අවශ්‍ය නම් කුමක් කළ යුතුද? මෙය විශ්මයජනක මාතෘකාවක් බව පෙනේ, එබැවින් එය ඊළඟ ලිපිය සඳහා පදනම වනු ඇත.

අඛණ්ඩ යෙදුම් ගොඩනැගීම් සංවිධානය කරන්නේ කෙසේද?

Inkscape වැනි ව්‍යාපෘතියක් සිතන්න (ඔව්, එය තවමත් හයිකු හි නොමැති බව මම දනිමි, නමුත් එය ප්‍රදර්ශනය කිරීමට පහසුය). ඔවුන්ට ප්‍රභව කේත ගබඩාවක් ඇත https://gitlab.com/inkscape/inkscape.
යමෙකු ගබඩාවට තම වෙනස්කම් සිදු කරන සෑම අවස්ථාවකම, ගොඩනැගීමේ නල මාර්ග දියත් කරනු ලැබේ, ඉන් පසුව වෙනස්කම් ස්වයංක්‍රීයව පරීක්‍ෂා කර, ගොඩනගා, සහ යෙදුම Linux සඳහා AppImage ඇතුළු විවිධ පැකේජවලට ඇසුරුම් කරනු ලැබේ (දේශීය පරීක්ෂණ සඳහා බාගත කළ හැකි ස්වාධීන යෙදුම් පැකේජයකි. පද්ධතියේ ස්ථාපනය කළ හැකි හෝ නොකළ හැකි දේ [මම එය දැනගත්තා! - ආසන්න වශයෙන්. පරිවර්තක]) සෑම ශාඛාවක් ඒකාබද්ධ කිරීමේ ඉල්ලීමක් සමඟම එකම දේ සිදු වේ, එබැවින් ඔබට ඒකාබද්ධ කිරීමට පෙර ඒකාබද්ධ ඉල්ලීමේ යෝජනා කර ඇති කේතයෙන් සාදන ලද යෙදුම බාගත කළ හැකිය.

හයිකු සමඟ මගේ පස්වන දිනය: අපි වැඩසටහන් කිහිපයක් පෝට් කරමු
ගොඩනැගීමේ තත්ව සමඟ ඉල්ලීම් ඒකාබද්ධ කරන්න සහ ගොඩනැගීම සාර්ථක නම් (කොළ පැහැයෙන් සලකුණු කර ඇති) සම්පාදනය කරන ලද ද්විමය බාගත කිරීමේ හැකියාව

ගොඩනැගීම ඩොකර් බහාලුම්වල ධාවනය වේ. GitLab Linux හි නොමිලේ ධාවකයන් ලබා දෙන අතර, මම සිතන්නේ ඔබේම ධාවකයන් ඇතුළත් කිරීමට හැකි විය හැකි බවයි (මාර්ගය වන විට, ඩොකර් හෝ ඊට සමාන ඒවා නොමැති බව මා දන්නා හයිකු වැනි පද්ධති සඳහා මෙය ක්‍රියා කරන්නේ කෙසේදැයි මට නොපෙනේ, නමුත් FreeBSD සඳහා ද Docker නොමැත, එබැවින් මෙම ගැටළුව Haiku වලට පමණක් ආවේනික නොවේ).

ඉතා මැනවින්, Haiku යෙදුම් Linux සඳහා Docker කන්ටේනරයක් තුළ ගොඩනගා ගත හැකිය. මෙම තත්වය තුළ, හයිකු සඳහා එකලස් කිරීම දැනට පවතින නල මාර්ගවලට හඳුන්වා දිය හැකිය. හරස් සම්පාදක තිබේද? එසේත් නැතිනම් මම QEMU/KVM වැනි දෙයක් භාවිතා කරමින් ඩොකර් කන්ටේනරයක් තුළ ඇති සියලුම හයිකු අනුකරණය කළ යුතුද? මාර්ගය වන විට, බොහෝ ව්යාපෘති සමාන මූලධර්ම භාවිතා කරයි. උදාහරණයක් ලෙස, Scribus මෙය කරයි - එය දැනටමත් Haiku සඳහා ලබා ගත හැකිය. මට එවන්න පුළුවන් දවසක් එයි එවැනි හයිකු සහාය එක් කිරීමට වෙනත් ව්‍යාපෘති වෙත ඉල්ලීම් අදින්න.

එක් සංවර්ධකයෙක් මෙසේ පැහැදිලි කරයි.

තමන් විසින්ම පැකේජ නිර්මාණය කිරීමට බලාපොරොත්තු වන අනෙකුත් ව්‍යාපෘති සඳහා, සාමාන්‍ය CMake/CPack ක්‍රමයට සහය දක්වයි. පැකේජයේ ගොඩනැගීමේ වැඩසටහන කෙලින්ම ඇමතීමෙන් අනෙකුත් ගොඩනැගීම් පද්ධති සඳහා සහය දැක්විය හැක, මිනිසුන් ඒ ගැන උනන්දුවක් දක්වන්නේ නම් හොඳයි. පළපුරුද්ද පෙන්වන්නේ: මෙතෙක් වැඩි උනන්දුවක් නොතිබුණි, එබැවින් haikuporter අපට පහසු ලෙස වැඩ කළේය, නමුත්, අවසානයේ, ක්රම දෙකම එකට වැඩ කළ යුතුය. අපි ලිනක්ස් හෝ වෙනත් ඕනෑම සේවාදායක මෙහෙයුම් පද්ධතියකින් හරස්-ගොඩනැගීමේ මෘදුකාංග සඳහා මෙවලම් කට්ටලයක් හඳුන්වා දිය යුතුය (හයිකු සර්වර් මත ධාවනය කිරීමට නිර්මාණය කර නැත).

මම හිටි හැටියේ අත්පොළසන් දෙනවා. සාමාන්‍ය ලිනක්ස් භාවිතා කරන්නන් සේවාදායක මෙහෙයුම් පද්ධතියකට අවශ්‍ය මේ සියලු අමතර බර සහ අමතර ගමන් මලු (ආරක්ෂාව, දැඩි පාලනය, ආදිය) දරයි, නමුත් පුද්ගලික එකක් සඳහා නොවේ. එබැවින් ලිනක්ස් හි හයිකු යෙදුම් තැනීමට හැකිවීම යා යුතු මාර්ගය බව මම සම්පූර්ණයෙන්ම එකඟ වෙමි.

නිගමනය

POSIX යෙදුම් හයිකු වෙත ගෙනයාම කළ හැකි නමුත් සාමාන්‍ය නැවත ගොඩනැගීමකට වඩා මිල අධික විය හැක. irc.freenode.net ජාලයේ #haiku නාලිකාවේ අය උදව් නොකළේ නම් මම අනිවාර්යයෙන්ම දිගු කලක් මේ සමඟ සිරවී සිටිමි. නමුත් ඔවුන් පවා සෑම විටම වැරැද්ද කුමක්දැයි වහාම දුටුවේ නැත.

Qt හි ලියා ඇති යෙදුම් පහසු ව්යතිරේකයකි. මම කිසිම ප්‍රශ්නයක් නැතිව සරල demo application එකක් දැම්මා.

සරල යෙදුම් සඳහා පැකේජයක් තැනීම ද බෙහෙවින් පහසු ය, නමුත් "සාම්ප්රදායිකව නිකුත් කරන ලද" ඒවා සඳහා පමණි, i.e. හයිකුපෝර්ට්ස් හි සහාය සඳහා අදහස් කරන ලද ප්‍රභව කේත ලේඛනාගාර අනුවාද සහිත වීම. GitHub සමඟ අඛණ්ඩ ගොඩනැගීමක් සඳහා (සෑම වෙනස්කම් සඳහාම ගොඩනැගීම), සියල්ල එතරම් සරල නොවන බව පෙනේ. මෙහි Mac එකක ප්‍රතිඵලයට වඩා Linux බෙදාහැරීමක් ලෙස Haiku දැනේ, එහිදී ඔබ XCode හි "Build" බොත්තම ක්ලික් කළ විට ඔබට පැකේජයක් ලැබේ. .app, තැටි රූපයක් ඇතුළු කිරීමට සූදානම් .dmg, මගේ වෙබ් අඩවියේ බාගත කිරීම සඳහා සූදානම්.
“සේවාදායක” මෙහෙයුම් පද්ධතියක් මත පදනම්ව අඛණ්ඩ යෙදුම් ගොඩනැගීම, උදාහරණයක් ලෙස, ලිනක්ස්, සංවර්ධකයින්ගෙන් ඉල්ලුමක් තිබේ නම්, බොහෝ දුරට හැකි වනු ඇත, නමුත් මේ මොහොතේ හයිකු ව්‍යාපෘතියට වෙනත්, වඩාත් වැදගත් කාර්යයන් ඇත.

එය ඔබම උත්සාහ කරන්න! සියල්ලට පසු, හයිකු ව්‍යාපෘතිය මඟින් ජනනය කරන ලද DVD හෝ USB වෙතින් ආරම්භ කිරීම සඳහා රූප සපයයි සෑම දිනකම. ස්ථාපනය කිරීමට, රූපය බාගත කර එය භාවිතා කර ෆ්ලෑෂ් ධාවකයකට ලියන්න එචර්

ඔබට ප්‍රශ්න තිබේද? රුසියානු භාෂාව කතා කිරීමට අපි ඔබට ආරාධනා කරමු විදුලි පණිවුඩ නාලිකාව.

දෝෂ දළ විශ්ලේෂණය: C සහ C++ හි පාදයට වෙඩි තබා ගන්නේ කෙසේද. Haiku OS වට්ටෝරු එකතුව

සිට කර්තෘ පරිවර්තනය: මෙය හයිකු පිළිබඳ ලිපි මාලාවේ පස්වන ලිපියයි.

ලිපි ලැයිස්තුව: පළමුව දෙවැන්න තෙවනුව හතරවන

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න