• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root Nub Question...

atomilluminati

Well-Known Member
How do you make a device repo? What OS do you need? Anyone know of a detailed outline on how to do this? Any help is appreciated thanks....
 
A device repo is essentially the proprietary device files in the bin, lib and etc folders from the phone. The libs are the software that tell the OS how to interact with the hardware. This one is easy to set up, because it's just a dump of those folders into your Linux client for compilation.
Here's an example: https://github.com/koush/proprietary_vendor_lge/tree/gingerbread/p990

Then, you've got an actual 'device' folder, which is what's important, because it contains the 'make' files, which tell Linux how to build Cyanogenmod and where to copy files from/to. Here's an example of one for the Nitro: https://github.com/CyanogenMod/android_device_lge_p930

Google has this info for setting up a repo and has instructions on how to pull prop files from your phone with ADB (I just zipped in root browser and moved to my computer): Downloading the Source Tree | Android Open Source

You need Linux, but I used Ubuntu 12 on a VMWare install within Windows; it's a more 'windows-esq' experience of Linux. To do this, you're going to need a hefty machine... I've got 4gb ram and a quad core i5, so I could do it, but you need at least 2gb ram to compile at a good rate and you don't want to assign all your RAM to the VM box, so keep that in mind.

Generally, device repos are cloned off similar devices (the D2 was cloned off the DX, which was cloned off the D1, etc), so I cloned the P930, since it's the closest to our device.
The issue is our lib files are named TOTALLY DIFFERENT than any other LG device. This doesn't seem like a big deal, but you have to remember the 'make' files contain the lib file names and those lib files are what ensure the hardware works with the software. So when a lib file is called 'libvvzzbb' in the P930, I have to find the exact lib file in the VS920 folder that does the exact same thing. I was able to get about 20 or so lib files updated in the cloned 'make' files, because they were small changes, like 'p930' to 'bryce2', but there were some, like the video-related that have names like 'libvvxxzzfh' and frankly, I don't know WTF any of them do.

And there's the problem and why we don't have CM7, AOSP or the workings of CM9. To get past that issue, there need to be people that know what these libs do and/or spend hours/days hammering away to update the code to get it to compile right. I got CM7 to boot, but nothing would display past a gray screen, so I'm out... it's above my pay-grade... I studied law in school, not programming. lol
 
A device repo is essentially the proprietary device files in the bin, lib and etc folders from the phone. The libs are the software that tell the OS how to interact with the hardware. This one is easy to set up, because it's just a dump of those folders into your Linux client for compilation.
Here's an example: https://github.com/koush/proprietary_vendor_lge/tree/gingerbread/p990

Then, you've got an actual 'device' folder, which is what's important, because it contains the 'make' files, which tell Linux how to build Cyanogenmod and where to copy files from/to. Here's an example of one for the Nitro: https://github.com/CyanogenMod/android_device_lge_p930

Google has this info for setting up a repo and has instructions on how to pull prop files from your phone with ADB (I just zipped in root browser and moved to my computer): Downloading the Source Tree | Android Open Source

You need Linux, but I used Ubuntu 12 on a VMWare install within Windows; it's a more 'windows-esq' experience of Linux. To do this, you're going to need a hefty machine... I've got 4gb ram and a quad core i5, so I could do it, but you need at least 2gb ram to compile at a good rate and you don't want to assign all your RAM to the VM box, so keep that in mind.

Generally, device repos are cloned off similar devices (the D2 was cloned off the DX, which was cloned off the D1, etc), so I cloned the P930, since it's the closest to our device.
The issue is our lib files are named TOTALLY DIFFERENT than any other LG device. This doesn't seem like a big deal, but you have to remember the 'make' files contain the lib file names and those lib files are what ensure the hardware works with the software. So when a lib file is called 'libvvzzbb' in the P930, I have to find the exact lib file in the VS920 folder that does the exact same thing. I was able to get about 20 or so lib files updated in the cloned 'make' files, because they were small changes, like 'p930' to 'bryce2', but there were some, like the video-related that have names like 'libvvxxzzfh' and frankly, I don't know WTF any of them do.

And there's the problem and why we don't have CM7, AOSP or the workings of CM9. To get past that issue, there need to be people that know what these libs do and/or spend hours/days hammering away to update the code to get it to compile right. I got CM7 to boot, but nothing would display past a gray screen, so I'm out... it's above my pay-grade... I studied law in school, not programming. lol

Instead of cloning is it possible to do a generic repo and pull literally everything off this device?
 
Pulling the files isn't the issue (the proprietary folder).... the issue is the 'device' folder, which has the 'make' files: https://github.com/CyanogenMod/android_device_lge_p930

To do that, you'd need to write build code for all the files in that folder, specifically for the VS920. That's why people clone and alter the folders. Because many of the '.mk' files are dependent on one another (they reference each other in the code), it makes for a snowball effect if you screw up the coding on one of them... trust me, I messed up 1 syntax error and the entire build halted.

For example, take a look at p930.mk: https://github.com/CyanogenMod/android_device_lge_p930/blob/ics/p930.mk

$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)

# The gps config appropriate for this device
$(call inherit-product, device/common/gps/gps_us_supl.mk)

$(call inherit-product-if-exists, vendor/lge/p930/p930-vendor.mk)

PRODUCT_TAGS += dalvik.gc.type-precise
$(call inherit-product, frameworks/base/build/phone-xhdpi-1024-dalvik-heap.mk)
It's calling on other mk/make files.

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/init.iprj.rc:root/init.iprj.rc \
$(LOCAL_PATH)/ueventd.iprj.rc:root/ueventd.iprj.rc

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/init.iprj.usb.rc:root/init.iprj.usb.rc \
$(LOCAL_PATH)/prebuilt/boot_logo_00000.rle:root/bootimages/boot_logo_00000.rle \
$(LOCAL_PATH)/prebuilt/init.qcom.sh:root/init.qcom.sh \
$(LOCAL_PATH)/prebuilt/init.qcom.post_boot.sh:system/etc/init.qcom.post_boot.sh \
$(LOCAL_PATH)/prebuilt/init.qcom.modem_links.sh:system/etc/init.qcom.modem_links.sh \
$(LOCAL_PATH)/prebuilt/init.qcom.mdm_links.sh:system/etc/init.qcom.mdm_links.sh

## Configs
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/config/atcmd_virtual_kbd.kl:system/usr/keylayout/atcmd_virtual_kbd.kl \
$(LOCAL_PATH)/config/ffa-keypad_qwerty.kl:system/usr/keylayout/ffa-keypad_qwerty.kl \
$(LOCAL_PATH)/config/i_atnt-keypad.kl:system/usr/keylayout/i_atnt-keypad.kl \
$(LOCAL_PATH)/config/pmic8058_pwrkey.kl:system/usr/keylayout/pmic8058_pwrkey.kl \
$(LOCAL_PATH)/config/synaptics_ts.kl:system/usr/keylayout/synaptics_ts.kl \
$(LOCAL_PATH)/config/synaptics_ts.idc:system/usr/idc/synaptics_ts.idc \
$(LOCAL_PATH)/config/thermald.conf:system/etc/thermald.conf
It also calls for pulling/copying files necessary to the operation of the OS on the phone. When we clone, we have to update ALL of these files to the specific device. On Motorola, that's easy... the files are generally named the same thing, with only differences being device-specific things like 'd2' or 'dx'... that's not the case with the Spectrum.

So if you don't clone, you'd have to know what all the files on the phone do for the phone... otherwise, you'd be coding for files that have nothing to do with the function. But cloning and re-coding is just a bear with these LG phones... consistency with phone files would make it easier. It's like they tease us with an unlocked bootloader and make it hard as hell to actually build something else to load! lol

... but I don't mean to discourage. Look at the CM wiki for the LG phones and on that Google link if you want to build a repo and compile. If you have the time, patience and programming know-how, you may very well crack the issue that eluded me.
 
Pulling the files isn't the issue (the proprietary folder).... the issue is the 'device' folder, which has the 'make' files: https://github.com/CyanogenMod/android_device_lge_p930

To do that, you'd need to write build code for all the files in that folder, specifically for the VS920. That's why people clone and alter the folders. Because many of the '.mk' files are dependent on one another (they reference each other in the code), it makes for a snowball effect if you screw up the coding on one of them... trust me, I messed up 1 syntax error and the entire build halted.

For example, take a look at p930.mk: https://github.com/CyanogenMod/android_device_lge_p930/blob/ics/p930.mk


It's calling on other mk/make files.


It also calls for pulling/copying files necessary to the operation of the OS on the phone. When we clone, we have to update ALL of these files to the specific device. On Motorola, that's easy... the files are generally named the same thing, with only differences being device-specific things like 'd2' or 'dx'... that's not the case with the Spectrum.

So if you don't clone, you'd have to know what all the files on the phone do for the phone... otherwise, you'd be coding for files that have nothing to do with the function. But cloning and re-coding is just a bear with these LG phones... consistency with phone files would make it easier. It's like they tease us with an unlocked bootloader and make it hard as hell to actually build something else to load! lol

... but I don't mean to discourage. Look at the CM wiki for the LG phones and on that Google link if you want to build a repo and compile. If you have the time, patience and programming know-how, you may very well crack the issue that eluded me.

have you looked at this??
https://github.com/playfulgod/android_device_lge_vs920
 
Nice... it's missing a lot of the necessary pieces for a functioning build, but it's a start. It looks like he cloned an existing repo and updated all the mks to reflect the Spectrum. That may or may not work, because the device and board are called the 'bryce2', which is what I had to update all my 'vs920' instances to, in order to get the OS to boot; I don't see any reference to 'bryce2' in those files.

You have to have the following folders and content to get CM to work on a phone: config, hwaddrs, include, overlay & prebuilt. So if you were to sync that git as your device github, the build would fail because of all the missing mks and other build files. If he gets that repo up to snuff, you COULD just sync that github with the CM-GB github and it would be enough to make a CM build.
 
What the OP describes is actually a vendor tree lol, device tree is the configs for the device for CWM n CM. ;)
 
Back
Top Bottom