Skip to content

Commit

Permalink
Migrate to Pipenv
Browse files Browse the repository at this point in the history
  • Loading branch information
rovellipaolo committed Mar 18, 2024
1 parent d919fb5 commit 8ad7d99
Show file tree
Hide file tree
Showing 10 changed files with 344 additions and 44 deletions.
33 changes: 14 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,14 @@ build:
sudo chmod 755 ninjadroid/aapt/aapt
sudo chmod 755 ninjadroid/apktool/apktool.jar
sudo chmod -R 755 ninjadroid/dex2jar/
@pip3 install -r requirements.txt
@which pipenv || pip3 install pipenv
@pipenv install --dev

build-macos:
#make build
make build
sudo chmod 755 ninjadroid/aapt/aapt
sudo chmod 755 ninjadroid/apktool/apktool.jar
sudo chmod -R 755 ninjadroid/dex2jar/
@pip3 install coverage==5.5
@pip3 install parameterized==0.8.1
@pip3 install pylint==2.6.2
@pip3 install python-dateutil==2.8.1
@pip3 install typing==3.7.4
@pip3 install tzlocal==2.1
@pip3 install pyaxmlparser==0.3.24 --user
mv -f ninjadroid/aapt/aapt_macos ninjadroid/aapt/aapt

build-linux:
Expand All @@ -47,6 +41,7 @@ build-flatpak:
build-snap:
find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf
rm -f ninjadroid_*.snap
@pipenv requirements > requirements.txt
@snapcraft clean
@snapcraft

Expand Down Expand Up @@ -85,7 +80,7 @@ uninstall-githooks:
# Run:
.PHONY: run
run:
@python3 ninjadroid.py $(apk)
@pipenv run python3 ninjadroid.py $(apk)

.PHONY: run-docker
run-docker:
Expand All @@ -99,37 +94,37 @@ run-flatpak:
# Test:
.PHONY: test
test:
@python3 -m unittest
@pipenv run python3 -m unittest

.PHONY: test-coverage
test-coverage:
@coverage3 run --source=. --omit="tests/*,regression/*" -m unittest
@coverage3 report
@pipenv run coverage3 run --source=. --omit="tests/*,regression/*" -m unittest
@pipenv run coverage3 report

.PHONY: test-docker
test-docker:
@docker run --name ${DOCKER_IMAGE} --rm -w /opt/NinjaDroid -v ${NINJADROID_HOME}/tests:/opt/NinjaDroid/tests ${DOCKER_IMAGE}:${DOCKER_TAG} python3 -m unittest

.PHONY: regression
regression:
@python3 regression/native.py
@pipenv run python3 regression/native.py

.PHONY: regression-docker
regression-docker:
@python3 regression/docker.py
@pipenv run python3 regression/docker.py

.PHONY: regression-flatpak
regression-flatpak:
@python3 regression/flatpak.py
@pipenv run python3 regression/flatpak.py

.PHONY: regression-snap
regression-snap:
@python3 regression/snap.py
@pipenv run python3 regression/snap.py

.PHONY: checkstyle
checkstyle:
pycodestyle --max-line-length=120 ninjadroid.py ninjadroid/ tests/ regression/
pylint ninjadroid.py ninjadroid/ tests/ regression/
@pipenv run pycodestyle --max-line-length=120 ninjadroid.py ninjadroid/ tests/ regression/
@pipenv run pylint ninjadroid.py ninjadroid/ tests/ regression/

.PHONY: checkstyle-docker
checkstyle-docker:
Expand Down
16 changes: 16 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
pyaxmlparser = "==0.3.*"
python-dateutil = "==2.*"
typing = "==3.*"
tzlocal = "==2.1"

[dev-packages]
coverage = "==7.*"
parameterized = "==0.9.*"
pycodestyle = "==2.*"
pylint = "==3.*"
302 changes: 302 additions & 0 deletions Pipfile.lock

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ENV ANDROID_SDK_EXTRAS=""
# Install general dependencies

RUN apt update \
&& apt install -qy python3 python3-pip unzip wget binutils
&& apt install -qy python3 pipenv unzip wget binutils

# Install Android SDK

Expand All @@ -29,13 +29,14 @@ RUN mkdir -p /opt/android-sdk && cd /opt \
RUN useradd -ms /bin/bash ${NINJADROID_USER} && \
mkdir -p ${NINJADROID_HOME}

COPY requirements/ ${NINJADROID_HOME}/requirements/
COPY requirements.txt ${NINJADROID_HOME}
COPY Pipfile ${NINJADROID_HOME}/Pipfile
COPY Pipfile.lock ${NINJADROID_HOME}/Pipfile.lock
COPY ninjadroid.py ${NINJADROID_HOME}
COPY ninjadroid/ ${NINJADROID_HOME}/ninjadroid/

#RUN pip3 install -r ${NINJADROID_HOME}/requirements/prod.txt \
RUN pip3 install -r ${NINJADROID_HOME}/requirements.txt --break-system-packages \
# NOTE: To install only production dependencies remove the "--dev" flag from the below "pipenv install" command!
#RUN PIPENV_PIPFILE=${NINJADROID_HOME}/Pipfile pipenv install --system --deploy \
RUN PIPENV_PIPFILE=${NINJADROID_HOME}/Pipfile pipenv install --dev --system --deploy \
&& ln -s ${ANDROID_HOME}/build-tools/${ANDROID_SDK_BUILD_TOOLS_VERSION}/aapt ${NINJADROID_HOME}/ninjadroid/aapt/aapt \
&& chmod a+x ${NINJADROID_HOME}/ninjadroid/aapt/aapt \
&& chmod a+x ${NINJADROID_HOME}/ninjadroid/apktool/apktool.jar \
Expand Down
7 changes: 4 additions & 3 deletions flatpak/com.github.rovellipaolo.NinjaDroid.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ modules:
- name: python3
sources:
- type: archive
url: https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
sha256: e3003ed57db17e617acb382b0cade29a248c6026b1bd8aad1f976e9af66a83b0
url: https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tar.xz
sha256: 18e1aa7e66ff3a58423d59ed22815a6954e53342122c45df20c96877c062b9b7
- name: binutils
buildsystem: simple
build-commands:
Expand All @@ -32,7 +32,8 @@ modules:
- mkdir /app/NinjaDroid
- cp ninjadroid.py /app/NinjaDroid/ninjadroid.py
- cp -r ninjadroid /app/NinjaDroid/ninjadroid
- pip3 install -r requirements/prod.txt
- pip3 install pipenv
- pipenv install --system --deploy
- ln -s /app/NinjaDroid/ninjadroid.py /app/bin/ninjadroid
sources:
# Build against remote source code:
Expand Down
7 changes: 1 addition & 6 deletions regression/snap.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,7 @@ def show_summary(self):

@RegressionSuite.test
def show_extended(self):
expected = self.read_plain_text_file(
"regression/expected/extended.txt",
overrides={
22: "\t\tsignature: SHA1withRSA (weak)"
}
)
expected = self.read_plain_text_file("regression/expected/extended.txt")

result = self.execute_command(self.BASE_PATH + "ninjadroid regression/data/Example.apk --all")

Expand Down
1 change: 0 additions & 1 deletion requirements.txt

This file was deleted.

5 changes: 0 additions & 5 deletions requirements/dev.txt

This file was deleted.

4 changes: 0 additions & 4 deletions requirements/prod.txt

This file was deleted.

2 changes: 1 addition & 1 deletion snap/snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ parts:
plugin: python
python-version: python3
requirements:
- "requirements/prod.txt"
- "requirements.txt"
source: .
build-packages:
# NOTE: the following dependency is needed to be able to upload the snap to snapcraft.io...
Expand Down

0 comments on commit 8ad7d99

Please sign in to comment.