ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana

Aku; DR: Ua ʻike kekahi mea hou iā Haiku no ka manawa mua, e hoʻāʻo ana e lawe i kekahi mau polokalamu mai ka honua Linux.

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana
ʻO kaʻu papahana mua Haiku ported, pūʻolo ma kona ʻano hpkg

Nā lā ma mua Ua ʻike au iā Haiku, kahi ʻōnaehana hana maikaʻi maikaʻi loa no nā PC.
I kēia lā e aʻo wau pehea e hoʻokomo ai i nā polokalamu hou i kēia ʻōnaehana hana. ʻO ka manaʻo nui ka wehewehe ʻana i ka ʻike mua o ka hoʻololi ʻana iā Haiku mai ka manaʻo o kahi mea hoʻomohala Linux. Ke kala aku nei au i nā hewa lapuwale aʻu i hana ai ma ke ala, ʻoiai ʻaʻole i hala he pule mai koʻu hoʻoiho mua ʻana i ka Haiku.

Makemake au e hoʻokō i ʻekolu mau pahuhopu:

  • Hoʻopili i kahi noi CLI maʻalahi
  • Hoʻopili i kahi noi mai GUI a i Qt
  • A laila e hoʻopili iā lākou i ka ʻano hpkg (no ka mea ke noʻonoʻo nei au i ka hoʻololi ʻana iā AppDir a me AppImage no Haiku...)

E hoʻomaka kākou. Ma na pauku ka palapala и hoʻomohalaao j io wiki mai HaikuPorts ua loaa ia'u ke ala pololei. Aia kekahi puke PDF ma ka pūnaewele BeOS: Ke lawe ʻana i kahi noi Unix.
467 ʻaoʻao - a mai ka makahiki 1997 kēia! He mea weliweli ke nānā aku i loko, akā ke manaʻolana nei au i ka mea maikaʻi loa. Hoʻoikaika nā ʻōlelo a ka mea hoʻomohala: "ua lōʻihi ka manawa no ka mea ʻaʻole i hoʻokō ʻo BeOS i ka POSIX," akā ʻo Haiku "no ka hapa nui" ua like ia.

Ka lawe ʻana i kahi noi CLI maʻalahi

ʻO ka manaʻo mua e lawe i ka noi avrdude, akā, e like me ka mea i ʻike ʻia, ua hala kēia hana ʻia he wā lōʻihi.

ʻO ka hoʻāʻo mua: ʻaʻohe mea e nānā

ʻO ka mea hiki ʻole iaʻu ke hoʻomaopopo ʻo ia Ua lawe ʻia nā polokalamu iā Haiku no nā makahiki he 10 - ʻoiai ʻo ka OS ponoʻī ʻaʻole ia he mana 1.0.

ʻO ka hoʻāʻo ʻelua: pono e kākau hou

No laila e hoʻohana wau pāʻani-770, CLI no ka hoʻomalu ʻana i ka mīkini paʻi Brother P-Touch 770 aʻu e hoʻohana ai e paʻi i nā lepili.
Paʻi au i nā lepili like ʻole ma luna, a ua ʻike paha ʻoe ma ka ʻatikala mua. Ma mua iki, ua kākau wau i kahi papahana GUI wrapper liʻiliʻi ma Python (no ka mea aia ma Gtk +, pono e kākau hou ʻia, a he kumu maikaʻi kēia e aʻo ai).

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana
ʻO Brother P-Touch 770 paʻi lepili. E hana pū me Haiku?

ʻIke ka luna pūʻolo Haiku e pili ana i nā hale waihona puke a me nā kauoha, no laila inā loaʻa iaʻu kahi memo "ʻaʻole hiki ke loaʻa libintl" ke holo. configure - Hoʻomaka wau pkgman install devel:libintl a e loaʻa ka pūʻolo i makemake ʻia. Pela no pkgman install cmd:rsync. Well, etc.

Inā ʻaʻole hana kēia:

/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

Malia paha he Linux loa ka udev a no laila ʻaʻole ia no Haiku. ʻO ia hoʻi, pono wau e hoʻoponopono i ka code kumu aʻu e hoʻāʻo nei e hōʻuluʻulu.
ʻAe, ʻaʻole hiki iā ʻoe ke lele ma luna o kou poʻo, a ʻaʻole maopopo iaʻu kahi e hoʻomaka ai.

ʻEkolu hoʻāʻo

He mea maikaʻi ke loaʻa tmate no Haiku, a laila e ʻae au i nā mea hoʻomohala Haiku e hoʻopili i kaʻu kau hoʻomaha - inā pilikia kekahi. He mea maʻalahi nā kuhikuhi:

./autogen.sh
./configure
make
make install

Maikaʻi ka nānā ʻana, no ke aha e hoʻāʻo ʻole ai ma Haiku?

/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

Ma kēia ʻanuʻu, wehe wau iā HaikuDepot a ʻimi curses.
Ua loaʻa kekahi mea, i hāʻawi mai iaʻu i kahi hōʻailona no kahi nīnau ʻoi aku ka mākaukau:

/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

Hele hou au i HaikuDepot, a, ʻoiaʻiʻo, loaʻa devel:msgpack_c_cpp_devel. He aha kēia mau inoa ʻē?

/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

Ma kēia ʻanuʻu, ʻike wau ʻo ka lawe ʻana i kahi papahana iā Haiku e koi i ka ʻike ʻoi aku ka nui ma mua o ka mea e pono ai no ke kūkulu hou ʻana.
Ua kamaʻilio wau me nā mea hoʻomohala Haiku aloha, ua ʻike ʻia aia kahi pahu i loko o ka msgpack, a ma hope o kekahi mau minuke ʻike wau i kahi pā ma HaikuPorts. Hiki iaʻu ke ʻike me koʻu mau maka ponoʻī i ke ʻano o ka pūʻolo i hoʻoponopono ʻia e hele ana maanei (buildslave - nā mīkini virtual).

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana
Ke kūkulu ʻana i ka msgpack i hoʻoponopono ʻia ma buildmaster

Ma waena o nā manawa, hoʻouna wau i kahi pā i uka e hoʻohui i ke kākoʻo Haiku i ka msgpack.

Ma hope o ʻelima mau minuke, ua loaʻa mua ka msgpack hou ma Haiku:

/Haiku/home/tmate> pkgman update
(...)
The following changes will be made:
  in system:
    upgrade package msgpack_c_cpp-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
    upgrade package msgpack_c_cpp_devel-3.1.1-1 to 3.2.0-2 from repository HaikuPorts
Continue? [yes/no] (yes) : y
100% msgpack_c_cpp-3.2.0-2-x86_64.hpkg [13.43 KiB]
(...)
[system] Done.

Maikaʻi i manaʻo ʻole ʻia. Ua ʻōlelo wau pēlā?!

Hoʻi au i ka pilikia kumu:

/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

I kēia manawa, ʻaʻohe hewa o msgpack. Ke ʻōlelo nei au IMAXLABEL в tty.c e like me kēia:

tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|/*IMAXBEL|*/ISTRIP);

Hualoaʻa:

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.

ʻAe, eia mākou e hele hou... Ma ke ala:

/Haiku/home/tmate> ./configure | grep -i OPENAT
checking for openat... no

Ua haʻi aku ʻo Mr. waddlesplash haʻi iā ʻoe i kahi e ʻeli ai:

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

Eia wau i hoʻopuka ai config.log.

Ua wehewehe mai lākou iaʻu aia kekahi mea ʻē aʻe i ka libnetwork ma waho o ka libresolv ma Haiku. ʻIke ʻia e pono e hoʻoponopono hou ʻia ke code. Pono e noʻonoʻo…

find . -type f -exec sed -i -e 's|lresolv|lnetwork|g'  {} ;

ʻO ka nīnau mau loa: he aha ka mea e hana nei?

/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

ʻO ka mea like, ma ka ʻaoʻao wale nō. Googled a loaa keia. Inā hoʻohui ʻoe -lssp Kōkua "i kekahi manawa", ho'āʻo wau:

/Haiku/home/tmate> ./configure LDFLAGS="-lbsd -lssp"
(...)/Haiku/home/tmate> make
(...)/Haiku/home/tmate> ./tmate

Auwe! Ke hoʻomaka nei! Akā…

[tmate] ssh.tmate.io lookup failure. Retrying in 2 seconds (non-recoverable failure in name resolution)

E ho'āʻo wau e hoʻopololei faila maanei:

/Haiku/home/tmate> strace -f ./tmate >log 2>&1

Ua like ʻo "Bad port ID" me kahi kāleka ʻoihana haiku. Manaʻo paha kekahi i ka hewa a pehea e hoʻoponopono ai? Inā pēlā, e hoʻonui au i ka ʻatikala. loulou i GitHub.

Ke lawe ʻana i ka palapala noi GUI iā Qt.

Koho au i kahi palapala noi QML maʻalahi.

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

Maʻalahi maoli. Ma lalo o hoʻokahi minute!

Hoʻopili i nā noi ma hpkg me ka hoʻohana ʻana i ka haikuporter a me nā haikuports.

