ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்

ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்

டிஎல்; DR: ஒரு புதியவர் ஹைக்கூவை முதன்முறையாகப் பார்த்தார், லினக்ஸ் உலகில் இருந்து சில நிரல்களை போர்ட் செய்ய முயன்றார்.

ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்
எனது முதல் ஹைக்கூ போர்ட் செய்யப்பட்ட நிரல், அதன் hpkg வடிவத்தில் தொகுக்கப்பட்டுள்ளது

சமீபத்தில் பிசிக்களுக்கான வியக்கத்தக்க நல்ல இயங்குதளமான ஹைக்கூவை நான் கண்டுபிடித்தேன்.
இந்த ஆப்பரேட்டிங் சிஸ்டத்தில் புதிய புரோகிராம்களை எப்படி போர்ட் செய்வது என்று இன்று கற்றுக்கொள்கிறேன். லினக்ஸ் டெவலப்பரின் பார்வையில் ஹைக்கூவுக்கு மாறிய முதல் அனுபவத்தின் விளக்கமே முக்கிய கவனம். நான் ஹைக்கூவை முதன்முதலில் பதிவிறக்கம் செய்து இன்னும் ஒரு வாரம் கூட ஆகாததால், வழியில் நான் செய்த முட்டாள்தனமான தவறுகளுக்கு மன்னிப்பு கேட்டுக்கொள்கிறேன்.

நான் மூன்று இலக்குகளை அடைய விரும்புகிறேன்:

  • ஒரு எளிய CLI பயன்பாட்டை போர்ட் செய்யவும்
  • GUI இலிருந்து Qt க்கு ஒரு பயன்பாட்டை போர்ட் செய்யவும்
  • பின்னர் அவற்றை hpkg வடிவத்தில் தொகுக்கவும் (நான் இன்னும் AppDir மற்றும் AppImage ஐ ஹைக்கூவிற்கு மாற்றுவது பற்றி யோசித்து வருகிறேன்...)

ஆரம்பிக்கலாம். பிரிவுகளில் ஆவணங்கள் и வளர்ச்சிஅத்துடன் விக்கி ஹைக்கூபோர்ட்டில் இருந்து நான் சரியான திசையைக் கண்டேன். ஆன்லைன் PDF புத்தகம் கூட உள்ளது BeOS: யூனிக்ஸ் பயன்பாட்டை போர்ட்டிங்.
467 பக்கங்கள் - இது 1997 இல் இருந்து! உள்ளே பார்க்க பயமாக இருக்கிறது, ஆனால் நான் சிறந்தது என்று நம்புகிறேன். டெவலப்பரின் வார்த்தைகள் ஊக்கமளிக்கின்றன: "BeOS POSIX-இணக்கமாக இல்லாததால் நீண்ட நேரம் எடுத்தது," ஆனால் ஹைக்கூ "பெரும்பாலும்" ஏற்கனவே அப்படித்தான் உள்ளது.

ஒரு எளிய CLI பயன்பாட்டை போர்ட் செய்தல்

விண்ணப்பத்தை போர்ட் செய்வதே முதல் எண்ணம் avrdude, ஆனால், அது மாறியது போல், இது ஏற்கனவே செய்திருக்கிறார்கள் நீண்ட காலத்திற்கு முன்பு.

முதல் முயற்சி: பார்க்க எதுவும் இல்லை

என்னால் ஏற்கனவே புரிந்து கொள்ள முடியாதது பயன்பாடுகள் 10 ஆண்டுகளுக்கும் மேலாக ஹைக்கூவிற்கு போர்ட் செய்யப்பட்டுள்ளன - OS இன்னும் பதிப்பு 1.0 கூட இல்லை என்ற போதிலும்.

இரண்டாவது முயற்சி: மீண்டும் எழுத வேண்டும்

எனவே நான் பயன்படுத்துகிறேன் ptouch-770, லேபிள்களை அச்சிட நான் பயன்படுத்தும் சகோதரர் பி-டச் 770 பிரிண்டரைக் கட்டுப்படுத்துவதற்கான CLI.
நான் அதில் பல்வேறு லேபிள்களை அச்சிடுகிறேன், முந்தைய கட்டுரையில் நீங்கள் ஏற்கனவே பார்த்திருக்கலாம். சற்று முன்பு, நான் பைத்தானில் ஒரு சிறிய GUI ரேப்பர் நிரலை எழுதினேன் (இது Gtk+ இல் இருப்பதால், அதை மீண்டும் எழுத வேண்டும், மேலும் இது கற்றுக்கொள்ள ஒரு நல்ல காரணம்).

ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்
சகோதரர் பி-டச் 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 இல் பிழை இருப்பதாகத் தெரியவந்துள்ளது, சில நிமிடங்களுக்குப் பிறகு 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.

ஹைக்கூவில் லிப்ரெசோல்வ் தவிர லிப்நெட்வொர்க்கில் வேறு ஏதோ இருக்கிறது என்று எனக்கு விளக்கினார்கள். குறியீட்டை மேலும் திருத்த வேண்டும். சிந்திக்க வேண்டும்...

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

"மோசமான போர்ட் ஐடி" ஏற்கனவே வணிக அட்டை போன்றது ஹைக்கூ. என்ன தவறு, அதை எவ்வாறு சரிசெய்வது என்று யாருக்காவது யோசனை இருக்கலாம்? அப்படியானால், நான் கட்டுரையைப் புதுப்பிப்பேன். இணைப்பு மகிழ்ச்சியா.

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-creator (அது எனக்கு செயலிழக்கிறது, பிழை அறிக்கை)

என்ன செய்வது என்று தெரியவில்லை. எனக்கு ஹலோ வேர்ல்ட் ஸ்டைல் ​​​​தொடக்க வழிகாட்டி தேவை என்று நினைக்கிறேன், ஒரு வீடியோ. குனு ஹலோவில் உள்ளது போல் ஹைக்கூபோர்ட்டருக்கு வசதியான அறிமுகம் இருந்தால் நன்றாக இருக்கும்.

நான் பின்வருவனவற்றைப் படிக்கிறேன்:

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. களஞ்சியத்தில் உள்ள அனைத்து தொகுப்புகளுக்கும் சார்புநிலைகள் சரிபார்க்கப்படுகின்றன ஹைக்கூபோர்ட்ஸ், இது சிறிது நேரம் எடுக்கும். நான் போய் காபி எடுத்துட்டு வரேன்.

இந்தச் சரிபார்ப்பு ஏன் எனது உள்ளூர் கணினியில் செய்யப்பட வேண்டும், மேலும் அனைவருக்கும் ஒருமுறை சர்வரில் மையமாகச் செய்யக்கூடாது?

திரு கருத்துப்படி. வாடில்ஸ்பிளாஷ்:

நீங்கள் களஞ்சியத்தில் எந்த கோப்பையும் மீண்டும் எழுதலாம் 😉 நீங்கள் இதை சிறிது மேம்படுத்தலாம், தேவைப்படும் போது தேவையான தகவலைக் கணக்கிடலாம், ஏனெனில் கடைசியாக செய்யப்பட்ட மாற்றங்கள் மிகவும் அரிதானவை.

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

இந்த உண்மை சட்டசபையை மேலும் சிக்கலாக்குகிறது. எனக்கு இது குறிப்பாக பிடிக்கவில்லை, ஆனால் இறுதியில் அனைத்து ஓப்பன் சோர்ஸ் மென்பொருட்களும் 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!

ஒரு சுவாரஸ்யமான கேள்வி எழுந்துள்ளது. செய்முறையில் செக்சம் சேர்த்தால் - தொடர்ச்சியான ஒருங்கிணைப்புக்கான சமீபத்திய ஜிட் கமிட் உடன் பொருந்துமா? (டெவலப்பர் உறுதிப்படுத்துகிறார்: "இது வேலை செய்யாது. சமையல் குறிப்புகள் ஒப்பீட்டளவில் நிலையானதாக வடிவமைக்கப்பட்டுள்ளன.")

வேடிக்கைக்காக, செய்முறையில் சேர்க்கவும்:

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 நெட்வொர்க்கில் உள்ள #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 மற்றும் களஞ்சியம் ஹைக்கூபோர்ட்ஸ் இது "வெறும் படைப்புகள்" என்ற உணர்வைக் கொண்டிருக்கவில்லை, ஆனால் ஒரு டெவலப்பராக, ஹைக்கூவுடன் பணிபுரிவதில் நான் விரும்பும் சில விஷயங்கள் உள்ளன. பெரும்பாலும், இது ஓபன் பில்ட் சர்வீஸ் போன்றது, லினக்ஸ் பில்ட்களை உருவாக்குவதற்கான கருவிகளின் தொகுப்பு: மிகவும் சக்தி வாய்ந்தது, முறையான அணுகுமுறையுடன், ஆனால் எனது சிறிய "ஹலோ வேர்ல்ட்" பயன்பாட்டிற்கு ஓவர்கில்.

மீண்டும், திரு படி. வாடில்ஸ்பிளாஷ்:

உண்மையில், HaikuPorter முன்னிருப்பாக மிகவும் கண்டிப்பானது (மேலும் ஒரு லின்ட் பயன்முறை மற்றும் அதை இன்னும் கடுமையாக்க ஒரு கண்டிப்பான பயன்முறை உள்ளது!), ஆனால் இது தொகுப்புகளை உருவாக்குவதை விட வேலை செய்யும் தொகுப்புகளை உருவாக்குவதால் மட்டுமே. அதனால்தான், அறிவிக்கப்படாத சார்புநிலைகள், நூலகங்கள் சரியாக இறக்குமதி செய்யப்படாதவை, தவறான பதிப்புகள் போன்றவை குறித்து அவர் புகார் கூறுகிறார். எதிர்கால சிக்கல்கள் உட்பட அனைத்து சிக்கல்களையும் பயனர் அறிந்து கொள்வதற்கு முன்பு அதைப் பிடிப்பதே குறிக்கோள் (இதனால்தான் avrdude ஐ நிறுவ முடியவில்லை, ஏனெனில் சார்பு உண்மையில் செய்முறையில் குறிப்பிடப்பட்டுள்ளது). நூலகங்கள் என்பது தனிப்பட்ட தொகுப்புகள் அல்லது குறிப்பிட்ட SO பதிப்புகள் மட்டுமல்ல. செயல்படுத்தும் போது ஏற்படும் பிழைகளைத் தவிர்ப்பதற்காக, இவை அனைத்தும் சமையல் குறிப்புகளிலேயே கவனிக்கப்படுவதை ஹைக்கூபோர்ட் உறுதி செய்கிறது.

கொள்கையளவில், ஒரு இயக்க முறைமையை உருவாக்கும் போது இந்த அளவு கடுமை நியாயமானது, ஆனால் "ஹலோ வேர்ல்ட்" பயன்பாட்டிற்கு இது தேவையற்றதாக தோன்றுகிறது. நான் வேறு ஏதாவது முயற்சி செய்ய முடிவு செய்தேன்.

"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 க்கு நகர்த்துகிறேன்.

இல்லை, இன்னும் காணவில்லை. வெளிப்படையாக, நான் (நன்றாக, மற்றும் அறிவுறுத்தல்கள்) எதையாவது தவறவிட்டேன்.

வேறு சில அப்ளிகேஷன்களுக்கு ஹைக்கூ டிப்போவில் உள்ள "உள்ளடக்கங்கள்" தாவலைப் பார்த்தபோது, ​​இது போன்ற கோப்புகள் இருப்பதைக் கண்டேன். /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

இந்த தந்திரம் வேலை செய்யும் என்று நான் உறுதியாக நம்புகிறேன், ஆனால் கேள்விகள் உள்ளன: இது ஏன் அவசியம், அது எதற்காக? இந்த அமைப்பு மிகவும் அதிநவீனமானது என்ற ஒட்டுமொத்த எண்ணத்தை இது அழிக்கிறது என்று நினைக்கிறேன்.

விளக்கியபடி திரு. வாடில்ஸ்பிளாஷ்:

சில நேரங்களில் மற்ற பயன்பாடுகளுக்கு தேவைப்படும் ஆனால் மெனுவில் இல்லாத பயன்பாடுகள் உள்ளன. எடுத்துக்காட்டாக, உங்கள் ஸ்கிரீன்ஷாட்டில் உள்ள LegacyPackageInstaller, .pkg காப்பகங்களை BeOS வடிவத்தில் செயலாக்குகிறது. பயனர்கள் அவற்றை நிறுவ வேண்டும் என்று நான் விரும்புகிறேன், ஆனால் மெனுவில் அவர்கள் இருப்பது குழப்பத்திற்கு வழிவகுக்கும்.

சில காரணங்களால், எடுத்துக்காட்டாக, எளிமையான தீர்வு இருப்பதாக எனக்குத் தோன்றுகிறது Hidden=true கோப்புகளில் .desktop லினக்ஸில். ஏன் "மறைக்கப்பட்ட" தகவலை கோப்பு முறைமையின் ஆதாரமாகவும் பண்புக்கூறாகவும் மாற்றக்கூடாது?

மெனுவைக் காட்டும் (சில) பயன்பாட்டின் பெயர் குறிப்பாக நுட்பமானது அல்ல, deskbar, வழியில் கடுமையாகக் கட்டப்பட்டிருக்கும்.

திரு. waddlesplash இதை விளக்குகிறது:

இந்த வழக்கில் "டெஸ்க்பார்" என்பது ஒரு வகையான பொதுவான வார்த்தையாக புரிந்து கொள்ளப்பட வேண்டும் ("பணிப்பட்டி" போலவே, இது விண்டோஸ் பயன்பாடு மற்றும் பொதுவான கருத்து இரண்டையும் குறிக்கிறது). சரி, இதிலிருந்து deskbar, “டெஸ்க்பார்” அல்ல, இதையும் இதே வழியில் புரிந்து கொள்ளலாம்.

ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்
2 "கிட்டத்தட்ட ஒரே மாதிரியான" கோப்பகங்களில் பயன்பாடுகள் உள்ளன

பயன்பாடுகளுடன் 2 கோப்பகங்கள் ஏன் உள்ளன, மேலும் எனது QtQuickApplication ஏன் ஒன்றில் உள்ளது, ஆனால் மற்றொன்றில் இல்லை? (எல்லாவற்றிற்கும் மேலாக, இது ஒரு அமைப்பு அல்ல, ஆனால் இரண்டாவது பயனர், இது தனிப்பட்ட முறையில் எனக்குப் புரியும்).
நான் மிகவும் குழப்பத்தில் இருக்கிறேன், இதை ஒருங்கிணைக்க வேண்டும் என்று நினைக்கிறேன்.

கருத்துரை திரு. waddlesplash

ஆப்ஸ் அட்டவணையில் மெனுவில் தேவையில்லாத பயன்பாடுகள் உள்ளன. ஆனால் மெனுவின் நிலைமை உண்மையில் மேம்படுத்தப்பட வேண்டும், அதை மேலும் தனிப்பயனாக்குகிறது.

விண்ணப்பம், அல்லது அது நடக்காது 😉

நான் ஆச்சரியப்பட்டேன்: பயன்பாடுகளை ஹோஸ்ட் செய்வது உண்மையில் அவசியமா? /system/apps, பயனர்கள் அவற்றை அங்கே பார்த்தால், அது விரும்பத்தகாதது. பயனர் அவர்களை சந்திக்காத மற்றொரு இடத்தில் அவற்றை வைப்பது சிறந்ததா? இது Mac OS X இல் செய்யப்படுவதைப் போலவே, தொகுப்புகளின் உள்ளடக்கங்கள் .app, இது பயனருக்குத் தெரியக்கூடாது /Applications, /System/Library/...“` இன் ஆழத்தில் மறைந்துள்ளது.

சார்புநிலைகள் பற்றி என்ன?

சார்புகளை எப்படியாவது குறிப்பிடுவது மதிப்பு என்று நான் நினைக்கிறேன், இல்லையா? முன்னிருப்பாக ஹைக்கூ நிறுவலின் கட்டாய பகுதியாக Qt கருத முடியுமா? இல்லை! முன்னிருப்பாக Qt நிறுவப்படவில்லை. ELF கோப்புகளைச் சரிபார்ப்பதன் மூலம் ஒரு தொகுப்பு பில்டர் தானாகவே சார்புகளைக் கண்டறிய முடியுமா? ஹைக்கூபோர்ட் உண்மையில் இதைச் செய்கிறது என்று என்னிடம் கூறப்பட்டது, ஆனால் package இல்லை. ஏனென்றால் இது ஒரு "பேக்கேஜ் பில்டர்" மட்டுமே, அது கோப்புகளை தானே உருவாக்குகிறது hpkg.

ஹைக்கூவிற்கு வெளியே உள்ள தொகுப்புகளை ஒரு தொகுப்பு சார்ந்து இருக்கக் கூடாது என்ற கொள்கையைச் சேர்த்து ஹைக்கூவை மேலும் நுட்பமாக்க வேண்டுமா? haikuports? (நான் விரும்புகிறேன், ஏனெனில் இதுபோன்ற கொள்கைகள் விஷயங்களை மிகவும் எளிதாக்கும் - கூடுதல் தொகுப்பு ஆதாரங்களுடன் குழப்பமடையாமல், எங்கிருந்தும் பதிவிறக்கம் செய்யப்பட்ட ஒவ்வொரு தொகுப்பின் சார்புகளையும் கணினி தானாகவே தீர்க்க முடியும்.)

திரு. waddlesplash விளக்குகிறது:

டெவலப்பர்களின் சுதந்திரத்தை நாங்கள் மட்டுப்படுத்த விரும்ப மாட்டோம், ஏனென்றால் கம்பெனிஎக்ஸ் அதன் சொந்த மென்பொருளை சார்புகளுடன் (அதனால் ஒரு களஞ்சியமாக) ஆதரிக்க விரும்பினால், அது முற்றிலும் சுதந்திரமாகச் செய்யும் என்பது வெளிப்படையானது.

அப்படியானால், பயன்பாட்டுடன் தேவையான அனைத்தையும் முழுமையாக பேக்கேஜிங் செய்வதன் மூலம் மூன்றாம் தரப்பு தொகுப்புகள் ஹைக்கூபோர்ட்டில் சேர்க்கப்படாத எதையும் சார்ந்திருப்பதைத் தவிர்க்க பரிந்துரைக்கப்படுகிறது. ஆனால் இந்த தொடரின் எதிர்கால கட்டுரைக்கான தலைப்பு இது என்று நினைக்கிறேன். [ஆசிரியர் AppImage நோக்கிச் செல்கிறாரா? - தோராயமாக மொழிபெயர்ப்பாளர்]

பயன்பாட்டு ஐகானைச் சேர்த்தல்

நான் புதிதாக உருவாக்கப்பட்ட பயன்பாட்டின் ஆதாரங்களில் நேர்த்தியான உள்ளமைக்கப்பட்ட ஐகான்களில் ஒன்றைச் சேர்க்க விரும்பினால் என்ன செய்வது? இது ஒரு அற்புதமான தலைப்பு என்று மாறிவிடும், எனவே இது அடுத்த கட்டுரைக்கு அடிப்படையாக இருக்கும்.

தொடர்ச்சியான பயன்பாட்டு உருவாக்கங்களை எவ்வாறு ஒழுங்கமைப்பது?

இன்க்ஸ்கேப் போன்ற ஒரு திட்டத்தை கற்பனை செய்து பாருங்கள் (ஆம், ஹைக்கூவில் இது இன்னும் கிடைக்கவில்லை என்பதை நான் அறிவேன், ஆனால் அதைக் காண்பிக்க வசதியாக உள்ளது). அவர்களிடம் ஒரு மூல குறியீடு களஞ்சியம் உள்ளது https://gitlab.com/inkscape/inkscape.
ஒவ்வொரு முறையும் யாரேனும் தங்கள் மாற்றங்களை களஞ்சியத்தில் செய்யும்போது, ​​பைப்லைன்களை உருவாக்குதல் தொடங்கப்படும், அதன் பிறகு மாற்றங்கள் தானாக சோதிக்கப்பட்டு, கட்டமைக்கப்பட்டு, பயன்பாடு Linux க்கான AppImage உட்பட பல்வேறு தொகுப்புகளில் தொகுக்கப்படும் (உள்ளூர் சோதனைக்குப் பொருட்படுத்தாமல் பதிவிறக்கம் செய்யக்கூடிய ஒரு முழுமையான பயன்பாட்டு தொகுப்பு. கணினியில் என்ன நிறுவப்படலாம் அல்லது நிறுவப்படாமல் இருக்கலாம் [எனக்குத் தெரியும்! - தோராயமாக மொழிபெயர்ப்பாளர்]) ஒவ்வொரு கிளை இணைப்புக் கோரிக்கையிலும் இதுவே நடக்கும், எனவே ஒன்றிணைக்கும் கோரிக்கையில் முன்மொழியப்பட்ட குறியீட்டிலிருந்து கட்டமைக்கப்பட்ட பயன்பாட்டை நீங்கள் ஒன்றிணைக்கும் முன் பதிவிறக்கலாம்.

ஹைக்கூவுடன் எனது ஐந்தாவது நாள்: சில நிரல்களை போர்ட் செய்வோம்
உருவாக்க நிலைகளுடன் கோரிக்கைகளை ஒன்றிணைக்கவும், உருவாக்கம் வெற்றிகரமாக இருந்தால் தொகுக்கப்பட்ட பைனரிகளைப் பதிவிறக்கும் திறன் (பச்சை நிறத்தில் குறிக்கப்பட்டுள்ளது)

உருவாக்கம் டோக்கர் கொள்கலன்களில் இயங்குகிறது. GitLab லினக்ஸில் இலவச ஓட்டப்பந்தய வீரர்களை வழங்குகிறது, மேலும் உங்கள் சொந்த ஓட்டப்பந்தய வீரர்களை சேர்க்கலாம் என்று நான் நினைக்கிறேன் (இதன் மூலம், ஹைக்கூ போன்ற அமைப்புகளுக்கு இது எப்படி வேலை செய்யும் என்று எனக்குத் தெரியவில்லை, இதற்கு டோக்கர் அல்லது அதற்கு இணையானவை இல்லை என்று எனக்குத் தெரியும், ஆனால் மேலும் FreeBSD க்கு டோக்கர் இல்லை, எனவே இந்த பிரச்சனை ஹைக்கூவிற்கு மட்டும் அல்ல).

வெறுமனே, ஹைக்கூ பயன்பாடுகளை லினக்ஸிற்கான டோக்கர் கொள்கலனுக்குள் உருவாக்கலாம். இந்நிலையில் தற்போதுள்ள குழாய்களில் ஹைக்கூவுக்கான சட்டசபையை அறிமுகப்படுத்தலாம். குறுக்கு கம்பைலர்கள் உள்ளதா? அல்லது க்யூஇஎம்யூ/கேவிஎம் (டாக்கருக்குள் அப்படிச் செயல்படும் என்று கருதினால்) போன்றவற்றைப் பயன்படுத்தி டோக்கர் கொள்கலனில் உள்ள ஹைக்கூ அனைத்தையும் நான் பின்பற்ற வேண்டுமா? மூலம், பல திட்டங்கள் இதே கொள்கைகளைப் பயன்படுத்துகின்றன. எடுத்துக்காட்டாக, ஸ்க்ரைபஸ் இதைச் செய்கிறார் - இது ஏற்கனவே ஹைக்கூவுக்குக் கிடைக்கிறது. ஒரு நாள் நான் அனுப்பும் நாள் வரும் அத்தகைய ஹைக்கூ ஆதரவைச் சேர்க்க மற்ற திட்டங்களுக்கு கோரிக்கைகளை இழுக்கவும்.

டெவலப்பர்களில் ஒருவர் விளக்குகிறார்:

தொகுப்புகளை தாங்களாகவே உருவாக்க விரும்பும் பிற திட்டங்களுக்கு, வழக்கமான CMake/CPack முறை ஆதரிக்கப்படுகிறது. தொகுப்பின் உருவாக்க நிரலை நேரடியாக அழைப்பதன் மூலம் பிற உருவாக்க அமைப்புகளை ஆதரிக்க முடியும், மக்கள் அதில் ஆர்வமாக இருந்தால் நல்லது. அனுபவம் காட்டுகிறது: இதுவரை அதிக ஆர்வம் இல்லை, எனவே haikuporter எங்களுக்கு வசதியாக வேலை செய்தார், ஆனால், இறுதியில், இரண்டு முறைகளும் ஒன்றாக வேலை செய்ய வேண்டும். லினக்ஸ் அல்லது வேறு எந்த சர்வர் இயங்குதளத்திலிருந்தும் குறுக்கு-கட்டமைக்கும் மென்பொருளுக்கான கருவிகளின் தொகுப்பை நாம் அறிமுகப்படுத்த வேண்டும் (ஹைக்கூ சேவையகங்களில் இயங்குவதற்கு வடிவமைக்கப்படவில்லை).

நான் நின்று கைதட்டுகிறேன். வழக்கமான லினக்ஸ் பயனர்கள் இந்த கூடுதல் சுமை மற்றும் கூடுதல் சாமான்களை (பாதுகாப்பு, கடுமையான கட்டுப்பாடு, முதலியன) எடுத்துச் செல்கிறார்கள், இது ஒரு சேவையக இயக்க முறைமைக்கு அவசியமானது, ஆனால் தனிப்பட்ட ஒன்றுக்கு அல்ல. எனவே லினக்ஸில் ஹைக்கூ பயன்பாடுகளை உருவாக்குவதுதான் செல்ல வழி என்பதை நான் முழுமையாக ஒப்புக்கொள்கிறேன்.

முடிவுக்கு

POSIX பயன்பாடுகளை ஹைக்கூவிற்கு அனுப்புவது சாத்தியம், ஆனால் வழக்கமான மறுகட்டமைப்பை விட விலை அதிகமாக இருக்கலாம். irc.freenode.net நெட்வொர்க்கில் உள்ள #ஹைக்கூ சேனலைச் சேர்ந்தவர்கள் உதவியில்லாமல் இருந்திருந்தால், நான் இதை நீண்ட காலமாக நிச்சயமாக்கியிருப்பேன். ஆனால் என்ன தவறு என்பதை அவர்கள் எப்போதும் உடனடியாகப் பார்க்கவில்லை.

Qt இல் எழுதப்பட்ட பயன்பாடுகள் எளிதான விதிவிலக்கு. நான் எந்த பிரச்சனையும் இல்லாமல் ஒரு எளிய டெமோ பயன்பாட்டை ஒன்றாக இணைத்தேன்.

எளிமையான பயன்பாடுகளுக்கு ஒரு தொகுப்பை உருவாக்குவதும் மிகவும் எளிதானது, ஆனால் "பாரம்பரியமாக வெளியிடப்பட்டவை" மட்டுமே, அதாவது. ஹைக்கூபோர்ட்களில் ஆதரவுக்காக வடிவமைக்கப்பட்ட மூலக் குறியீடு காப்பகங்களைக் கொண்டுள்ளது. GitHub உடன் தொடர்ச்சியான உருவாக்கத்திற்கு (ஒவ்வொரு மாற்றங்களுக்கும் உருவாக்கம்), எல்லாம் அவ்வளவு எளிதல்ல. இங்கே ஹைக்கூ ஒரு மேக்கின் முடிவை விட லினக்ஸ் விநியோகம் போல் உணர்கிறது, அங்கு நீங்கள் XCode இல் உள்ள "உருவாக்கம்" பொத்தானைக் கிளிக் செய்யும் போது உங்களுக்கு ஒரு தொகுப்பு கிடைக்கும். .app, ஒரு வட்டு படத்தில் செருக தயாராக உள்ளது .dmg, எனது இணையதளத்தில் பதிவிறக்கம் செய்ய தயார்.
"சர்வர்" இயக்க முறைமையின் அடிப்படையில் பயன்பாடுகளின் தொடர்ச்சியான உருவாக்கம், எடுத்துக்காட்டாக, லினக்ஸ், டெவலப்பர்களிடமிருந்து தேவை இருந்தால் பெரும்பாலும் சாத்தியமாகும், ஆனால் இந்த நேரத்தில் ஹைக்கூ திட்டத்தில் மற்ற, அதிக அழுத்தமான பணிகள் உள்ளன.

நீங்களே முயற்சி செய்யுங்கள்! எல்லாவற்றிற்கும் மேலாக, ஹைக்கூ திட்டம் உருவாக்கப்படும் டிவிடி அல்லது யூ.எஸ்.பி.யில் இருந்து பூட் செய்வதற்கான படங்களை வழங்குகிறது ежедневно. நிறுவ, படத்தைப் பதிவிறக்கம் செய்து, அதைப் பயன்படுத்தி ஃபிளாஷ் டிரைவில் எழுதவும் Etcher

உங்களுக்கு ஏதேனும் கேள்விகள் உள்ளனவா? ரஷ்ய மொழி பேசுவதற்கு நாங்கள் உங்களை அழைக்கிறோம் தந்தி சேனல்.

பிழை மேலோட்டம்: C மற்றும் C++ இல் காலில் உங்களை எப்படி சுடுவது. ஹைக்கூ ஓஎஸ் செய்முறை தொகுப்பு

இருந்து நூலாசிரியர் மொழிபெயர்ப்பு: ஹைக்கூ பற்றிய தொடரின் ஐந்தாவது கட்டுரை இது.

கட்டுரைகளின் பட்டியல்: முதல் இரண்டாவது மூன்றாவது நான்காவது

ஆதாரம்: www.habr.com

கருத்தைச் சேர்