On Wed, 2025-04-16 at 23:42 +0800, Sun, Yi wrote: > On 14.04.2025 19:48, Sun, Yi wrote: > > On 13.04.2025 17:41, Uladzimir Bely wrote: > > > On Sun, 2025-04-13 at 17:58 +0800, Sun, Yi wrote: > > > > On 13.04.2025 11:18, Uladzimir Bely wrote: > > > > > On Sun, 2025-04-13 at 16:02 +0800, Sun, Yi wrote: > > > > > > On 13.04.2025 10:41, Uladzimir Bely wrote: > > > > > > > On Sun, 2025-04-13 at 06:38 +0000, Sun, Yi wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi All, > > > > > > > >   > > > > > > > > I'm new to ISAR and was told it's an efficient project > > > > > > > > for > > > > > > > > building > > > > > > > > embedded OS images. > > > > > > > > I'm currently trying to create an Ubuntu Noble (24.04) > > > > > > > > image > > > > > > > > for > > > > > > > > the > > > > > > > > RISC-V architecture. > > > > > > > >   > > > > > > > > I gave it a quick try, but ran into some issues: > > > > > > > > Step 1: KAS_ALLOW_ROOT=yes ./kas/kas-container menu > > > > > > > > Step 2: KAS_ALLOW_ROOT=yes ./kas/kas-container build > > > > > > > > (or use > > > > > > > > the > > > > > > > > "Build" option from the menu) > > > > > > > >   > > > > > > > > I've attached my configuration files (generated by kas- > > > > > > > > container) > > > > > > > > along with the error log dumped by ISAR during the > > > > > > > > build > > > > > > > > process. > > > > > > > >   > > > > > > > > Another question I have is about the concepts of > > > > > > > > "target" and > > > > > > > > "host". > > > > > > > > After reading as much documentation on ISAR as I could > > > > > > > > find, > > > > > > > > I'm > > > > > > > > still a bit confused: > > > > > > > >   > > > > > > > > Why do we need a "host" rootfs/distro, given that ISAR > > > > > > > > runs > > > > > > > > inside > > > > > > > > the kas-isar Docker container, which I assume already > > > > > > > > acts as > > > > > > > > the > > > > > > > > host environment? > > > > > > > > What I’m aiming for with this project is to generate an > > > > > > > > image > > > > > > > > that > > > > > > > > can be run in QEMU or flashed to a disk — that would be > > > > > > > > the > > > > > > > > target > > > > > > > > distro, right? > > > > > > > >   > > > > > > > > Any guidance or suggestions would be greatly > > > > > > > > appreciated! > > > > > > > >   > > > > > > > > Thanks > > > > > > > >    --Sun, Yi > > > > > > > > > > > > > > > > > > > > > > Hello. > > > > > > > > > > > > > > Currently we support (and test) only amd64/i386 and > > > > > > > arm64/armhf > > > > > > > architectures for Ubuntu despite of the fact ubuntu has > > > > > > > ports > > > > > > > for > > > > > > > riscv64 ( > > > > > > > http://ports.ubuntu.com/ubuntu-ports/dists/noble/ ). > > > > > > > > > > > > > > For now, you could try attached patch for Isar to run > > > > > > > ubuntu- > > > > > > > noble > > > > > > > build for riscv64. > > > > > > > > > > > > > > Also, you need to apply patches for u-boot and kernel > > > > > > > from > > > > > > > https://patchwork.isar-build.org/project/isar/list/?series=1551 > > > > > > >  - > > > > > > > or > > > > > > > wait 2..3 days until they are merged to 'next' branch. > > > > > > > > > > > > > > --- > > > > > > > > > > > > > > In general, we might need to add other architectures > > > > > > > supported > > > > > > > in > > > > > > > ubuntu-ports into our configs. Stay tuned. > > > > > > > > > > > > > > > > > > > Thanks to Uladzimir for sharing your progress! > > > > > > I gave the patch a quick try, but unfortunately it didn’t > > > > > > work as > > > > > > expected. > > > > > > I tried master+patch and next+patch, both are failed. > > > > > > I'm still seeing the following error message. > > > > > > > > > > > > BTW, could you please expain more about the "host distro"? > > > > > > Do I > > > > > > really > > > > > > need a host distro if my running ISAR in KAS container? > > > > > > > > > > > > > > > > Briefly, host distro - is a distro that is repsoncible for > > > > > compiling > > > > > custom packages. Target distro - is what will be installed on > > > > > target. > > > > > > > > > > E.g., in your case (riscv64), we have: > > > > > 1. Cross-compiling case: > > > > >  - host-distro: Ubuntu Noble / amd64 > > > > >  - target-distro: Ubuntu Noble / riscv64 > > > > > 2. Non-cross-compiling case: > > > > >  - host-distro = target-distro = riscv64 > > > > > > > > > > Of course, case 2 is much slower because everything is built > > > > > natively > > > > > using qemu-static. > > > > > > > > > I see — that matches my previous understanding exactly. > > > > My question is: since we're already using kas-container (a > > > > Debian- > > > > based OS) > > > > why don’t we just compile all packages directly within it, > > > > instead of > > > > chrooting into a separate host rootfs? It seems like things > > > > could be > > > > simplified if there were a toggle option to do that. > > > > > > > > I'm asking because, while trying to figure out why the Ubuntu > > > > Noble > > > > target > > > > couldn't be built, I noticed that ubuntu-common.inc might be > > > > mixing > > > > up > > > > DISTRO_ARCH and HOST_ARCH somewhere (if I’m understanding it > > > > correctly). > > > > > > > > > --- > > > > > > > > > > I've updated a bit the patch I sent and managed to completely > > > > > build > > > > > ubuntu-noble for starfive-visionfive2 machine. > > > > > > > > > > I pushed my changes to the branch "ubely/devel" so you can > > > > > give it > > > > > a > > > > > try without any additional patches. > > > > > > > > > > ./kas/kas-container menu: > > > > >  - Machine selection > > > > >    - starfive-visionfive2 > > > > >  - Distro > > > > >    - Allow any machine-distro combinations > > > > >    - Ubuntu 24.04 (Noble) > > > > > > > > > > > > > The devel branch doesn't make things better: > > > > > > > > > > Big sorry for misleading you... I wanted to write "ubely/riscv64" > > > branch I've created for you... > > > > > > Please, try it instead. > > > > Hi Uladzimir, > > > > I gave it a try, but no luck. > > What I want to point out is that the error I encountered is likely > > not > > RISC-V specific. Due to limited time, I did a quick debug and found > > that the error is coming from bitbake: > > > > ``` > > (root)# bitbake -c build isar-image-base > > > > ERROR: isar-apt-1.0-r0 do_unpack: Unpack failure for URL: > > 'file://distributions.in'. Unpack command > > PATH="/repo/scripts:/repo/bitbake/bin:/usr/sbin:/usr/bin:/sbin:/bin > > " cp -fpPRH "/build/../repo/meta/recipes-devtools/isar- > > apt/files/distributions.in" "." failed with return value 1 > > ``` > > > > LOG FILE: > > ``` > > DEBUG: Using /build/../repo/meta/recipes-devtools/isar- > > apt/files/distributions.in for distributions.in > > NOTE: Unpacking /build/../repo/meta/recipes-devtools/isar- > > apt/files/distributions.in to /build/tmp/work/ubuntu-noble- > > riscv64/isar-apt/1.0-r0/ > > cp: failed to preserve ownership for './distributions.in': Invalid > > argument > > ERROR: Unpack failure for URL: 'file://distributions.in'. Unpack > > command > > PATH="/repo/scripts:/repo/bitbake/bin:/usr/sbin:/usr/bin:/sbin:/bin > > " cp -fpPRH "/build/../repo/meta/recipes-devtools/isar- > > apt/files/distributions.in" "." failed with return value 1 > > DEBUG: Python function do_unpack finished > > ``` > > > > Log file shows that all failures are the same that caused by > > 'copy': > > cp: failed to preserve ownership for './distributions.in': Invalid > > argument > > > > @Uladzimir, if you have a moment, could you help me understand what > > might > > be going wrong here? > > > > I'm using the Docker image kas-isar:4.7, and I can consistently > > reproduce the issue by running ./kas/kas-container build. > > > > Here is my docker parameters: > > ``` > > docker run -v /home/riscv/isar:/repo:rw -v > > /home/riscv/isar:/work:rw -e KAS_WORK_DIR=/work -v > > /home/riscv/isar/build/rv64_sw-machine:/build:rw --workdir=/repo -e > > KAS_BUILD_DIR=/build -e USER_ID=0 -e GROUP_ID=0 --rm --init -t -i - > > e TERM=tmux-256color -e SHELL=/bin/bash -e > > http_proxy=http://xxx:port -e https_proxy=http://xxx:port -e > > NO_PROXY=localhost,127.0.0.0/8 --privileged --log-driver=none -- > > user=root ghcr.io/siemens/kas/kas-isar:4.7 build > > ``` > > > > I'm pretty sure that my configue matches your demo setup: > > StarFive VisionFive2 + Ubuntu 24.04 (Noble). > > > > Thanks > >   --Sun, Yi > > I made some progress — the issue was caused by the -p parameter in > the cp command. > The following patch allows the unpack process to proceed. > > diff --git a/bitbake/lib/bb/fetch2/__init__.py > b/bitbake/lib/bb/fetch2/__init__.py > index 5bf2c4b8..73c34301 100644 > --- a/bitbake/lib/bb/fetch2/__init__.py > +++ b/bitbake/lib/bb/fetch2/__init__.py > @@ -1606,7 +1606,7 @@ class FetchMethod(object): >                       if urlpath.find("/") != -1: >                           destdir = urlpath.rsplit("/", 1)[0] + '/' >                           bb.utils.mkdirhier("%s/%s" % (unpackdir, > destdir)) > -                cmd = 'cp -fpPRH "%s" "%s"' % (file, destdir) > +                cmd = 'cp -fPRH "%s" "%s"' % (file, destdir) >           else: >               urldata.unpack_tracer.unpack("archive-extract", > unpackdir) > > diff --git a/bitbake/lib/bb/fetch2/npmsw.py > b/bitbake/lib/bb/fetch2/npmsw.py > index ff5f8dc7..a250a2d2 100644 > --- a/bitbake/lib/bb/fetch2/npmsw.py > +++ b/bitbake/lib/bb/fetch2/npmsw.py > @@ -294,7 +294,7 @@ class NpmShrinkWrap(FetchMethod): >                       npm_unpack(depsrcdir, depdestdir, d) >                   else: >                       bb.utils.mkdirhier(depdestdir) > -                    cmd = 'cp -fpPRH "%s/." .' % (depsrcdir) > +                    cmd = 'cp -fPRH "%s/." .' % (depsrcdir) >                       runfetchcmd(cmd, d, workdir=depdestdir) > >       def clean(self, ud, d): > > Then I got following issuem, which I believe are related to riscv > platform. The log is dumpped by do_rootfs_install. > > ``` > (......) >   Broken libstdc++-13-dev:amd64 Breaks on libstdc++-13-dev:riscv64 < > none -> 13.3.0-6ubuntu2~24.04 @un puN Ib > (!= 13.2.0-1 >   > 6ubuntu1)                                                             >                                                      >     Considering libstdc++-13-dev:riscv64 9998 as a solution to > libstdc++-13-dev:amd64 0                                     >     Conflicts//Breaks against version 13.2.0-23ubuntu4 for libstdc++- > 13-dev but that is not InstVer, ignoring               >   > Done                                                                  >                                                      >   Some packages could not be installed. This may mean that you > have                                                         >   requested an impossible situation or if you are using the > unstable                                                        >   distribution that some required packages have not yet been > created                                                        >   or been moved out of > Incoming.                                                             >                                 >   The following information may help to resolve the > situation:                                                            >    >                                                                       >                                                        >   The following packages have unmet > dependencies:                                                         >                    >    build-essential : Depends: libc6-dev but it is not installable > or                                                        >                               libc- > dev                                                                   >                     >    devscripts : Depends: gnupg but it is not installable > or                                                                 >                          gnupg2 but it is not > installable                                                           >          >    libc-dev-bin:riscv64 : Depends: libc6:riscv64 (> 2.39) but it is > not installable                                         >                           Depends: libc6:riscv64 (< 2.40) but it is > not installable                                         >    libc6-dev:riscv64 : Depends: libc6:riscv64 (= 2.39-0ubuntu8.4) but > it is not installable                                 >    libcrypt-dev:riscv64 : Depends: libcrypt1:riscv64 (= 1:4.4.36- > 4build1) but it is not installable                         >    libgcc-13-dev : Breaks: libgcc-13-dev:riscv64 (!= 13.2.0- > 16ubuntu1) but 13.3.0-6ubuntu2~24.04 is to be installed         >    libgcc-13-dev:riscv64 : Depends: gcc-13-base:riscv64 (= 13.3.0- > 6ubuntu2~24.04) but it is not installable                 >                            Depends: libgcc-s1:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                  >                            Depends: libgomp1:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                   >                            Depends: libitm1:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                    >                            Depends: libatomic1:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                 >                            Depends: libasan8:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                   >                            Depends: libubsan1:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable                  >                            Breaks: libgcc-13-dev (!= 13.3.0- > 6ubuntu2~24.04) but 13.2.0-16ubuntu1 is to be installed         >    libstdc++-13-dev : Depends: libc6-dev (>= 2.13-0ubuntu6) but it is > not installable                                       >                       Breaks: libstdc++-13-dev:riscv64 (!= 13.2.0- > 16ubuntu1) but 13.3.0-6ubuntu2~24.04 is to be installed   >    libstdc++-13-dev:riscv64 : Depends: gcc-13-base:riscv64 (= 13.3.0- > 6ubuntu2~24.04) but it is not installable              >                               Depends: libstdc++6:riscv64 (>= 13.3.0- > 6ubuntu2~24.04) but it is not installable              >                               Breaks: libstdc++-13-dev (!= 13.3.0- > 6ubuntu2~24.04) but 13.2.0-16ubuntu1 is to be installed   >    libtool : Depends: libc6-dev but it is not installable > or                                                                >                       libc- > dev                                                                   >                             >   E: Unable to correct problems, you have held broken > packages.                                                             >   ``` Hello. This looks like a temporary bug, when `ubuntu-ports` repo is temporary not synchronized with `ubuntu` one. We periodicaly face it and can't do anything with it. I also this issue now when crossbuilding riscv64 and arm64 ubuntu-noble targets. It was not reproduced week ago. There are two options to get a successfull build: 1. Disable cross-compile option - but it is relatively slow. 2. Use some snapshot that is known to work. For example, this additional configuration (I used one-week-ago snapshot) works for me: ``` Mirror selection - [*] Use the distros snapshot mirror - (*) Custom date - (20250410T000000Z) Custom snapshot date ``` I'm attaching kas configuration I can get working build with. -- Best regards, Uladzimir. -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/6d0886ebe7e6479d50ffb5678b1dba0264681e3a.camel%40ilbers.de.