He aha kaʻu e hoʻomaka ai? ʻAʻohe palapala maʻalahi, hele au i ke kahawai #haiku ma irc.freenode.net a lohe:

  • hui package - he ala haʻahaʻa e hana i nā pūʻolo. No ka hapa nui, ua lawa ka PackageInfo nona, e like me ka mea i wehewehe ʻia ma ka ʻāpana "Ke hana nei i kahi pūʻolo .hpkg kūpono"
  • Pono wau e hana i kekahi mea like me
  • Hiki ke hoʻohana hpkg-mea hana (ua hāʻule ia noʻu, hōʻike hewa)

ʻAʻole maopopo ka mea e hana ai. Manaʻo wau makemake wau i kahi alakaʻi no ka hoʻomaka ʻana o ke ʻano Hello World, he wikiō maikaʻi loa. He mea maikaʻi nō hoʻi e loaʻa kahi hoʻolauna kūpono iā HaikuPorter, e like me ka hana ʻana ma GNU hello.

Heluhelu au i keia:

haikuporter he mea hana no ka hana ʻana i nā papahana pūʻolo maʻamau no Haiku. Hoʻohana ia i ka waihona HaikuPorts ma ke ʻano he kumu no nā pūʻolo āpau. Hoʻohana ʻia nā ʻōlelo aʻoaʻo Haikuporter e hana i nā pūʻolo.

Eia kekahi, ʻike wau i kēia:

ʻAʻohe pono e mālama i nā ʻano meaʻai ma kahi waihona o HaikuPorts. Hiki iā ʻoe ke hana i kahi waihona ʻē aʻe, e hoʻokomo i nā meaʻai i loko, a laila kuhikuhi i ka haikuporter iā ia.

ʻO kaʻu mea e pono ai - inā ʻaʻole ʻimi i kahi ala e hoʻokuʻu ai i ka pōʻai. Akā, he kumuhana kēia no kekahi pou.

Ke kau ʻana i nā haikuporter a me nā 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

Ke kākau ʻana i mea ʻai

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
}

ʻO ka hui ʻana i ka meaʻai

Mālama wau i ka faila ma lalo o ka inoa QtQuickApp-1.0.recipe, ma hope o ka hoʻomaka ʻana aikuporter -S ./QuickApp-1.0.recipe. Nānā ʻia nā hilinaʻi no nā pūʻolo āpau i ka waihona haikuports, e lawe ana i kekahi manawa. E hele au e kiʻi kope.

No ke aha ma ka honua e hana ʻia kēia loiloi ma kaʻu mīkini kūloko, ʻaʻole ma ke kikowaena ma ke kikowaena hoʻokahi no kēlā me kēia?

Wahi a mr. waddlesplash:

Me ia e hiki ai iā ʻoe ke kākau hou i kekahi faila i loko o ka waihona 😉 Hiki iā ʻoe ke hoʻomaikaʻi iki i kēia, e helu ana i ka ʻike e pono ai inā pono, no ka mea, he kakaikahi nā loli hope i hana ʻia.

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

ʻIke ʻia ʻaʻohe mea e like me kahi faila meaʻai maʻamau i loaʻa ka code kumu o kāu noi. Pono ʻoe e mālama i loko o kahi waihona ma ke ʻano HaikuPorts.

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

ʻO kēia ʻoiaʻiʻo e ʻoi aku ka paʻakikī o ka hui. ʻAʻole wau makemake nui ia, akā manaʻo wau he mea pono ia i hiki i ka hopena ke ʻike ʻia nā polokalamu open source a pau ma HaikuPorts.

Loaʻa iaʻu kēia mau mea:

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

He aha ka pilikia? Ma hope o ka heluhelu ʻana i ka irc, hana wau:

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

Ua ala mai kekahi nīnau hoihoi. Inā hoʻohui au i kahi checksum i ka ʻai - e hoʻohālikelike paha ia me ka git commit hou loa no ka hoʻohui mau ʻana? (Ke hōʻoia nei ka mea hoʻomohala: "ʻAʻole ia e hana. Ua hoʻolālā ʻia nā mea hoʻomaʻamaʻa e paʻa paʻa.")

No ka leʻaleʻa, hoʻohui i ka meaʻai:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

ʻAʻole naʻe i māʻona:

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

He aha kāna e hana nei? Ma hope o nā mea a pau, he waihona git kēia, aia ke code ma laila pololei, ʻaʻohe mea e wehe. Mai koʻu manaʻo, pono ke akamai o ka mea hana ʻaʻole e ʻimi i kahi unpacker inā aia ma luna o ka url GitHub.

