హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం

TL; DR: ఒక కొత్త వ్యక్తి హైకూను మొదటిసారి చూశాడు, Linux ప్రపంచం నుండి కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేయడానికి ప్రయత్నిస్తున్నాడు.

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం
నా మొదటి హైకూ పోర్ట్ ప్రోగ్రామ్, దాని hpkg ఆకృతిలో ప్యాక్ చేయబడింది

ఇటీవల నేను హైకూను కనుగొన్నాను, ఇది PCల కోసం ఆశ్చర్యకరంగా మంచి ఆపరేటింగ్ సిస్టమ్.
ఈ ఆపరేటింగ్ సిస్టమ్‌కు కొత్త ప్రోగ్రామ్‌లను ఎలా పోర్ట్ చేయాలో ఈ రోజు నేను నేర్చుకుంటాను. Linux డెవలపర్ దృక్కోణం నుండి హైకూకి మారిన మొదటి అనుభవం యొక్క వివరణ ప్రధాన దృష్టి. నేను హైకూను మొదటిసారి డౌన్‌లోడ్ చేసి ఇంకా వారం కూడా కాలేదు కాబట్టి, దారిలో నేను చేసిన తెలివితక్కువ తప్పులకు క్షమాపణలు కోరుతున్నాను.

నేను మూడు లక్ష్యాలను సాధించాలనుకుంటున్నాను:

  • ఒక సాధారణ CLI అప్లికేషన్‌ను పోర్ట్ చేయండి
  • GUI నుండి Qtకి అప్లికేషన్‌ను పోర్ట్ చేయండి
  • ఆపై వాటిని hpkg ఫార్మాట్‌లో ప్యాక్ చేయండి (హైకూ కోసం AppDir మరియు AppImageని స్వీకరించడం గురించి నేను ఇంకా ఆలోచిస్తున్నాను కాబట్టి...)

ప్రారంభిద్దాం. విభాగాలలో డాక్యుమెంటేషన్ и అభివృద్ధిఅలాగే వికీ హైకూపోర్ట్స్ నుండి నేను సరైన దిశను కనుగొన్నాను. ఆన్‌లైన్ PDF పుస్తకం కూడా ఉంది BeOS: Unix అప్లికేషన్‌ను పోర్ట్ చేయడం.
467 పేజీలు - మరియు ఇది 1997 నుండి! లోపలికి చూడడానికి భయంగా ఉంది, కానీ నేను ఉత్తమంగా ఆశిస్తున్నాను. డెవలపర్ మాటలు ప్రోత్సాహకరంగా ఉన్నాయి: "BeOS POSIX-కంప్లైంట్ కానందున ఇది చాలా సమయం పట్టింది," కానీ హైకూ "చాలా భాగం" ఇప్పటికే అలా ఉంది.

సాధారణ CLI అప్లికేషన్‌ను పోర్ట్ చేస్తోంది

అప్లికేషన్‌ను పోర్ట్ చేయాలనేది మొదటి ఆలోచన avrdude, కానీ, అది ముగిసినట్లుగా, ఇది ఇప్పటికే ఉంది పూర్తి చాలా కాలం క్రితం.

మొదటి ప్రయత్నం: చూడటానికి ఏమీ లేదు

నేను ఇప్పటికే అర్థం చేసుకోలేనిది యాప్‌లు 10 సంవత్సరాలకు పైగా హైకూకి పోర్ట్ చేయబడ్డాయి - OS ఇంకా వెర్షన్ 1.0 కూడా కానప్పటికీ.

రెండవ ప్రయత్నం: తిరిగి వ్రాయాలి

కాబట్టి నేను ఉపయోగిస్తాను ptouch-770, నేను లేబుల్‌లను ప్రింట్ చేయడానికి ఉపయోగించే బ్రదర్ P-టచ్ 770 ప్రింటర్‌ను నియంత్రించడం కోసం CLI.
నేను దానిపై వివిధ లేబుల్‌లను ప్రింట్ చేస్తాను మరియు మీరు దీన్ని మునుపటి కథనంలో ఇప్పటికే చూసి ఉండవచ్చు. కొంచెం ముందు, నేను పైథాన్‌లో ఒక చిన్న GUI రేపర్ ప్రోగ్రామ్‌ను వ్రాసాను (ఇది Gtk+లో ఉన్నందున, దానిని తిరిగి వ్రాయవలసి ఉంటుంది మరియు ఇది నేర్చుకోవడానికి మంచి కారణం).

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం
బ్రదర్ P-టచ్ 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 చాలా Linux-ఆధారితమైనది మరియు హైకూ కోసం ఉనికిలో లేదు. అంటే నేను కంపైల్ చేయడానికి ప్రయత్నిస్తున్న సోర్స్ కోడ్‌ని సవరించాలి.
అయ్యో, మీరు మీ తలపై నుండి దూకలేరు మరియు ఎక్కడ ప్రారంభించాలో కూడా నాకు తెలియదు.

