Compare commits
No commits in common. "master" and "next" have entirely different histories.
|
|
@ -1,29 +1,61 @@
|
||||||
# 大型编译产物(镜像、工具链等)
|
#
|
||||||
*.img
|
# NOTE! Don't add files that are generated in specific
|
||||||
*.img.sha256
|
# subdirectories here. Add them in the ".gitignore" file
|
||||||
*.zip
|
# in that subdirectory instead.
|
||||||
*.tar.gz
|
#
|
||||||
*.tar.xz
|
# 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.
|
||||||
orangepi-build/output/
|
#
|
||||||
orangepi-build/dl/
|
# Normal rules
|
||||||
orangepi-build/toolchains/
|
#
|
||||||
orangepi-build/external/cache/
|
|
||||||
orangepi-build/.tmp/
|
*.bak
|
||||||
build_*.log
|
*.swp
|
||||||
|
*.img
|
||||||
# 共享缓存目录
|
*.tar.gz
|
||||||
OrangePi_cache/
|
*.patch
|
||||||
|
|
||||||
# 编译日志
|
b.sh
|
||||||
compile-output.log
|
.tmp
|
||||||
*.log
|
kernel
|
||||||
|
output
|
||||||
# 系统文件
|
u-boot
|
||||||
.DS_Store
|
toolchains
|
||||||
Thumbs.db
|
userpatches
|
||||||
|
|
||||||
# SDK 源码包(外部下载)
|
mkimage.sh
|
||||||
SDKs/
|
|
||||||
sources/
|
!external/patch/u-boot
|
||||||
|
!external/patch/kernel
|
||||||
|
!external/config/kernel
|
||||||
|
!external/packages/bsp/common/etc/kernel
|
||||||
|
!external/packages/bsp/rk3588/etc/kernel
|
||||||
|
|
||||||
|
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
|
||||||
|
|
@ -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.
BIN
external/cache/debs/rk3399/buster_media/kodi-rk_2%3a18.9-final-18.9buster0armbian3_all.deb
vendored
Normal file
BIN
external/cache/debs/rk3399/buster_media/kodi-rk_2%3a18.9-final-18.9buster0armbian3_all.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