E hana paha ʻo uri git://

SOURCE_URI="git://github.com/probonopd/QtQuickApp.git"

I kēia manawa, hoʻopiʻi ia penei:

Downloading: git://github.com/probonopd/QtQuickApp.git ...
Error: Downloading from unsafe sources is disabled in haikuports.conf!

Hmm, no ke aha i paʻakikī loa ai nā mea āpau, no ke aha ʻaʻole hiki iā ʻoe ke "hana wale"? Ma hope o nā mea a pau, ʻaʻole ia he mea maʻamau ke kūkulu ʻana i kahi mea mai GitHub. ʻO nā mea hana paha e hana koke ana, me ka ʻole o ka hoʻonohonoho ʻana, a i ʻole e kapa ʻia ʻo ia he "fussing".

Malia paha e hana ia penei:

SOURCE_URI="git+https://github.com/probonopd/QtQuickApp.git"

ʻAʻole. Loaʻa iaʻu kēia kuhi hewa a hana wau, e like me ka mea i hoakakaia maanei

sed -i -e 's|#ALLOW_UNSAFE_SOURCES|ALLOW_UNSAFE_SOURCES|g' /boot/home/config/settings/haikuports.conf

Ke neʻe nei au i kahi liʻiliʻi, akā no ke aha e uē mai ai iaʻu (ʻaʻole paʻa ʻo GitHub!)

Wahi a Ua haʻi aku ʻo Mr. waddlesplash:

ʻAe, ʻae, ʻo ke kumu ka makemake e nānā i ka pono o ka ʻikepili i loaʻa no ka ʻākoakoa. ʻO kekahi o nā koho e hōʻoia i ka checksum o ka waihona, akā hiki iā ʻoe, ʻoiaʻiʻo, hash i nā faila pilikino, ʻaʻole e hoʻokō ʻia, no ka mea ʻoi aku ka lōʻihi. ʻO ka hopena o kēia ka "palekana" o git a me nā VCS ʻē aʻe. He mea maʻalahi loa kēia, no ka mea he maʻalahi ka hana ʻana i kahi waihona ma GitHub a ʻoi aku ka wikiwiki. ʻAe, i ka wā e hiki mai ana, ʻaʻole paha e ʻālohilohi ka memo hewa... (ʻaʻole mākou e hoʻohui hou i nā ʻano ʻano like ʻole ma HaikuPorts).

~/QtQuickApp> haikuporter -S QtQuickApp
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
----------------------------------------------------------------------
app-misc::QtQuickApp-1.0
        /boot/home/haikuports/app-misc/QtQuickApp/QtQuickApp-1.0.recipe
----------------------------------------------------------------------Downloading: git+https://github.com/probonopd/QtQuickApp.git ...
Warning: UNSAFE SOURCES ARE BAD AND SHOULD NOT BE USED IN PRODUCTION
Warning: PLEASE MOVE TO A STATIC ARCHIVE DOWNLOAD WITH CHECKSUM ASAP!
Cloning into bare repository '/boot/home/haikuports/app-misc/QtQuickApp/download/QtQuickApp.git'...
Unpacking source of QtQuickApp.git
tar: /boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Command 'git archive HEAD | tar -x -C "/boot/home/haikuports/app-misc/QtQuickApp/work-1.0/sources/QtQuickApp-1.0"' returned non-zero exit status 2

Ma waho o ka hana kahiko, hele au e nīnau i ka poʻe maikaʻi ma ke kahawai #haiku ma ka pūnaewele irc.freenode.net. A ma hea wau inā ʻaʻole lākou? Ma hope o ka hōʻailona, ​​ua ʻike wau e hoʻohana wau:

srcGitRev="d0769f53639eaffdcd070bddfb7113c04f2a0de8"
SOURCE_URI="https://github.com/probonopd/QtQuickApp/archive/$srcGitRev.tar.gz"
SOURCE_DIR="QtQuickApp-$srcGitRev"
CHECKSUM_SHA256="db8ab861cfec0ca201e9c7b6c0c9e5e828cb4e9e69d98e3714ce0369ba9d9522"

ʻAe, ua maopopo i kāna hana - hoʻoiho ʻo ia i kahi waihona me ke kumu kumu o kahi hoʻoponopono. He naʻaupō ia, mai koʻu manaʻo, ʻaʻole pololei ka mea aʻu i makemake ai, ʻo ia hoʻi, e hoʻoiho i ka hoʻoponopono hou mai ka lālā kumu.

Ua wehewehe kekahi o nā mea hoʻomohala penei:

Loaʻa iā mākou kā mākou CI ponoʻī, no laila e hoʻopili ʻia nā mea a pau i waiho ʻia i loko o ka waihona haikuports no nā mea hoʻohana a pau, a ʻaʻole makemake mākou e hoʻoweliweli i ka hōʻiliʻili ʻana a me ka hāʻawi ʻana i "nā mea āpau i ka mana hou loa i luna."

Maopopo! I kekahi hihia, penei ka mea i hana ʻia:

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
(...)

Hoʻopuka hou ia i kēia hoʻolaha infinitum. ʻIke ʻia he hewa kēia (he palapala noi? ʻAʻole hiki iaʻu ke loaʻa).

С haikuporter a me ka waihona haikuports ʻAʻohe ona manaʻo "hana wale", akā ma ke ʻano he mea hoʻomohala, aia kekahi mau mea aʻu e makemake ai e hana pū me Haiku. No ka hapa nui, ua like ia me ka Open Build Service, kahi pūʻulu o nā mea hana no ke kūkulu ʻana i Linux: ikaika loa, me kahi ʻōnaehana systematic, akā overkill no kaʻu noi liʻiliʻi "hello world".

Eia hou, e like me ka Mr. waddlesplash:

ʻOiaʻiʻo, koʻikoʻi ʻo HaikuPorter ma ka paʻamau (me kahi ʻano lint a me kahi ʻano koʻikoʻi e hoʻoikaika ai!), akā no ka hana ʻana i nā pūʻolo e hana, ma mua o ka hana ʻana i nā pūʻolo. ʻO ia ke kumu i hoʻopiʻi ai ʻo ia e pili ana i nā hilinaʻi ʻaʻole i haʻi ʻia, ʻaʻole lawe ʻia nā hale waihona puke, nā mana hewa ʻole, etc. ʻO ka pahuhopu ka hopu ʻana i kekahi a me nā pilikia āpau, me nā pilikia e hiki mai ana, ma mua o ka ʻike ʻana o ka mea hoʻohana e pili ana iā ia (ʻo ia ke kumu i hiki ʻole ai ke hoʻokomo i ka avrdude, no ka mea, ua kuhikuhi maoli ʻia ka hilinaʻi i ka papa). ʻAʻole nā ​​hale waihona puke i nā pūʻolo pākahi a i ʻole nā ​​mana SO kikoʻī. Hoʻomaopopo ʻo HaikuPorter e ʻike ʻia kēia mau mea a pau i loko o ka ʻatikala iā lākou iho e pale aku i nā hewa i ka wā o ka hoʻokō.

Ma ke kumu, ua hoʻāpono ʻia kēia pae koʻikoʻi i ka wā e hana ai i kahi ʻōnaehana hana, akā ʻaʻole pono iaʻu no kahi noi "hello world". Ua hoʻoholo wau e hoʻāʻo i kahi mea ʻē aʻe.

Ke kūkulu nei i nā noi ma ke ʻano hpkg me ka hoʻohana ʻana i ke kauoha "package create".

Paha, kēia E ʻoi aku ka maikaʻi o nā kuhikuhi maʻalahi iaʻu?

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

ʻAʻole i manaʻo ʻia wikiwiki, manaʻo ʻole maʻalahi, manaʻo maikaʻi ʻole. Like loa koʻu makemake, kupaianaha!

Hoʻokomo - he aha a ma hea?

Ua hoʻoneʻe i ka faila QtQuickApp.hpkg i ~/config/packagesme ka hoʻohana ʻana i kahi faila, a ma hope o QtQuickApp i ʻike ʻia i loko ~/config/apps.
Eia hou, wikiwiki wikiwiki, maʻalahi a maikaʻi hoʻi. Kupaianaha, kupaianaha!

Akā... (i hea mākou me ka ʻole o lākou!)

Ke nalo nei ka app mai ka papa inoa papa kuhikuhi a me QuickLaunch. Manaʻo wau ua ʻike mua wau pehea e hoʻoponopono ai. Ma ka waihona waihona e hoʻoneʻe au iā QtQuickApp.hpkg mai ~/config/packages i /system/packages.

ʻAʻole, nalo nō. ʻIke ʻia, ua nele au (maikaʻi, a me nā ʻōlelo kuhikuhi).

Ma hope o ka nānā ʻana i ka ʻaoʻao "Contents" ma HaikuDepot no kekahi mau noi ʻē aʻe, ʻike wau aia nā faila e like me /data/mimedb/application/x-vnd... ʻO ka mea kupaianaha loa /data/deskbar/menu/Applications/….

ʻAe, he aha kaʻu e waiho ai ma laila? Hele mai...

