Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar

TL, DR: Qof cusub ayaa arkay Haiku markii ugu horeysay, isagoo isku dayaya inuu soo dejiyo barnaamijyada qaar ee adduunka Linux.

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar
Barnaamijkeygii ugu horreeyay ee Haiku la xawilo, oo lagu baakadeeyay qaabkiisa hpkg

Dhawaan Waxaan helay Haiku, oo ah nidaamka qalliinka ee PC-yada la yaab leh.
Maanta waxaan baran doonaa sida loo soo dejiyo barnaamijyo cusub nidaamkan hawlgalka. Diiradda ugu weyni waa sharraxaadda waayo-aragnimadii ugu horreysay ee u beddelashada Haiku marka laga eego aragtida horumariyaha Linux. Waan ka cudur daaranayaa khaladaad kasta oo doqonnimo ah oo aan sameeyay intii aan jidka ku jiray, maadaama aanay xitaa toddobaad ka soo wareegin tan iyo markii ugu horreysay ee aan soo dejiyo Haiku.

Waxaan rabaa inaan gaaro saddex hadaf:

  • Deked codsi fudud oo CLI ah
  • Ka soo daji codsiga GUI una wareeji Qt
  • Kadib ku xidho qaabka hpkg (maadaama aan wali ka fekerayo la qabsiga AppDir iyo AppImage ee Haiku...)

Aan bilowno. Qaybaha dukumiintiyada ΠΈ horumarinsidoo kale wiki HaikuPorts waxaan ka helay jihada saxda ah. Xitaa waxaa jira buug PDF ah oo online ah BeOS: Soo dejinta Arjiga Unix.
467 bog - tanina waxay ka timid 1997! Waa wax laga cabsado in aad eegto gudaha, laakiin waxaan rajeynayaa wanaag. Erayada horumariyaha ayaa dhiirigelinaya: "Waxay qaadatay wakhti dheer sababtoo ah BeOS ma ahayn POSIX-u hoggaansanaanta", laakiin Haiku "inta badan" waa horeba sidaas oo kale.

Soo dejinta codsi fudud oo CLI ah

Fikirka ugu horreeya wuxuu ahaa in la soo dejiyo codsiga avrdude, laakiin, sida ay soo baxday, tani waa horeba sameeyay waqti dheer ka hor.

Marka hore isku day: wax la daawado ma jirto

Waxa aanan fahmi karin waa taas mar hore Apps waxa loo soo raray Haiku in ka badan 10 sano - in kasta oo xaqiiqda ah in OS laftiisa uusan ahayn xitaa nooca 1.0 weli.

Isku dayga labaad: u baahan in dib loo qoro

Markaa waan isticmaali doonaa gacan-770, CLI si loo xakameeyo daabacaha Brother P-Touch 770 ee aan isticmaalo si aan u daabaco calaamadaha.
Waxaan ku daabacaa calaamado kala duwan, waxaana laga yaabaa inaad hore ugu aragtay maqaalkii hore. Wax yar ka hor, waxaan ku qoray barnaamijka yar ee duubista GUI ee Python (maadaama ay ku taal Gtk +, waa in dib loo qoraa, tanina waa sabab wanaagsan oo wax loo barto).

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar
Walaal P-Touch 770 daabacaha sumadda. Ma la shaqayn doonaa Haiku?

Maamulaha xirmada Haiku wuu ogyahay wax ku saabsan maktabadaha iyo amarrada, marka haddii aan helo fariin "ma heli karo libintl" markaan socdo configure - Hadda waan bilaabay pkgman install devel:libintl iyo xirmo loo baahan yahay waa la heli doonaa. Sidoo kale pkgman install cmd:rsync. Waa hagaag, iwm.

Marka laga reebo marka tani shaqayn waydo:

/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

