هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون

هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون

TL، ڊاڪٽر: هڪ نئون ڄاول پهريون ڀيرو هائيڪو ڏٺو، جيڪو لينڪس جي دنيا مان ڪجهه پروگرامن کي پورٽ ڪرڻ جي ڪوشش ڪري رهيو هو.

هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون
منهنجو پهريون هائيڪو پورٽ ٿيل پروگرام، ان جي hpkg فارميٽ ۾ پيڪيج ٿيل

تازو مون دريافت ڪيو هائيڪو، پي سي لاءِ حيرت انگيز طور تي سٺو آپريٽنگ سسٽم.
اڄ مان سکندس ته هن آپريٽنگ سسٽم ۾ نوان پروگرام ڪيئن پورٽ ڪيا وڃن. بنيادي ڌيان هڪ لينڪس ڊولپر جي نقطي نظر کان هائيڪو کي تبديل ڪرڻ جي پهرين تجربي جي وضاحت آهي. مان رستي ۾ ڪيل ڪنهن به احمقانه غلطي لاءِ معافي وٺان ٿو، ڇاڪاڻ ته هائيڪو کي پهرين ڊائون لوڊ ڪندي هڪ هفتو به نه گذريو آهي.

مان ٽي مقصد حاصل ڪرڻ چاهيان ٿو:

  • پورٽ هڪ سادي CLI ايپليڪيشن
  • GUI کان Qt تائين ايپليڪيشن پورٽ ڪريو
  • پوءِ انھن کي hpkg فارميٽ ۾ پيڪيج ڪريو (جڏھن مان ھائيڪو لاءِ AppDir ۽ AppImage کي ترتيب ڏيڻ بابت اڃا سوچي رھيو آھيان...)

اچو ته شروع ڪريون. حصن ۾ دستاويز и ترقيانهي سان گڏوگڏ رڪن هائيڪو پورٽس مان مون کي صحيح رستو مليو. هتي هڪ آن لائن PDF ڪتاب پڻ آهي BeOS: هڪ يونڪس ايپليڪيشن پورٽنگ.
467 صفحا - ۽ هي 1997 کان آهي! اهو اندر ڏسڻ لاء خوفناڪ آهي، پر مون کي اميد آهي ته بهترين لاء. ڊولپر جا لفظ حوصلا افزائي وارا آهن: ”ان ۾ گهڻو وقت لڳي ويو ڇاڪاڻ ته BeOS POSIX-compliant نه هو،“ پر هائيڪو ”گهڻو حصو“ اڳ ۾ ئي اهڙو آهي.

پورٽنگ هڪ سادي CLI ايپليڪيشن

پهرين سوچ هئي ايپليڪيشن کي پورٽ ڪرڻ آيو، پر، جيئن اهو نڪتو، اهو اڳ ۾ ئي آهي ٺهيل گهڻو وقت پهريان.

پهرين ڪوشش: ڏسڻ لاءِ ڪجھ به نه

جيڪو مان سمجهي نه سگهيو آهيان اهو اڳ ۾ ئي آهي ايپس کي 10 سالن کان وڌيڪ عرصي تائين Haiku ڏانهن پورٽ ڪيو ويو آهي - ان حقيقت جي باوجود ته او ايس پاڻ اڃا تائين نسخو 1.0 نه آهي.

ٻي ڪوشش: ٻيهر لکڻ جي ضرورت آهي

تنهنڪري مان استعمال ڪندس ptouch-770، برادر P-Touch 770 پرنٽر کي ڪنٽرول ڪرڻ لاءِ CLI جيڪو آئون ليبل پرنٽ ڪرڻ لاءِ استعمال ڪريان ٿو.
مان ان تي مختلف ليبل پرنٽ ڪيان ٿو، ۽ توھان اڳ ۾ ئي اڳئين مضمون ۾ ڏٺو ھوندو. ٿورڙو اڳ، مون Python ۾ هڪ ننڍڙو GUI ريپر پروگرام لکيو هو (جيئن ته اهو 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 تمام لينڪس تي ٻڌل آهي ۽ ان ڪري هائيڪو لاءِ موجود ناهي. جنهن جو مطلب آهي ته مون کي انهي سورس ڪوڊ کي ايڊٽ ڪرڻ جي ضرورت آهي جنهن کي مان گڏ ڪرڻ جي ڪوشش ڪري رهيو آهيان.
ها، توهان پنهنجي مٿي تي ٽپو نٿا ڏئي سگهو، ۽ مون کي خبر ناهي ته ڪٿان شروع ڪجي.

ٽيون ڪوشش

اهو سٺو هوندو 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

هن قدم ۾ مان هائيڪو ڊپو کوليو ۽ ڳولهيو 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

مان ٻيهر هائيڪو ڊپو ڏانهن ويس، ۽ يقيناً مليو 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 ۾ هڪ بگ آهي، ۽ ڪجهه منٽن کان پوء مون کي Haiku Ports ۾ هڪ پيچ نظر اچي ٿو. مان پنهنجي اکين سان ڏسي سگهان ٿو ته ڪيئن صحيح پيڪيج هتي وڃڻ (buildslave - ورچوئل مشينون).

هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون
بلڊ ماسٽر تي صحيح ٿيل ميسيج پيڪ تعمير ڪرڻ

وچ واري زماني ۾ مان اپ اسٽريم ڏانهن پيچ موڪليان ٿو 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 سو:

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

"خراب پورٽ ID" اڳ ۾ ئي هڪ ڪاروباري ڪارڊ وانگر آهي هائيڪو. ٿي سگهي ٿو ڪنهن کي هڪ خيال آهي ته ڇا غلط آهي ۽ ان کي ڪيئن ٺيڪ ڪرڻ لاء؟ جيڪڏهن ائين آهي، آئون آرٽيڪل کي اپڊيٽ ڪندس. سان ڳنڍيو 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 ۾ پيڪنگنگ ايپليڪيشنون.

مون کي ڇا سان شروع ڪرڻ گهرجي؟ ڪو به سادو دستاويز ناهي، مان irc.freenode.net تي #haiku چينل تي وڃان ٿو ۽ ٻڌو:

  • ٽيم package - پيڪيجز ٺاهڻ لاء گھٽ سطح جو طريقو. گھڻي ڀاڱي لاءِ، PackageInfo ان لاءِ ڪافي آھي، جيئن سيڪشن ۾ بيان ڪيو ويو آھي “Making it into a proper .hpkg package”
  • مون کي ڪجهه ڪرڻو آهي اهڙيون
  • استعمال ڪري سگهجن ٿا hpkg-creator (اهو منهنجي لاءِ تباهه ٿي ويو، غلطي رپورٽنگ)

اهو واضح ناهي ته ڇا ڪجي. منهنجو اندازو آهي ته مون کي هيلو ورلڊ طرز جي شروعاتي گائيڊ جي ضرورت آهي، مثالي طور هڪ وڊيو. اهو سٺو لڳندو ته هائيڪو پورٽر جو هڪ آسان تعارف پڻ آهي، جيئن GNU هيلو ۾ ڪيو ويو آهي.

مون هيٺيون پڙهيو:

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

اهو ظاهر ٿئي ٿو ته اتي ڪا به اهڙي شيء ناهي جيئن هڪ باقاعده ترڪيب فائل جنهن ۾ توهان جي ايپليڪيشن جو سورس ڪوڊ شامل آهي. توھان کي ان کي ھائيڪو پورٽ فارميٽ ۾ ذخيرو ۾ رکڻو پوندو.

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

اها حقيقت اسيمبلي کي وڌيڪ پيچيده بڻائي ٿي. مون کي اهو خاص طور تي پسند ناهي، پر مان سمجهان ٿو ته اهو ضروري آهي ته آخرڪار سڀئي اوپن سورس سافٽ ويئر هائيڪو پورٽس ۾ ظاهر ٿيندا.

مون کي هيٺيون مليون آهن:

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

هڪ دلچسپ سوال پيدا ٿيو آهي. جيڪڏهن مان هڪ چيڪسم شامل ڪريان ٿو ترڪيب ۾ - ڇا اهو مسلسل انضمام لاءِ جديد گٽ ڪمٽ سان ملندو؟ (ڊولپر تصديق ڪري ٿو: "اهو ڪم نه ڪندو. ترڪيبون ٺهيل آهن نسبتا مستحڪم هجڻ لاء.")

تفريح لاءِ، ترڪيب ۾ شامل ڪريو:

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

هي ڇا ڪري رهيو آهي؟ آخرڪار، هي هڪ گٽ مخزن آهي، ڪوڊ اڳ ۾ ئي سڌو سنئون آهي، ان کي پيڪ ڪرڻ لاء ڪجھ به ناهي. منهنجي نقطي نظر کان، اوزار ڪافي هوشيار هجڻ گهرجي جيڪڏهن اهو 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:

خير، ها، سبب اسيمبلي لاء حاصل ڪيل ڊيٽا جي سالميت چيڪ ڪرڻ جي خواهش هئي. اختيارن مان ھڪڙو آھي آرڪائيو جي چيڪسم جي تصديق ڪرڻ، پر توھان، يقينا، انفرادي فائلن کي ھش ڪري سگھو ٿا، جنھن تي عمل نه ڪيو ويندو، ڇاڪاڻ ته اهو گهڻو وقت وٺندو آهي. ان جو نتيجو اهو آهي ته گٽ ۽ ٻين وي سي ايس جي ”عدم تحفظ“. اهو گهڻو ڪري هميشه اهو معاملو هوندو، ڇو ته GitHub تي هڪ آرٽيڪل ٺاهڻ بلڪل آسان ۽ اڪثر تيز آهي. خير، مستقبل ۾، شايد غلطي جو پيغام ايترو چمڪندڙ نه هوندو... (اسان هاڻي اهڙيون ترڪيبون هائيڪو پورٽ ۾ ضم نه ڪنداسين).

~/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 آهي، تنهنڪري هر شي جيڪا هائيڪوپورٽس جي ذخيري ۾ رکيل آهي سڀني استعمال ڪندڙن لاءِ پيڪيج ڪئي ويندي، ۽ اسان نه ٿا چاهيون ته گڏ ڪرڻ ۽ پهچائڻ جو خطرو ”هر شي کي جديد ورزن اپ اسٽريم ۾“.

سمجهي ويو! ڪنهن به صورت ۾، اهو ئي ٿيو آهي:

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 ۽ مخزن هائيڪوپورٽس ان ۾ ”صرف ڪم“ جو احساس نه آهي، پر هڪ ڊولپر جي حيثيت ۾، هائيڪو سان ڪم ڪرڻ بابت ڪجهه شيون مون کي پسند آهن. گهڻو ڪري، اهو ساڳيو آهي اوپن بلڊ سروس، لينڪس تعمير ڪرڻ لاء اوزار جو هڪ سيٽ: انتهائي طاقتور، هڪ منظم طريقي سان، پر منهنجي ننڍڙي "هيلو ورلڊ" ايپليڪيشن لاء اوورڪل.

ٻيهر، مسٽر جي مطابق. waddlesplash:

درحقيقت، هائيڪو پورٽر ڊفالٽ جي لحاظ کان ڪافي سخت آهي (ان سان گڏ ان کي وڌيڪ سخت بڻائڻ لاءِ هڪ لِنٽ موڊ پڻ آهي!)، پر صرف ان ڪري ته اهو پيڪيجز ٺاهي ٿو جيڪي ڪم ڪندا، بلڪه صرف پيڪيجز ٺاهڻ جي. اهو ئي سبب آهي ته هو اڻ اعلانيل انحصار، لائبريريون صحيح طرح درآمد نه ٿيڻ، غلط ورجن وغيره جي شڪايت ڪري ٿو. مقصد اهو آهي ته ڪنهن به ۽ سڀني مسئلن کي پڪڙڻ، بشمول مستقبل جا مسئلا، ان کان اڳ جو صارف ان جي باري ۾ ڄاڻي ٿو (انهي ڪري اهو ممڪن نه هو ته avrdude انسٽال ڪرڻ، ڇاڪاڻ ته انحصار اصل ۾ نسخي ۾ بيان ڪيو ويو هو). لائبريريون صرف انفرادي پيڪيجز يا مخصوص SO ورجن نه آهن. هائيڪو پورٽر انهي ڳالهه کي يقيني بڻائي ٿو ته اهو سڀ ڪجهه ترڪيب ۾ مشاهدو ڪيو ويو آهي ته جيئن عملدرآمد دوران غلطين کان بچڻ لاء.

اصولي طور تي، هن سطح جي سختي جائز آهي جڏهن هڪ آپريٽنگ سسٽم ٺاهيندي، پر اهو مون کي "هيلو ورلڊ" ايپليڪيشن لاء غير ضروري لڳي ٿو. مون فيصلو ڪيو ته ٻي ڪا ڪوشش ڪئي.

"پيڪيج ٺاھيو" ڪمانڊ استعمال ڪندي 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 توهان جي اسڪرين شاٽ ۾، پروسيسنگ .pkg آرڪائيوز BeOS فارميٽ ۾. مان چاهيندس ته صارفين انهن کي انسٽال ڪن، پر مينيو ۾ انهن جي موجودگي مونجهاري جو سبب بڻجندي.

ڪجهه سببن لاء، مون کي لڳي ٿو ته اتي هڪ آسان حل آهي، مثال طور Hidden=true فائلن ۾ .desktop لينڪس تي. ڇو نه "لڪيل" معلومات کي فائل سسٽم جو هڪ وسيلو ۽ خاصيت ٺاهيو؟

ڇا خاص طور تي ذيلي نه آهي (ڪجهه) ايپليڪيشن جو نالو جيڪو ڏيکاري ٿو مينيو، deskbar، رستي ۾ سختي سان ڳنڍيل.

مسٽر waddlesplash وضاحت ڪري ٿو:

هن معاملي ۾ "ڊيسڪبار" کي عام اصطلاح جي هڪ قسم جي طور تي سمجهڻ گهرجي (گهڻو ڪري ساڳئي طرح "ٽاسڪ بار"، جيڪو ونڊوز ايپليڪيشن ۽ عام تصور ٻنهي ڏانهن اشارو ڪري ٿو). خير، هن کان وٺي deskbar”ڊيسڪبار“ نه، ان کي به ساڳيءَ طرح سمجهي سگهجي ٿو.

هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون
2 "تقريبا هڪجهڙائي" ڊاريڪٽري انهن ۾ ايپليڪيشنن سان

ايپليڪيشنن سان گڏ 2 ڊائريڪٽريون ڇو آهن، ۽ اهو پڻ ڇو ته منهنجي QtQuickApplication هڪ ۾ آهي، پر ٻئي ۾ ناهي؟ (آخرڪار، هي هڪ سسٽم نه آهي، پر هڪ ٻيو صارف آهي، جيڪو مون کي ذاتي طور تي سمجهي سگهندو).
مان واقعي پريشان آهيان ۽ مان سمجهان ٿو ته اهو متحد ٿيڻ گهرجي.

مسٽر پاران تبصرو waddlesplash

ائپس جي فهرست ۾ ايپليڪيشنون شامل آھن جيڪي مينيو ۾ گهربل نه آھن. پر مينيو سان صورتحال حقيقت ۾ بهتر ٿيڻ جي ضرورت آهي، ان کي وڌيڪ حسب ضرورت بڻائڻ لاءِ.

ايپليڪيشن، يا اهو نه ٿيندو 😉

مون حيران ڪيو: ڇا واقعي ۾ ايپليڪيشنن کي ميزباني ڪرڻ ضروري آهي /system/apps، جيڪڏهن صارف انهن کي اتي ڏسن ٿا، اهو ناپسنديده آهي. ٿي سگهي ٿو اهو بهتر آهي ته انهن کي ڪنهن ٻئي جاء تي رکڻ لاء، جتي صارف انهن کي منهن نه ڏيندو؟ جيئن ته اهو Mac OS X ۾ ڪيو ويو آهي، جتي پيڪيجز جو مواد .app، جيڪو استعمال ڪندڙ کي ڏسڻ ۾ نه اچڻ گهرجي /Applications/سسٽم/لائبريري/…“` جي کوٽائي ۾ لڪائي رهيو آهي.

انحصار بابت ڇا؟

مان سمجهان ٿو ته اهو ڪنهن حد تائين انحصار جي وضاحت ڪرڻ جي قابل آهي، صحيح؟ ڇا Qt کي ڊفالٽ طور ھائيڪو تنصيب جو لازمي حصو سمجھي سگھجي ٿو؟ نه! Qt ڊفالٽ طور تي نصب نه ڪيو ويو آهي. ڇا هڪ پيڪيج بلڊر خودڪار طريقي سان ELF فائلن جي جانچ ڪندي انحصار کي ڳولي سگھي ٿو؟ مون کي ٻڌايو ويو ته هائيڪو پورٽر اصل ۾ اهو ڪري ٿو، پر package نه. اهو ئي سبب آهي ته اهو صرف هڪ "پيڪيج بلڊر" آهي جيڪو صرف پنهنجو پاڻ تي فائلون ٺاهي ٿو hpkg.

ڇا ھائيڪو کي وڌيڪ نفيس بنائڻ گھرجي پاليسي جوڙيندي ته ھڪ پيڪيج ھائيڪو کان ٻاھر پيڪيجز تي انحصار نه ھئڻ گھرجي؟ haikuports؟ (مان چاهيان ٿو، ڇاڪاڻ ته اهڙي پاليسي شين کي تمام گهڻو آسان بڻائي سگهندي - سسٽم خودڪار طريقي سان حل ڪرڻ جي قابل هوندو هر پيڪيج جي انحصار کي ڪٿي به ڊائون لوڊ ڪيو، بغير اضافي پئڪيج ذريعن سان گڏ گندگي جي.)

مسٽر waddlesplash وضاحت ڪري ٿو:

اسان ڊولپرز جي آزادي کي ايتري حد تائين محدود ڪرڻ نٿا چاهيون، ڇاڪاڻ ته اهو واضح آهي ته جيڪڏهن ڪمپني ايڪس پنهنجي سافٽ ويئر جي پنهنجي سيٽ جي انحصار سان سهڪار ڪرڻ چاهي ٿي (۽ انهي ڪري هڪ مخزن)، اهو مڪمل طور تي آزاديء سان ڪندو.

انهي صورت ۾، اها سفارش ڪرڻ جي قابل ٿي سگهي ٿي ته ٽئين پارٽي پيڪيجز ايپليڪيشن سان گهربل هر شي کي مڪمل طور تي پيڪنگ ڪندي هائيڪوپورٽس ۾ شامل نه ڪيل شين تي انحصار کان پاسو ڪن. پر مان سمجهان ٿو ته هن سلسلي ۾ مستقبل جي مضمون لاء هڪ موضوع آهي. [ڇا ليکڪ AppImage ڏانهن وڃي رهيو آهي؟ - لڳ ڀڳ مترجم]

ايپليڪيشن آئڪن کي شامل ڪرڻ

ڇا جيڪڏهن آئون پنهنجي نئين ٺاهيل ايپليڪيشن جي وسيلن ۾ هڪ صاف بلٽ ان آئڪن شامل ڪرڻ چاهيان ٿو؟ اهو ظاهر ٿيو ته هي هڪ حيرت انگيز موضوع آهي، تنهنڪري اهو ايندڙ مضمون جو بنياد هوندو.

مسلسل ايپليڪيشن تعميرات کي ڪيئن منظم ڪجي؟

تصور ڪريو هڪ پروجيڪٽ جهڙوڪ Inkscape (ها، مون کي خبر آهي ته اهو اڃا تائين هائيڪو ۾ موجود ناهي، پر ان تي ڊسپلي ڪرڻ آسان آهي). انهن وٽ هڪ ذريعو ڪوڊ مخزن آهي https://gitlab.com/inkscape/inkscape.
هر دفعي جڏهن ڪو ماڻهو پنهنجون تبديليون مخزن ۾ ڪري ٿو، پائپ لائنون تعمير ڪيون وينديون آهن، جنهن کان پوءِ تبديليون پاڻمرادو جانچ ڪيون وينديون آهن، ٺاهي وينديون آهن، ۽ ايپليڪيشن کي مختلف پيڪيجز ۾ پيڪيج ڪيو ويندو آهي، بشمول AppImage for Linux (هڪ اسٽينڊل ايپليڪيشن پيڪيج جيڪو ڊائون لوڊ ڪري سگهجي ٿو مقامي جاچ لاءِ. ڇا ٿي سگھي ٿو يا سسٽم تي نصب نه ٿي سگھي [مون کي خبر هئي! - لڳ ڀڳ مترجم]). ساڳي شيءِ هر برانچ جي ضم ٿيڻ جي درخواست سان ٿئي ٿي، تنهنڪري توهان ضم ٿيڻ کان پهريان ضم ٿيڻ جي درخواست ۾ تجويز ڪيل ڪوڊ مان ٺهيل ايپليڪيشن ڊائون لوڊ ڪري سگهو ٿا.

هائيڪو سان منهنجو پنجون ڏينهن: اچو ته ڪجهه پروگرامن کي پورٽ ڪريون
درخواستن کي تعمير جي حالتن سان ضم ڪريو ۽ مرتب ٿيل بائنريز کي ڊائون لوڊ ڪرڻ جي صلاحيت جيڪڏھن تعمير ڪامياب آھي (سائي ۾ نشان لڳل)

تعمير ڊاکر ڪنٽينرز ۾ هلندو آهي. GitLab لينڪس تي مفت رنرز پيش ڪري ٿو، ۽ مان سمجهان ٿو ته اهو ممڪن ٿي سگهي ٿو توهان جي پنهنجي رنرز کي شامل ڪرڻ (انهي سان، مان نه ٿو ڏسان ته اهو ڪيئن ڪم ڪندو سسٽم لاءِ هايڪو، جنهن کي مان ڄاڻان ٿو ته Docker يا برابر ناهي، پر مفت بي ايس ڊي لاءِ به ڪو ڊڪر ناهي، تنهن ڪري هي مسئلو هائيڪو لاءِ منفرد ناهي).

مثالي طور، هائيڪو ايپليڪيشنون لينڪس لاءِ ڊاڪر ڪنٽينر اندر ٺاهي سگھجن ٿيون. هن صورتحال ۾، هائيڪو جي اسيمبليء کي موجوده پائپ لائنن ۾ متعارف ڪرايو وڃي. ڇا اتي ڪراس مرتب ڪندڙ آهن؟ يا ڇا مان سڀني هائيڪو کي ڊاڪر ڪنٽينر جي اندر استعمال ڪريان ٿو جهڙوڪ QEMU/KVM (فرض ڪريان ته اهو ڊاڪر جي اندر ائين ڪم ڪندو)؟ رستي ۾، ڪيترائي منصوبا ساڳيا اصول استعمال ڪن ٿا. مثال طور، Scribus ائين ڪندو آھي - اھو ھائيڪو لاءِ اڳ ۾ ئي موجود آھي. هڪ ڏينهن اهڙو ايندو جڏهن مان موڪلائي سگھان اهڙيون ھائيڪو سپورٽ شامل ڪرڻ لاءِ ٻين پروجيڪٽ ڏانھن درخواستون ڪڍو.

ڊولپر مان هڪ بيان ڪري ٿو:

ٻين منصوبن لاءِ جيڪي پاڻ پيڪيجز ٺاهڻ جي خواهشمند آهن، باقاعده CMake/CPack طريقو سپورٽ ڪيو ويندو آهي. ٻيا بلڊ سسٽم سپورٽ ڪري سگھجن ٿا پيڪيج بلڊ پروگرام کي سڏ ڪري سڌو، جيڪو سٺو آهي جيڪڏهن ماڻهو ان ۾ دلچسپي رکن. تجربو ڏيکاري ٿو: اڃا تائين تمام گهڻي دلچسپي نه هئي، تنهنڪري هائيڪوپورٽر اسان لاء آسان ڪم ڪيو، پر، آخرڪار، ٻنهي طريقن سان گڏ ڪم ڪرڻ گهرجي. اسان کي لينڪس يا ڪنهن ٻئي سرور آپريٽنگ سسٽم کان ڪراس بلڊنگ سافٽ ويئر لاءِ اوزارن جو هڪ سيٽ متعارف ڪرائڻ گهرجي (هائيڪو سرور تي هلائڻ لاءِ ٺهيل ناهي).

مان بيٺو سلام ڏيان ٿو. باقاعده لينڪس استعمال ڪندڙ هي سڀ اضافي لوڊ ۽ اضافي سامان کڻندا آهن (سيڪيورٽي، سخت ڪنٽرول، وغيره) جيڪو سرور آپريٽنگ سسٽم لاءِ ضروري آهي، پر ذاتي لاءِ نه. تنهن ڪري مان مڪمل طور تي متفق آهيان ته لينڪس تي هائيڪو ايپس ٺاهڻ جي قابل ٿيڻ جو طريقو آهي.

ٿڪل

POSIX ايپليڪيشنن کي هائيڪو ڏانهن پورٽ ڪرڻ ممڪن آهي، پر هڪ عام ٻيهر تعمير کان وڌيڪ قيمتي ٿي سگهي ٿو. مان يقينن هن سان گهڻي وقت تائين بيٺو هجان ها جيڪڏهن اهو irc.freenode.net نيٽ ورڪ تي #haiku چينل جي ماڻهن جي مدد لاءِ نه هجي ها. پر اڃا به اهي هميشه فوري طور تي نه ڏسندا هئا ته ڇا غلط هو.

Приложения, написанные на Qt, — легкое исключение. Я собрал простейшее демонстрационное приложение без особых проблем.

سادي ايپليڪيشنن لاءِ پيڪيج ٺاهڻ پڻ ڪافي آسان آهي، پر صرف ”روايتي طور تي جاري ڪيل“ وارن لاءِ، يعني. ھائيڪوپورٽس ۾ سپورٽ لاءِ ورزن ٿيل سورس ڪوڊ آرڪائيو. GitHub سان مسلسل تعمير (تبديلين جي هر ڪم لاءِ تعمير) لاءِ ، هر شيءِ ايترو سادو نه لڳي. هتي هائيڪو وڌيڪ محسوس ٿئي ٿو لينڪس ڊسٽريبيوشن جي ڀيٽ ۾ هڪ Mac تي، جتي توهان ڪلڪ ڪندا آهيو “Build” بٽڻ تي XCode ۾ توهان کي هڪ پيڪيج ملندو. .app، ڊسڪ تصوير ۾ داخل ٿيڻ لاءِ تيار .dmg, منهنجي ويب سائيٽ تي ڊائون لوڊ لاء تيار.
"سرور" آپريٽنگ سسٽم جي بنياد تي ايپليڪيشنن جي مسلسل تعمير، مثال طور، لينڪس، گهڻو ڪري ممڪن ٿيندو جيڪڏهن ڊولپرز کان مطالبو ڪيو وڃي، پر هن وقت هائيڪو پروجيڪٽ ۾ ٻيا، وڌيڪ دٻاء وارا ڪم آهن.

ان کي پاڻ ڪوشش! آخرڪار، هائيڪو پروجيڪٽ ٺاهيل ڊي وي ڊي يا يو ايس بي مان بوٽنگ لاءِ تصويرون مهيا ڪري ٿو روزاني. انسٽال ڪرڻ لاءِ، صرف تصوير کي ڊائونلوڊ ڪريو ۽ ان کي استعمال ڪندي فليش ڊرائيو تي لکو کوٽائي

ڇا توھان وٽ ڪو سوال آھي؟ اسان توهان کي دعوت ڏيون ٿا روسي ڳالهائڻ وارا ٽيليگرام چينل.

غلطي جو جائزو: سي ۽ سي ++ ۾ پيرن ۾ پاڻ کي ڪيئن گوليو. هائيڪو او ايس ترڪيب جو مجموعو

کان ليکڪ ترجمو: هي هائيڪو بابت سيريز جو پنجون مضمون آهي.

مضمونن جي فهرست: پهرين ٻيو ٽيون چوٿون

جو ذريعو: www.habr.com

تبصرو شامل ڪريو