Ба назар хуб аст, пас чаро онро дар Ҳайку намесанҷед?
/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
/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
/Haiku/home/tmate> pkgman install devel:msgpack_c_cpp_devel
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku...done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts...done.
*** Failed to find a match for "devel:msgpack_c_cpp_devel": Name not found# Why is it not finding it? To hell with the "devel:".../Haiku/home/tmate> pkgman install msgpack_c_cpp_devel
(...)
The following changes will be made:
in system:
install package msgpack_c_cpp-3.1.1-1 from repository HaikuPorts
install package msgpack_c_cpp_devel-3.1.1-1 from repository HaikuPorts
Continue? [yes/no] (yes) :
(...)/Haiku/home/tmate> ./configure
(...)
checking for libssh >= 0.8.4... no
configure: error: "libssh >= 0.8.4 not found"/Haiku/home/tmate> pkgman install devel:libssh/Haiku/home/tmate> make
(...)
In file included from /boot/system/develop/headers/msgpack.h:22,
from tmate.h:5,
from cfg.c:29:
/boot/system/develop/headers/msgpack/vrefbuffer.h:19:8: error: redefinition of struct iovec'
struct iovec {
^~~~~
In file included from tmux.h:27,
from cfg.c:28:
/boot/system/develop/headers/posix/sys/uio.h:12:16: note: originally defined here
typedef struct iovec {
^~~~~
Makefile:969: recipe for target 'cfg.o' failed
make: *** [cfg.o] Error 1
Дар ин қадам, ман фаҳмидам, ки интиқоли барнома ба Ҳайку дониши бештарро талаб мекунад, назар ба он ки барои барқарорсозии оддӣ лозим аст.
Ман бо таҳиягарони дӯстонаи Haiku сӯҳбат кардам, маълум шуд, ки дар msgpack хатогӣ вуҷуд дорад ва пас аз чанд дақиқа ман дар HaikuPorts ямоқи навореро мебинам. Ман бо чашмони худ дида метавонам, ки чӣ тавр бастаи ислоҳшуда ба ин ҷо меравед (buildslave - мошинҳои виртуалӣ).
/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 Пас,
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
/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.
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
Ҳамин чиз, танҳо дар профил. Googled ва инро ёфт. Агар илова кунед -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)
Дар анбори HaikuPorts нигоҳ доштани рецептҳо лозим нест. Шумо метавонед боз як анбори дигар созед, дар он дастурҳоро гузоред ва сипас haikuporter-ро ба он ишора кунед.
Маҳз он чизе ки ба ман лозим аст - агар роҳи ба таври оммавӣ баровардани бастаро наҷӯед. Аммо ин мавзӯъ барои мақолаи дигар аст.
Насб кардани haikuporter ва haikuports
cd /boot/home/
git clone https://github.com/haikuports/haikuporter --depth=50
git clone https://github.com/haikuports/haikuports --depth=50
ln -s /boot/home/haikuporter/haikuporter /boot/home/config/non-packaged/bin/ # make it runnable from anywhere
cd haikuporter
cp haikuports-sample.conf /boot/home/config/settings/haikuports.conf
sed -i -e 's|/mydisk/haikuports|/boot/home/haikuports|g' /boot/home/config/settings/haikuports.conf
Навиштани рецепт
SUMMARY="Demo QtQuick application"
DESCRIPTION="QtQuickApp is a demo QtQuick application for testing Haiku porting and packaging"
HOMEPAGE="https://github.com/probonopd/QtQuickApp"
COPYRIGHT="None"
LICENSE="MIT"
REVISION="1"
SOURCE_URI="https://github.com/probonopd/QtQuickApp.git"
#PATCHES=""
ARCHITECTURES="x86_64"
PROVIDES="
QtQuickApp = $portVersion
"
REQUIRES="
haiku
"
BUILD_REQUIRES="
haiku_devel
cmd:qmake
"BUILD()
{
qmake .
make $jobArgs
}INSTALL()
{
make install
}
Бо он ки шумо метавонед ҳама гуна файлро дар репозиторий аз нав нависед 😉 Шумо метавонед онро каме оптимизатсия кунед ва ҳангоми зарурат маълумоти заруриро ҳисоб кунед, зеро тағйироти охирини воридшуда хеле каманд.
~/QtQuickApp> haikuporter QtQuickApp-1.0.recipe
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
Error: QtQuickApp not found in repository
Чунин факт кори монтажро душвортар мегардонад. Ба ман махсусан маъқул нест, аммо ман фикр мекунам, ки ин зарур аст, то дар ниҳоят ҳама нармафзори кушодаасос дар HaikuPorts пайдо шаванд.
Ман инҳоро мегирам:
~/QtQuickApp> 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 барои ҳамгироии пайваста мувофиқат мекунад? (Таҳиягар тасдиқ мекунад: "Ин кор намекунад. Рецептҳо барои нисбатан устувор тарҳрезӣ шудаанд.")
~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
updating dependency infos of QtQuickApp-1.0
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
/boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------
Skipping download of source for QtQuickApp.git
Validating checksum of QtQuickApp.git
Unpacking source of QtQuickApp.git
Error: Unrecognized archive type in file /boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git
Ӯ чӣ кор мекунад? Дар ниҳоят, ин як анбори git аст, код аллакай дар он ҷо мустақиман мавҷуд аст, барои кушодан чизе нест. Аз нуқтаи назари ман, асбоб бояд ба қадри кофӣ оқил бошад, ки кушоданро ҷустуҷӯ накунад, агар он дар болои URL-и 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
Аз одати кӯҳна, ман меравам аз одамони хуб дар канали #haiku дар шабакаи irc.freenode.net пурсам. Ва ман бе онҳо куҷо мешудам? Пас аз маслиҳат, ман фаҳмидам, ки ман бояд истифода барам:
Хуб, маълум шуд, ки он чӣ кор мекунад - он архивро бо коди сарчашмаи таҷдиди муайян зеркашӣ мекунад. Аз нуқтаи назари ман ин аблаҳ аст ва на маҳз он чизе ки ман мехостам, яъне зеркашии версияи охирин аз филиали усто.
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
(...)
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
"Панели мизи корӣ" дар ин ҳолат бояд ҳамчун як истилоҳи умумӣ фаҳмида шавад (ба мисли "панели вазифаҳо", ки ҳам ба барномаи Windows ва ҳам консепсияи умумӣ дахл дорад). Хуб, аз ин deskbar, на "панели мизи корӣ", инро низ ба ҳамин тарз фаҳмидан мумкин аст.
2 феҳристи "тақрибан якхела" бо барномаҳо дар онҳо
Чаро 2 феҳрист бо барномаҳо вуҷуд дорад ва инчунин чаро QtQuickApplication ман дар як аст, аммо дар дигараш не? (Охир, ин як система нест, балки корбари дуюм аст, ки шахсан барои ман фаҳмо аст).
Ман воқеан ошуфтаам ва фикр мекунам, ки ин бояд ягона бошад.
шарҳи оқои ваддлсплаш
Каталоги Барномаҳо дорои барномаҳое мебошад, ки дар меню лозим нестанд. Аммо вазъият бо меню воқеан бояд беҳтар карда шавад, то он бештар танзимшаванда бошад.
Ариза, вагарна ин рӯй нахоҳад дод 😉
Ман ҳайрон шудам: оё дар ҳақиқат ҷойгир кардани барномаҳо лозим аст /system/apps, агар корбарон онҳоро дар он ҷо бубинанд, ин номатлуб аст. Шояд беҳтар мебуд, ки онҳоро дар ҷои дигаре ҷойгир кунед, ки корбар бо онҳо дучор наояд? Ҳамон тавре ки он дар Mac OS X иҷро шудааст, ки дар он мундариҷаи бастаҳо .app, ки дар он набояд барои корбар намоён бошад /Applications, пинҳон дар умқи /System/Library/…“`.
Дар бораи вобастагӣ чӣ гуфтан мумкин аст?
Ман фикр мекунам, ки вобастагӣҳоро бо ягон роҳ муайян кардан лозим аст, дуруст? Оё Qt як қисми ҳатмии насби Haiku бо нобаёнӣ баррасӣ мешавад? Не! Qt бо нобаёнӣ насб карда нашудааст. Оё созандаи баста метавонад ба таври худкор вобастагиҳоро тавассути тафтиши файлҳои ELF муайян кунад? Ба ман гуфтанд, ки HaikuPorter воқеан ин корро мекунад, аммо package Не. Сабаб он аст, ки он танҳо як "созандаи баста" аст, ки танҳо худаш файлҳоро эҷод мекунад hpkg.
Оё Ҳайку бояд бо илова кардани сиёсат, ки баста набояд аз бастаҳои берун аз Ҳайку вобастагӣ дошта бошад, мураккабтар карда шавад? haikuports? (Ман инро мехоҳам, зеро чунин сиёсат корҳоро хеле осонтар мекунад - система метавонад вобастагии ҳар як бастаи аз ҳама ҷо зеркашидашударо бидуни халалдоршавӣ бо манбаъҳои иловагии бастаҳо ҳал кунад.)
Ҷаноб. waddlesplash мефаҳмонад:
Мо намехоҳем, ки озодии таҳиягаронро ин қадар маҳдуд кунем, зеро маълум аст, ки агар CompanyX мехоҳад маҷмӯи нармафзори худро бо вобастагӣ (ва аз ин рӯ анбор) дастгирӣ кунад, он ин корро комилан озод мекунад.
Чӣ мешавад, агар ман мехоҳам яке аз нишонаҳои тозаи дарунсохтро ба захираҳои замимаи навтаъсиси худ илова кунам? Маълум мешавад, ки ин як мавзӯи аҷиб аст, бинобар ин он барои мақолаи навбатӣ асос хоҳад буд.
Сохтмони пайвастаи барномаҳоро чӣ гуна бояд ташкил кард?
Тасаввур кунед, ки лоиҳа ба монанди Inkscape (бале, ман медонам, ки он ҳанӯз дар Haiku дастрас нест, аммо барои намоиш дар он қулай аст). Онҳо як анбори коди сарчашма доранд https://gitlab.com/inkscape/inkscape.
Ҳар дафъае, ки касе тағйироти худро ба анбор ворид мекунад, қубурҳои бунёдӣ оғоз мешаванд, ки баъд аз он тағиротҳо ба таври худкор санҷида мешаванд, сохта мешаванд ва барнома ба бастаҳои гуногун, аз ҷумла AppImage барои Linux бастабандӣ карда мешавад (бастаи барномаи мустақил, ки новобаста аз он, барои санҷиши маҳаллӣ зеркашӣ карда мешавад) он чиро, ки дар система насб кардан мумкин аст ё не [Ман инро медонистам! — тахминан. тарҷумон]). Бо ҳар як дархости якҷоякунии филиалҳо ҳамин чиз рӯй медиҳад, аз ин рӯ шумо метавонед пеш аз якҷояшавӣ замимаи аз рамзи дар дархости якҷоякунӣ пешниҳодшуда сохташударо зеркашӣ кунед.
Якҷоя кардани дархостҳо бо ҳолати сохтмон ва қобилияти зеркашии бинарҳои тартибдодашуда, агар сохтмон муваффақ бошад (бо ранги сабз ишора шудааст)