Waxaa laga yaabaa in udev uu ku saleysan yahay Linux sidaa darteedna uusan u jirin Haiku. Taas macneheedu waxa weeye waxaan u baahanahay inaan wax ka beddelo koodhka isha ee aan isku dayayo inaan ururiyo.
Haa, madaxaaga kama boodi kartid, oo xitaa ma garanayo meel aan ka bilaabo.

Isku day saddexaad

Way fiicnaan lahayd in la haysto tmate Haiku, ka dib waxaan u oggolaan lahaa horumarinta Haiku inay ku xidhmaan fadhigayga terminalka - haddii ay wax qaldamaan. Tilmaamuhu waa kuwo fudud:

./autogen.sh
./configure
make
make install

Waxay u egtahay mid wanaagsan, markaa maxaad u tijaabin weyday 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

Tallaabadan waxaan furay HaikuDepot oo raadi curses.
Wax baa la helay, kaasoo i siinayay tilmaam su'aal karti badan leh:

/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

Mar labaad waxaan aaday HaikuDepot, iyo, dabcan, waan helay devel:msgpack_c_cpp_devel. Maxay yihiin magacyadan qariibka ah?

/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

Tallaabadan, waxaan ogaaday in u-dejinta barnaamijka Haiku ay u baahan tahay aqoon badan oo ka badan inta loo baahan yahay dib-u-dhiska fudud.
Waxaan la hadlay saaxiibtinimada horumarinta Haiku, waxaa soo baxday in uu jiro cillad ku jirta msgpack, iyo dhowr daqiiqo ka dib waxaan ku arkay balastar HaikuPorts. Indhahayga ayaan ku arkayaa sida xirmada la saxay halkan u socda (dhis addoonsiga - mashiinnada farsamada).

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar
Ku dhisida msgpack-ga la saxay ee dhisemaster

Waqtiyada dhexdooda waxaan u diraa balastar korka si loogu daro taageerada Haiku msgpack.

Shan daqiiqo ka dib, msgpack-ka la cusboonaysiiyay ayaa horeba looga helay 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.

Si lama filaan ah u wanaagsan. Ma sidaas baan idhi?!

Waxaan ku soo noqdaa dhibkii asalka ahaa:

/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

Hadda waxay u muuqataa in msgpack aanu khalad lahayn. waan ka faaloonayaa IMAXLABEL Π² tty.c sidaas darteed:

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

Natiijada:

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.

Hagaag, halkan mar kale ayaan ku soconaa... By habka:

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

Mudane. waddlesplash wuxuu kuu sheegayaa meesha aad ka qodo:

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

Halkan ayaan ku dhajiyay config.log.

Waxay ii sharaxeen inay jiraan wax kale oo ku jira libnetwork marka lagu daro libresolv ee Haiku. Sida muuqata koodka wuxuu u baahan yahay in la sii tafatiro. Waxaan u baahanahay inaan ka fikiro…

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

Su'aasha weligeed ah: maxaa dhacaya?

/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

Wax la mid ah, kaliya profile. Googled iyo helay tan. Hadii aad ku darto -lssp "mararka qaarkood" way i caawiyaan, waxaan isku dayaa:

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

Waa yaab! Way bilaabantay! Laakiin…

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

Waxaan isku dayi doonaa inaan khaladka ka saaro halkan ku fayl garee:

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

"Aqoonsiga dekedda xun" wuxuu horeyba u yahay kaarka ganacsiga haiku. Waxaa laga yaabaa in qof leeyahay fikrad maxaa khaldan iyo sida loo hagaajiyo? Haddii ay sidaas tahay, waan cusbooneysiin doonaa maqaalka. Ku xidhnow GitHub.

U gudbinta codsiga GUI ee Qt.

Waxaan doortay codsi QML fudud.

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

Runtii fudud. In ka yar hal daqiiqo!

Codsiyada baakadaha ee hpkg iyadoo la isticmaalayo haikuporter iyo haikuports.

Maxaan ku bilaabaa? Ma jiro dukumeenti fudud, waxaan aadaa kanaalka #haiku ee irc.freenode.net oo aan maqlo:

  • kooxda package - hab heer hoose ah oo loo abuuro baakado. Inta badan, PackageInfo ayaa ku filan iyada, sida lagu qeexay qaybta "Ka dhigista xirmo habboon .hpkg"
  • Waxaan u baahanahay inaan wax sameeyo sida a
  • Isticmaali karo hpkg-abuure ( way igu dhacdaa, qalad ka warbixinta)

Ma cadda waxa la sameeyo. Waxaan filayaa in aan u baahanahay hagaha bilawga qaabka Hello World, oo ku habboon muuqaal. Way fiicnaan lahayd in sidoo kale la helo hordhac ku habboon HaikuPorter, sida lagu sameeyo GNU hello.

Waxaan akhriyay sidan soo socota:

haikuporter waa qalab lagu abuurayo mashaariicda xirmada guud ee Haiku. Waxay u isticmaashaa kaydka HaikuPorts oo saldhig u ah dhammaan xidhmooyinka. Cuntooyinka Haikuporter waxaa loo isticmaalaa in lagu abuuro baakado.

Intaa waxaa dheer, waxaan ogaanay in:

Looma baahna in lagu kaydiyo cuntooyinka HaikuPorts kaydinta. Waxaad samayn kartaa meel kale oo kayd ah, ku rid cuntada cuntada, ka dibna u tilmaam haikuporter.

Kaliya waxa aan u baahanahay - haddaanan raadin hab aan si guud u sii daayo xirmada. Laakiin tani waa mawduuc loogu talagalay qoraal kale.

Ku rakibida haikuporter iyo 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

Qorista cunto karinta

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
}

Isku dhafka cuntada

Waxaan kaydiyaa faylka magaca hoostiisa QtQuickApp-1.0.recipe, ka dib waxaan bilaabay aikuporter -S ./QuickApp-1.0.recipe. Ku-tiirsanaanta waa la hubiyaa dhammaan baakooyinka ku jira kaydka haikuports, taas oo qaadanaysa waqti. Waxaan aadi doonaa xoogaa qaxwo ah

Waa maxay sababta dhulka ay tahay in jeeggaan lagu sameeyo mashiinka maxalliga ah, oo aan u dhexayn server-ka hal mar qof walba?

Sida uu sheegay Mr. waddlesplash:

Sidan oo kale waxaad dib ugu qori kartaa fayl kasta oo ku jira bakhaarka

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

Waxaa soo baxday in aysan jirin wax la yiraahdo faylka cuntada caadiga ah oo ka kooban koodka isha codsigaaga. Waxaad u baahan tahay inaad ku hayso meel kayd ah oo ah qaabka HaikuPorts.

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

Xaqiiqadani waxay ka dhigaysaa golaha mid aad u dhib badan. Ma jecli si gaar ah, laakiin waxaan u maleynayaa inay lagama maarmaan tahay si ugu dambeyntii dhammaan software-ka isha furan ay ka soo muuqdaan HaikuPorts.

Waxaan helay kuwan soo socda:

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

Maxaa khaldan? Kadib akhrinta irc waxaan sameeyaa:

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

Su'aal xiiso leh ayaa soo baxday. Haddii aan ku daro jeeg-sheegga cuntada - ma u dhigmi doontaa git-kii u dambeeyay ee is-dhexgalka joogtada ah? ( Horumariyuhu wuxuu xaqiijinayaa: "Ma shaqeyn doonto. Cuntooyinka waxaa loogu talagalay inay noqdaan kuwo deggan.")

Madadaalada, ku dar cuntada:

CHECKSUM_SHA256="cf906a65442748c95df16730c66307a46d02ab3a12137f89076ec7018d8ce18c"

Wali kuma qanacsani:

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

muxuu samaynayaa? Ka dib oo dhan, tani waa kaydka git, koodhka ayaa horay u jiray si toos ah, ma jiraan wax la soo saaro. Marka loo eego aragtidayda, qalabku waa inuu ahaado mid caqli badan oo aan raadin baakadaha haddii uu ka sarreeyo url GitHub.

Waxaa laga yaabaa in uri git:// shaqayn doonto

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

Hadda waxay ka cabanaysaa sidan:

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

Hmm, maxay wax walba u adag yihiin, maxaad "kaliya u shaqayn karin"? Ka dib oo dhan, maaha wax aan caadi ahayn in wax laga dhiso GitHub. Haddi ay tahay qalab isla markaaba shaqeeya, iyada oo aan loo baahnayn habayn, ama sida aan ugu yeero "fussing".

Waxaa laga yaabaa inay sidan u shaqeyso:

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

Maya. Weli waxaan helay qaladkan yaabka leh oo aan sameeyo, sida halkan lagu sharaxay

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

Wax yar ayaan sii socdaa, laakiin maxay iigu qaylinaysaa (GitHub ammaan maaha!) Oo haddana isku dayaya in aan wax ka furo.

Sida laga soo xigtay Mudane. waddlesplash:

Hagaag, haa, sababtu waxay ahayd rabitaanka lagu hubinayo daacadnimada xogta la helay kulanka. Mid ka mid ah xulashooyinka ayaa ah in la xaqiijiyo xisaab-celinta kaydka, laakiin waxaad, dabcan, awood u yeelan kartaa, hash faylasha gaarka ah, kuwaas oo aan la hirgelin doonin, sababtoo ah waxay qaadataa waqti dheer. Cawaaqibta tani waa "amni la'aanta" git iyo VCS kale. Tani waxay u badan tahay inay had iyo jeer ahaan doonto kiiska, maadaama abuurista kaydka GitHub ay aad u fududahay oo badanaaba dhakhso badan. Hagaag, mustaqbalka, laga yaabee in fariinta khaladku aysan noqon doonin mid aad u iftiimaya...

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

Marka laga reebo caado hore, waxaan aadayaa dadka wanaagsan ku weydiiyo kanaalka #haiku ee shabakada irc.freenode.net. Oo halkee baan ahaan lahaa la'aantood? Tilmaamaha ka dib, waxaan ogaaday inaan isticmaalo:

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

Hagaag, way caddaatay waxa ay qabato - waxay soo dejisay kaydka oo wata koodhka isha ee dib u eegis gaar ah. Waa nacasnimo, xagga aragtidayda, oo ma aha sida saxda ah waxa aan rabay, kaas oo ah, in aan soo dejiyo dib u eegistii ugu dambeysay ee laanta sayidkiisa.

Mid ka mid ah horumariyeyaasha ayaa sidan u sharaxay:

Waxaan leenahay CI noo gaar ah, sidaa darteed wax kasta oo lagu dhejiyo haikuports baakadaha waxaa loo xiri doonaa dhammaan isticmaaleyaasha, mana rabno inaan halis u galno aruurinta iyo gaarsiinta "wax walba oo ku jira nooca ugu dambeeya ee kor."

La fahmay! Calaa kulli xaal, sidaan ayaa dhacday:

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

Waxay ku celisaa xayaysiiskan infinitum Sida muuqata kani waa khalad (ma jiraa codsi? Ma heli karo).

Π‘ haikuporter iyo kaydka haikuports Ma laha "shaqo kaliya" dareenkeeda, laakiin horumariye ahaan, waxaa jira waxyaabo aan jeclahay la shaqaynta Haiku. Inta badan, waxay la mid tahay Adeegga Dhiska Furan, oo ah qalabyada lagu dhisayo Linux: aad u xoog badan, oo leh hab habaysan, laakiin xad-dhaaf u ah codsigayga yar ee "hello world".

Mar labaad, sida uu sheegay Mr. waddlesplash:

Runtii, HaikuPorter waa mid aad u adag sida caadiga ah (oo lagu daray waxaa jira qaab lint ah iyo sidoo kale qaab adag si looga dhigo mid aad u adag!), Laakiin kaliya sababtoo ah waxay abuurtaa baakado shaqeyn doona, halkii ay ka abuuri lahayd baakadaha kaliya. Taasi waa sababta uu uga cabanayo ku-tiirsanaanta aan la shaacin, maktabadaha aan si sax ah loo soo dejin, nuqulo khaldan, iwm. Hadafka ayaa ah in la qabto wax kasta oo dhibaato ah, oo ay ku jiraan kuwa mustaqbalka, ka hor inta uusan isticmaaluhu ogaanin (tani waa sababta aysan suurtagal ahayn in la rakibo avrdude, sababtoo ah ku-tiirsanaanta ayaa dhab ahaantii lagu qeexay cuntada). Maktabadaha kaliya maaha baakado gaar ah ama xitaa noocyo SO gaar ah. HaikuPorter waxay hubisaa in waxaas oo dhan lagu arkay cuntooyinka laftooda si looga fogaado khaladaadka inta lagu jiro fulinta.

Mabda 'ahaan, heerkan adag ayaa xaq u leh marka la abuurayo nidaamka hawlgalka, laakiin waxay iigu muuqataa mid aan loo baahnayn codsi "hello world". Waxaan go'aansaday inaan wax kale tijaabiyo.

Codsiyada ku dhis qaabka hpkg iyadoo la adeegsanayo amarka "xirmo samee".

Waxaa laga yaabaa in, tan Tilmaamaha fudud miyay si fiican iigu shaqayn doonaan?

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

Si lama filaan ah u dhaqso badan, si lama filaan ah u fudud, si lama filaan ah waxtar u leh. Sida saxda ah ee aan u jeclahay, cajiib!

Rakibaadda - waa maxay iyo halkee?

U raray faylka QtQuickApp.hpkg ~/config/packagesiyadoo la isticmaalayo maamulaha faylka, ka dib QtQuickApp ayaa si qarsoodi ah ugu soo muuqday ~/config/apps.
Mar labaad, si lama filaan ah u dhaqso badan, fudud oo waxtar leh. Cajiib, cajiib ah!

Laakin... (halkeen ahaan lahayn la'aantood!)

Abka ayaa wali ka maqan liiska abka iyo QuickLaunch. Waxaan u maleynayaa inaan horay u aqaanay sida loo hagaajiyo. Maamulaha faylka waxaan ka dhaqaajiyaa QtQuickApp.hpkg ~/config/packages ilaa /system/packages.

Maya, wali waa maqan Sida muuqata, aniga (si fiican, iyo tilmaamaha) ayaa wax seegay.

Markaan eegay tab "Content" ee HaikuDepot codsiyada kale qaarkood, waxaan arkay inay jiraan faylal sida /data/mimedb/application/x-vnd... waxa ka sii yaab badan /data/deskbar/menu/Applications/….

Hagaag, maxaan dhigaa meeshaas? Kaalay...

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

Aad ayaan u hubaa in khiyaanadani shaqeyn doonto, laakiin su'aalaha ayaa weli ah: maxay tani lama huraan u tahay, maxaa loogu talagalay? Waxaan u maleynayaa in tani ay burburinayso aragtida guud ee ah in nidaamku aad u casrisan yahay.

Sida uu sharaxay Mr. waddlesplash:

Mararka qaarkood waxaa jira codsiyo ay codsiyada kale u baahan yihiin laakiin kuma jiraan liiska. Tusaale ahaan, LegacyPackageInstaller ee shaashaddaada, ku habaynta kaydadka .pkg ee qaabka BeOS. Waxaan jeclaan lahaa dadka isticmaala inay rakibaan, laakiin joogitaankooda liiska waxay u horseedi doontaa jahwareer.

Sababaha qaar waxay iila muuqataa in uu jiro xal fudud, tusaale ahaan Hidden=true ku jira faylasha .desktop Linux. Waa maxay sababta aan macluumaadka "qarsoon" uga dhigin kheyraad iyo sifo nidaamka faylka?

Waxa aan si gaar ah u khiyaanayn waa magaca (qaar) codsiga oo muujinaya menu-ka, deskbar, si adag ugu xidhan jidka.

Mudane. waddlesplash ayaa sharaxaya tan:

"Deskbar" kiiskan waa in loo fahmo nooc ka mid ah erey guud (si la mid ah "taskbar", taas oo tixraacaysa codsiga Windows iyo fikradda guud labadaba). Waa hagaag, tan iyo tan deskbar, maaha "Miiska", tani sidoo kale waxaa loo fahmi karaa si la mid ah.

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar
2 "ku dhawaad ​​isku mid" hagayaal ay ku jiraan codsiyo

Waa maxay sababta ay u jiraan 2 buug oo leh arjiyada, iyo sidoo kale waa maxay sababta QtQuickApplication-kaygu mid u yahay, laakiin aanu kan kale ugu jirin? (Ka dib oo dhan, kani maaha hal nidaam, laakiin waa isticmaale labaad, kaas oo aniga shakhsi ahaan ii fahmi kara).
Runtii waan wareersanahay oo waxaan qabaa in tani la midoobo.

faallo by Mr. waddlesplash

Buugga Apps-ka waxaa ku jira codsiyo aan looga baahnayn menu-ka. Laakiin xaaladda menu-ka ayaa runtii u baahan in la hagaajiyo, si looga dhigo mid la beddeli karo.

Codsi, ama ma dhici doonto πŸ˜‰

Waxaan la yaabay: runtii lama huraan baa in codsiyada la soo galo /system/apps, haddii isticmaalayaashu ay ku arkaan halkaas, waa mid aan loo baahnayn. Waxaa laga yaabaa inay fiicnaan lahayd in la dhigo meel kale oo aan isticmaaluhu la kulmi doonin? Sida lagu sameeyo Mac OS X, halkaas oo waxyaabaha ku jira baakadaha .app, kaas oo aan u muuqan isticmaaluhu gudaha /Applications, ku dhuumanaya moolka dheer ee /Nidaamka/Library/β€¦β€œ`.

Ka waran ku tiirsanaanta?

Waxaan qabaa inay mudan tahay in si uun loo qeexo ku tiirsanaanta, sax? Qt ma loo tixgelin karaa qayb qasab ah oo ka mid ah rakibidda Haiku si caadi ah? Maya! Qt laguma rakibin si caadi ah. Xidhmada dhisuhu si toos ah ma u ogaan karaa ku-tiirsanaanta isagoo eegaya faylasha ELF? Waxaa la ii sheegay in HaikuPorter dhab ahaantii tan sameeyo, laakiin package Maya Taasi waa sababta oo ah waa "baakada dhise" oo keligeed abuurta faylasha hpkg.

Haiku miyaa laga dhigayaa mid aad u casrisan iyadoo lagu darayo siyaasad ah in xirmo aysan ku xirneyn xirmooyinka ka baxsan Haiku? haikuports? (Waxaan jeclaan lahaa, sababtoo ah siyaasaddan oo kale ayaa wax badan ka dhigi doonta mid aad u fudud - nidaamku wuxuu si toos ah u xallin karaa ku tiirsanaanta xirmo kasta oo laga soo dejiyo meel kasta, iyada oo aan lagu khaldin ilo xirmo dheeraad ah.)

Mudane. waddlesplash wuxuu sharxayaa:

Ma jecli inaan xaddidno xorriyadda horumariyeyaasha si aad u badan, sababtoo ah way iska caddahay in haddii CompanyX ay rabto inay taageerto barnaamijkeeda softiweerka ah ee ku tiirsanaanta (iyo sidaas darteed kayd), waxay si buuxda u samayn doontaa si xor ah.

Xaaladdaas, waxaa laga yaabaa inay mudan tahay in lagu taliyo in xirmooyinka qolo saddexaad ay ka fogaadaan ku-tiirsanaanta shay kasta oo aan lagu darin haikuports iyadoo gebi ahaanba baakad wax kasta oo loo baahan yahay arjiga. Laakiin waxaan filayaa in tani ay tahay mowduuc loogu talagalay maqaal mustaqbalka ah ee taxanahan. [Qoraagu ma ku wajahan yahay AppImage? - qiyaastii. turjumaan]

Ku darida astaanta codsiga

Ka waran haddii aan rabo in aan ku daro mid ka mid ah summada gudaha ku dhex jira ee nadiifka ah agabka codsigayga cusub ee la abuuray? Waxaa soo baxday in tani ay tahay mawduuc cajiib ah, sidaas darteed waxay noqon doontaa saldhigga maqaalka soo socda.

Sidee loo abaabulaa dhismooyinka arjiyada joogtada ah?

Bal qiyaas mashruuc sida Inkscape (haa, waan ogahay in aan weli laga helin Haiku, laakiin way ku habboon tahay in lagu soo bandhigo). Waxay leeyihiin kayd koodhka isha https://gitlab.com/inkscape/inkscape.
Mar kasta oo uu qof sameeyo isbeddelkooda kaydka, dhisidda tuubooyinka ayaa la bilaabay, ka dib isbeddelada si toos ah ayaa loo tijaabiyaa, loo dhisay, iyo codsiga baakadaha kala duwan, oo ay ku jiraan AppImage for Linux (xirmo codsi oo gooni ah oo loo soo dejisan karo tijaabada maxalliga ah iyada oo aan loo eegin maxaa laga yaabaa ama aan lagu rakibin nidaamka [Waan ogaa! - qiyaastii. turjumaan]). Isla wax la mid ah ayaa ku dhaca codsi kasta oo isku darka laanta, si aad u soo dejisan karto codsiga laga dhisay koodhka lagu soo jeediyay codsiga isku darka ka hor inta aan la midoobin.

Maalintii shanaad ee aan Haiku la joogo: aan soo dejinno barnaamijyada qaar
Ku biir codsiyada heerarka dhismaha iyo awooda lagu soo dejiyo binary-ga la soo ururiyay haddii dhismuhu guulaysto (cagaaran lagu calaamadeeyay)

Dhismuhu wuxuu ku socdaa weelasha Docker. GitLab wuxuu bixiyaa orodyahanno bilaash ah Linux, waxaanan u maleynayaa inay suurtogal tahay in lagu daro orodyahannadaada (sida, ma arko sida ay tani ugu shaqeyn karto nidaamyada sida Haiku, oo aan ogahay inaysan haysan Docker ama wax u dhigma, laakiin sidoo kale FreeBSD ma jiro Docker, markaa dhibaatadani maaha mid u gaar ah Haiku).

Fikrad ahaan, codsiyada Haiku waxaa lagu dhisi karaa gudaha weelka Docker ee Linux. Xaaladdan oo kale, shirka Haiku waxaa lagu soo bandhigi karaa dhuumaha hadda jira. Ma jiraan isku-dubaridyo isku-dhafan? Mise waa inaan ku daydaa dhammaan Haiku gudaha weelka Docker anigoo isticmaalaya shay sida QEMU/KVM (aniga oo u malaynaya inay sidaas ugu shaqayn doonto gudaha Docker)? By habka, mashruucyo badan ayaa isticmaala mabaadi'da la midka ah. Tusaale ahaan, Scribus waxa uu sameeyaa tan - horeba waa loogu diyaar Haiku. Maalin ayaa iman doonta maalin aan diri karo sida U jiid codsiyada mashaariicda kale si aad ugu darto taageerada Haiku.

Mid ka mid ah horumarinta ayaa sharaxaya:

Mashruucyada kale ee raba inay iyagu abuuraan baakado, habka caadiga ah ee CMake/CPack waa la taageerayaa. Nidaamyada kale ee wax-dhisidda waxaa lagu taageeri karaa in si toos ah loo waco barnaamijka dhismaha xirmada, taas oo fiican haddii dadku ay xiiseynayaan. Waayo-aragnimadu waxay muujinaysaa: ilaa hadda ma jirin xiiso badan, sidaas darteed haikuporter wuxuu u shaqeeyay sida ku habboon annaga, laakiin, ugu dambeyntii, labada habba waa inay wada shaqeeyaan. Waa in aan soo bandhignaa qalabyo kala duwan oo loogu talagalay software-ka-dhisidda ee Linux ama nidaam kasta oo kale oo server ah (Haiku looma qorsheynin inuu ku shaqeeyo server-yada).

Sacab qotoma ayaan siinayaa. Isticmaalayaasha Linux ee joogtada ah waxay wataan dhammaan culeyskan dheeraadka ah iyo shandado dheeraad ah (ammaanka, xakamaynta adag, iwm.) taas oo lagama maarmaan u ah nidaamka hawlgalka server-ka, laakiin maaha mid shakhsi ahaaneed. Markaa waxaan si buuxda u aqbalay in awood u yeelashada in lagu dhiso barnaamijyada Haiku Linux ay tahay dariiqa loo maro.

gunaanad

U dirida codsiyada POSIX Haiku waa suurtagal, laakiin waxaa laga yaabaa inay ka qaalisan tahay dib-u-dhiska caadiga ah. Xaqiiqdii waan ku sii jiri lahaa tan muddo dheer haddii aysan ahayn caawinta dadka ka socda kanaalka #haiku ee shabakadda irc.freenode.net. Laakiin xitaa mar walba isla markiiba ma ay arkin waxa khaldan.

Codsiyada ku qoran Qt waa ka reebis fudud. Waxaan isku daray codsiga demo fudud iyada oo aan wax dhibaato ah.

Dhisida xirmo loogu talagalay codsiyada fudud sidoo kale waa wax fudud, laakiin kaliya kuwa "caado ahaan la sii daayo", i.e. Haysashada kaydka koodhka isha noocee ah ee loogu talagalay in lagu taageero haikuports. Dhisme joogto ah (dhis u samayn kasta oo isbeddel ah) oo leh GitHub, wax walbaa waxay u muuqdaan kuwo aan fududayn. Halkan Haiku wuxuu dareemayaa qaybinta Linux ka badan natiijada Mac, halkaas oo markaad gujiso "dhiso" badhanka XCode waxaad heleysaa xirmo .app, diyaar u ah in la geliyo sawirka diskka .dmg, loo diyaariyey in lagu soo dejiyo mareegahayga.
Dhisidda codsiyada joogtada ah ee ku salaysan nidaamka hawlgalka "server", tusaale ahaan, Linux, waxay u badan tahay inay suurtogal noqon doonto haddii ay jirto baahi ka timid horumarinta, laakiin hadda mashruuca Haiku wuxuu leeyahay hawlo kale oo culus.

Isku day naftaada! Ka dib oo dhan, mashruuca Haiku wuxuu bixiyaa sawirro laga soo qaaday DVD ama USB, oo la sameeyay Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Si aad u rakibto, kaliya soo deji sawirka oo ku qor flash drive adigoo isticmaalaya Etcher

Wax su'aalo ah ma qabtaa? Waxaanu kugu martiqaadaynaa ku hadalka Ruushka kanaalka telegram.

Dulmar cilad: Sida cagaha looga toogto C iyo C++. Ururinta karinta Haiku OS

ka qoraa tarjumaad: kani waa maqaalkii shanaad ee taxanaha ahaa ee Haiku.

Liiska maqaallada: Marka hore Midka labaad Saddexaad Afaraad

Source: www.habr.com

Add a comment