mkdir -p data/deskbar/menu/Applications/
( cd data/deskbar/menu/Applications ; ln -s ../../../../apps/QtQuickApp . )
package add QtQuickApp.hpkg apps data

Ua maopopo iaʻu e hana ana kēia hoʻopunipuni, akā mau nā nīnau: no ke aha e pono ai kēia, no ke aha? Manaʻo wau e hōʻino kēia i ka manaʻo holoʻokoʻa he maʻalahi ka ʻōnaehana.

E like me ka wehewehe ʻana a Mr. waddlesplash:

I kekahi manawa aia nā noi e pono ai nā noi ʻē aʻe akā ʻaʻole i loko o ka papa kuhikuhi. No ka laʻana, LegacyPackageInstaller i kāu kiʻi paʻi kiʻi, e hana ana i nā waihona .pkg ma ke ʻano BeOS. Makemake au i nā mea hoʻohana e hoʻokomo iā lākou, akā ʻo ko lākou hele ʻana i ka papa kuhikuhi e alakaʻi i ka huikau.

No kekahi kumu i koʻu manaʻo he mea maʻalahi ka hopena, no ka laʻana Hidden=true i nā faila .desktop ma Linux. No ke aha e hoʻolilo ʻole ai i ka ʻike "huna" i kumu a me nā ʻano o ka ʻōnaehana faila?

ʻO ka mea maʻalahi ʻole ka inoa o (kekahi) noi e hōʻike ana i ka papa kuhikuhi, deskbar, nakii paa ma ke ala.

ʻO Mr. Ua wehewehe ʻo waddlesplash i kēia:

Pono e hoʻomaopopo ʻia ʻo "Deskbar" ma ke ʻano he ʻano huaʻōlelo maʻamau (ma ke ʻano like me "taskbar", e pili ana i ka noi Windows a me ka manaʻo nui). ʻAe, mai kēia deskbar, ʻaʻole "Deskbar", hiki ke hoʻomaopopo ʻia kēia ma ke ʻano like.

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana
2 "aneane like" papa kuhikuhi me nā noi i loko o ia mau mea

No ke aha he 2 mau papa kuhikuhi me nā noi, a no ke aha hoʻi kaʻu QtQuickApplication i hoʻokahi, ʻaʻole naʻe i kekahi? (Ma hope o nā mea a pau, ʻaʻole kēia hoʻokahi ʻōnaehana hoʻokahi, akā he mea hoʻohana ʻelua, e hiki ke hoʻomaopopo pono iaʻu).
Pioloke loa au a manaʻo wau e hoʻohui ʻia kēia.

ʻōlelo a mr. waddlesplash

Aia ka papa inoa Apps i nā noi i pono ʻole i ka papa kuhikuhi. Akā ʻo ke kūlana me ka papa kuhikuhi pono e hoʻomaikaʻi ʻia, i mea e hiki ai ke maʻalahi.

Hoʻohana, a i ʻole e hiki mai 😉

Ua noʻonoʻo wau: pono maoli paha e hoʻokipa i nā noi i loko /system/apps, inā ʻike nā mea hoʻohana iā lākou ma laila, makemake ʻole ia. ʻOi aku ka maikaʻi o ka waiho ʻana iā lākou ma kahi ʻē aʻe kahi e ʻike ʻole ai ka mea hoʻohana iā lākou? E like me ia i hana ʻia ma Mac OS X, kahi i loaʻa ai nā ʻike o nā pūʻolo .app, ʻaʻole pono e ʻike ʻia e ka mea hoʻohana ma /Applications, huna i ka hohonu o /System/Library/…“`.

Pehea e pili ana i nā hilinaʻi?

Manaʻo wau he mea kūpono ke kuhikuhi ʻana i nā mea hilinaʻi i kekahi ʻano, pololei? Hiki ke noʻonoʻo ʻia ʻo Qt he ʻāpana koi o ka hoʻokomo ʻana o Haiku ma ka paʻamau? ʻAʻole! ʻAʻole hoʻokomo ʻia ʻo Qt e ka paʻamau. Hiki i ka mea hana pūʻolo ke ʻike i nā hilinaʻi ma ka nānā ʻana i nā faila ELF? Ua haʻi ʻia iaʻu e hana maoli ʻo HaikuPorter i kēia, akā package ʻAʻole. ʻO ia no ka mea he "package builder" wale nō e hana i nā faila ma kāna iho hpkg.

Pono e hoʻonui ʻia ʻo Haiku ma ka hoʻohui ʻana i kahi kulekele ʻaʻole pono ke hilinaʻi i kahi pūʻolo i nā pūʻolo ma waho o Haiku? haikuports? (Makemake au, no ka mea e maʻalahi ka maʻalahi o ia kulekele - hiki i ka ʻōnaehana ke hoʻoholo aunoa i nā hilinaʻi o kēlā me kēia pūʻolo i hoʻoiho ʻia mai kēlā me kēia wahi, me ka ʻole o ka hoʻopili ʻana me nā kumu pūʻolo hou.)

ʻO Mr. wehewehe ʻo waddlesplash:

ʻAʻole mākou makemake e kaupalena nui i ke kūʻokoʻa o nā mea hoʻomohala, no ka mea, ʻike ʻia inā makemake ʻo CompanyX e kākoʻo i kāna pūʻulu polokalamu ponoʻī me nā mea hilinaʻi (a no laila he waihona), e hana ia me ka manuahi.

I kēlā hihia, pono paha e ʻōlelo ʻia e pale aku nā pūʻolo ʻaoʻao ʻekolu i ka hilinaʻi ʻana i nā mea ʻaʻole i hoʻokomo ʻia i loko o nā haikuports ma ka hoʻopiha piha ʻana i nā mea āpau e pono ai me ka noi. Akā, manaʻo wau he kumuhana kēia no kahi ʻatikala e hiki mai ana ma kēia pūʻulu. [Ke hele nei ka mea kākau i AppImage? - kokoke. unuhi]

Hoʻohui i kahi kiʻiona noi

He aha inā makemake wau e hoʻohui i kekahi o nā kiʻi i kūkulu ʻia i loko o nā kumuwaiwai o kaʻu noi hana hou? ʻIke ʻia he kumuhana kupaianaha kēia, no laila e lilo ia i kumu no ka ʻatikala aʻe.

Pehea e hoʻonohonoho ai i nā kūkulu noi mau?

E noʻonoʻo i kahi papahana e like me Inkscape (ʻae, ʻike wau ʻaʻole i loaʻa ia ma Haiku, akā hiki ke hōʻike ʻia ma luna). Loaʻa iā lākou kahi waihona kumu kumu https://gitlab.com/inkscape/inkscape.
I kēlā me kēia manawa e hana kekahi i kā lākou mau hoʻololi i ka waihona, kūkulu ʻia nā pipelines, a laila e hoʻāʻo ʻia nā loli, kūkulu ʻia, a hoʻopili ʻia ka noi i loko o nā pūʻulu like ʻole, me AppImage no Linux (kahi puʻupuʻu noi kūʻokoʻa hiki ke hoʻoiho ʻia no ka hoʻāʻo kūloko me ka nānā ʻole. he aha ka mea i hoʻokomo ʻia ma ka ʻōnaehana [Ua maopopo iaʻu! - kokoke. unuhi]). Pēlā nō me kēlā me kēia noi hoʻohui lālā, no laila hiki iā ʻoe ke hoʻoiho i ka noi i kūkulu ʻia mai ke code i manaʻo ʻia ma ka noi hoʻohui ma mua o ka hui ʻana.

ʻO koʻu lā ʻelima me Haiku: e lawe kāua i kekahi mau papahana
Hoʻohui i nā noi me nā kūlana kūkulu a me ka hiki ke hoʻoiho i nā binaries i hōʻuluʻulu ʻia inā kūleʻa ke kūkulu ʻia (hōʻailona ʻia i ka ʻōmaʻomaʻo)

Holo ka hale i nā pahu Docker. Hāʻawi ʻo GitLab i nā mea holo manuahi ma Linux, a manaʻo wau e hiki ke hoʻokomo i kāu mau kukini ponoʻī (ma ke ala, ʻaʻole wau ʻike pehea e hana ai kēia no nā ʻōnaehana e like me Haiku, aʻu i ʻike ai ʻaʻohe Docker a i ʻole like, akā. no FreeBSD ʻaʻohe Docker, no laila ʻaʻole kū hoʻokahi kēia pilikia iā Haiku).

ʻO ke kūpono, hiki ke kūkulu ʻia nā noi Haiku i loko o kahi pahu Docker no Linux. Ma kēia kūlana, hiki ke hoʻokomo ʻia ka hui no Haiku i nā pipeline e kū nei. Loaʻa nā mea hui keʻa? A i ʻole e hoʻohālike au i nā Haiku āpau i loko o kahi pahu Docker me ka hoʻohana ʻana i kahi mea e like me QEMU/KVM (me ka manaʻo e hana ia i loko o Docker)? Ma ke ala, nui nā papahana e hoʻohana i nā loina like. No ka laʻana, hana ʻo Scribus i kēia - ua loaʻa ia no Haiku. E hiki mai ana ka la e hiki ai ia'u ke hoouna pela Huki i nā noi i nā papahana ʻē aʻe e hoʻohui i ke kākoʻo Haiku.

Ua wehewehe kekahi o nā mea hoʻomohala:

No nā papahana ʻē aʻe e makemake ana e hana i nā pūʻolo iā lākou iho, kākoʻo ʻia ke ʻano CMake/CPack maʻamau. Hiki ke kākoʻo ʻia nā ʻōnaehana kūkulu ʻē aʻe ma ke kāhea pololei ʻana i ka papahana kūkulu ʻana o ka pōʻai, maikaʻi ia inā makemake nā kānaka iā ia. Hōʻike ka ʻike: i kēia manawa ʻaʻole nui ka hoihoi, no laila ua hana ʻo haikuporter i mea maʻalahi no mākou, akā, ʻo ka hopena, pono e hana pū nā ʻano ʻelua. Pono mākou e hoʻokomo i kahi pūʻulu o nā mea hana no ka polokalamu kūkulu keʻa mai Linux a i ʻole kekahi ʻōnaehana lawelawe kikowaena ʻē aʻe (ʻaʻole i hoʻolālā ʻia ʻo Haiku e holo ma nā kikowaena).

Hāʻawi wau i kahi kūʻē kū. Lawe nā mea hoʻohana Linux maʻamau i kēia ukana a me nā ukana ʻē aʻe (palekana, mana koʻikoʻi, a me nā mea ʻē aʻe) pono no ka ʻōnaehana lawelawe kikowaena, akā ʻaʻole no kahi pilikino. No laila, ʻae loa wau i ka hiki ke kūkulu i nā polokalamu Haiku ma Linux ke ala e hele ai.

hopena

Hiki ke lawe i nā noi POSIX i Haiku, akā ʻoi aku ka nui o ke kumukūʻai ma mua o ke kūkulu hou ʻana. E paʻa loa au me kēia no ka manawa lōʻihi inā ʻaʻole no ke kōkua ʻana o nā poʻe mai ke kahawai #haiku ma ka pūnaewele irc.freenode.net. Aole nae lakou i ike koke i ka hewa.

ʻO nā noi i kākau ʻia ma Qt he ʻokoʻa maʻalahi. Hoʻokomo wau i kahi noi demo maʻalahi me ka pilikia ʻole.

He mea maʻalahi nō hoʻi ke kūkulu ʻana i kahi pūʻolo no nā noi maʻalahi, akā no nā mea "hoʻokuʻu maʻamau" wale nō, ʻo ia hoʻi. ka loaʻa ʻana o nā waihona code source versioned i manaʻo ʻia no ke kākoʻo ma nā haikuports. No ke kūkulu mau ʻana (kūkulu no kēlā me kēia hana o nā loli) me GitHub, ʻaʻole maʻalahi nā mea āpau. Ma aneʻi, ʻoi aku ka manaʻo o Haiku e like me ka hoʻohele Linux ma mua o ka hopena ma ka Mac, kahi i kaomi ʻana i ke pihi "Build" ma XCode e loaʻa iā ʻoe kahi pūʻolo. .app, mākaukau e hoʻokomo i loko o kahi kiʻi diski .dmg, hoʻomākaukau no ka hoʻoiho ʻana ma kaʻu pūnaewele.
ʻO ke kūkulu mau ʻana o nā noi e pili ana i kahi ʻōnaehana hana "server", no ka laʻana, Linux, hiki ke hiki ke loaʻa ke koi ʻia mai nā mea hoʻomohala, akā i kēia manawa he mau hana ʻē aʻe ka Haiku.

E ho'āʻo iā ʻoe iho! Ma hope o nā mea a pau, hāʻawi ka papahana Haiku i nā kiʻi no ka booting mai DVD a i ʻole USB, i hana ʻia ежедневно. No ka hoʻouka ʻana, e kiʻi wale i ke kiʻi a kākau iā ia i kahi flash drive me ka hoʻohana ʻana Hoʻokumu

He mau nīnau kāu? Ke kono nei mākou iā ʻoe i ka ʻōlelo Lūkini kanalea telegram.

Hōʻike hewa: Pehea e pana ai iā ʻoe iho i ka wāwae ma C a me C++. ʻOhi ʻana o nā mea ʻai ʻo Haiku OS

mai ka mea kākau unuhi: ʻo ia ka ʻatikala ʻelima o ka moʻolelo e pili ana iā Haiku.

Papa inoa o nā ʻatikala: Ke mua ʻO ka lua ʻO ke kolu Eha lā

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka