Comments (6)
There is.
The ideal outcome of these is to improve resholve and/or binlore to fix it for everyone, but when you need a short-term workaround, you can add execer
lore as in:
https://github.com/NixOS/nixpkgs/blob/d5f325f761e6b07e199e7f1f2906397c5da16947/pkgs/development/misc/resholve/README.md?plain=1#L218-L224
Let me know if that isn't clear and I can dig up a full example.
I don't expect you to go down the ideal path here, but I still need to ~document it--so I'll follow this up with another comment in the hope that I can get your thoughts on whether it makes sense.
from resholve.
Thank you very much.
As a workaround, your tip works nicely and I will have a look on your comment how to do it the right way :)
from resholve.
I'm not sure what you mean with "long-tail lore" otherwise the flow-chart is totally understandable
from resholve.
Here are my thoughts on gpg-connect-agent
following your flowchart:
gpg-connect-agent
could be used in at least some scripts, so it might be an candidate to handle in binlore/resholve- It has some user-supplied executable arguments, so it should be handled in resholve
Options that I found, that execute user-supplied arguments:
-E
--exec
Take the rest of the command line as a program and it’s arguments and execute it as an Assuan server.
--agent-program file
Specify the agent program to be started if none is running. The default value is determined by running gpgconf with the option --list-dirs. Note that the pipe symbol (|) is used for a regression test suite hack and may thus not be used in the file name.
--dirmngr-program file
Specify the directory manager (keyserver client) program to be started if none is running. This has only an effect if used together with the option --dirmngr.
--keyboxd-program file
Specify the keybox daemon program to be started if none is running. This has only an effect if used together with the option --keyboxd.
from resholve.
I'll have to iterate towards "how to"; it's a little more fundamental for now. I'll definitely need help scaling it out, but I'm leery of investing a lot of potential dev time writing guides sufficient for others to do it from before they're obviously needed.
To start, I'm curious if this decision chart makes sense:
flowchart TD
Z[binlore searches executables for use of known exec calls] --> A[resholve complains when it finds a potential execer] --> B{Is any package executable common in scripts?}
B --->|Yes| C[we should address in binlore or resholve]
B -->|No| D[callers will need to supply lore for less common packages]
C --> E{Do package doc/source indicate user-supplied executable args?}
E -->|No| F[binlore: override package's lore to mark safe executables as 'cannot']
E --->|Yes| G[resholve: add command-specific syntax rules to identify executable args]
from resholve.
good catch :)
changed from "long-tail lore" to "lore for less-common packages"
from resholve.
Related Issues (20)
- `AttributeError` when resolving `install --strip-program` HOT 2
- `AttributeError` when resolving `sort --compress-program=`
- exercer rule not being applied HOT 3
- support mkDerivation `finalAttrs` call pattern? HOT 1
- Function argument substitution failed HOT 2
- Build error on package using resholve HOT 1
- failure to correctly resolve absolute paths shadowed by builtins HOT 2
- Port to python3? HOT 4
- Resholve doesn’t understand `sudo --verison` HOT 4
- AttributeError: 'NoneType' object has no attribute 'dfas' HOT 8
- build-time use of sed not working on cross HOT 1
- Port to Python 3 HOT 8
- when invoked with multiple scripts, `--prologue` only applies to the first HOT 2
- handling commands that run other commands in a different path-space (different system, chroot, vm, etc.) HOT 2
- position indicators may be wrong in tab-indented scripts
- look for "unresholved" paths
- doublecheck coproc and execer check
- Missing subsequent `! type <command>` replacements HOT 4
- `make ci` fails to `touch` files HOT 4
- `make update` fails to find `../../nixpkgs` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from resholve.