451
451
mkdir -p " $__RootfsDir "
452
452
__RootfsDir=" $( cd " $__RootfsDir " && pwd ) "
453
453
454
+ __hasWget=
455
+ ensureDownloadTool ()
456
+ {
457
+ if command -v wget & > /dev/null; then
458
+ __hasWget=1
459
+ elif command -v curl & > /dev/null; then
460
+ __hasWget=0
461
+ else
462
+ >&2 echo " ERROR: either wget or curl is required by this script."
463
+ exit 1
464
+ fi
465
+ }
466
+
454
467
if [[ " $__CodeName " == " alpine" ]]; then
455
468
__ApkToolsVersion=2.12.11
456
469
__ApkToolsDir=" $( mktemp -d) "
457
470
__ApkKeysDir=" $( mktemp -d) "
458
-
459
471
arch=" $( uname -m) "
460
- wget " https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion /$arch /apk.static" -P " $__ApkToolsDir "
472
+
473
+ ensureDownloadTool
474
+
475
+ if [[ " $__hasWget " == 1 ]]; then
476
+ wget -P " $__ApkToolsDir " " https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion /$arch /apk.static"
477
+ else
478
+ curl -SLO --create-dirs --output-dir " $__ApkToolsDir " " https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion /$arch /apk.static"
479
+ fi
461
480
if [[ " $arch " == " x86_64" ]]; then
462
481
__ApkToolsSHA512SUM=" 53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33"
463
482
elif [[ " $arch " == " aarch64" ]]; then
@@ -520,12 +539,23 @@ if [[ "$__CodeName" == "alpine" ]]; then
520
539
elif [[ " $__CodeName " == " freebsd" ]]; then
521
540
mkdir -p " $__RootfsDir " /usr/local/etc
522
541
JOBS=${MAXJOBS:= " $( getconf _NPROCESSORS_ONLN) " }
523
- wget -O - " https://download.freebsd.org/ftp/releases/${__FreeBSDArch} /${__FreeBSDMachineArch} /${__FreeBSDBase} /base.txz" | tar -C " $__RootfsDir " -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
542
+
543
+ ensureDownloadTool
544
+
545
+ if [[ " $__hasWget " == 1 ]]; then
546
+ wget -O- " https://download.freebsd.org/ftp/releases/${__FreeBSDArch} /${__FreeBSDMachineArch} /${__FreeBSDBase} /base.txz" | tar -C " $__RootfsDir " -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
547
+ else
548
+ curl -SL " https://download.freebsd.org/ftp/releases/${__FreeBSDArch} /${__FreeBSDMachineArch} /${__FreeBSDBase} /base.txz" | tar -C " $__RootfsDir " -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version
549
+ fi
524
550
echo " ABI = \" FreeBSD:${__FreeBSDABI} :${__FreeBSDMachineArch} \" ; FINGERPRINTS = \" ${__RootfsDir} /usr/share/keys\" ; REPOS_DIR = [\" ${__RootfsDir} /etc/pkg\" ]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > " ${__RootfsDir} " /usr/local/etc/pkg.conf
525
551
echo " FreeBSD: { url: \" pkg+http://pkg.FreeBSD.org/\$ {ABI}/quarterly\" , mirror_type: \" srv\" , signature_type: \" fingerprints\" , fingerprints: \" ${__RootfsDir} /usr/share/keys/pkg\" , enabled: yes }" > " ${__RootfsDir} " /etc/pkg/FreeBSD.conf
526
552
mkdir -p " $__RootfsDir " /tmp
527
553
# get and build package manager
528
- wget -O - " https://github.com/freebsd/pkg/archive/${__FreeBSDPkg} .tar.gz" | tar -C " $__RootfsDir " /tmp -zxf -
554
+ if [[ " $__hasWget " == 1 ]]; then
555
+ wget -O- " https://github.com/freebsd/pkg/archive/${__FreeBSDPkg} .tar.gz" | tar -C " $__RootfsDir " /tmp -zxf -
556
+ else
557
+ curl -SL " https://github.com/freebsd/pkg/archive/${__FreeBSDPkg} .tar.gz" | tar -C " $__RootfsDir " /tmp -zxf -
558
+ fi
529
559
cd " $__RootfsDir /tmp/pkg-${__FreeBSDPkg} "
530
560
# needed for install to succeed
531
561
mkdir -p " $__RootfsDir " /host/etc
@@ -539,15 +569,30 @@ elif [[ "$__CodeName" == "illumos" ]]; then
539
569
mkdir " $__RootfsDir /tmp"
540
570
pushd " $__RootfsDir /tmp"
541
571
JOBS=${MAXJOBS:= " $( getconf _NPROCESSORS_ONLN) " }
572
+
573
+ ensureDownloadTool
574
+
542
575
echo " Downloading sysroot."
543
- wget -O - https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C " $__RootfsDir " -xzf -
576
+ if [[ " $__hasWget " == 1 ]]; then
577
+ wget -O- https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C " $__RootfsDir " -xzf -
578
+ else
579
+ curl -SL https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C " $__RootfsDir " -xzf -
580
+ fi
544
581
echo " Building binutils. Please wait.."
545
- wget -O - https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
582
+ if [[ " $__hasWget " == 1 ]]; then
583
+ wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
584
+ else
585
+ curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf -
586
+ fi
546
587
mkdir build-binutils && cd build-binutils
547
588
../binutils-2.33.1/configure --prefix=" $__RootfsDir " --target=" ${__illumosArch} -sun-solaris2.10" --program-prefix=" ${__illumosArch} -illumos-" --with-sysroot=" $__RootfsDir "
548
589
make -j " $JOBS " && make install && cd ..
549
590
echo " Building gcc. Please wait.."
550
- wget -O - https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
591
+ if [[ " $__hasWget " == 1 ]]; then
592
+ wget -O- https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
593
+ else
594
+ curl -SL https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf -
595
+ fi
551
596
CFLAGS=" -fPIC"
552
597
CXXFLAGS=" -fPIC"
553
598
CXXFLAGS_FOR_TARGET=" -fPIC"
@@ -564,15 +609,23 @@ elif [[ "$__CodeName" == "illumos" ]]; then
564
609
fi
565
610
BaseUrl=" $BaseUrl /packages/SmartOS/trunk/${__illumosArch} /All"
566
611
echo " Downloading manifest"
567
- wget " $BaseUrl "
612
+ if [[ " $__hasWget " == 1 ]]; then
613
+ wget " $BaseUrl "
614
+ else
615
+ curl -SLO " $BaseUrl "
616
+ fi
568
617
echo " Downloading dependencies."
569
618
read -ra array <<< " $__IllumosPackages"
570
619
for package in " ${array[@]} " ; do
571
620
echo " Installing '$package '"
572
621
# find last occurrence of package in listing and extract its name
573
622
package=" $( sed -En ' /.*href="(' " $package " ' -[0-9].*).tgz".*/h;$!d;g;s//\1/p' All) "
574
623
echo " Resolved name '$package '"
575
- wget " $BaseUrl " /" $package " .tgz
624
+ if [[ " $__hasWget " == 1 ]]; then
625
+ wget " $BaseUrl " /" $package " .tgz
626
+ else
627
+ curl -SLO " $BaseUrl " /" $package " .tgz
628
+ fi
576
629
ar -x " $package " .tgz
577
630
tar --skip-old-files -xzf " $package " .tmp.tg* -C " $__RootfsDir " 2> /dev/null
578
631
done
@@ -581,10 +634,17 @@ elif [[ "$__CodeName" == "illumos" ]]; then
581
634
rm -rf " $__RootfsDir " /{tmp,+* }
582
635
mkdir -p " $__RootfsDir " /usr/include/net
583
636
mkdir -p " $__RootfsDir " /usr/include/netpacket
584
- wget -P " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
585
- wget -P " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
586
- wget -P " $__RootfsDir " /usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
587
- wget -P " $__RootfsDir " /usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
637
+ if [[ " $__hasWget " == 1 ]]; then
638
+ wget -P " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
639
+ wget -P " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
640
+ wget -P " $__RootfsDir " /usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
641
+ wget -P " $__RootfsDir " /usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
642
+ else
643
+ curl -SLO --create-dirs --output-dir " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h
644
+ curl -SLO --create-dirs --output-dir " $__RootfsDir " /usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h
645
+ curl -SLO --create-dirs --output-dir " $__RootfsDir " /usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h
646
+ curl -SLO --create-dirs --output-dir " $__RootfsDir " /usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h
647
+ fi
588
648
elif [[ " $__CodeName " == " haiku" ]]; then
589
649
JOBS=${MAXJOBS:= " $( getconf _NPROCESSORS_ONLN) " }
590
650
@@ -594,9 +654,16 @@ elif [[ "$__CodeName" == "haiku" ]]; then
594
654
595
655
mkdir " $__RootfsDir /tmp/download"
596
656
657
+ ensureDownloadTool
658
+
597
659
echo " Downloading Haiku package tool"
598
660
git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 " $__RootfsDir /tmp/script"
599
- wget -O " $__RootfsDir /tmp/download/hosttools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --hosttools) "
661
+ if [[ " $__hasWget " == 1 ]]; then
662
+ wget -O " $__RootfsDir /tmp/download/hosttools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --hosttools) "
663
+ else
664
+ curl -SLo " $__RootfsDir /tmp/download/hosttools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --hosttools) "
665
+ fi
666
+
600
667
unzip -o " $__RootfsDir /tmp/download/hosttools.zip" -d " $__RootfsDir /tmp/bin"
601
668
602
669
DepotBaseUrl=" https://depot.haiku-os.org/__api/v2/pkg/get-pkg"
@@ -609,14 +676,25 @@ elif [[ "$__CodeName" == "haiku" ]]; then
609
676
echo " Downloading $package ..."
610
677
# API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60
611
678
# The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598
612
- hpkgDownloadUrl=" $( wget -qO- --post-data=' {"name":"' " $package " ' ","repositorySourceCode":"haikuports_' $__HaikuArch ' ","versionType":"LATEST","naturalLanguageCode":"en"}' \
613
- --header=' Content-Type:application/json' " $DepotBaseUrl " | jq -r ' .result.versions[].hpkgDownloadURL' ) "
614
- wget -P " $__RootfsDir /tmp/download" " $hpkgDownloadUrl "
679
+ if [[ " $__hasWget " == 1 ]]; then
680
+ hpkgDownloadUrl=" $( wget -qO- --post-data ' {"name":"' " $package " ' ","repositorySourceCode":"haikuports_' $__HaikuArch ' ","versionType":"LATEST","naturalLanguageCode":"en"}' \
681
+ --header ' Content-Type:application/json' " $DepotBaseUrl " | jq -r ' .result.versions[].hpkgDownloadURL' ) "
682
+ wget -P " $__RootfsDir /tmp/download" " $hpkgDownloadUrl "
683
+ else
684
+ hpkgDownloadUrl=" $( curl -sSL -XPOST --data ' {"name":"' " $package " ' ","repositorySourceCode":"haikuports_' $__HaikuArch ' ","versionType":"LATEST","naturalLanguageCode":"en"}' \
685
+ --header ' Content-Type:application/json' " $DepotBaseUrl " | jq -r ' .result.versions[].hpkgDownloadURL' ) "
686
+ curl -SLO --create-dirs --output-dir " $__RootfsDir /tmp/download" " $hpkgDownloadUrl "
687
+ fi
615
688
done
616
689
for package in haiku haiku_devel; do
617
690
echo " Downloading $package ..."
618
- hpkgVersion=" $( wget -qO- $HpkgBaseUrl | sed -n ' s/^.*version: "\([^"]*\)".*$/\1/p' ) "
619
- wget -P " $__RootfsDir /tmp/download" " $HpkgBaseUrl /packages/$package -$hpkgVersion -1-$__HaikuArch .hpkg"
691
+ if [[ " $__hasWget " == 1 ]]; then
692
+ hpkgVersion=" $( wget -qO- " $HpkgBaseUrl " | sed -n ' s/^.*version: "\([^"]*\)".*$/\1/p' ) "
693
+ wget -P " $__RootfsDir /tmp/download" " $HpkgBaseUrl /packages/$package -$hpkgVersion -1-$__HaikuArch .hpkg"
694
+ else
695
+ hpkgVersion=" $( curl -sSL " $HpkgBaseUrl " | sed -n ' s/^.*version: "\([^"]*\)".*$/\1/p' ) "
696
+ curl -SLO --create-dirs --output-dir " $__RootfsDir /tmp/download" " $HpkgBaseUrl /packages/$package -$hpkgVersion -1-$__HaikuArch .hpkg"
697
+ fi
620
698
done
621
699
622
700
# Set up the sysroot
@@ -629,7 +707,11 @@ elif [[ "$__CodeName" == "haiku" ]]; then
629
707
630
708
# Download buildtools
631
709
echo " Downloading Haiku buildtools"
632
- wget -O " $__RootfsDir /tmp/download/buildtools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch ) "
710
+ if [[ " $__hasWget " == 1 ]]; then
711
+ wget -O " $__RootfsDir /tmp/download/buildtools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch ) "
712
+ else
713
+ curl -SLo " $__RootfsDir /tmp/download/buildtools.zip" " $( " $__RootfsDir /tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch ) "
714
+ fi
633
715
unzip -o " $__RootfsDir /tmp/download/buildtools.zip" -d " $__RootfsDir "
634
716
635
717
# Cleaning up temporary files
0 commit comments