Git Product home page Git Product logo

acr's Introduction

We have a new website! If you want to contribute, have a look at the repository!

old website link

How to build documentation html pages

1. Install sphinx

sudo pip install sphinx

2. Build documentation

cd radareorg
sphinx-build source build

Open index.html located in build directory to start reading the documentation.

acr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

acr's Issues

IGNORE_FLAG --without-foo

This rule must make acr ignore the following word as configure flag. this is useful when running sub-configure scripts which accept different flags than the root one.

Warnings/Errors reported by lintian (debian)

I: acr: hyphen-used-as-minus-sign usr/share/man/man1/acr-cat.1.gz:19
I: acr: hyphen-used-as-minus-sign usr/share/man/man1/acr.1.gz:51
I: acr: hyphen-used-as-minus-sign usr/share/man/man1/amr.1.gz:28
I: acr: spelling-error-in-manpage usr/share/man/man1/amr.1.gz automatize automate
W: acr: manpage-has-errors-from-man usr/share/man/man5/configure.acr.5.gz  Unknown list type `-bold' (or missing list type)
I: acr: spelling-error-in-manpage usr/share/man/man5/configure.acr.5.gz allows to allows one to
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:91
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:114
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:142
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:147
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:157
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:161
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:169
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:171
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:266
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz:271
I: acr: spelling-error-in-manpage usr/share/man/man5/configure.acr.5.gz allows to allows one to
I: acr: hyphen-used-as-minus-sign usr/share/man/man5/configure.acr.5.gz 2 more occurrences not shown
W: acr: manpage-has-errors-from-man usr/share/man/man5/configure.amr.5.gz  A .Bl directive has no matching .El (#19)
W: acr: binary-without-manpage usr/bin/acr-install
W: acr: binary-without-manpage usr/bin/acr-sh

Suggestion: --docdir option

Some distributions set their docdir to /usr/doc or something else. It'd be nice if acr supported that without having to write awkward sed lines to modify the Makefile.

CVS note out of date?

I believe the note

If you're fetching ACR from CVS, please, make clean before cvs up.

can be removed by now :)

Add support for meson/muon

A project can have:

  • configure.acr - specify configuration options compatible with gnu autoconf
  • meson.build

when the USE_MESON directive is set, the configure script can do the following things:

  • install muon and samu if meson/ninja not available
  • create a makefile that runs: ninja -C build
  • run meson build and pass-thru the given options to the acr script.

This way we can keep using ./configure and make, make install but having the whole logic defined in meson.

Add support for windows

radare2, iaito and r2ghidra are built using a hand-written preconfigure.bat, configure.bat and make.bat.

It would be ideal if acr could autogenerate them and fill a template according to the dependencies defined, etc.

This will make those batch scripts maintainable in a single place, also fits well with the USE_MESON proposal

Do install outside of source directory

Looks like it's not possible to make install outside of source directory, but configure works.

$ make DESTDIR=/mnt/build/acr/ install
mkdir -p /mnt/build/acr///usr/bin
sed -e 's,@''VERSION@,0.9.9,g' src/acr > /mnt/build/acr///usr/bin/acr
sed: can't read src/acr: No such file or directory
Makefile:23: recipe for target 'install' failed
make: *** [install] Error 2

Implement SWITCH statements to avoid nested IFEQ/ELSE blocks

This is taken from r2's configure.acr:

IFEQ USEROSTYPE auto ; {
        IFEQ HOST_OS mingw32_nt-6.2 ; {
                USEROSTYPE = mingw32 ;
        }{
        IFEQ HOST_OS mingw32_nt ; {
                USEROSTYPE = mingw32 ;
        }{
        IFEQ HOST_OS wsl ; {
                USEROSTYPE =  wsl ;
        }{
        IFEQ HOST_OS linux ; {
                USEROSTYPE = gnulinux ;
        }{
        IFEQ HOST_OS gnu ; {
                (( GNU / HURD ))
                USEROSTYPE = gnulinux ;
                HAVE_LIB_DL = 1 ;
                DL_LIBS = -ldl ;
        }{
        IFEQ HOST_OS sunos ; {
                USEROSTYPE = solaris ;
        }{
        IFEQ HOST_OS gnu/kfreebsd ; {
                USEROSTYPE = bsd ;
        }{
        IFEQ HOST_OS netbsd ; {
                USEROSTYPE = bsd ;
        }{
        IFEQ HOST_OS freebsd ; {
                USEROSTYPE = bsd ;
        }{
        IFEQ HOST_OS openbsd ; {
                USEROSTYPE = bsd ;
        }{
        IFEQ HOST_OS darwin ; {
                USEROSTYPE = darwin ;
        } } } } } } } } } } }
}

That can be rewritten to:

SWITCH HOST_OS 
  darwin { USEROSTYPE = darwin; }
  openbsd { USEROSTYPE = bsd; }
  ..
}

Show app version in configure is not working well

see the outpuot below from r2's configure. Also it will be good to have a --quiet-version or --quiet --version or something like this prints the version without anything else. for better integration with other scripts or tools

$ ./configure -V
configure-plugins: Loading ./plugins.cfg ..
configure-plugins: Generating libr/config.h ..
configure-plugins: Generating libr/config.mk ..
SHARED: io.shm
STATIC: anal.6502 anal.6502_cs anal.8051 anal.amd29k anal.arc anal.arm_cs anal.arm_gnu anal.avr anal.bf anal.chip8 anal.cr16 anal.cris anal.dalvik anal.ebc anal.gb anal.h8300 anal.hexagon anal.i4004 anal.i8080 anal.java anal.m680x_cs anal.m68k_cs anal.malbolge anal.mcore anal.mips_cs anal.mips_gnu anal.msp430 anal.nios2 anal.null anal.or1k anal.pic anal.ppc_cs anal.ppc_gnu anal.pyc anal.riscv anal.riscv_cs anal.rsp anal.sh anal.snes anal.sparc_cs anal.sparc_gnu anal.sysz anal.tms320 anal.tricore anal.v810 anal.v850 anal.vax anal.wasm anal.ws anal.x86_cs anal.xap anal.xcore_cs anal.xtensa anal.z80 asm.6502 asm.6502_cs asm.8051 asm.amd29k asm.arc asm.arm_as asm.arm_cs asm.arm_gnu asm.arm_winedbg asm.avr asm.bf asm.chip8 asm.cr16 asm.cris_gnu asm.dalvik asm.dcpu16 asm.ebc asm.gb asm.h8300 asm.hexagon asm.hppa_gnu asm.i4004 asm.i8080 asm.java asm.lanai_gnu asm.lh5801 asm.lm32 asm.m680x_cs asm.m68k_cs asm.malbolge asm.mcore asm.mcs96 asm.mips_cs asm.mips_gnu asm.msp430 asm.nios2 asm.null asm.or1k asm.pic asm.ppc_cs asm.ppc_gnu asm.propeller asm.pyc asm.riscv asm.riscv_cs asm.rsp asm.sh asm.snes asm.sparc_cs asm.sparc_gnu asm.sysz asm.tms320 asm.tricore asm.v810 asm.v850 asm.vax asm.wasm asm.ws asm.x86_as asm.x86_cs asm.x86_nasm asm.x86_nz asm.xap asm.xcore_cs asm.xtensa asm.z80 bin.any bin.art bin.avr bin.bf bin.bflt bin.bios bin.bootimg bin.cgc bin.coff bin.dex bin.dmp64 bin.dol bin.dyldcache bin.elf bin.elf64 bin.fs bin.java bin.le bin.mach0 bin.mach064 bin.mbn bin.mdmp bin.menuet bin.mz bin.ne bin.nes bin.nin3ds bin.ninds bin.ningb bin.ningba bin.nro bin.nso bin.omf bin.p9 bin.pe bin.pe64 bin.pebble bin.prg bin.psxexe bin.pyc bin.qnx bin.sfc bin.smd bin.sms bin.symbols bin.te bin.vsf bin.wasm bin.xbe bin.xnu_kernelcache bin.z64 bin.zimg bin_ldr.ldr_linux bin_xtr.xtr_dyldcache bin_xtr.xtr_fatmach0 bin_xtr.xtr_pemixed bin_xtr.xtr_sep64 bp.arm bp.bf bp.mips bp.ppc bp.x86 core.a2f core.java crypto.aes crypto.aes_cbc crypto.base64 crypto.base91 crypto.blowfish crypto.cps2 crypto.des crypto.punycode crypto.rc2 crypto.rc4 crypto.rc6 crypto.rol crypto.ror crypto.rot crypto.serpent crypto.xor debug.bf debug.bochs debug.esil debug.gdb debug.io debug.native debug.null debug.qnx debug.rap debug.winkd egg.exec egg.xor fs.ext2 fs.fat fs.fb fs.hfs fs.hfsplus fs.io fs.iso9660 fs.jfs fs.minix fs.ntfs fs.posix fs.r2 fs.reiserfs fs.sfs fs.tar fs.udf fs.ufs fs.xfs io.ar io.bfdbg io.bochs io.debug io.default io.fd io.gdb io.gprobe io.gzip io.http io.ihex io.mach io.malloc io.mmap io.null io.procpid io.ptrace io.qnx io.r2k io.r2pipe io.r2web io.rap io.rbuf io.self io.shm io.sparse io.tcp io.w32 io.w32dbg io.winedbg io.winkd io.zip lang.spp lang.vala parse.6502_pseudo parse.arm_pseudo parse.att2intel parse.avr_pseudo parse.chip8_pseudo parse.dalvik_pseudo parse.m68k_pseudo parse.mips_pseudo parse.ppc_pseudo parse.sh_pseudo parse.tms320_pseudo parse.v850_pseudo parse.wasm_pseudo parse.x86_pseudo parse.z80_pseudo
cp: plugins.cfg and ./plugins.cfg are identical (not copied).
radare2-4.6.0-git configuration script done with acr v1.9.3.
The 'Free Software Foundation' message is only for autodetection.
Originally written by pancake <nopcode.org>.
$ ./configure --version
radare2-4.6.0-git configuration script done with acr v1.9.3.
The 'Free Software Foundation' message is only for autodetection.
Originally written by pancake <nopcode.org>.
$

after installation, some placeholders remain

After installing avr from pkgsrc, I ran binpkglint (still experimental) over it, and it found these possible issues.

The first few are clear mistakes.

> # @version:  @VERSION@
acr-1.7.2.tar:bin/acr-cat:24:14: placeholder "VERSION"

> 		if [ -e "@DATADIR@/acr/modules/${STR2}.acr" ]; then
acr-1.7.2.tar:bin/acr-sh:1899:12: placeholder "DATADIR"

> 			FILE="@DATADIR@/acr/modules/${STR2}.acr";
acr-1.7.2.tar:bin/acr-sh:1900:10: placeholder "DATADIR"

The next few are a little more difficult to decide since acr deals with these placeholders itself.
I like the code that does echo "@""PKGNAME@" to distinguish the intentional @ from those that should have been replaced during installation.
This distinction is not done consistently though.

> VPATH=@VPATH@
acr-1.7.2.tar:bin/acr-sh:3327:7: placeholder "VPATH"

> JAVAC=@JAVAC@
acr-1.7.2.tar:bin/acr-sh:3338:7: placeholder "JAVAC"

> CC=@CC@
acr-1.7.2.tar:bin/acr-sh:3347:4: placeholder "CC"

> CFLAGS=@CFLAGS@
acr-1.7.2.tar:bin/acr-sh:3348:8: placeholder "CFLAGS"

> CPPFLAGS=@CPPFLAGS@
acr-1.7.2.tar:bin/acr-sh:3349:10: placeholder "CPPFLAGS"

> CXX=@CXX@
acr-1.7.2.tar:bin/acr-sh:3354:5: placeholder "CXX"

> CXXFLAGS=@CXXFLAGS@
acr-1.7.2.tar:bin/acr-sh:3355:10: placeholder "CXXFLAGS"

> 	echo "VPATH=@VPATH@"
acr-1.7.2.tar:bin/amr:286:14: placeholder "VPATH"

> 		echo "CC=@CC@"
acr-1.7.2.tar:bin/amr:288:12: placeholder "CC"

> 		echo "CFLAGS=@CFLAGS@"
acr-1.7.2.tar:bin/amr:289:16: placeholder "CFLAGS"

> 		echo "LDFLAGS=@LDFLAGS@"
acr-1.7.2.tar:bin/amr:290:17: placeholder "LDFLAGS"

> 		echo "BIN=@PKGNAME@"
acr-1.7.2.tar:bin/amr:296:13: placeholder "PKGNAME"

> 		echo "VERSION=@VERSION@"
acr-1.7.2.tar:bin/amr:297:17: placeholder "VERSION"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.