మూడో ప్రయత్నం

ఉంటే బాగుండేది 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లో బగ్ ఉందని తేలింది మరియు కొన్ని నిమిషాల తర్వాత నేను HaikuPortsలో ఒక ప్యాచ్‌ని చూస్తున్నాను. ప్యాకేజీ ఎలా సరిదిద్దబడిందో నేను నా కళ్ళతో చూడగలను ఇక్కడికి వెళ్తున్నాను (బిల్డ్స్లేవ్ - వర్చువల్ మిషన్లు).

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం
బిల్డ్‌మాస్టర్‌లో సరిదిద్దబడిన msgpackను రూపొందించడం

మధ్యమధ్యలో నేను అప్‌స్ట్రీమ్‌కి ప్యాచ్‌ని పంపుతాను 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

అదే విషయం, ప్రొఫైల్‌లో మాత్రమే. Google మరియు దీనిని కనుగొన్నారు. మీరు జోడిస్తే -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" ఇప్పటికే వ్యాపార కార్డ్ లాగా ఉంది హైకూ. ఏది తప్పు మరియు దానిని ఎలా పరిష్కరించాలో ఎవరికైనా ఆలోచన ఉందా? అలా అయితే, నేను కథనాన్ని అప్‌డేట్ చేస్తాను. దీనికి లింక్ చేయండి గ్యాలరీలు.

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 - ప్యాకేజీలను సృష్టించడానికి తక్కువ-స్థాయి మార్గం. చాలా వరకు, "దీనిని సరైన .hpkg ప్యాకేజీగా చేయడం" విభాగంలో వివరించినట్లుగా, PackageInfo ఆమెకు సరిపోతుంది.
  • నేను ఏదో ఒకటి చేయాలి
  • ఉపయోగించవచ్చు hpkg-సృష్టికర్త (ఇది నాకు క్రాష్ అవుతుంది, దోష నివేదన)

ఏమి చేయాలో స్పష్టంగా లేదు. నాకు హలో వరల్డ్ స్టైల్ బిగినర్స్ గైడ్ అవసరమని భావిస్తున్నాను, ఆదర్శంగా ఒక వీడియో. గ్నూ హలోలో చేసినట్లుగా హైకూపోర్టర్‌కు అనుకూలమైన పరిచయం కూడా ఉంటే బాగుంటుంది.

నేను ఈ క్రింది వాటిని చదివాను:

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. రిపోజిటరీలోని అన్ని ప్యాకేజీల కోసం డిపెండెన్సీలు తనిఖీ చేయబడతాయి హైకూపోర్టులు, ఇది కొంత సమయం పడుతుంది. నేను కాఫీ తీసుకుని వెళ్తాను.

ఈ తనిఖీని నా లోకల్ మెషీన్‌లో ఎందుకు చేయాలి మరియు సర్వర్‌లో కేంద్రంగా కాకుండా అందరికీ ఎందుకు చేయాలి?

Mr ప్రకారం. వాడిల్‌స్ప్లాష్:

మీరు రిపోజిటరీలో ఏదైనా ఫైల్‌ని తిరిగి వ్రాయగలిగే విధంగా 😉 మీరు దీన్ని కొద్దిగా ఆప్టిమైజ్ చేయవచ్చు, అవసరమైనప్పుడు అవసరమైన సమాచారాన్ని లెక్కించవచ్చు, ఎందుకంటే చివరిగా చేసిన మార్పులు చాలా అరుదు.

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

అనే ఆసక్తికర ప్రశ్న తలెత్తింది. నేను రెసిపీకి చెక్‌సమ్‌ని జోడిస్తే - ఇది నిరంతర ఏకీకరణ కోసం తాజా 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

అతను ఏమి చేస్తున్నాడు? అన్నింటికంటే, ఇది జిట్ రిపోజిటరీ, కోడ్ ఇప్పటికే నేరుగా ఉంది, అన్‌ప్యాక్ చేయడానికి ఏమీ లేదు. నా దృక్కోణం నుండి, సాధనం 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లో ఆర్కైవ్‌ను సృష్టించడం చాలా సులభం మరియు తరచుగా వేగంగా ఉంటుంది కాబట్టి ఇది చాలా మటుకు ఎల్లప్పుడూ ఉంటుంది. సరే, భవిష్యత్తులో, బహుశా ఎర్రర్ మెసేజ్ అంత మెరుగ్గా ఉండకపోవచ్చు... (మేము ఇకపై అలాంటి వంటకాలను హైకూపోర్ట్స్‌లో విలీనం చేయము).

~/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 నెట్‌వర్క్‌లోని #హైకు ఛానెల్‌లో మంచి వ్యక్తులను అడుగుతాను. మరియు అవి లేకుండా నేను ఎక్కడ ఉంటాను? సూచన తర్వాత, నేను ఉపయోగించాలని గ్రహించాను:

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 బిల్డ్‌లను రూపొందించడానికి టూల్స్ సెట్ ఓపెన్ బిల్డ్ సర్వీస్‌ను పోలి ఉంటుంది: అత్యంత శక్తివంతమైనది, క్రమబద్ధమైన విధానంతో, కానీ నా చిన్న "హలో వరల్డ్" అప్లికేషన్‌కు ఓవర్‌కిల్.

మళ్ళీ, Mr ప్రకారం. వాడిల్‌స్ప్లాష్:

నిజానికి, HaikuPorter డిఫాల్ట్‌గా చాలా స్ట్రిక్ట్‌గా ఉంటుంది (అంతేకాకుండా లింట్ మోడ్‌తో పాటు దానిని మరింత కఠినంగా చేయడానికి స్ట్రిక్ట్ మోడ్ కూడా ఉంది!), కానీ ఇది కేవలం ప్యాకేజీలను సృష్టించడం కంటే పని చేసే ప్యాకేజీలను సృష్టిస్తుంది కాబట్టి. అందుకే అతను ప్రకటించని డిపెండెన్సీలు, లైబ్రరీలను సరిగ్గా దిగుమతి చేసుకోలేదు, సరికాని సంస్కరణలు మొదలైన వాటిపై ఫిర్యాదు చేస్తాడు. వినియోగదారు దాని గురించి తెలుసుకునేలోపు భవిష్యత్ సమస్యలతో సహా ఏవైనా మరియు అన్ని సమస్యలను పట్టుకోవడం లక్ష్యం (అందుకే 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.
మళ్ళీ, ఊహించని విధంగా వేగంగా, సరళంగా మరియు ప్రభావవంతంగా ఉంటుంది. అద్భుతం, అపురూపం!

కానీ... (అవి లేకుండా మనం ఎక్కడ ఉంటాం!)

యాప్‌ల మెను జాబితా మరియు క్విక్‌లాంచ్ నుండి ఇప్పటికీ యాప్ లేదు. దీన్ని ఎలా పరిష్కరించాలో నాకు ఇప్పటికే తెలుసునని నేను అనుకుంటున్నాను. ఫైల్ మేనేజర్‌లో నేను QtQuickApp.hpkgని ~/config/packages నుండి /system/packagesకి తరలిస్తాను.

లేదు, ఇంకా లేదు. స్పష్టంగా, నేను (బాగా, మరియు సూచనలు) ఏదో మిస్ అయ్యాను.

కొన్ని ఇతర అప్లికేషన్‌ల కోసం హైకూడిపోలోని "కంటెంట్స్" ట్యాబ్‌ను చూసిన తర్వాత, ఇలాంటి ఫైల్‌లు ఉన్నాయని నేను చూశాను /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

ఈ ట్రిక్ పని చేస్తుందని నేను ఖచ్చితంగా అనుకుంటున్నాను, కానీ ప్రశ్నలు మిగిలి ఉన్నాయి: ఇది ఎందుకు అవసరం, ఇది దేనికి? సిస్టమ్ చాలా అధునాతనమైనది అనే మొత్తం అభిప్రాయాన్ని ఇది నాశనం చేస్తుందని నేను భావిస్తున్నాను.

Mr ద్వారా వివరించబడింది. వాడిల్‌స్ప్లాష్:

కొన్నిసార్లు ఇతర అప్లికేషన్‌లకు అవసరమైన అప్లికేషన్‌లు ఉన్నాయి కానీ మెనులో లేవు. ఉదాహరణకు, మీ స్క్రీన్‌షాట్‌లోని LegacyPackageInstaller, BeOS ఆకృతిలో .pkg ఆర్కైవ్‌లను ప్రాసెస్ చేస్తోంది. వినియోగదారులు వాటిని ఇన్‌స్టాల్ చేయాలని నేను కోరుకుంటున్నాను, కానీ మెనులో వారి ఉనికి గందరగోళానికి దారి తీస్తుంది.

కొన్ని కారణాల వల్ల, ఉదాహరణకు, సరళమైన పరిష్కారం ఉందని నాకు అనిపిస్తోంది Hidden=true ఫైళ్లలో .desktop Linuxలో. "దాచిన" సమాచారాన్ని ఫైల్ సిస్టమ్ యొక్క వనరు మరియు లక్షణంగా ఎందుకు చేయకూడదు?

మెనుని చూపించే (కొన్ని) అప్లికేషన్ పేరు ముఖ్యంగా సూక్ష్మమైనది కాదు, deskbar, మార్గం వెంట కఠినంగా కట్టివేయబడింది.

శ్రీ. waddlesplash దీనిని వివరిస్తుంది:

ఈ సందర్భంలో “డెస్క్‌బార్” అనేది ఒక రకమైన సాధారణ పదంగా అర్థం చేసుకోవాలి (“టాస్క్‌బార్” మాదిరిగానే, ఇది విండోస్ అప్లికేషన్ మరియు సాధారణ భావన రెండింటినీ సూచిస్తుంది). బాగా, ఈ నుండి deskbar, “డెస్క్‌బార్” కాదు, దీనిని కూడా ఇదే విధంగా అర్థం చేసుకోవచ్చు.

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం
2 "దాదాపు ఒకేలాంటి" డైరెక్టరీలు వాటిలో అప్లికేషన్‌లు ఉన్నాయి

అప్లికేషన్‌లతో 2 డైరెక్టరీలు ఎందుకు ఉన్నాయి మరియు నా QtQuickApplication ఒకదానిలో ఎందుకు ఉంది, కానీ మరొకదానిలో ఎందుకు లేదు? (అన్నింటికంటే, ఇది ఒక సిస్టమ్ ఒకటి కాదు, రెండవ వినియోగదారు, ఇది నాకు వ్యక్తిగతంగా అర్థమయ్యేలా ఉంటుంది).
నేను నిజంగా గందరగోళంలో ఉన్నాను మరియు ఇది ఏకీకృతం కావాలని నేను భావిస్తున్నాను.

Mr ద్వారా వ్యాఖ్య waddlesplash

యాప్‌ల కేటలాగ్ మెనులో అవసరం లేని అప్లికేషన్‌లను కలిగి ఉంది. కానీ మెనుతో పరిస్థితిని మరింత అనుకూలీకరించడానికి నిజంగా మెరుగుపరచాలి.

దరఖాస్తు, లేదా అది జరగదు 😉

నేను ఆశ్చర్యపోయాను: అప్లికేషన్‌లను హోస్ట్ చేయడం నిజంగా అవసరమా /system/apps, వినియోగదారులు వాటిని అక్కడ చూస్తే, అది అవాంఛనీయమైనది. వినియోగదారు వాటిని ఎదుర్కోని మరొక ప్రదేశంలో వాటిని ఉంచడం మంచిదేమో? ఇది Mac OS Xలో చేసినట్లే, ఇక్కడ ప్యాకేజీల కంటెంట్ .app, ఇది వినియోగదారుకు కనిపించకూడదు /Applications, /సిస్టమ్/లైబ్రరీ/...“` లోతుల్లో దాక్కున్నాడు.

డిపెండెన్సీల గురించి ఏమిటి?

ఏదో ఒకవిధంగా డిపెండెన్సీలను పేర్కొనడం విలువైనదని నేను భావిస్తున్నాను, సరియైనదా? హైకూ ఇన్‌స్టాలేషన్‌లో క్యూటిని డిఫాల్ట్‌గా తప్పనిసరి భాగంగా పరిగణించవచ్చా? లేదు! Qt డిఫాల్ట్‌గా ఇన్‌స్టాల్ చేయబడలేదు. ELF ఫైల్‌లను తనిఖీ చేయడం ద్వారా ప్యాకేజీ బిల్డర్ స్వయంచాలకంగా డిపెండెన్సీలను గుర్తించగలదా? హైకూపోర్టర్ వాస్తవానికి దీన్ని చేస్తుందని నాకు చెప్పబడింది, కానీ package నం. ఎందుకంటే ఇది కేవలం "ప్యాకేజీ బిల్డర్" మాత్రమే కాబట్టి దాని స్వంతంగా ఫైల్‌లను సృష్టిస్తుంది hpkg.

హైకూ వెలుపల ఉన్న ప్యాకేజీలపై ఒక ప్యాకేజీకి డిపెండెన్సీలు ఉండకూడదనే విధానాన్ని జోడించడం ద్వారా హైకూను మరింత అధునాతనంగా మార్చాలా? haikuports? (నేను కోరుకుంటున్నాను, ఎందుకంటే అటువంటి విధానం చాలా సులభతరం చేస్తుంది - సిస్టమ్ ఎక్కడి నుండైనా డౌన్‌లోడ్ చేయబడిన ప్రతి ప్యాకేజీ యొక్క డిపెండెన్సీలను అదనపు ప్యాకేజీ మూలాలతో గందరగోళానికి గురిచేయకుండా స్వయంచాలకంగా పరిష్కరించగలదు.)

శ్రీ. waddlesplash వివరిస్తుంది:

డెవలపర్‌ల స్వేచ్ఛను అంతగా పరిమితం చేయడం మాకు ఇష్టం లేదు, ఎందుకంటే కంపెనీఎక్స్ డిపెండెన్సీలతో (అందువలన రిపోజిటరీ) దాని స్వంత సాఫ్ట్‌వేర్ సెట్‌కు మద్దతు ఇవ్వాలనుకుంటే, అది పూర్తిగా స్వేచ్ఛగా చేస్తుంది.

అలాంటప్పుడు, అప్లికేషన్‌తో అవసరమైన ప్రతిదాన్ని పూర్తిగా ప్యాకేజింగ్ చేయడం ద్వారా హైకూపోర్ట్‌లలో చేర్చని దేనిపైనా ఆధారపడకుండా థర్డ్-పార్టీ ప్యాకేజీలను సిఫార్సు చేయడం విలువైనదే కావచ్చు. కానీ ఈ సిరీస్‌లో భవిష్యత్ కథనానికి ఇది ఒక అంశం అని నేను భావిస్తున్నాను. [రచయిత AppImage వైపు వెళుతున్నారా? - సుమారు అనువాదకుడు]

అప్లికేషన్ చిహ్నాన్ని జోడిస్తోంది

నేను కొత్తగా సృష్టించిన అప్లికేషన్ యొక్క వనరులకు చక్కని అంతర్నిర్మిత చిహ్నాలలో ఒకదాన్ని జోడించాలనుకుంటే ఏమి చేయాలి? ఇది అద్భుతమైన అంశం అని తేలింది, కాబట్టి ఇది తదుపరి కథనానికి ఆధారం అవుతుంది.

నిరంతర అప్లికేషన్ బిల్డ్‌లను ఎలా నిర్వహించాలి?

ఇంక్‌స్కేప్ వంటి ప్రాజెక్ట్‌ను ఊహించండి (అవును, ఇది హైకూలో ఇంకా అందుబాటులో లేదని నాకు తెలుసు, కానీ దానిపై ప్రదర్శించడం సౌకర్యంగా ఉంటుంది). వారికి సోర్స్ కోడ్ రిపోజిటరీ ఉంది https://gitlab.com/inkscape/inkscape.
ఎవరైనా రిపోజిటరీకి తమ మార్పులను చేసిన ప్రతిసారీ, బిల్డ్ పైప్‌లైన్‌లు ప్రారంభించబడతాయి, ఆ తర్వాత మార్పులు స్వయంచాలకంగా పరీక్షించబడతాయి, నిర్మించబడతాయి మరియు అప్లికేషన్ Linux కోసం AppImage (స్థానిక పరీక్షతో సంబంధం లేకుండా డౌన్‌లోడ్ చేయగల స్వతంత్ర అప్లికేషన్ ప్యాకేజీతో సహా వివిధ ప్యాకేజీలలోకి ప్యాక్ చేయబడుతుంది. సిస్టమ్‌లో ఏది ఇన్‌స్టాల్ చేయబడవచ్చు లేదా ఇన్‌స్టాల్ చేయబడకపోవచ్చు [నాకు తెలుసు! - సుమారు అనువాదకుడు]) ప్రతి శాఖ విలీన అభ్యర్థనలో ఇదే జరుగుతుంది, కాబట్టి మీరు విలీనం చేసే ముందు విలీన అభ్యర్థనలో ప్రతిపాదించిన కోడ్ నుండి రూపొందించిన అప్లికేషన్‌ను డౌన్‌లోడ్ చేసుకోవచ్చు.

హైకూతో నా ఐదవ రోజు: కొన్ని ప్రోగ్రామ్‌లను పోర్ట్ చేద్దాం
బిల్డ్ స్టేటస్‌లతో అభ్యర్థనలను విలీనం చేయండి మరియు బిల్డ్ విజయవంతమైతే కంపైల్ చేయబడిన బైనరీలను డౌన్‌లోడ్ చేయగల సామర్థ్యం (ఆకుపచ్చ రంగులో గుర్తించబడింది)

బిల్డ్ డాకర్ కంటైనర్లలో నడుస్తుంది. GitLab Linuxలో ఉచిత రన్నర్‌లను అందిస్తుంది మరియు మీ స్వంత రన్నర్‌లను చేర్చడం సాధ్యమవుతుందని నేను భావిస్తున్నాను (మార్గం ద్వారా, హైకూ వంటి సిస్టమ్‌ల కోసం ఇది ఎలా పని చేస్తుందో నాకు కనిపించడం లేదు, ఇది డాకర్ లేదా తత్సమానం లేదని నాకు తెలుసు, కానీ FreeBSDకి కూడా డాకర్ లేదు, కాబట్టి ఈ సమస్య హైకూకు మాత్రమే కాదు).

ఆదర్శవంతంగా, హైకూ అప్లికేషన్‌లను Linux కోసం డాకర్ కంటైనర్‌లో నిర్మించవచ్చు. ఈ పరిస్థితిలో, హైకూ కోసం అసెంబ్లీని ఇప్పటికే ఉన్న పైప్‌లైన్‌లలోకి ప్రవేశపెట్టవచ్చు. క్రాస్ కంపైలర్లు ఉన్నాయా? లేదా నేను QEMU/KVM (డాకర్ లోపల ఆ విధంగా పని చేస్తుందని భావించి) ఉపయోగించి డాకర్ కంటైనర్‌లోని అన్ని హైకూలను అనుకరించాలా? మార్గం ద్వారా, అనేక ప్రాజెక్టులు ఇలాంటి సూత్రాలను ఉపయోగిస్తాయి. ఉదాహరణకు, స్క్రిబస్ ఇలా చేస్తుంది - ఇది హైకూకు ఇప్పటికే అందుబాటులో ఉంది. ఒకరోజు నేను పంపగలిగే రోజు వస్తుంది ఇటువంటి హైకూ మద్దతును జోడించడానికి ఇతర ప్రాజెక్ట్‌లకు అభ్యర్థనలను లాగండి.

డెవలపర్‌లలో ఒకరు ఇలా వివరిస్తున్నారు:

ప్యాకేజీలను స్వయంగా సృష్టించాలనుకునే ఇతర ప్రాజెక్ట్‌ల కోసం, సాధారణ CMake/CPack పద్ధతికి మద్దతు ఉంది. ప్యాకేజీ యొక్క బిల్డ్ ప్రోగ్రామ్‌కు నేరుగా కాల్ చేయడం ద్వారా ఇతర బిల్డ్ సిస్టమ్‌లకు మద్దతు ఇవ్వవచ్చు, వ్యక్తులు దానిపై ఆసక్తి కలిగి ఉంటే మంచిది. అనుభవం చూపిస్తుంది: ఇప్పటివరకు పెద్దగా ఆసక్తి లేదు, కాబట్టి haikuporter మాకు అనుకూలమైన పని, కానీ, చివరికి, రెండు పద్ధతులు కలిసి పని చేయాలి. మేము Linux లేదా ఏదైనా ఇతర సర్వర్ ఆపరేటింగ్ సిస్టమ్ నుండి క్రాస్-బిల్డింగ్ సాఫ్ట్‌వేర్ కోసం సాధనాల సమితిని పరిచయం చేయాలి (హైకు సర్వర్‌లపై అమలు చేయడానికి రూపొందించబడలేదు).

నేను స్టాండింగ్ ఒవేషన్ ఇస్తున్నాను. సాధారణ Linux వినియోగదారులు సర్వర్ ఆపరేటింగ్ సిస్టమ్‌కు అవసరమైన ఈ అదనపు లోడ్ మరియు అదనపు సామాను (భద్రత, కఠినమైన నియంత్రణ మొదలైనవి) కలిగి ఉంటారు, కానీ వ్యక్తిగతమైనది కాదు. కాబట్టి Linuxలో Haiku యాప్‌లను రూపొందించడం సరైన మార్గం అని నేను పూర్తిగా అంగీకరిస్తున్నాను.

తీర్మానం

POSIX అప్లికేషన్‌లను హైకూకి పోర్ట్ చేయడం సాధ్యమే, కానీ సాధారణ పునర్నిర్మాణం కంటే ఖరీదైనది కావచ్చు. irc.freenode.net నెట్‌వర్క్‌లోని #హైకు ఛానెల్‌కు చెందిన వ్యక్తుల సహాయం లేకపోతే నేను ఖచ్చితంగా చాలా కాలం పాటు దీనితో చిక్కుకుపోతాను. కానీ వారు కూడా తప్పు ఏమిటో వెంటనే చూడలేదు.

Qtలో వ్రాసిన అప్లికేషన్‌లు సులభమైన మినహాయింపు. నేను ఎటువంటి సమస్యలు లేకుండా ఒక సాధారణ డెమో అప్లికేషన్‌ను కలిసి ఉంచాను.

సాధారణ అనువర్తనాల కోసం ప్యాకేజీని రూపొందించడం కూడా చాలా సులభం, కానీ "సాంప్రదాయకంగా విడుదల చేయబడిన" వాటికి మాత్రమే, అనగా. హైకూపోర్ట్‌లలో మద్దతు కోసం ఉద్దేశించిన సంస్కరణ సోర్స్ కోడ్ ఆర్కైవ్‌లను కలిగి ఉంది. GitHubతో నిరంతర నిర్మాణం (ప్రతి మార్పుల కోసం నిర్మించడం) కోసం, ప్రతిదీ అంత సులభం కాదు. ఇక్కడ హైకు Macలో ఫలితం కంటే Linux పంపిణీ లాగా అనిపిస్తుంది, ఇక్కడ మీరు XCodeలోని “బిల్డ్” బటన్‌ను క్లిక్ చేసినప్పుడు మీకు ప్యాకేజీ లభిస్తుంది .app, డిస్క్ ఇమేజ్‌లో చొప్పించడానికి సిద్ధంగా ఉంది .dmg, నా వెబ్‌సైట్‌లో డౌన్‌లోడ్ చేయడానికి సిద్ధంగా ఉంది.
“సర్వర్” ఆపరేటింగ్ సిస్టమ్ ఆధారంగా అప్లికేషన్‌ల నిరంతర నిర్మాణం, ఉదాహరణకు, డెవలపర్‌ల నుండి డిమాండ్ ఉన్నట్లయితే Linux చాలా మటుకు సాధ్యమవుతుంది, అయితే ప్రస్తుతానికి హైకూ ప్రాజెక్ట్‌కి ఇతర, మరింత ముఖ్యమైన పనులు ఉన్నాయి.

మీరే ప్రయత్నించండి! అన్నింటికంటే, హైకూ ప్రాజెక్ట్ రూపొందించిన DVD లేదా USB నుండి బూట్ చేయడానికి చిత్రాలను అందిస్తుంది ежедневно. ఇన్‌స్టాల్ చేయడానికి, చిత్రాన్ని డౌన్‌లోడ్ చేసి, ఉపయోగించి ఫ్లాష్ డ్రైవ్‌కు వ్రాయండి Etcher

మీకు ఏవైనా ప్రశ్నలు ఉన్నాయా? మేము మిమ్మల్ని రష్యన్ మాట్లాడటానికి ఆహ్వానిస్తున్నాము టెలిగ్రామ్ ఛానల్.

లోపం స్థూలదృష్టి: C మరియు C++లో పాదంలో మిమ్మల్ని మీరు ఎలా షూట్ చేసుకోవాలి. హైకూ OS రెసిపీ సేకరణ

నుండి రచయిత అనువాదం: ఇది హైకూ గురించి సిరీస్‌లో ఐదవ వ్యాసం.

వ్యాసాల జాబితా: మొదటిది రెండవది మూడో ఫోర్త్

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి