Compare commits
No commits in common. "master" and "imx586-full" have entirely different histories.
master
...
imx586-ful
|
|
@ -1,29 +1,63 @@
|
|||
# 大型编译产物(镜像、工具链等)
|
||||
#
|
||||
# NOTE! Don't add files that are generated in specific
|
||||
# subdirectories here. Add them in the ".gitignore" file
|
||||
# in that subdirectory instead.
|
||||
#
|
||||
# NOTE! Please use 'git ls-files -i --exclude-standard'
|
||||
# command after changing this file, to see if there are
|
||||
# any tracked files which get ignored after the change.
|
||||
#
|
||||
# Normal rules
|
||||
#
|
||||
|
||||
*.bak
|
||||
*.swp
|
||||
*.img
|
||||
*.img.sha256
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.tar.xz
|
||||
*.patch
|
||||
|
||||
# 编译缓存与临时文件
|
||||
orangepi-build/output/
|
||||
orangepi-build/dl/
|
||||
orangepi-build/toolchains/
|
||||
orangepi-build/external/cache/
|
||||
orangepi-build/.tmp/
|
||||
build_*.log
|
||||
b.sh
|
||||
.tmp
|
||||
kernel
|
||||
output
|
||||
u-boot
|
||||
toolchains
|
||||
userpatches
|
||||
|
||||
# 共享缓存目录
|
||||
OrangePi_cache/
|
||||
mkimage.sh
|
||||
|
||||
# 编译日志
|
||||
compile-output.log
|
||||
*.log
|
||||
!external/patch/u-boot
|
||||
!external/patch/kernel
|
||||
!external/patch/**/*.patch
|
||||
!external/patch/**/series.conf
|
||||
!external/config/kernel
|
||||
!external/packages/bsp/common/etc/kernel
|
||||
!external/packages/bsp/rk3588/etc/kernel
|
||||
|
||||
# 系统文件
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# SDK 源码包(外部下载)
|
||||
SDKs/
|
||||
sources/
|
||||
external/cache/.gpg
|
||||
external/cache/hash
|
||||
external/cache/rootfs
|
||||
external/cache/sources/extra
|
||||
external/cache/sources/wiringOP
|
||||
external/cache/sources/evalcache
|
||||
external/cache/sources/oh-my-zsh
|
||||
external/cache/sources/sunxi-tools
|
||||
external/cache/sources/rkbin-tools
|
||||
external/cache/sources/ffmpeg_kodi*
|
||||
external/cache/sources/hi3403-tools
|
||||
external/cache/sources/t527_packages
|
||||
external/cache/sources/ascend-driver
|
||||
external/cache/sources/orangepi-test
|
||||
external/cache/sources/component_cix*
|
||||
external/cache/sources/wiringOP-Python
|
||||
external/cache/sources/rk3588_packages*
|
||||
external/cache/sources/rk356x_packages
|
||||
external/cache/sources/rk35xx_packages
|
||||
external/cache/sources/rk-rootfs-build*
|
||||
external/cache/sources/sun60iw2_packages
|
||||
external/cache/sources/orangepi-firmware*
|
||||
external/cache/sources/rk3399_gst_xserver_libs
|
||||
external/cache/sources/arm-trusted-firmware-2.2-hi3403
|
||||
external/cache/sources/arm-trusted-firmware-sunxi-mainline
|
||||
external/cache/debs/arm64/balenaEtcher-1.7.9+5945ab1f-arm64.AppImage
|
||||
external/cache/debs/arm64/balena-etcher-electron_1.7.9+5945ab1f_arm64.deb
|
||||
|
|
|
|||
Binary file not shown.
BIN
Image/bl32.bin
BIN
Image/bl32.bin
Binary file not shown.
|
|
@ -1,13 +0,0 @@
|
|||
FIRMWARE_VER: 1.0
|
||||
MACHINE_MODEL: RK3588
|
||||
MACHINE_ID: 007
|
||||
MANUFACTURER: RK3588
|
||||
MAGIC: 0x5041524B
|
||||
ATAG: 0x00200800
|
||||
MACHINE: 0xffffffff
|
||||
CHECK_MASK: 0x80
|
||||
PWR_HLD: 0,0,A,0,1
|
||||
TYPE: GPT
|
||||
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootfs),0x00040000@0x01c78000(oem),-@0x01cb8000(userdata:grow)
|
||||
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
|
||||
uuid:boot=7A3F0000-0000-446A-8000-702F00006273
|
||||
|
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{description}
|
||||
Copyright (C) {year} {fullname}
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
{signature of Ty Coon}, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
## Supported boards
|
||||
|
||||
Soc | Boards |
|
||||
|:--|:--|
|
||||
| Allwinner H6 | Orange Pi 3/3 LTS |
|
||||
| Allwinner H616 | Orange Pi Zero2/Zero2w/Zero3 |
|
||||
| Allwinner T527 | Orange Pi 4A |
|
||||
| Allwinner A733 | Orange Pi 4Pro |
|
||||
| Rockchip RK3399 | Orange Pi 4/4B/4 LTS/800 |
|
||||
| Rockchip RK3566 | Orange Pi 3B/CM4 |
|
||||
| Rockchip RK3588S | Orange Pi 5/5B/5Pro/CM5/CM5-tablet |
|
||||
| Rockchip RK3588 | Orange Pi 5Plus/5MAX/5Ultra |
|
||||
| Cix P1 | Orange Pi 6Plus |
|
||||
| Starfive JH7110 | Orange Pi RV |
|
||||
| Ky X1 | Orange Pi RV2/R2S |
|
||||
|
||||
## Download links
|
||||
|
||||
- 中文链接: http://www.orangepi.cn
|
||||
- English link:http://www.orangepi.org
|
||||
|
||||
## Supported Host Systems
|
||||
- Ubuntu 22.04
|
||||
|
|
@ -0,0 +1,307 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (c) 2013-2021 Igor Pecovnik, igor.pecovnik@gma**.com
|
||||
#
|
||||
# This file is licensed under the terms of the GNU General Public
|
||||
# License version 2. This program is licensed "as is" without any
|
||||
# warranty of any kind, whether express or implied.
|
||||
|
||||
# DO NOT EDIT THIS FILE
|
||||
# use configuration files like config-default.conf to set the build configuration
|
||||
# Please check Orange Pi documentation for more info
|
||||
# http://www.orangepi.cn/downloadresourcescn
|
||||
# http://www.orangepi.org/downloadresources
|
||||
|
||||
SRC="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
|
||||
|
||||
# check for whitespace in ${SRC} and exit for safety reasons
|
||||
grep -q "[[:space:]]" <<<"${SRC}" && { echo "\"${SRC}\" contains whitespace. Not supported. Aborting." >&2 ; exit 1 ; }
|
||||
|
||||
cd "${SRC}" || exit
|
||||
|
||||
if [[ "${ORANGEPI_ENABLE_CALL_TRACING}" == "yes" ]]; then
|
||||
set -T # inherit return/debug traps
|
||||
mkdir -p "${SRC}"/output/debug
|
||||
echo -n "" > "${SRC}"/output/debug/calls.txt
|
||||
trap 'echo "${BASH_LINENO[@]}|${BASH_SOURCE[@]}|${FUNCNAME[@]}" >> ${SRC}/output/debug/calls.txt ;' RETURN
|
||||
fi
|
||||
|
||||
if [[ -f "${SRC}"/scripts/general.sh ]]; then
|
||||
|
||||
# shellcheck source=scripts/general.sh
|
||||
source "${SRC}"/scripts/general.sh
|
||||
|
||||
else
|
||||
|
||||
echo "Error: missing build directory structure"
|
||||
echo "Please clone the full repository by https://github.com/orangepi-xunlong/orangepi-build"
|
||||
exit 255
|
||||
|
||||
fi
|
||||
|
||||
# Add the variables needed at the beginning of the path
|
||||
check_args ()
|
||||
{
|
||||
|
||||
for p in "$@"; do
|
||||
|
||||
case "${p%=*}" in
|
||||
LIB_TAG)
|
||||
# Take a variable if the branch exists locally
|
||||
if [ "${p#*=}" == "$(git branch | \
|
||||
gawk -v b="${p#*=}" '{if ( $NF == b ) {print $NF}}')" ]; then
|
||||
echo -e "[\e[0;35m warn \x1B[0m] Setting $p"
|
||||
eval "$p"
|
||||
else
|
||||
echo -e "[\e[0;35m warn \x1B[0m] Skip $p setting as LIB_TAG=\"\""
|
||||
eval LIB_TAG=""
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
|
||||
check_args "$@"
|
||||
|
||||
|
||||
update_src() {
|
||||
|
||||
cd "${SRC}" || exit
|
||||
if [[ ! -f "${SRC}"/.ignore_changes ]]; then
|
||||
echo -e "[\e[0;32m o.k. \x1B[0m] This script will try to update"
|
||||
|
||||
CHANGED_FILES=$(git diff --name-only)
|
||||
if [[ -n "${CHANGED_FILES}" ]]; then
|
||||
echo -e "[\e[0;35m warn \x1B[0m] Can't update since you made changes to: \e[0;32m\n${CHANGED_FILES}\x1B[0m"
|
||||
while true; do
|
||||
echo -e "Press \e[0;33m<Ctrl-C>\x1B[0m or \e[0;33mexit\x1B[0m to abort compilation"\
|
||||
", \e[0;33m<Enter>\x1B[0m to ignore and continue, \e[0;33mdiff\x1B[0m to display changes"
|
||||
read -r
|
||||
if [[ "${REPLY}" == "diff" ]]; then
|
||||
git diff
|
||||
elif [[ "${REPLY}" == "exit" ]]; then
|
||||
exit 1
|
||||
elif [[ "${REPLY}" == "" ]]; then
|
||||
break
|
||||
else
|
||||
echo "Unknown command!"
|
||||
fi
|
||||
done
|
||||
elif [[ $(git branch | grep "*" | awk '{print $2}') != "${LIB_TAG}" && -n "${LIB_TAG}" ]]; then
|
||||
git checkout "${LIB_TAG:-master}"
|
||||
git pull
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
TMPFILE=$(mktemp)
|
||||
chmod 644 "${TMPFILE}"
|
||||
{
|
||||
|
||||
echo SRC="$SRC"
|
||||
echo LIB_TAG="$LIB_TAG"
|
||||
declare -f update_src
|
||||
#echo "update_src"
|
||||
|
||||
} > "$TMPFILE"
|
||||
|
||||
#do not update/checkout git with root privileges to messup files onwership.
|
||||
#due to in docker/VM, we can't su to a normal user, so do not update/checkout git.
|
||||
if [[ $(systemd-detect-virt) == 'none' ]]; then
|
||||
|
||||
if [[ "${EUID}" == "0" ]]; then
|
||||
su "$(stat --format=%U "${SRC}"/.git)" -c "bash ${TMPFILE}"
|
||||
else
|
||||
bash "${TMPFILE}"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
rm "${TMPFILE}"
|
||||
|
||||
|
||||
if [[ "${EUID}" == "0" ]] || [[ "${1}" == "vagrant" ]]; then
|
||||
:
|
||||
elif [[ "${1}" == docker || "${1}" == dockerpurge || "${1}" == docker-shell ]] && grep -q "$(whoami)" <(getent group docker); then
|
||||
:
|
||||
else
|
||||
display_alert "This script requires root privileges, trying to use sudo" "" "wrn"
|
||||
sudo "${SRC}/build.sh" "$@"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$OFFLINE_WORK" == "yes" ]; then
|
||||
|
||||
echo -e "\n"
|
||||
display_alert "* " "You are working offline."
|
||||
display_alert "* " "Sources, time and host will not be checked"
|
||||
echo -e "\n"
|
||||
sleep 3s
|
||||
|
||||
else
|
||||
|
||||
# check and install the basic utilities here
|
||||
prepare_host_basic
|
||||
|
||||
fi
|
||||
|
||||
# Check for Vagrant
|
||||
if [[ "${1}" == vagrant && -z "$(command -v vagrant)" ]]; then
|
||||
display_alert "Vagrant not installed." "Installing"
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y vagrant virtualbox
|
||||
fi
|
||||
|
||||
# Purge Orange Pi Docker images
|
||||
if [[ "${1}" == dockerpurge && -f /etc/debian_version ]]; then
|
||||
display_alert "Purging Orange Pi Docker containers" "" "wrn"
|
||||
docker container ls -a | grep orangepi | awk '{print $1}' | xargs docker container rm &> /dev/null
|
||||
docker image ls | grep orangepi | awk '{print $3}' | xargs docker image rm &> /dev/null
|
||||
shift
|
||||
set -- "docker" "$@"
|
||||
fi
|
||||
|
||||
# Docker shell
|
||||
if [[ "${1}" == docker-shell ]]; then
|
||||
shift
|
||||
#shellcheck disable=SC2034
|
||||
SHELL_ONLY=yes
|
||||
set -- "docker" "$@"
|
||||
fi
|
||||
|
||||
# Install Docker if not there but wanted. We cover only Debian based distro install. On other distros, manual Docker install is needed
|
||||
if [[ "${1}" == docker && -f /etc/debian_version && -z "$(command -v docker)" ]]; then
|
||||
|
||||
DOCKER_BINARY="docker-ce"
|
||||
|
||||
# add exception for Ubuntu Focal until Docker provides dedicated binary
|
||||
codename=$(cat /etc/os-release | grep VERSION_CODENAME | cut -d"=" -f2)
|
||||
codeid=$(cat /etc/os-release | grep ^NAME | cut -d"=" -f2 | awk '{print tolower($0)}' | tr -d '"' | awk '{print $1}')
|
||||
[[ "${codename}" == "debbie" ]] && codename="buster" && codeid="debian"
|
||||
[[ "${codename}" == "ulyana" || "${codename}" == "jammy" ]] && codename="focal" && codeid="ubuntu"
|
||||
|
||||
# different binaries for some. TBD. Need to check for all others
|
||||
[[ "${codename}" =~ focal|hirsute ]] && DOCKER_BINARY="docker containerd docker.io"
|
||||
|
||||
display_alert "Docker not installed." "Installing" "Info"
|
||||
sudo bash -c "echo \"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/${codeid} ${codename} stable\" > /etc/apt/sources.list.d/docker.list"
|
||||
|
||||
sudo bash -c "curl -fsSL \"https://download.docker.com/linux/${codeid}/gpg\" | apt-key add -qq - > /dev/null 2>&1 "
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y -qq --no-install-recommends ${DOCKER_BINARY}
|
||||
display_alert "Add yourself to docker group to avoid root privileges" "" "wrn"
|
||||
"${SRC}/build.sh" "$@"
|
||||
exit $?
|
||||
|
||||
fi
|
||||
|
||||
EXTER="${SRC}/external"
|
||||
|
||||
# Create userpatches directory if not exists
|
||||
mkdir -p "${SRC}"/userpatches
|
||||
|
||||
|
||||
# Create example configs if none found in userpatches
|
||||
if ! ls "${SRC}"/userpatches/{config-example.conf,config-docker.conf,config-vagrant.conf} 1> /dev/null 2>&1; then
|
||||
|
||||
# Migrate old configs
|
||||
if ls "${SRC}"/*.conf 1> /dev/null 2>&1; then
|
||||
display_alert "Migrate config files to userpatches directory" "all *.conf" "info"
|
||||
cp "${SRC}"/*.conf "${SRC}"/userpatches || exit 1
|
||||
rm "${SRC}"/*.conf
|
||||
[[ ! -L "${SRC}"/userpatches/config-example.conf ]] && ln -fs config-example.conf "${SRC}"/userpatches/config-default.conf || exit 1
|
||||
fi
|
||||
|
||||
display_alert "Create example config file using template" "config-default.conf" "info"
|
||||
|
||||
# Create example config
|
||||
if [[ ! -f "${SRC}"/userpatches/config-example.conf ]]; then
|
||||
cp "${EXTER}"/config/templates/config-example.conf "${SRC}"/userpatches/config-example.conf || exit 1
|
||||
ln -fs config-example.conf "${SRC}"/userpatches/config-default.conf || exit 1
|
||||
fi
|
||||
|
||||
# Create Docker config
|
||||
if [[ ! -f "${SRC}"/userpatches/config-docker.conf ]]; then
|
||||
cp "${EXTER}"/config/templates/config-docker.conf "${SRC}"/userpatches/config-docker.conf || exit 1
|
||||
fi
|
||||
|
||||
# Create Docker file
|
||||
if [[ ! -f "${SRC}"/userpatches/Dockerfile ]]; then
|
||||
cp "${EXTER}"/config/templates/Dockerfile "${SRC}"/userpatches/Dockerfile || exit 1
|
||||
fi
|
||||
|
||||
# Create Vagrant config
|
||||
if [[ ! -f "${SRC}"/userpatches/config-vagrant.conf ]]; then
|
||||
cp "${EXTER}"/config/templates/config-vagrant.conf "${SRC}"/userpatches/config-vagrant.conf || exit 1
|
||||
fi
|
||||
|
||||
# Create Vagrant file
|
||||
if [[ ! -f "${SRC}"/userpatches/Vagrantfile ]]; then
|
||||
cp "${EXTER}"/config/templates/Vagrantfile "${SRC}"/userpatches/Vagrantfile || exit 1
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [[ -z "${CONFIG}" && -n "$1" && -f "${SRC}/userpatches/config-$1.conf" ]]; then
|
||||
CONFIG="userpatches/config-$1.conf"
|
||||
shift
|
||||
fi
|
||||
|
||||
# usind default if custom not found
|
||||
if [[ -z "${CONFIG}" && -f "${SRC}/userpatches/config-default.conf" ]]; then
|
||||
CONFIG="userpatches/config-default.conf"
|
||||
fi
|
||||
|
||||
# source build configuration file
|
||||
CONFIG_FILE="$(realpath "${CONFIG}")"
|
||||
|
||||
if [[ ! -f "${CONFIG_FILE}" ]]; then
|
||||
display_alert "Config file does not exist" "${CONFIG}" "error"
|
||||
exit 254
|
||||
fi
|
||||
|
||||
CONFIG_PATH=$(dirname "${CONFIG_FILE}")
|
||||
|
||||
# Source the extensions manager library at this point, before sourcing the config.
|
||||
# This allows early calls to enable_extension(), but initialization proper is done later.
|
||||
# shellcheck source=scripts/extensions.sh
|
||||
source "${SRC}"/scripts/extensions.sh
|
||||
|
||||
display_alert "Using config file" "${CONFIG_FILE}" "info"
|
||||
pushd "${CONFIG_PATH}" > /dev/null || exit
|
||||
# shellcheck source=/dev/null
|
||||
source "${CONFIG_FILE}"
|
||||
popd > /dev/null || exit
|
||||
|
||||
[[ -z "${USERPATCHES_PATH}" ]] && USERPATCHES_PATH="${CONFIG_PATH}"
|
||||
|
||||
# Script parameters handling
|
||||
while [[ "${1}" == *=* ]]; do
|
||||
|
||||
parameter=${1%%=*}
|
||||
value=${1##*=}
|
||||
shift
|
||||
display_alert "Command line: setting $parameter to" "${value:-(empty)}" "info"
|
||||
eval "$parameter=\"$value\""
|
||||
|
||||
done
|
||||
|
||||
|
||||
if [[ "${BUILD_ALL}" == "yes" || "${BUILD_ALL}" == "demo" ]]; then
|
||||
|
||||
# shellcheck source=scripts/build-all-ng.sh
|
||||
source "${SRC}"/scripts/build-all-ng.sh
|
||||
|
||||
else
|
||||
|
||||
# shellcheck source=scripts/main.sh
|
||||
source "${SRC}"/scripts/main.sh
|
||||
|
||||
fi
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&csi2_dphy1_hw>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&csi2_dphy3>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&mipi4_csi2>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&rkcif_mipi_lvds4>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&rkcif_mipi_lvds4_sditf>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&rkisp1_vir1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&i2c9>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
vm149c-p1@c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ov13850-1@10 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
dw9714-p1@c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
imx586-1@34 {
|
||||
status = "okay";
|
||||
avdd-supply = <&vcc_3v3_s0>;
|
||||
dovdd-supply = <&vcc_1v8_s0>;
|
||||
dvdd-supply = <&avdd_1v2_s0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&rkcif>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&rkcif_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@9 {
|
||||
target = <&rkisp1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@10 {
|
||||
target = <&isp1_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -1,616 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ============================================================================
|
||||
# Orange Pi 5 Ultra - update.img ?????????
|
||||
# ???orangepi-build??? - ???????????????
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
LEGACY_WORK_DIR="/data/OrangePi CM5"
|
||||
WORK_DIR="/data/OrangePi_CM5"
|
||||
CACHE_ROOT="/data/OrangePi_cache"
|
||||
BUILD_DATE=$(date +%Y%m%d_%H%M%S)
|
||||
LOG_FILE="${WORK_DIR}/build_${BUILD_DATE}.log"
|
||||
MODE="auto"
|
||||
|
||||
# ??????
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# ============================================================================
|
||||
# ?????????
|
||||
# ============================================================================
|
||||
log() {
|
||||
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ????????????
|
||||
# ============================================================================
|
||||
set_kconfig_option() {
|
||||
local cfg_file=$1
|
||||
local key=$2
|
||||
local value=$3
|
||||
|
||||
if [ ! -f "$cfg_file" ]; then
|
||||
mkdir -p "$(dirname "$cfg_file")"
|
||||
: > "$cfg_file"
|
||||
fi
|
||||
|
||||
if grep -q "^${key}=" "$cfg_file"; then
|
||||
sed -i "s|^${key}=.*|${key}=${value}|" "$cfg_file"
|
||||
elif grep -q "^# ${key} is not set" "$cfg_file"; then
|
||||
sed -i "s|^# ${key} is not set|${key}=${value}|" "$cfg_file"
|
||||
else
|
||||
echo "${key}=${value}" >> "$cfg_file"
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????? IMX586 ???????????????????????????
|
||||
# ============================================================================
|
||||
enforce_imx586_support() {
|
||||
local BUILD_DIR=$1
|
||||
local kernel_cfg_dir="${BUILD_DIR}/external/config/kernel"
|
||||
local updated=0
|
||||
|
||||
log "????????? IMX586 ???..."
|
||||
|
||||
# ??? Orange Pi 5 Ultra??k3588 legacy??????????? for cfg in "${kernel_cfg_dir}"/linux-rockchip-rk3588-legacy*.config; do
|
||||
[ -f "$cfg" ] || continue
|
||||
set_kconfig_option "$cfg" "CONFIG_VIDEO_IMX586" "y"
|
||||
updated=1
|
||||
done
|
||||
|
||||
# userpatches ?????????????????????????????? IMX586?? local userpatch_cfg="${BUILD_DIR}/userpatches/linux-rockchip-rk3588-legacy-opi5max.config"
|
||||
set_kconfig_option "$userpatch_cfg" "CONFIG_VIDEO_IMX586" "y"
|
||||
updated=1
|
||||
|
||||
if [ "$updated" -eq 1 ]; then
|
||||
log "???????IMX586 ???"
|
||||
else
|
||||
log_warn "???????????rk3588 legacy ???????????????????????
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ????????IMX586 ??????
|
||||
# ============================================================================
|
||||
verify_imx586_support() {
|
||||
local BUILD_DIR=$1
|
||||
local kernel_tree="${BUILD_DIR}/kernel/orange-pi-5.10-rk35xx"
|
||||
local kernel_cfg="${kernel_tree}/.config"
|
||||
local driver_src="${kernel_tree}/drivers/media/i2c/imx586.c"
|
||||
|
||||
log "??? IMX586 ??????..."
|
||||
|
||||
if [ ! -f "$driver_src" ]; then
|
||||
log_error "??? IMX586 ??????: $driver_src"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$kernel_cfg" ]; then
|
||||
log_error "?????????????? $kernel_cfg"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if grep -Eq '^CONFIG_VIDEO_IMX586=(y|m)$' "$kernel_cfg"; then
|
||||
log "??IMX586 ???????? $(grep -E '^CONFIG_VIDEO_IMX586=' "$kernel_cfg" | head -1)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_error "IMX586 ????????? CONFIG_VIDEO_IMX586=y/m??
|
||||
return 1
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ???????????????????????????????????# ============================================================================
|
||||
prepare_workspace() {
|
||||
mkdir -p "$WORK_DIR"
|
||||
|
||||
if [ -d "$LEGACY_WORK_DIR" ]; then
|
||||
log "?????????? $LEGACY_WORK_DIR"
|
||||
|
||||
# ??????????????????????????????????????? if [ -d "$LEGACY_WORK_DIR/SDKs" ] && [ ! -e "$WORK_DIR/SDKs" ]; then
|
||||
cp -a "$LEGACY_WORK_DIR/SDKs" "$WORK_DIR/"
|
||||
log "???????SDKs ??????"
|
||||
fi
|
||||
|
||||
if [ -d "$LEGACY_WORK_DIR/sources" ] && [ ! -e "$WORK_DIR/sources" ]; then
|
||||
cp -a "$LEGACY_WORK_DIR/sources" "$WORK_DIR/"
|
||||
log "???????sources ??????"
|
||||
fi
|
||||
|
||||
if [ -d "$LEGACY_WORK_DIR/orangepi-build" ] && [ ! -e "$WORK_DIR/orangepi-build" ]; then
|
||||
cp -a "$LEGACY_WORK_DIR/orangepi-build" "$WORK_DIR/"
|
||||
log "???????orangepi-build ??????"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ???????????
|
||||
# ============================================================================
|
||||
check_environment() {
|
||||
log "??????????.."
|
||||
|
||||
# ??????????
|
||||
local required_tools=("git" "gcc" "make" "device-tree-compiler")
|
||||
for tool in "${required_tools[@]}"; do
|
||||
if ! command -v "$tool" &> /dev/null; then
|
||||
log_warn "$tool ????????????..."
|
||||
apt-get update
|
||||
apt-get install -y "$tool"
|
||||
else
|
||||
log "??$tool ?????
|
||||
fi
|
||||
done
|
||||
|
||||
# ??????????????
|
||||
if ! command -v aarch64-linux-gnu-gcc &> /dev/null; then
|
||||
log_warn "aarch64-linux-gnu-gcc ????????????..."
|
||||
apt-get install -y gcc-aarch64-linux-gnu build-essential
|
||||
else
|
||||
log "??aarch64-linux-gnu-gcc ?????
|
||||
fi
|
||||
|
||||
log "??????????
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ??? git ???????????# ============================================================================
|
||||
configure_git() {
|
||||
log "??? git ??????..."
|
||||
|
||||
git config --global http.connectTimeout 120
|
||||
git config --global http.postBuffer 524288000
|
||||
git config --global core.compression 0
|
||||
git config --global url."https://".insteadOf git://
|
||||
|
||||
log "??git ??????"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????? - ???1: Gitee????????????
|
||||
# ============================================================================
|
||||
download_from_gitee() {
|
||||
local repo_name=$1
|
||||
local repo_url=$2
|
||||
local branch=$3
|
||||
local target_dir=$4
|
||||
|
||||
log "?????Gitee ??? $repo_name (???: $branch)..."
|
||||
|
||||
if [ -d "$target_dir" ]; then
|
||||
log "???????????????..."
|
||||
cd "$target_dir"
|
||||
git pull origin "$branch" 2>&1 && return 0
|
||||
cd - > /dev/null
|
||||
fi
|
||||
|
||||
if git clone --depth=1 -b "$branch" "$repo_url" "$target_dir" 2>&1; then
|
||||
log "????Gitee ??????"
|
||||
return 0
|
||||
else
|
||||
log_warn "??Gitee ??????"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????? - ???2: GitHub (?????
|
||||
# ============================================================================
|
||||
download_from_github() {
|
||||
local repo_name=$1
|
||||
local repo_url=$2
|
||||
local branch=$3
|
||||
local target_dir=$4
|
||||
local retry_count=3
|
||||
|
||||
log "?????GitHub ??? $repo_name (???: $branch)..."
|
||||
|
||||
if [ -d "$target_dir" ]; then
|
||||
log "???????????????..."
|
||||
cd "$target_dir"
|
||||
git pull origin "$branch" 2>&1 && return 0
|
||||
cd - > /dev/null
|
||||
fi
|
||||
|
||||
for ((i=1; i<=retry_count; i++)); do
|
||||
log "GitHub ?????? $i/$retry_count..."
|
||||
if git clone --depth=1 -b "$branch" "$repo_url" "$target_dir" 2>&1; then
|
||||
log "????GitHub ??????"
|
||||
return 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
|
||||
log_warn "GitHub ??????????
|
||||
return 1
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ??? orangepi-build
|
||||
# ============================================================================
|
||||
get_orangepi_build() {
|
||||
log "??? orangepi-build ??????..."
|
||||
|
||||
local BUILD_DIR="${WORK_DIR}/orangepi-build"
|
||||
|
||||
# ??????? ?????SDKs ??????
|
||||
if extract_from_sdks "orangepi-build" "$BUILD_DIR"; then
|
||||
ORANGEPI_BUILD_DIR="$BUILD_DIR"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# ??????? Gitee ???
|
||||
if download_from_gitee \
|
||||
"orangepi-build" \
|
||||
"https://gitee.com/orangepi-xunlong/orangepi-build.git" \
|
||||
"next" \
|
||||
"$BUILD_DIR"; then
|
||||
ORANGEPI_BUILD_DIR="$BUILD_DIR"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# ??????? GitHub
|
||||
if download_from_github \
|
||||
"orangepi-build" \
|
||||
"https://github.com/orangepi-xunlong/orangepi-build.git" \
|
||||
"next" \
|
||||
"$BUILD_DIR"; then
|
||||
ORANGEPI_BUILD_DIR="$BUILD_DIR"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_error "?????? orangepi-build"
|
||||
return 1
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ??????????????????????????????
|
||||
# ============================================================================
|
||||
setup_build_cache_links() {
|
||||
local build_dir=$1
|
||||
local shared_dl="${CACHE_ROOT}/dl"
|
||||
local shared_toolchains="${CACHE_ROOT}/toolchains"
|
||||
local shared_ext_cache="${CACHE_ROOT}/external-cache"
|
||||
|
||||
mkdir -p "$shared_dl" "$shared_toolchains" "$shared_ext_cache"
|
||||
|
||||
# ??????????????????????????????????? if [ -d "$build_dir/dl" ] && [ ! -L "$build_dir/dl" ] && [ -z "$(ls -A "$shared_dl" 2>/dev/null)" ]; then
|
||||
cp -a "$build_dir/dl/." "$shared_dl/" 2>/dev/null || true
|
||||
fi
|
||||
if [ -d "$build_dir/toolchains" ] && [ ! -L "$build_dir/toolchains" ] && [ -z "$(ls -A "$shared_toolchains" 2>/dev/null)" ]; then
|
||||
cp -a "$build_dir/toolchains/." "$shared_toolchains/" 2>/dev/null || true
|
||||
fi
|
||||
if [ -d "$build_dir/external/cache" ] && [ ! -L "$build_dir/external/cache" ] && [ -z "$(ls -A "$shared_ext_cache" 2>/dev/null)" ]; then
|
||||
cp -a "$build_dir/external/cache/." "$shared_ext_cache/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
mkdir -p "$build_dir/external"
|
||||
rm -rf "$build_dir/dl" "$build_dir/toolchains" "$build_dir/external/cache"
|
||||
ln -s "$shared_dl" "$build_dir/dl"
|
||||
ln -s "$shared_toolchains" "$build_dir/toolchains"
|
||||
ln -s "$shared_ext_cache" "$build_dir/external/cache"
|
||||
|
||||
log "?????????????
|
||||
log " dl: $shared_dl"
|
||||
log " toolchains: $shared_toolchains"
|
||||
log " external cache: $shared_ext_cache"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ???3: ?????SDKs ???????????# ============================================================================
|
||||
extract_from_sdks() {
|
||||
local repo_name=$1
|
||||
local target_dir=$2
|
||||
|
||||
log "?????SDKs ?????? $repo_name..."
|
||||
|
||||
# ?????????????????
|
||||
if [ -d "$target_dir" ]; then
|
||||
log "?????????? $target_dir"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# ???1: ??? orangepi-build-next.zip
|
||||
if [ "$repo_name" = "orangepi-build" ]; then
|
||||
local archive="${WORK_DIR}/SDKs/orangepi-build-next.zip"
|
||||
|
||||
if [ -f "$archive" ]; then
|
||||
log "???????? $archive"
|
||||
log "?????.."
|
||||
|
||||
mkdir -p "$target_dir"
|
||||
unzip -q "$archive" -d "$target_dir" 2>/dev/null || return 1
|
||||
|
||||
# ???????????????
|
||||
if [ -d "${target_dir}/orangepi-build"* ]; then
|
||||
mv "${target_dir}"/orangepi-build* "${target_dir}_tmp"
|
||||
rm -rf "$target_dir"
|
||||
mv "${target_dir}_tmp" "$target_dir"
|
||||
elif [ -d "${target_dir}/orangepi-build" ]; then
|
||||
local temp_build="${target_dir}/orangepi-build"
|
||||
mv "$temp_build"/* "$target_dir"/ 2>/dev/null || true
|
||||
rm -rf "$temp_build"
|
||||
fi
|
||||
|
||||
if [ -f "${target_dir}/build.sh" ]; then
|
||||
log "????SDKs ??????"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# ???2: ??? OrangePi_Build-master.zip
|
||||
archive="${WORK_DIR}/SDKs/OrangePi_Build-master.zip"
|
||||
if [ -f "$archive" ]; then
|
||||
log "???????????: $archive"
|
||||
log "?????.."
|
||||
|
||||
mkdir -p "$target_dir"
|
||||
unzip -q "$archive" -d "$target_dir" 2>/dev/null || return 1
|
||||
|
||||
# ???????????????
|
||||
if [ -d "${target_dir}/OrangePi_Build-master" ]; then
|
||||
mv "${target_dir}/OrangePi_Build-master"/* "$target_dir"/ 2>/dev/null || true
|
||||
rmdir "${target_dir}/OrangePi_Build-master" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if [ -f "${target_dir}/build.sh" ]; then
|
||||
log "????SDKs ??????"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????????????????
|
||||
# ============================================================================
|
||||
check_local_sources() {
|
||||
log "???????????????????????..."
|
||||
|
||||
local sources_dir="${WORK_DIR}/sources"
|
||||
|
||||
if [ ! -d "$sources_dir" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# ??????????orangepi-build ???
|
||||
for archive in "$sources_dir"/{orangepi-build,u-boot,linux,kernel}*.tar* "$sources_dir"/*.zip; do
|
||||
if [ -f "$archive" ]; then
|
||||
log "??????????? $archive"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ??? update.img (??? orangepi-build)
|
||||
# ============================================================================
|
||||
build_update_img() {
|
||||
local BUILD_DIR=$1
|
||||
|
||||
log "???????update.img..."
|
||||
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
# ????????????
|
||||
log "????????????:"
|
||||
ls -la | head -20 >> "$LOG_FILE"
|
||||
|
||||
# ?????????????? chmod +x build.sh
|
||||
|
||||
# ?????????????????????
|
||||
# ??????:
|
||||
# BOARD=orangepi5ultra - ????????
|
||||
# BRANCH=legacy - ??? linux5.10 (??? IMX586 ???)
|
||||
# BUILD_OPT=image - ?????????
|
||||
# RELEASE=bullseye - Debian Bullseye ????? # BUILD_DESKTOP=no - ????????? (??????????????yes)
|
||||
|
||||
if [ "$MODE" = "menu" ]; then
|
||||
log "?????????????????????..."
|
||||
log "?????ncurses ??????????????????"
|
||||
# ncurses ????????????????? tee ??????
|
||||
sudo ./build.sh
|
||||
local build_rc=$?
|
||||
else
|
||||
log "?????????????????????..."
|
||||
log "??????: BOARD=orangepi5ultra BRANCH=legacy BUILD_OPT=image KERNEL_CONFIGURE=no"
|
||||
|
||||
sudo ./build.sh \
|
||||
BOARD=orangepi5ultra \
|
||||
BRANCH=legacy \
|
||||
BUILD_OPT=image \
|
||||
RELEASE=bullseye \
|
||||
BUILD_DESKTOP=no \
|
||||
KERNEL_CONFIGURE=no 2>&1 | tee -a "$LOG_FILE"
|
||||
local build_rc=${PIPESTATUS[0]}
|
||||
fi
|
||||
|
||||
if [ ${build_rc:-1} -eq 0 ]; then
|
||||
log "????????"
|
||||
return 0
|
||||
else
|
||||
# ??????????????????????????????????????? local produced_img
|
||||
produced_img=$(find "$BUILD_DIR/output/images" -name "*.img" -type f 2>/dev/null | head -1)
|
||||
if [ -n "$produced_img" ]; then
|
||||
log_warn "build.sh ????????????????????: $produced_img"
|
||||
log_warn "?????????????????
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_error "??????"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????????
|
||||
# ============================================================================
|
||||
verify_build() {
|
||||
local BUILD_DIR=$1
|
||||
|
||||
log "?????????..."
|
||||
|
||||
local output_dir="${BUILD_DIR}/output/images"
|
||||
|
||||
if [ ! -d "$output_dir" ]; then
|
||||
log_error "??????????? $output_dir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# ?????? update.img??????????????.img ??????????? local update_img
|
||||
update_img=$(find "$output_dir" -name "*update*.img" -type f 2>/dev/null | head -1)
|
||||
if [ -z "$update_img" ]; then
|
||||
update_img=$(find "$output_dir" -name "*.img" -type f 2>/dev/null | head -1)
|
||||
fi
|
||||
|
||||
if [ -z "$update_img" ]; then
|
||||
log_error "???????????(*.img)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log "???????????: $update_img"
|
||||
|
||||
local img_size=$(du -sh "$update_img" | awk '{print $1}')
|
||||
log "??????: $img_size"
|
||||
|
||||
# ???????? log "??? SHA256 ?????.."
|
||||
sha256sum "$update_img" > "${update_img}.sha256"
|
||||
|
||||
log "?????????:"
|
||||
cat >> "$LOG_FILE" << EOF
|
||||
|
||||
=== ?????? ===
|
||||
???: $(date)
|
||||
??????: $update_img
|
||||
???: $img_size
|
||||
????? $(cat "${update_img}.sha256")
|
||||
|
||||
EOF
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# ?????# ============================================================================
|
||||
main() {
|
||||
case "${1:-}" in
|
||||
menu|interactive)
|
||||
MODE="menu"
|
||||
;;
|
||||
auto|"")
|
||||
MODE="auto"
|
||||
;;
|
||||
*)
|
||||
echo "???: $0 [auto|menu]"
|
||||
echo " auto: ???????????? ncurses ?????
|
||||
echo " menu: ?????? ncurses ?????????"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
log "=========================================="
|
||||
log "Orange Pi 5 Ultra - update.img ???"
|
||||
log "=========================================="
|
||||
log "??????: $WORK_DIR"
|
||||
log "????????): $LEGACY_WORK_DIR"
|
||||
log "??????: $LOG_FILE"
|
||||
log "??????: $MODE"
|
||||
|
||||
prepare_workspace
|
||||
|
||||
cd "$WORK_DIR" || { log_error "????????????"; exit 1; }
|
||||
|
||||
# ???? ??????? check_environment
|
||||
|
||||
# ???? ???git
|
||||
configure_git
|
||||
|
||||
# ???? ??? orangepi-build
|
||||
log ""
|
||||
log "========== ???1: ?????? =========="
|
||||
|
||||
if ! get_orangepi_build; then
|
||||
log_error "??? orangepi-build ???"
|
||||
|
||||
log ""
|
||||
log "??????:"
|
||||
log "1. ??????????? \${WORK_DIR}/SDKs/ ???????????"
|
||||
log " - orangepi-build-next.zip"
|
||||
log " - OrangePi_Build-master.zip"
|
||||
log ""
|
||||
log "2. ?????? SDKs ????????????:"
|
||||
log " a) ????${WORK_DIR}/SDKs/ ?????????"
|
||||
log " b) ?????????????????
|
||||
log " c) ??????????????????????????
|
||||
log ""
|
||||
log "3. ????????????????? ${WORK_DIR}/sources/ ?????
|
||||
log ""
|
||||
log "4. ???????????:"
|
||||
log " - ???????????????"
|
||||
log " - ???????????? git ???: git config --global credential.helper store"
|
||||
exit 1
|
||||
fi
|
||||
BUILD_DIR="$ORANGEPI_BUILD_DIR"
|
||||
|
||||
# ??.5?? ?????????
|
||||
setup_build_cache_links "$BUILD_DIR"
|
||||
|
||||
# ??.6?? ?????? IMX586 ???
|
||||
enforce_imx586_support "$BUILD_DIR"
|
||||
|
||||
# ???? ??? update.img
|
||||
log ""
|
||||
log "========== ???2: ?????? =========="
|
||||
|
||||
if ! build_update_img "$BUILD_DIR"; then
|
||||
log_error "????????????????? $LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ???? ??????
|
||||
log ""
|
||||
log "========== ???3: ?????? =========="
|
||||
|
||||
if ! verify_build "$BUILD_DIR"; then
|
||||
log_error "??????"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! verify_imx586_support "$BUILD_DIR"; then
|
||||
log_error "IMX586 ?????????"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log ""
|
||||
log "=========================================="
|
||||
log "??????????
|
||||
log "=========================================="
|
||||
log "??????:"
|
||||
log "1. ??????: scp root@www.yuquanjun.cn:/data/OrangePi_CM5/orangepi-build/output/images/*/update.img ./"
|
||||
log "2. ??? RKDevTool ??balenaEtcher ??????"
|
||||
log "=========================================="
|
||||
}
|
||||
|
||||
# ????????main "$@"
|
||||
|
||||
Binary file not shown.
|
|
@ -0,0 +1,3 @@
|
|||
chromium-browser*
|
||||
chromium-codecs-ffmpeg-extra*
|
||||
firefox-esr*
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bionic-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/bionic-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bookworm-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bookworm-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-common_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-dockx_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx-theme-zorin_1.1.0_all.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/dockbarx_1.0~beta+git20210222-1~ppa1_all.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/xfce4-dockbarx-plugin_0.6+git20210221-1~ppa2~20.10_arm64.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb
vendored
Executable file
BIN
external/cache/debs/extra/bullseye-desktop/xfce4-zorinmenulite-plugin_1.1.2_arm64.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bullseye-utils/hostapd_2.9-102~orangepi2.1.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-utils/htop_3.1.0-0~armbian20.08.2+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bullseye-utils/htop_3.1.0-0~armbian20.08.2+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/bullseye-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/bullseye-utils/sunxi-tools_1.4.2-2~orangepi2.1.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/buster-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/buster-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libump-dev_3.0-0sunxi1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libump-dev_3.0-0sunxi1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/libump_3.0-0sunxi1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/libump_3.0-0sunxi1~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/htop_2.2.0-5~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/htop_2.2.0-5~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/focal-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/focal-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/jammy-utils/hostapd_2.10-6~armbian22.02.3+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/jammy-utils/hostapd_2.10-6~armbian22.02.3+1_arm64.deb
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/stretch-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/stretch-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/dri2-utils_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/dri2-utils_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1-dev_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1-dev_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1-dev_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1_1.0.1~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libcedrus1_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libdri2-1_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libdri2-1_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libdri2-dev_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libdri2-dev_1.0.1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libglshim_0.9.2~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libglshim_0.9.2~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libmali-sunxi-dev_1.0-1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libmali-sunxi-dev_1.0-1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libmali-sunxi-r3p0_1.0-1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libmali-sunxi-r3p0_1.0-1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libump-dev_3.0-0sunxi1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libump-dev_3.0-0sunxi1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libump_3.0-0sunxi1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/libump_3.0-0sunxi1~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libvdpau-dev_1.1.1-10~armbian5.73+1_armhf.deb
vendored
Executable file
BIN
external/cache/debs/extra/xenial-desktop/libvdpau-dev_1.1.1-10~armbian5.73+1_armhf.deb
vendored
Executable file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/libvdpau-sunxi1_0.5.1~armbian5.73+1_armhf.deb
vendored
Executable file
BIN
external/cache/debs/extra/xenial-desktop/libvdpau-sunxi1_0.5.1~armbian5.73+1_armhf.deb
vendored
Executable file
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.1.0+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-desktop/xserver-xorg-video-fbturbo_0.4.4~orangepi2.1.0+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/hostapd_2.9-102~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/hostapd_2.9-102~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/mmc-utils_0~gita3d3331-3~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/extra/xenial-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
BIN
external/cache/debs/extra/xenial-utils/sunxi-tools_1.4.2-2~orangepi2.0.8+1_armhf.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/h618/linux-u-boot-current-orangepizero2w_1.0.0_arm64.deb
vendored
Normal file
BIN
external/cache/debs/h618/linux-u-boot-current-orangepizero2w_1.0.0_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/h618/linux-u-boot-current-orangepizero3_1.0.2_arm64.deb
vendored
Normal file
BIN
external/cache/debs/h618/linux-u-boot-current-orangepizero3_1.0.2_arm64.deb
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
external/cache/debs/rk3399/buster_media/gstreamer1.0-rockchip1_2%3a1.10-0armbian1_arm64.deb
vendored
Normal file
BIN
external/cache/debs/rk3399/buster_media/gstreamer1.0-rockchip1_2%3a1.10-0armbian1_arm64.deb
vendored
Normal file
Binary file not shown.
BIN
external/cache/debs/rk3399/buster_media/kodi-rk-bin_2%3a18.9-final-18.9buster0armbian3_arm64.deb
vendored
Normal file
BIN
external/cache/debs/rk3399/buster_media/kodi-rk-bin_2%3a18.9-final-18.9buster0armbian3_arm64.deb
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue