Re: [android-building] Creating Symbolic Links in the /vendor partition

2021-09-03 Thread Curt Schwaderer
I got a little further, but the cc_prebuilt_library doesn't work.

I am able to add the cc_prebuilt_binary into the
device///Android.bp file and it does successfully copy
the binary if I add "check_elf_files: false" so it won't check the binary.

cc_prebuilt_binary {
  name: "my_sw_binary",
  stem: "my_sw",
  srcs: ["addons/bin/my_sw"],
  proprietary: true,
  vendor: true,
//  shared_libs: ["libz", "libjansson", "libwebsockets", "libxml2",
"libcurl", "librohc"],
  check_elf_files: false,
}

If I un-comment the shared-libs attribute above and comment out the
"check_elf_files" attribute, I get an error that the libraries are not
defined which is expected.

Then I add the libjansson, libwebsockets, and librohc libraries like so:

cc_prebuilt_library {
  name: "libjansson",
  stem: "libjansson",
  srcs: ["addons/lib/libjansson.so"],
  vendor: true,
//  relative_install_path: "atsc3pak",
}

cc_prebuilt_library {
  name: "libwebsockets",
  stem: "libwebsockets.so.13",
  srcs: ["addons/lib/libwebsockets.so.13"],
  vendor: true,
}

cc_prebuilt_library {
  name: "librohc",
  stem: "librohc",
  srcs: ["addons/lib/librohc.so"],
  vendor: true,
//  relative_install_path: "atsc3pak",
}

When I do this, there is a problem with the libwebsockets.so.13 library in
that the build system automatically appends a ".so" suffix to the end of
libwebsockets.so.13 and I can't figure out how to prevent that from
happening.

The other two libraries (libjansson, librohc) don't cause any errors at
build time anymore.

Then I tried another test with "check_elf_files: false" just to see if the
libraries would copy.
I commented out the libwebsockets.so.13 prebuilt library definition and
just included the other two.

It builds the image correctly but when I flash it, bring the board up, and
look at the directories, the libjansson.so and librohc.so files are not on
the board and I don't know why?

Any ideas about these two issues?

Thanks!
Curt











On Mon, Aug 30, 2021 at 4:11 PM Curt Schwaderer 
wrote:

> Thanks Dan,
>
> We are a product manufacturer and our board vendor's build environment is
> Android 11 - will what you're suggesting still work on Android 11?
>
> We have 3 already compiled C++ binaries and 12 already built .so libraries
> that need to be moved on top of the vendor's board to create our product.
>
> The (libwebsockets.so.13) library is the one that needs a symbolic link.
> But the symlinks attribute is not legal for cc_prebuilt_library according
> to the documentation (I tried it anyway and did indeed get a build error).
> So I assume I'll have to declare it as a cc_prebuilt_binary and use the
> relative_install_path attribute to put it into /vendor/lib?
>
> I haven't been able to get anything to work, so I just tried a very simple
> test.
>
> 1. I put an Android.bp file in the aosp/device//
> directory with just a single file for a test. The libwebsockets.so.13 file
> is located at
> aosp/device///br_addons/lib/libwebsockets.so.13.
>
> cc_prebuilt_binary {
>   name: "arm64_zbm1_shared.so_libwebsockets",
>   vendor: true,
>   arch: {
> arm64: {
>   srcs: ["br_addons/lib/libwebsockets.so.13"]
> },
>   },
> }
>
> 2. I added the following line to our aosp_zbm1.mk file:
>
> PRODUCT_PACKAGES += arm64_zbm1_shared.so_libwebsockets
>
> 3. The image builds successfully and I flash it onto the board.
> I'm expecting to see the libwebsockets.so.13 file in /vendor/bin, but it
> is not.
> I did a recursive file find across the entire image and there is no
> libwebsockets.so.13 so for some reason it didn't copy it properly.
>
> The only thing I've been able to get working is if I use the
> PRODUCT_COPY_FILES macro and load the files that way.
>
> Am I doing something wrong? I've been looking through the documentation
> and other board build environments. The google cuttlefish uses the
> cc_prebuilt_binary, but it's defined a slightly different way. I tried that
> as well, but it didn't work either.
>
> Thanks,
> Curt
>
>
>
>
>
>
>
>
>
>
> On Fri, Aug 27, 2021 at 5:40 PM 'Dan Willemsen' via Android Building <
> android-building@googlegroups.com> wrote:
>
>> Ah, now I understand why I'm confused -- Android 12 (and main for the
>> last year+) doesn't allow you to use PRODUCT_COPY_FILES to install binaries
>> and libraries: docs
>> .
>> This lets us verify that all of the needed libraries will be installed,
>> among other checks. Instead, you should define a prebuilt in an Android.bp
>> and add the name to PRODUCT_PACKAGES. Example:
>>
>> in your Android.bp:
>> cc_prebuilt_binary {
>> name: "my_binary",
>> vendor: true,
>> arch: {
>> arm64: {
>>  srcs: ["arm64/my_binary"]
>> },
>> },
>> shared_libs: ["libmylibrary"],
>> }
>>
>> cc_prebuilt_library {
>> name: "libmylibrary",
>> vendor: true,
>> arch: {
>> arm64: {
>> srcs: 

Re: [android-building] Creating Symbolic Links in the /vendor partition

2021-08-30 Thread Curt Schwaderer
Thanks Dan,

We are a product manufacturer and our board vendor's build environment is
Android 11 - will what you're suggesting still work on Android 11?

We have 3 already compiled C++ binaries and 12 already built .so libraries
that need to be moved on top of the vendor's board to create our product.

The (libwebsockets.so.13) library is the one that needs a symbolic link.
But the symlinks attribute is not legal for cc_prebuilt_library according
to the documentation (I tried it anyway and did indeed get a build error).
So I assume I'll have to declare it as a cc_prebuilt_binary and use the
relative_install_path attribute to put it into /vendor/lib?

I haven't been able to get anything to work, so I just tried a very simple
test.

1. I put an Android.bp file in the aosp/device//
directory with just a single file for a test. The libwebsockets.so.13 file
is located at
aosp/device///br_addons/lib/libwebsockets.so.13.

cc_prebuilt_binary {
  name: "arm64_zbm1_shared.so_libwebsockets",
  vendor: true,
  arch: {
arm64: {
  srcs: ["br_addons/lib/libwebsockets.so.13"]
},
  },
}

2. I added the following line to our aosp_zbm1.mk file:

PRODUCT_PACKAGES += arm64_zbm1_shared.so_libwebsockets

3. The image builds successfully and I flash it onto the board.
I'm expecting to see the libwebsockets.so.13 file in /vendor/bin, but it is
not.
I did a recursive file find across the entire image and there is no
libwebsockets.so.13 so for some reason it didn't copy it properly.

The only thing I've been able to get working is if I use the
PRODUCT_COPY_FILES macro and load the files that way.

Am I doing something wrong? I've been looking through the documentation and
other board build environments. The google cuttlefish uses the
cc_prebuilt_binary, but it's defined a slightly different way. I tried that
as well, but it didn't work either.

Thanks,
Curt










On Fri, Aug 27, 2021 at 5:40 PM 'Dan Willemsen' via Android Building <
android-building@googlegroups.com> wrote:

> Ah, now I understand why I'm confused -- Android 12 (and main for the last
> year+) doesn't allow you to use PRODUCT_COPY_FILES to install binaries and
> libraries: docs
> .
> This lets us verify that all of the needed libraries will be installed,
> among other checks. Instead, you should define a prebuilt in an Android.bp
> and add the name to PRODUCT_PACKAGES. Example:
>
> in your Android.bp:
> cc_prebuilt_binary {
> name: "my_binary",
> vendor: true,
> arch: {
> arm64: {
>  srcs: ["arm64/my_binary"]
> },
> },
> shared_libs: ["libmylibrary"],
> }
>
> cc_prebuilt_library {
> name: "libmylibrary",
> vendor: true,
> arch: {
> arm64: {
> srcs: ["arm64/libmylibrary.so"],
> },
> },
> }
>
> If they were built with the NDK, or use other libraries, you may need to
> set `sdk_version: "30"` or `shared_libs: [...]` as appropriate.
>
> Then to install symlinks like your original question, there is a `symlinks:
> ["foo"]` property, which if added to my_binary above, would install a
> "/vendor/bin/foo -> /vendor/bin/my_binary" symlink whenever my_binary is
> installed.
>
> Then in your product makefile (no need to add libmylibrary, as it will get
> installed as a dependency):
> PRODUCT_PACKAGES += my_binary
>
> - Dan
>
> On Thu, Aug 26, 2021 at 10:49 AM Curt Schwaderer <
> curt.schwade...@gmail.com> wrote:
>
>> Hello - I'm building an Android 11 product and placed the application
>> binaries and libraries in /vendor/bin and /vendor/lib. I also need to
>> create a symbolic link in /vendor/lib  to one of the library files also in
>> /vendor/lib. If I try to do this in an init..rc file, it will not
>> create the symbolic link because the /vendor partition is read only.
>>
>> I move the modules into /vendor/bin and /vendor/lib at build time using
>> the COPY_FILES += macro in an aosp_.mk file, but I have not found
>> a way to create a symbolic link in the makefile.
>>
>> How and when do I create symbolic links in the /vendor partition? Please
>> provide an example if possible.
>>
>> Thanks!
>> Curt
>>
>> --
>> --
>> You received this message because you are subscribed to the "Android
>> Building" mailing list.
>> To post to this group, send email to android-building@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-building+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/android-building?hl=en
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Android Building" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to android-building+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> 

Re: [android-building] Creating Symbolic Links in the /vendor partition

2021-08-27 Thread 'Dan Willemsen' via Android Building
Ah, now I understand why I'm confused -- Android 12 (and main for the last
year+) doesn't allow you to use PRODUCT_COPY_FILES to install binaries and
libraries: docs
.
This lets us verify that all of the needed libraries will be installed,
among other checks. Instead, you should define a prebuilt in an Android.bp
and add the name to PRODUCT_PACKAGES. Example:

in your Android.bp:
cc_prebuilt_binary {
name: "my_binary",
vendor: true,
arch: {
arm64: {
 srcs: ["arm64/my_binary"]
},
},
shared_libs: ["libmylibrary"],
}

cc_prebuilt_library {
name: "libmylibrary",
vendor: true,
arch: {
arm64: {
srcs: ["arm64/libmylibrary.so"],
},
},
}

If they were built with the NDK, or use other libraries, you may need to
set `sdk_version: "30"` or `shared_libs: [...]` as appropriate.

Then to install symlinks like your original question, there is a `symlinks:
["foo"]` property, which if added to my_binary above, would install a
"/vendor/bin/foo -> /vendor/bin/my_binary" symlink whenever my_binary is
installed.

Then in your product makefile (no need to add libmylibrary, as it will get
installed as a dependency):
PRODUCT_PACKAGES += my_binary

- Dan

On Thu, Aug 26, 2021 at 10:49 AM Curt Schwaderer 
wrote:

> Hello - I'm building an Android 11 product and placed the application
> binaries and libraries in /vendor/bin and /vendor/lib. I also need to
> create a symbolic link in /vendor/lib  to one of the library files also in
> /vendor/lib. If I try to do this in an init..rc file, it will not
> create the symbolic link because the /vendor partition is read only.
>
> I move the modules into /vendor/bin and /vendor/lib at build time using
> the COPY_FILES += macro in an aosp_.mk file, but I have not found
> a way to create a symbolic link in the makefile.
>
> How and when do I create symbolic links in the /vendor partition? Please
> provide an example if possible.
>
> Thanks!
> Curt
>
> --
> --
> You received this message because you are subscribed to the "Android
> Building" mailing list.
> To post to this group, send email to android-building@googlegroups.com
> To unsubscribe from this group, send email to
> android-building+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-building?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Building" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to android-building+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/android-building/4a4400a8-2653-48c3-ad52-ba9470879304n%40googlegroups.com
> 
> .
>

-- 
-- 
You received this message because you are subscribed to the "Android Building" 
mailing list.
To post to this group, send email to android-building@googlegroups.com
To unsubscribe from this group, send email to
android-building+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-building+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-building/CALQgHd%3DuN4UGA1DtSw2FfJqJW7a2TBOBpYZ6ZyxQyCnpBumaAQ%40mail.gmail.com.


[android-building] Creating Symbolic Links in the /vendor partition

2021-08-26 Thread Curt Schwaderer
Hello - I'm building an Android 11 product and placed the application 
binaries and libraries in /vendor/bin and /vendor/lib. I also need to 
create a symbolic link in /vendor/lib  to one of the library files also in 
/vendor/lib. If I try to do this in an init..rc file, it will not 
create the symbolic link because the /vendor partition is read only.

I move the modules into /vendor/bin and /vendor/lib at build time using the 
COPY_FILES += macro in an aosp_.mk file, but I have not found a 
way to create a symbolic link in the makefile.

How and when do I create symbolic links in the /vendor partition? Please 
provide an example if possible.

Thanks!
Curt

-- 
-- 
You received this message because you are subscribed to the "Android Building" 
mailing list.
To post to this group, send email to android-building@googlegroups.com
To unsubscribe from this group, send email to
android-building+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-building+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-building/4a4400a8-2653-48c3-ad52-ba9470879304n%40googlegroups.com.